DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00222_AAD_S_000017_PKG

Source


1 PACKAGE BODY XLA_00222_AAD_S_000017_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_00222_AAD_S_000017_PKG                                        |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : China Receivables Default Accrual                      |
14 |      Code    : JA_CN_AR_DEFAULT_ACCRUAL                               |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 30-03-2009 at 05:03:44 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_00222_AAD_S_000017_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_00222_AAD_S_000017_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_00222_AAD_S_000017_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_00222_AAD_S_000017_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 --Transaction Type Name
241  , p_source_1            IN VARCHAR2
242 --Transaction Number
243  , p_source_2            IN VARCHAR2
244 --Transaction Document Sequence Number
245  , p_source_3            IN NUMBER
246 )
247 RETURN VARCHAR2
248 IS
249 l_component_type        VARCHAR2(80)   ;
250 l_component_code        VARCHAR2(30)   ;
251 l_component_type_code   VARCHAR2(1)    ;
252 l_component_appl_id     INTEGER        ;
253 l_amb_context_code      VARCHAR2(30)   ;
254 l_ledger_language       VARCHAR2(30)   ;
255 l_source                VARCHAR2(1996) ;
256 l_description           VARCHAR2(2000) ;
257 l_log_module            VARCHAR2(240)  ;
258 BEGIN
259 IF g_log_enabled THEN
260       l_log_module := C_DEFAULT_MODULE||'.Description_1';
261 END IF;
262 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
263       trace
264          (p_msg      => 'BEGIN of Description_1'
265          ,p_level    => C_LEVEL_PROCEDURE
266          ,p_module   => l_log_module);
267 END IF;
268 
269 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
270 l_component_type        := 'AMB_DESCRIPTION';
271 l_component_code        := 'CM_L';
272 l_component_type_code   := 'S';
273 l_component_appl_id     :=  222;
274 l_amb_context_code      := 'DEFAULT';
275 l_source                := NULL;
276 l_description           := NULL;
277 
278 
279  IF p_source_2 IS NOT NULL 
280  THEN 
281  
282  IF 
283 l_ledger_language = 'US' THEN
284     l_description :=  SUBSTR(CONCAT(l_description,'Credit Memo Application to Transaction Type -'),1,2000);
285     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
286  END IF;   
287   l_source := SUBSTR(p_source_1,1,1996);
288   IF l_source IS NOT NULL THEN
289     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
290     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
291   END IF;  
292  IF 
293 l_ledger_language = 'US' THEN
294     l_description :=  SUBSTR(CONCAT(l_description,' Transaction Number'),1,2000);
295     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
296  END IF;   
297   l_source := SUBSTR(p_source_2,1,1996);
298   IF l_source IS NOT NULL THEN
299     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
300     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
301   END IF;  
302  IF 
303 l_ledger_language = 'US' THEN
304     l_description :=  SUBSTR(CONCAT(l_description,' Transaction Document Number'),1,2000);
305     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
306  END IF;   
307   l_source := SUBSTR(TO_CHAR(p_source_3),1,1996);
308   IF l_source IS NOT NULL THEN
309     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
310     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
311   END IF; 
312  l_description := SUBSTR(l_description,1,1996);
313   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
314         trace
315            (p_msg      => 'END of Description_1'
316            ,p_level    => C_LEVEL_PROCEDURE
317            ,p_module   => l_log_module);
318 
319   END IF;
320   RETURN l_description;
321 
322  END IF;
323 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
324       trace
325          (p_msg      => 'END of Description_1'
326          ,p_level    => C_LEVEL_PROCEDURE
327          ,p_module   => l_log_module);
328 END IF;
329 RETURN NULL;
330 EXCEPTION
331   WHEN VALUE_ERROR THEN
335                ,p_level    => C_LEVEL_EXCEPTION
332      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
333             trace
334                (p_msg      => 'ERROR: '||sqlerrm
336                ,p_module   => l_log_module);
337      END IF;
338      RAISE;
339  WHEN xla_exceptions_pkg.application_exception THEN
340       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
341       trace
342          (p_msg      => 'ERROR: '||sqlerrm
343          ,p_level    => C_LEVEL_EXCEPTION
344          ,p_module   => l_log_module);
345       END IF;
346       RAISE;
347  WHEN OTHERS THEN
348        xla_exceptions_pkg.raise_message
349            (p_location => 'XLA_00222_AAD_S_000017_PKG.Description_1');
350 END Description_1;
351 
352 ---------------------------------------
353 --
354 -- PRIVATE FUNCTION
355 --         Description_2
356 --
357 ---------------------------------------
358 FUNCTION Description_2 (
359   p_application_id      IN NUMBER
360 , p_ae_header_id        IN NUMBER DEFAULT NULL 
361 --Collection Document Bank Occurrence
362  , p_source_4            IN VARCHAR2
363 --Collection Document Number
364  , p_source_5            IN NUMBER
365 --Collection Document Trade Note Number
366  , p_source_6            IN VARCHAR2
367 --Bordero Type
368  , p_source_7            IN VARCHAR2
369  , p_source_7_meaning    IN VARCHAR2
370 )
371 RETURN VARCHAR2
372 IS
373 l_component_type        VARCHAR2(80)   ;
374 l_component_code        VARCHAR2(30)   ;
375 l_component_type_code   VARCHAR2(1)    ;
376 l_component_appl_id     INTEGER        ;
377 l_amb_context_code      VARCHAR2(30)   ;
378 l_ledger_language       VARCHAR2(30)   ;
379 l_source                VARCHAR2(1996) ;
380 l_description           VARCHAR2(2000) ;
381 l_log_module            VARCHAR2(240)  ;
382 BEGIN
383 IF g_log_enabled THEN
384       l_log_module := C_DEFAULT_MODULE||'.Description_2';
385 END IF;
386 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
387       trace
388          (p_msg      => 'BEGIN of Description_2'
389          ,p_level    => C_LEVEL_PROCEDURE
390          ,p_module   => l_log_module);
391 END IF;
392 
393 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
394 l_component_type        := 'AMB_DESCRIPTION';
395 l_component_code        := 'JLBR_AR_BANK_CHARGES_JED';
396 l_component_type_code   := 'S';
397 l_component_appl_id     :=  222;
398 l_amb_context_code      := 'DEFAULT';
399 l_source                := NULL;
400 l_description           := NULL;
401 
402 
403  IF NVL(p_source_7,'
404 ') =  'COLLECTION'
405  THEN 
406  
407  IF 
408 l_ledger_language = 'US' THEN
409     l_description :=  SUBSTR(CONCAT(l_description,'Bank Charges for occurrence :'),1,2000);
410     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
411  END IF;   
412   l_source := SUBSTR(p_source_4,1,1996);
413   IF l_source IS NOT NULL THEN
414     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
415     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
416   END IF;  
417  IF 
418 l_ledger_language = 'US' THEN
419     l_description :=  SUBSTR(CONCAT(l_description,' of collection document :'),1,2000);
420     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
421  END IF;   
422   l_source := SUBSTR(TO_CHAR(p_source_5),1,1996);
423   IF l_source IS NOT NULL THEN
424     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
425     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
426   END IF;  
427  IF 
428 l_ledger_language = 'US' THEN
429     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
430     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
431  END IF;   
432   l_source := SUBSTR(p_source_6,1,1996);
433   IF l_source IS NOT NULL THEN
434     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
435     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
436   END IF; 
437  l_description := SUBSTR(l_description,1,1996);
438   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
439         trace
440            (p_msg      => 'END of Description_2'
441            ,p_level    => C_LEVEL_PROCEDURE
442            ,p_module   => l_log_module);
443 
444   END IF;
445   RETURN l_description;
446 
447  ELSIF NVL(p_source_7,'
448 ') =  'FACTORING'
449  THEN 
450  
451  IF 
452 l_ledger_language = 'US' THEN
453     l_description :=  SUBSTR(CONCAT(l_description,'Bank Charges for occurrence :'),1,2000);
454     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
455  END IF;   
456   l_source := SUBSTR(p_source_4,1,1996);
457   IF l_source IS NOT NULL THEN
458     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
459     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
460   END IF;  
461  IF 
462 l_ledger_language = 'US' THEN
463     l_description :=  SUBSTR(CONCAT(l_description,' of factoring collection document :'),1,2000);
464     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
465  END IF;   
466   l_source := SUBSTR(TO_CHAR(p_source_5),1,1996);
467   IF l_source IS NOT NULL THEN
468     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
472 l_ledger_language = 'US' THEN
469     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
470   END IF;  
471  IF 
473     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
474     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
475  END IF;   
476   l_source := SUBSTR(p_source_6,1,1996);
477   IF l_source IS NOT NULL THEN
478     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
479     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
480   END IF; 
481  l_description := SUBSTR(l_description,1,1996);
482   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
483         trace
484            (p_msg      => 'END of Description_2'
485            ,p_level    => C_LEVEL_PROCEDURE
486            ,p_module   => l_log_module);
487 
488   END IF;
489   RETURN l_description;
490 
491  END IF;
492 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
493       trace
494          (p_msg      => 'END of Description_2'
495          ,p_level    => C_LEVEL_PROCEDURE
496          ,p_module   => l_log_module);
497 END IF;
498 RETURN NULL;
499 EXCEPTION
500   WHEN VALUE_ERROR THEN
501      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
502             trace
503                (p_msg      => 'ERROR: '||sqlerrm
504                ,p_level    => C_LEVEL_EXCEPTION
505                ,p_module   => l_log_module);
506      END IF;
507      RAISE;
508  WHEN xla_exceptions_pkg.application_exception THEN
509       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
510       trace
511          (p_msg      => 'ERROR: '||sqlerrm
512          ,p_level    => C_LEVEL_EXCEPTION
513          ,p_module   => l_log_module);
514       END IF;
515       RAISE;
516  WHEN OTHERS THEN
517        xla_exceptions_pkg.raise_message
518            (p_location => 'XLA_00222_AAD_S_000017_PKG.Description_2');
519 END Description_2;
520 
521 ---------------------------------------
522 --
523 -- PRIVATE FUNCTION
524 --         Description_3
525 --
526 ---------------------------------------
527 FUNCTION Description_3 (
528   p_application_id      IN NUMBER
529 , p_ae_header_id        IN NUMBER DEFAULT NULL 
530 --Collection Document Bank Occurrence
531  , p_source_4            IN VARCHAR2
532 --Collection Document Number
533  , p_source_5            IN NUMBER
534 --Collection Document Trade Note Number
535  , p_source_6            IN VARCHAR2
536 )
537 RETURN VARCHAR2
538 IS
539 l_component_type        VARCHAR2(80)   ;
540 l_component_code        VARCHAR2(30)   ;
541 l_component_type_code   VARCHAR2(1)    ;
542 l_component_appl_id     INTEGER        ;
543 l_amb_context_code      VARCHAR2(30)   ;
544 l_ledger_language       VARCHAR2(30)   ;
545 l_source                VARCHAR2(1996) ;
546 l_description           VARCHAR2(2000) ;
547 l_log_module            VARCHAR2(240)  ;
548 BEGIN
549 IF g_log_enabled THEN
550       l_log_module := C_DEFAULT_MODULE||'.Description_3';
551 END IF;
552 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
553       trace
554          (p_msg      => 'BEGIN of Description_3'
555          ,p_level    => C_LEVEL_PROCEDURE
556          ,p_module   => l_log_module);
557 END IF;
558 
559 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
560 l_component_type        := 'AMB_DESCRIPTION';
561 l_component_code        := 'JLBR_AR_BILLS_UND_COLL_JED';
562 l_component_type_code   := 'S';
563 l_component_appl_id     :=  222;
564 l_amb_context_code      := 'DEFAULT';
565 l_source                := NULL;
566 l_description           := NULL;
567 
568 
569  
570  IF 
571 l_ledger_language = 'US' THEN
572     l_description :=  SUBSTR(CONCAT(l_description,'Bills Under Collection for occurrence :'),1,2000);
573     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
574  END IF;   
575   l_source := SUBSTR(p_source_4,1,1996);
576   IF l_source IS NOT NULL THEN
577     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
578     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
579   END IF;  
580  IF 
581 l_ledger_language = 'US' THEN
582     l_description :=  SUBSTR(CONCAT(l_description,' of collection document :'),1,2000);
583     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
584  END IF;   
585   l_source := SUBSTR(TO_CHAR(p_source_5),1,1996);
586   IF l_source IS NOT NULL THEN
587     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
588     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
589   END IF;  
590  IF 
591 l_ledger_language = 'US' THEN
592     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
593     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
594  END IF;   
595   l_source := SUBSTR(p_source_6,1,1996);
596   IF l_source IS NOT NULL THEN
597     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
598     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
599   END IF; 
600  l_description := SUBSTR(l_description,1,1996);
601   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
602         trace
603            (p_msg      => 'END of Description_3'
604            ,p_level    => C_LEVEL_PROCEDURE
608   RETURN l_description;
605            ,p_module   => l_log_module);
606 
607   END IF;
609 
610 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
611       trace
612          (p_msg      => 'END of Description_3'
613          ,p_level    => C_LEVEL_PROCEDURE
614          ,p_module   => l_log_module);
615 END IF;
616 RETURN NULL;
617 EXCEPTION
618   WHEN VALUE_ERROR THEN
619      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
620             trace
621                (p_msg      => 'ERROR: '||sqlerrm
622                ,p_level    => C_LEVEL_EXCEPTION
623                ,p_module   => l_log_module);
624      END IF;
625      RAISE;
626  WHEN xla_exceptions_pkg.application_exception THEN
627       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
628       trace
629          (p_msg      => 'ERROR: '||sqlerrm
630          ,p_level    => C_LEVEL_EXCEPTION
631          ,p_module   => l_log_module);
632       END IF;
633       RAISE;
634  WHEN OTHERS THEN
635        xla_exceptions_pkg.raise_message
636            (p_location => 'XLA_00222_AAD_S_000017_PKG.Description_3');
637 END Description_3;
638 
639 ---------------------------------------
640 --
641 -- PRIVATE FUNCTION
642 --         Description_4
643 --
644 ---------------------------------------
645 FUNCTION Description_4 (
646   p_application_id      IN NUMBER
647 , p_ae_header_id        IN NUMBER DEFAULT NULL 
648 --Collection Document Bank Occurrence
649  , p_source_4            IN VARCHAR2
650 --Collection Document Number
651  , p_source_5            IN NUMBER
652 --Collection Document Trade Note Number
653  , p_source_6            IN VARCHAR2
654 )
655 RETURN VARCHAR2
656 IS
657 l_component_type        VARCHAR2(80)   ;
658 l_component_code        VARCHAR2(30)   ;
659 l_component_type_code   VARCHAR2(1)    ;
660 l_component_appl_id     INTEGER        ;
661 l_amb_context_code      VARCHAR2(30)   ;
662 l_ledger_language       VARCHAR2(30)   ;
663 l_source                VARCHAR2(1996) ;
664 l_description           VARCHAR2(2000) ;
665 l_log_module            VARCHAR2(240)  ;
666 BEGIN
667 IF g_log_enabled THEN
668       l_log_module := C_DEFAULT_MODULE||'.Description_4';
669 END IF;
670 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
671       trace
672          (p_msg      => 'BEGIN of Description_4'
673          ,p_level    => C_LEVEL_PROCEDURE
674          ,p_module   => l_log_module);
675 END IF;
676 
677 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
678 l_component_type        := 'AMB_DESCRIPTION';
679 l_component_code        := 'JLBR_AR_BILLS_UND_DISC_JED';
680 l_component_type_code   := 'S';
681 l_component_appl_id     :=  222;
682 l_amb_context_code      := 'DEFAULT';
683 l_source                := NULL;
684 l_description           := NULL;
685 
686 
687  
688  IF 
689 l_ledger_language = 'US' THEN
690     l_description :=  SUBSTR(CONCAT(l_description,'Bills Under Discount for occurrence :'),1,2000);
691     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
692  END IF;   
693   l_source := SUBSTR(p_source_4,1,1996);
694   IF l_source IS NOT NULL THEN
695     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
696     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
697   END IF;  
698  IF 
699 l_ledger_language = 'US' THEN
700     l_description :=  SUBSTR(CONCAT(l_description,' of factoring collection document :'),1,2000);
701     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
702  END IF;   
703   l_source := SUBSTR(TO_CHAR(p_source_5),1,1996);
704   IF l_source IS NOT NULL THEN
705     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
706     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
707   END IF;  
708  IF 
709 l_ledger_language = 'US' THEN
710     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
711     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
712  END IF;   
713   l_source := SUBSTR(p_source_6,1,1996);
714   IF l_source IS NOT NULL THEN
715     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
716     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
717   END IF; 
718  l_description := SUBSTR(l_description,1,1996);
719   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
720         trace
721            (p_msg      => 'END of Description_4'
722            ,p_level    => C_LEVEL_PROCEDURE
723            ,p_module   => l_log_module);
724 
725   END IF;
726   RETURN l_description;
727 
728 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
729       trace
730          (p_msg      => 'END of Description_4'
731          ,p_level    => C_LEVEL_PROCEDURE
732          ,p_module   => l_log_module);
733 END IF;
734 RETURN NULL;
735 EXCEPTION
736   WHEN VALUE_ERROR THEN
737      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
738             trace
739                (p_msg      => 'ERROR: '||sqlerrm
740                ,p_level    => C_LEVEL_EXCEPTION
741                ,p_module   => l_log_module);
742      END IF;
743      RAISE;
744  WHEN xla_exceptions_pkg.application_exception THEN
745       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
749          ,p_module   => l_log_module);
746       trace
747          (p_msg      => 'ERROR: '||sqlerrm
748          ,p_level    => C_LEVEL_EXCEPTION
750       END IF;
751       RAISE;
752  WHEN OTHERS THEN
753        xla_exceptions_pkg.raise_message
754            (p_location => 'XLA_00222_AAD_S_000017_PKG.Description_4');
755 END Description_4;
756 
757 ---------------------------------------
758 --
759 -- PRIVATE FUNCTION
760 --         Description_5
761 --
762 ---------------------------------------
763 FUNCTION Description_5 (
764   p_application_id      IN NUMBER
765 , p_ae_header_id        IN NUMBER DEFAULT NULL 
766 --Collection Document Bank Occurrence
767  , p_source_4            IN VARCHAR2
768 --Collection Document Number
769  , p_source_5            IN NUMBER
770 --Collection Document Trade Note Number
771  , p_source_6            IN VARCHAR2
772 --Bordero Type
773  , p_source_7            IN VARCHAR2
774  , p_source_7_meaning    IN VARCHAR2
775 )
776 RETURN VARCHAR2
777 IS
778 l_component_type        VARCHAR2(80)   ;
779 l_component_code        VARCHAR2(30)   ;
780 l_component_type_code   VARCHAR2(1)    ;
781 l_component_appl_id     INTEGER        ;
782 l_amb_context_code      VARCHAR2(30)   ;
783 l_ledger_language       VARCHAR2(30)   ;
784 l_source                VARCHAR2(1996) ;
785 l_description           VARCHAR2(2000) ;
786 l_log_module            VARCHAR2(240)  ;
787 BEGIN
788 IF g_log_enabled THEN
789       l_log_module := C_DEFAULT_MODULE||'.Description_5';
790 END IF;
791 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
792       trace
793          (p_msg      => 'BEGIN of Description_5'
794          ,p_level    => C_LEVEL_PROCEDURE
795          ,p_module   => l_log_module);
796 END IF;
797 
798 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
799 l_component_type        := 'AMB_DESCRIPTION';
800 l_component_code        := 'JLBR_AR_CASH_JED';
801 l_component_type_code   := 'S';
802 l_component_appl_id     :=  222;
803 l_amb_context_code      := 'DEFAULT';
804 l_source                := NULL;
805 l_description           := NULL;
806 
807 
808  IF NVL(p_source_7,'
809 ') =  'COLLECTION'
810  THEN 
811  
812  IF 
813 l_ledger_language = 'US' THEN
814     l_description :=  SUBSTR(CONCAT(l_description,'Cash for occurrence :'),1,2000);
815     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
816  END IF;   
817   l_source := SUBSTR(p_source_4,1,1996);
818   IF l_source IS NOT NULL THEN
819     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
820     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
821   END IF;  
822  IF 
823 l_ledger_language = 'US' THEN
824     l_description :=  SUBSTR(CONCAT(l_description,' of collection document :'),1,2000);
825     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
826  END IF;   
827   l_source := SUBSTR(TO_CHAR(p_source_5),1,1996);
828   IF l_source IS NOT NULL THEN
829     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
830     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
831   END IF;  
832  IF 
833 l_ledger_language = 'US' THEN
834     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
835     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
836  END IF;   
837   l_source := SUBSTR(p_source_6,1,1996);
838   IF l_source IS NOT NULL THEN
839     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
840     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
841   END IF; 
842  l_description := SUBSTR(l_description,1,1996);
843   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
844         trace
845            (p_msg      => 'END of Description_5'
846            ,p_level    => C_LEVEL_PROCEDURE
847            ,p_module   => l_log_module);
848 
849   END IF;
850   RETURN l_description;
851 
852  ELSIF NVL(p_source_7,'
853 ') =  'FACTORING'
854  THEN 
855  
856  IF 
857 l_ledger_language = 'US' THEN
858     l_description :=  SUBSTR(CONCAT(l_description,'Cash for occurrence :'),1,2000);
859     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
860  END IF;   
861   l_source := SUBSTR(p_source_4,1,1996);
862   IF l_source IS NOT NULL THEN
863     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
864     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
865   END IF;  
866  IF 
867 l_ledger_language = 'US' THEN
868     l_description :=  SUBSTR(CONCAT(l_description,' of factoring collection document :'),1,2000);
869     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
870  END IF;   
871   l_source := SUBSTR(TO_CHAR(p_source_5),1,1996);
872   IF l_source IS NOT NULL THEN
873     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
874     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
875   END IF;  
876  IF 
877 l_ledger_language = 'US' THEN
878     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
879     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
880  END IF;   
881   l_source := SUBSTR(p_source_6,1,1996);
882   IF l_source IS NOT NULL THEN
886  l_description := SUBSTR(l_description,1,1996);
883     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
884     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
885   END IF; 
887   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
888         trace
889            (p_msg      => 'END of Description_5'
890            ,p_level    => C_LEVEL_PROCEDURE
891            ,p_module   => l_log_module);
892 
893   END IF;
894   RETURN l_description;
895 
896  END IF;
897 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
898       trace
899          (p_msg      => 'END of Description_5'
900          ,p_level    => C_LEVEL_PROCEDURE
901          ,p_module   => l_log_module);
902 END IF;
903 RETURN NULL;
904 EXCEPTION
905   WHEN VALUE_ERROR THEN
906      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
907             trace
908                (p_msg      => 'ERROR: '||sqlerrm
909                ,p_level    => C_LEVEL_EXCEPTION
910                ,p_module   => l_log_module);
911      END IF;
912      RAISE;
913  WHEN xla_exceptions_pkg.application_exception THEN
914       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
915       trace
916          (p_msg      => 'ERROR: '||sqlerrm
917          ,p_level    => C_LEVEL_EXCEPTION
918          ,p_module   => l_log_module);
919       END IF;
920       RAISE;
921  WHEN OTHERS THEN
922        xla_exceptions_pkg.raise_message
923            (p_location => 'XLA_00222_AAD_S_000017_PKG.Description_5');
924 END Description_5;
925 
926 ---------------------------------------
927 --
928 -- PRIVATE FUNCTION
929 --         Description_6
930 --
931 ---------------------------------------
932 FUNCTION Description_6 (
933   p_application_id      IN NUMBER
934 , p_ae_header_id        IN NUMBER DEFAULT NULL 
935 --Collection Document Bank Occurrence
936  , p_source_4            IN VARCHAR2
937 --Collection Document Number
938  , p_source_5            IN NUMBER
939 --Collection Document Trade Note Number
940  , p_source_6            IN VARCHAR2
941 )
942 RETURN VARCHAR2
943 IS
944 l_component_type        VARCHAR2(80)   ;
945 l_component_code        VARCHAR2(30)   ;
946 l_component_type_code   VARCHAR2(1)    ;
947 l_component_appl_id     INTEGER        ;
948 l_amb_context_code      VARCHAR2(30)   ;
949 l_ledger_language       VARCHAR2(30)   ;
950 l_source                VARCHAR2(1996) ;
951 l_description           VARCHAR2(2000) ;
952 l_log_module            VARCHAR2(240)  ;
953 BEGIN
954 IF g_log_enabled THEN
955       l_log_module := C_DEFAULT_MODULE||'.Description_6';
956 END IF;
957 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
958       trace
959          (p_msg      => 'BEGIN of Description_6'
960          ,p_level    => C_LEVEL_PROCEDURE
961          ,p_module   => l_log_module);
962 END IF;
963 
964 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
965 l_component_type        := 'AMB_DESCRIPTION';
966 l_component_code        := 'JLBR_AR_COLL_ENDORSEMENT_JED';
967 l_component_type_code   := 'S';
968 l_component_appl_id     :=  222;
969 l_amb_context_code      := 'DEFAULT';
970 l_source                := NULL;
971 l_description           := NULL;
972 
973 
974  
975  IF 
976 l_ledger_language = 'US' THEN
977     l_description :=  SUBSTR(CONCAT(l_description,'Collection Endorsement for occurrence :'),1,2000);
978     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
979  END IF;   
980   l_source := SUBSTR(p_source_4,1,1996);
981   IF l_source IS NOT NULL THEN
982     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
983     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
984   END IF;  
985  IF 
986 l_ledger_language = 'US' THEN
987     l_description :=  SUBSTR(CONCAT(l_description,' of collection document :'),1,2000);
988     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
989  END IF;   
990   l_source := SUBSTR(TO_CHAR(p_source_5),1,1996);
991   IF l_source IS NOT NULL THEN
992     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
993     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
994   END IF;  
995  IF 
996 l_ledger_language = 'US' THEN
997     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
998     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
999  END IF;   
1000   l_source := SUBSTR(p_source_6,1,1996);
1001   IF l_source IS NOT NULL THEN
1002     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1003     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1004   END IF; 
1005  l_description := SUBSTR(l_description,1,1996);
1006   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1007         trace
1008            (p_msg      => 'END of Description_6'
1009            ,p_level    => C_LEVEL_PROCEDURE
1010            ,p_module   => l_log_module);
1011 
1012   END IF;
1013   RETURN l_description;
1014 
1015 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1016       trace
1017          (p_msg      => 'END of Description_6'
1018          ,p_level    => C_LEVEL_PROCEDURE
1019          ,p_module   => l_log_module);
1020 END IF;
1021 RETURN NULL;
1022 EXCEPTION
1023   WHEN VALUE_ERROR THEN
1027                ,p_level    => C_LEVEL_EXCEPTION
1024      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1025             trace
1026                (p_msg      => 'ERROR: '||sqlerrm
1028                ,p_module   => l_log_module);
1029      END IF;
1030      RAISE;
1031  WHEN xla_exceptions_pkg.application_exception THEN
1032       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1033       trace
1034          (p_msg      => 'ERROR: '||sqlerrm
1035          ,p_level    => C_LEVEL_EXCEPTION
1036          ,p_module   => l_log_module);
1037       END IF;
1038       RAISE;
1039  WHEN OTHERS THEN
1040        xla_exceptions_pkg.raise_message
1041            (p_location => 'XLA_00222_AAD_S_000017_PKG.Description_6');
1042 END Description_6;
1043 
1044 ---------------------------------------
1045 --
1046 -- PRIVATE FUNCTION
1047 --         Description_7
1048 --
1049 ---------------------------------------
1050 FUNCTION Description_7 (
1051   p_application_id      IN NUMBER
1052 , p_ae_header_id        IN NUMBER DEFAULT NULL 
1053 --Collection Document Bank Occurrence
1054  , p_source_4            IN VARCHAR2
1055 --Collection Document Number
1056  , p_source_5            IN NUMBER
1057 --Collection Document Trade Note Number
1058  , p_source_6            IN VARCHAR2
1059 )
1060 RETURN VARCHAR2
1061 IS
1062 l_component_type        VARCHAR2(80)   ;
1063 l_component_code        VARCHAR2(30)   ;
1064 l_component_type_code   VARCHAR2(1)    ;
1065 l_component_appl_id     INTEGER        ;
1066 l_amb_context_code      VARCHAR2(30)   ;
1067 l_ledger_language       VARCHAR2(30)   ;
1068 l_source                VARCHAR2(1996) ;
1069 l_description           VARCHAR2(2000) ;
1070 l_log_module            VARCHAR2(240)  ;
1071 BEGIN
1072 IF g_log_enabled THEN
1073       l_log_module := C_DEFAULT_MODULE||'.Description_7';
1074 END IF;
1075 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1076       trace
1077          (p_msg      => 'BEGIN of Description_7'
1078          ,p_level    => C_LEVEL_PROCEDURE
1079          ,p_module   => l_log_module);
1080 END IF;
1081 
1082 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
1083 l_component_type        := 'AMB_DESCRIPTION';
1084 l_component_code        := 'JLBR_AR_DISC_ENDORSEMENT_JED';
1085 l_component_type_code   := 'S';
1086 l_component_appl_id     :=  222;
1087 l_amb_context_code      := 'DEFAULT';
1088 l_source                := NULL;
1089 l_description           := NULL;
1090 
1091 
1092  
1093  IF 
1094 l_ledger_language = 'US' THEN
1095     l_description :=  SUBSTR(CONCAT(l_description,'Discount Endorsement for occurrence :'),1,2000);
1096     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1097  END IF;   
1098   l_source := SUBSTR(p_source_4,1,1996);
1099   IF l_source IS NOT NULL THEN
1100     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1101     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1102   END IF;  
1103  IF 
1104 l_ledger_language = 'US' THEN
1105     l_description :=  SUBSTR(CONCAT(l_description,' of factoring collection document :'),1,2000);
1106     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1107  END IF;   
1108   l_source := SUBSTR(TO_CHAR(p_source_5),1,1996);
1109   IF l_source IS NOT NULL THEN
1110     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1111     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1112   END IF;  
1113  IF 
1114 l_ledger_language = 'US' THEN
1115     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
1116     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1117  END IF;   
1118   l_source := SUBSTR(p_source_6,1,1996);
1119   IF l_source IS NOT NULL THEN
1120     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1121     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1122   END IF; 
1123  l_description := SUBSTR(l_description,1,1996);
1124   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1125         trace
1126            (p_msg      => 'END of Description_7'
1127            ,p_level    => C_LEVEL_PROCEDURE
1128            ,p_module   => l_log_module);
1129 
1130   END IF;
1131   RETURN l_description;
1132 
1133 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1134       trace
1135          (p_msg      => 'END of Description_7'
1136          ,p_level    => C_LEVEL_PROCEDURE
1137          ,p_module   => l_log_module);
1138 END IF;
1139 RETURN NULL;
1140 EXCEPTION
1141   WHEN VALUE_ERROR THEN
1142      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1143             trace
1144                (p_msg      => 'ERROR: '||sqlerrm
1145                ,p_level    => C_LEVEL_EXCEPTION
1146                ,p_module   => l_log_module);
1147      END IF;
1148      RAISE;
1149  WHEN xla_exceptions_pkg.application_exception THEN
1150       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1151       trace
1152          (p_msg      => 'ERROR: '||sqlerrm
1153          ,p_level    => C_LEVEL_EXCEPTION
1154          ,p_module   => l_log_module);
1155       END IF;
1156       RAISE;
1157  WHEN OTHERS THEN
1158        xla_exceptions_pkg.raise_message
1159            (p_location => 'XLA_00222_AAD_S_000017_PKG.Description_7');
1160 END Description_7;
1161 
1165 --         Description_8
1162 ---------------------------------------
1163 --
1164 -- PRIVATE FUNCTION
1166 --
1167 ---------------------------------------
1168 FUNCTION Description_8 (
1169   p_application_id      IN NUMBER
1170 , p_ae_header_id        IN NUMBER DEFAULT NULL 
1171 --Collection Document Bank Occurrence
1172  , p_source_4            IN VARCHAR2
1173 --Collection Document Number
1174  , p_source_5            IN NUMBER
1175 --Collection Document Trade Note Number
1176  , p_source_6            IN VARCHAR2
1177 )
1178 RETURN VARCHAR2
1179 IS
1180 l_component_type        VARCHAR2(80)   ;
1181 l_component_code        VARCHAR2(30)   ;
1182 l_component_type_code   VARCHAR2(1)    ;
1183 l_component_appl_id     INTEGER        ;
1184 l_amb_context_code      VARCHAR2(30)   ;
1185 l_ledger_language       VARCHAR2(30)   ;
1186 l_source                VARCHAR2(1996) ;
1187 l_description           VARCHAR2(2000) ;
1188 l_log_module            VARCHAR2(240)  ;
1189 BEGIN
1190 IF g_log_enabled THEN
1191       l_log_module := C_DEFAULT_MODULE||'.Description_8';
1192 END IF;
1193 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1194       trace
1195          (p_msg      => 'BEGIN of Description_8'
1196          ,p_level    => C_LEVEL_PROCEDURE
1197          ,p_module   => l_log_module);
1198 END IF;
1199 
1200 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
1201 l_component_type        := 'AMB_DESCRIPTION';
1202 l_component_code        := 'JLBR_AR_FACT_CHARGES_JED';
1203 l_component_type_code   := 'S';
1204 l_component_appl_id     :=  222;
1205 l_amb_context_code      := 'DEFAULT';
1206 l_source                := NULL;
1207 l_description           := NULL;
1208 
1209 
1210  
1211  IF 
1212 l_ledger_language = 'US' THEN
1213     l_description :=  SUBSTR(CONCAT(l_description,'Factoring Charges for occurrence :'),1,2000);
1214     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1215  END IF;   
1216   l_source := SUBSTR(p_source_4,1,1996);
1217   IF l_source IS NOT NULL THEN
1218     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1219     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1220   END IF;  
1221  IF 
1222 l_ledger_language = 'US' THEN
1223     l_description :=  SUBSTR(CONCAT(l_description,' of factoring collection document :'),1,2000);
1224     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1225  END IF;   
1226   l_source := SUBSTR(TO_CHAR(p_source_5),1,1996);
1227   IF l_source IS NOT NULL THEN
1228     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1229     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1230   END IF;  
1231  IF 
1232 l_ledger_language = 'US' THEN
1233     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
1234     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1235  END IF;   
1236   l_source := SUBSTR(p_source_6,1,1996);
1237   IF l_source IS NOT NULL THEN
1238     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1239     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1240   END IF; 
1241  l_description := SUBSTR(l_description,1,1996);
1242   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1243         trace
1244            (p_msg      => 'END of Description_8'
1245            ,p_level    => C_LEVEL_PROCEDURE
1246            ,p_module   => l_log_module);
1247 
1248   END IF;
1249   RETURN l_description;
1250 
1251 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1252       trace
1253          (p_msg      => 'END of Description_8'
1254          ,p_level    => C_LEVEL_PROCEDURE
1255          ,p_module   => l_log_module);
1256 END IF;
1257 RETURN NULL;
1258 EXCEPTION
1259   WHEN VALUE_ERROR THEN
1260      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1261             trace
1262                (p_msg      => 'ERROR: '||sqlerrm
1263                ,p_level    => C_LEVEL_EXCEPTION
1264                ,p_module   => l_log_module);
1265      END IF;
1266      RAISE;
1267  WHEN xla_exceptions_pkg.application_exception THEN
1268       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1269       trace
1270          (p_msg      => 'ERROR: '||sqlerrm
1271          ,p_level    => C_LEVEL_EXCEPTION
1272          ,p_module   => l_log_module);
1273       END IF;
1274       RAISE;
1275  WHEN OTHERS THEN
1276        xla_exceptions_pkg.raise_message
1277            (p_location => 'XLA_00222_AAD_S_000017_PKG.Description_8');
1278 END Description_8;
1279 
1280 ---------------------------------------
1281 --
1282 -- PRIVATE FUNCTION
1283 --         Description_9
1284 --
1285 ---------------------------------------
1286 FUNCTION Description_9 (
1287   p_application_id      IN NUMBER
1288 , p_ae_header_id        IN NUMBER DEFAULT NULL 
1289 --Receipt Number
1290  , p_source_8            IN VARCHAR2
1291 --Receipt Document Sequence Number
1292  , p_source_9            IN NUMBER
1293 --Receipt Method Name
1294  , p_source_10            IN VARCHAR2
1295 --Receipt Date
1296  , p_source_11            IN DATE
1297 --Remittance Bank Name
1298  , p_source_12            IN VARCHAR2
1299 --Remittance Bank Account Name
1300  , p_source_13            IN VARCHAR2
1301 )
1302 RETURN VARCHAR2
1303 IS
1307 l_component_appl_id     INTEGER        ;
1304 l_component_type        VARCHAR2(80)   ;
1305 l_component_code        VARCHAR2(30)   ;
1306 l_component_type_code   VARCHAR2(1)    ;
1308 l_amb_context_code      VARCHAR2(30)   ;
1309 l_ledger_language       VARCHAR2(30)   ;
1310 l_source                VARCHAR2(1996) ;
1311 l_description           VARCHAR2(2000) ;
1312 l_log_module            VARCHAR2(240)  ;
1313 BEGIN
1314 IF g_log_enabled THEN
1315       l_log_module := C_DEFAULT_MODULE||'.Description_9';
1316 END IF;
1317 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1318       trace
1319          (p_msg      => 'BEGIN of Description_9'
1320          ,p_level    => C_LEVEL_PROCEDURE
1321          ,p_module   => l_log_module);
1322 END IF;
1323 
1324 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
1325 l_component_type        := 'AMB_DESCRIPTION';
1326 l_component_code        := 'MISC_RCTS_H';
1327 l_component_type_code   := 'S';
1328 l_component_appl_id     :=  222;
1329 l_amb_context_code      := 'DEFAULT';
1330 l_source                := NULL;
1331 l_description           := NULL;
1332 
1333 
1334  
1335  IF 
1336 l_ledger_language = 'US' THEN
1337     l_description :=  SUBSTR(CONCAT(l_description,'Receipt Number -'),1,2000);
1338     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1339  END IF;   
1340   l_source := SUBSTR(p_source_8,1,1996);
1341   IF l_source IS NOT NULL THEN
1342     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1343     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1344   END IF;  
1345  IF 
1346 l_ledger_language = 'US' THEN
1347     l_description :=  SUBSTR(CONCAT(l_description,'Document Number -'),1,2000);
1348     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1349  END IF;   
1350   l_source := SUBSTR(TO_CHAR(p_source_9),1,1996);
1351   IF l_source IS NOT NULL THEN
1352     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1353     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1354   END IF;  
1355  IF 
1356 l_ledger_language = 'US' THEN
1357     l_description :=  SUBSTR(CONCAT(l_description,'Receipt Method Name -'),1,2000);
1358     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1359  END IF;   
1360   l_source := SUBSTR(p_source_10,1,1996);
1361   IF l_source IS NOT NULL THEN
1362     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1363     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1364   END IF;  
1365  IF 
1366 l_ledger_language = 'US' THEN
1367     l_description :=  SUBSTR(CONCAT(l_description,'Receipt Date -'),1,2000);
1368     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1369  END IF;   
1370   l_source := SUBSTR(xla_ae_sources_pkg.DATE_TO_CHAR(p_source_11,
1371                      xla_ae_journal_entry_pkg.g_cache_ledgers_info.nls_desc_language),1,1996);
1372   IF l_source IS NOT NULL THEN
1373     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1374     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1375   END IF;  
1376  IF 
1377 l_ledger_language = 'US' THEN
1378     l_description :=  SUBSTR(CONCAT(l_description,'Bank Name -'),1,2000);
1379     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1380  END IF;   
1381   l_source := SUBSTR(p_source_12,1,1996);
1382   IF l_source IS NOT NULL THEN
1383     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1384     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1385   END IF;  
1386  IF 
1387 l_ledger_language = 'US' THEN
1388     l_description :=  SUBSTR(CONCAT(l_description,'Bank Account Name -'),1,2000);
1389     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1390  END IF;   
1391   l_source := SUBSTR(p_source_13,1,1996);
1392   IF l_source IS NOT NULL THEN
1393     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1394     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1395   END IF; 
1396  l_description := SUBSTR(l_description,1,1996);
1397   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1398         trace
1399            (p_msg      => 'END of Description_9'
1400            ,p_level    => C_LEVEL_PROCEDURE
1401            ,p_module   => l_log_module);
1402 
1403   END IF;
1404   RETURN l_description;
1405 
1406 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1407       trace
1408          (p_msg      => 'END of Description_9'
1409          ,p_level    => C_LEVEL_PROCEDURE
1410          ,p_module   => l_log_module);
1411 END IF;
1412 RETURN NULL;
1413 EXCEPTION
1414   WHEN VALUE_ERROR THEN
1415      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1416             trace
1417                (p_msg      => 'ERROR: '||sqlerrm
1418                ,p_level    => C_LEVEL_EXCEPTION
1419                ,p_module   => l_log_module);
1420      END IF;
1421      RAISE;
1422  WHEN xla_exceptions_pkg.application_exception THEN
1423       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1424       trace
1425          (p_msg      => 'ERROR: '||sqlerrm
1426          ,p_level    => C_LEVEL_EXCEPTION
1427          ,p_module   => l_log_module);
1428       END IF;
1429       RAISE;
1430  WHEN OTHERS THEN
1431        xla_exceptions_pkg.raise_message
1432            (p_location => 'XLA_00222_AAD_S_000017_PKG.Description_9');
1433 END Description_9;
1434 
1438 --         Description_10
1435 ---------------------------------------
1436 --
1437 -- PRIVATE FUNCTION
1439 --
1440 ---------------------------------------
1441 FUNCTION Description_10 (
1442   p_application_id      IN NUMBER
1443 , p_ae_header_id        IN NUMBER DEFAULT NULL 
1444 --Receipt Number
1445  , p_source_8            IN VARCHAR2
1446 --Receipt Document Sequence Number
1447  , p_source_9            IN NUMBER
1448 --Receipt Method Name
1449  , p_source_10            IN VARCHAR2
1450 --Receipt Date
1451  , p_source_11            IN DATE
1452 --Remittance Bank Name
1453  , p_source_12            IN VARCHAR2
1454 --Remittance Bank Account Name
1455  , p_source_13            IN VARCHAR2
1456 )
1457 RETURN VARCHAR2
1458 IS
1459 l_component_type        VARCHAR2(80)   ;
1460 l_component_code        VARCHAR2(30)   ;
1461 l_component_type_code   VARCHAR2(1)    ;
1462 l_component_appl_id     INTEGER        ;
1463 l_amb_context_code      VARCHAR2(30)   ;
1464 l_ledger_language       VARCHAR2(30)   ;
1465 l_source                VARCHAR2(1996) ;
1466 l_description           VARCHAR2(2000) ;
1467 l_log_module            VARCHAR2(240)  ;
1468 BEGIN
1469 IF g_log_enabled THEN
1470       l_log_module := C_DEFAULT_MODULE||'.Description_10';
1471 END IF;
1472 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1473       trace
1474          (p_msg      => 'BEGIN of Description_10'
1475          ,p_level    => C_LEVEL_PROCEDURE
1476          ,p_module   => l_log_module);
1477 END IF;
1478 
1479 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
1480 l_component_type        := 'AMB_DESCRIPTION';
1481 l_component_code        := 'RCT_H';
1482 l_component_type_code   := 'S';
1483 l_component_appl_id     :=  222;
1484 l_amb_context_code      := 'DEFAULT';
1485 l_source                := NULL;
1486 l_description           := NULL;
1487 
1488 
1489  
1490  IF 
1491 l_ledger_language = 'US' THEN
1492     l_description :=  SUBSTR(CONCAT(l_description,'Receipt Number -'),1,2000);
1493     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1494  END IF;   
1495   l_source := SUBSTR(p_source_8,1,1996);
1496   IF l_source IS NOT NULL THEN
1497     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1498     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1499   END IF;  
1500  IF 
1501 l_ledger_language = 'US' THEN
1502     l_description :=  SUBSTR(CONCAT(l_description,'Document Number -'),1,2000);
1503     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1504  END IF;   
1505   l_source := SUBSTR(TO_CHAR(p_source_9),1,1996);
1506   IF l_source IS NOT NULL THEN
1507     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1508     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1509   END IF;  
1510  IF 
1511 l_ledger_language = 'US' THEN
1512     l_description :=  SUBSTR(CONCAT(l_description,'Receipt Method Name -'),1,2000);
1513     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1514  END IF;   
1515   l_source := SUBSTR(p_source_10,1,1996);
1516   IF l_source IS NOT NULL THEN
1517     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1518     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1519   END IF;  
1520  IF 
1521 l_ledger_language = 'US' THEN
1522     l_description :=  SUBSTR(CONCAT(l_description,'Receipt Date -'),1,2000);
1523     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1524  END IF;   
1525   l_source := SUBSTR(xla_ae_sources_pkg.DATE_TO_CHAR(p_source_11,
1526                      xla_ae_journal_entry_pkg.g_cache_ledgers_info.nls_desc_language),1,1996);
1527   IF l_source IS NOT NULL THEN
1528     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1529     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1530   END IF;  
1531  IF 
1532 l_ledger_language = 'US' THEN
1533     l_description :=  SUBSTR(CONCAT(l_description,'Bank Name -'),1,2000);
1534     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1535  END IF;   
1536   l_source := SUBSTR(p_source_12,1,1996);
1537   IF l_source IS NOT NULL THEN
1538     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1539     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1540   END IF;  
1541  IF 
1542 l_ledger_language = 'US' THEN
1543     l_description :=  SUBSTR(CONCAT(l_description,'Bank Account Name -'),1,2000);
1544     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1545  END IF;   
1546   l_source := SUBSTR(p_source_13,1,1996);
1547   IF l_source IS NOT NULL THEN
1548     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1549     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1550   END IF; 
1551  l_description := SUBSTR(l_description,1,1996);
1552   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1553         trace
1554            (p_msg      => 'END of Description_10'
1555            ,p_level    => C_LEVEL_PROCEDURE
1556            ,p_module   => l_log_module);
1557 
1558   END IF;
1559   RETURN l_description;
1560 
1561 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1562       trace
1563          (p_msg      => 'END of Description_10'
1564          ,p_level    => C_LEVEL_PROCEDURE
1565          ,p_module   => l_log_module);
1566 END IF;
1567 RETURN NULL;
1568 EXCEPTION
1572                (p_msg      => 'ERROR: '||sqlerrm
1569   WHEN VALUE_ERROR THEN
1570      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1571             trace
1573                ,p_level    => C_LEVEL_EXCEPTION
1574                ,p_module   => l_log_module);
1575      END IF;
1576      RAISE;
1577  WHEN xla_exceptions_pkg.application_exception THEN
1578       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1579       trace
1580          (p_msg      => 'ERROR: '||sqlerrm
1581          ,p_level    => C_LEVEL_EXCEPTION
1582          ,p_module   => l_log_module);
1583       END IF;
1584       RAISE;
1585  WHEN OTHERS THEN
1586        xla_exceptions_pkg.raise_message
1587            (p_location => 'XLA_00222_AAD_S_000017_PKG.Description_10');
1588 END Description_10;
1589 
1590 ---------------------------------------
1591 --
1592 -- PRIVATE FUNCTION
1593 --         Description_11
1594 --
1595 ---------------------------------------
1596 FUNCTION Description_11 (
1597   p_application_id      IN NUMBER
1598 , p_ae_header_id        IN NUMBER DEFAULT NULL 
1599 --Transaction Type Name
1600  , p_source_1            IN VARCHAR2
1601 --Transaction Number
1602  , p_source_2            IN VARCHAR2
1603 --Transaction Document Sequence Number
1604  , p_source_3            IN NUMBER
1605 )
1606 RETURN VARCHAR2
1607 IS
1608 l_component_type        VARCHAR2(80)   ;
1609 l_component_code        VARCHAR2(30)   ;
1610 l_component_type_code   VARCHAR2(1)    ;
1611 l_component_appl_id     INTEGER        ;
1612 l_amb_context_code      VARCHAR2(30)   ;
1613 l_ledger_language       VARCHAR2(30)   ;
1614 l_source                VARCHAR2(1996) ;
1615 l_description           VARCHAR2(2000) ;
1616 l_log_module            VARCHAR2(240)  ;
1617 BEGIN
1618 IF g_log_enabled THEN
1619       l_log_module := C_DEFAULT_MODULE||'.Description_11';
1620 END IF;
1621 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1622       trace
1623          (p_msg      => 'BEGIN of Description_11'
1624          ,p_level    => C_LEVEL_PROCEDURE
1625          ,p_module   => l_log_module);
1626 END IF;
1627 
1628 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
1629 l_component_type        := 'AMB_DESCRIPTION';
1630 l_component_code        := 'RCT_L';
1631 l_component_type_code   := 'S';
1632 l_component_appl_id     :=  222;
1633 l_amb_context_code      := 'DEFAULT';
1634 l_source                := NULL;
1635 l_description           := NULL;
1636 
1637 
1638  IF p_source_2 IS NOT NULL 
1639  THEN 
1640  
1641  IF 
1642 l_ledger_language = 'US' THEN
1643     l_description :=  SUBSTR(CONCAT(l_description,'Receipt Application to Transaction Type -'),1,2000);
1644     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1645  END IF;   
1646   l_source := SUBSTR(p_source_1,1,1996);
1647   IF l_source IS NOT NULL THEN
1648     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1649     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1650   END IF;  
1651  IF 
1652 l_ledger_language = 'US' THEN
1653     l_description :=  SUBSTR(CONCAT(l_description,' Transaction Number'),1,2000);
1654     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1655  END IF;   
1656   l_source := SUBSTR(p_source_2,1,1996);
1657   IF l_source IS NOT NULL THEN
1658     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1659     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1660   END IF;  
1661  IF 
1662 l_ledger_language = 'US' THEN
1663     l_description :=  SUBSTR(CONCAT(l_description,' Transaction Document Number'),1,2000);
1664     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1665  END IF;   
1666   l_source := SUBSTR(TO_CHAR(p_source_3),1,1996);
1667   IF l_source IS NOT NULL THEN
1668     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1669     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1670   END IF; 
1671  l_description := SUBSTR(l_description,1,1996);
1672   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1673         trace
1674            (p_msg      => 'END of Description_11'
1675            ,p_level    => C_LEVEL_PROCEDURE
1676            ,p_module   => l_log_module);
1677 
1678   END IF;
1679   RETURN l_description;
1680 
1681  END IF;
1682 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1683       trace
1684          (p_msg      => 'END of Description_11'
1685          ,p_level    => C_LEVEL_PROCEDURE
1686          ,p_module   => l_log_module);
1687 END IF;
1688 RETURN NULL;
1689 EXCEPTION
1690   WHEN VALUE_ERROR THEN
1691      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1692             trace
1693                (p_msg      => 'ERROR: '||sqlerrm
1694                ,p_level    => C_LEVEL_EXCEPTION
1695                ,p_module   => l_log_module);
1696      END IF;
1697      RAISE;
1698  WHEN xla_exceptions_pkg.application_exception THEN
1699       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1700       trace
1701          (p_msg      => 'ERROR: '||sqlerrm
1702          ,p_level    => C_LEVEL_EXCEPTION
1703          ,p_module   => l_log_module);
1704       END IF;
1705       RAISE;
1706  WHEN OTHERS THEN
1707        xla_exceptions_pkg.raise_message
1708            (p_location => 'XLA_00222_AAD_S_000017_PKG.Description_11');
1712 --
1709 END Description_11;
1710 
1711 ---------------------------------------
1713 -- PRIVATE FUNCTION
1714 --         AcctDerRule_12
1715 --
1716 ---------------------------------------
1717 FUNCTION AcctDerRule_12 (
1718   p_application_id              IN NUMBER
1719 , p_ae_header_id                IN NUMBER
1720 , p_side                        IN VARCHAR2 
1721 --Credit Memo Distribution GL Account
1722  , p_source_14            IN NUMBER
1723 , x_transaction_coa_id         OUT NOCOPY NUMBER
1724 , x_accounting_coa_id          OUT NOCOPY NUMBER
1725 , x_value_type_code            OUT NOCOPY VARCHAR2
1726 )
1727 RETURN NUMBER
1728 IS
1729 l_component_type       VARCHAR2(80)  ;
1730 l_component_code       VARCHAR2(30)  ;
1731 l_component_type_code  VARCHAR2(1)   ;
1732 l_component_appl_id    INTEGER       ;
1733 l_amb_context_code     VARCHAR2(30)  ;
1734 l_log_module           VARCHAR2(240) ;
1735 l_output_value         NUMBER        ;
1736 BEGIN
1737 IF g_log_enabled THEN
1738       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_12';
1739 END IF;
1740 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1741       trace
1742          (p_msg      => 'BEGIN of AcctDerRule_12'
1743          ,p_level    => C_LEVEL_PROCEDURE
1744          ,p_module   => l_log_module);
1745 END IF;
1746 --
1747 l_component_type         := 'AMB_ADR';
1748 l_component_code         := 'CM_DIST_CCID';
1749 l_component_type_code    := 'S';
1750 l_component_appl_id      :=  222;
1751 l_amb_context_code       := 'DEFAULT';
1752 x_transaction_coa_id     :=  null;
1753 x_accounting_coa_id      :=  null;
1754 --
1755 
1756  --
1757   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1758       trace
1759          (p_msg      => 'END of AcctDerRule_12'
1760          ,p_level    => C_LEVEL_PROCEDURE
1761          ,p_module   => l_log_module);
1762   END IF;
1763   x_value_type_code := 'S';
1764   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_14));
1765   RETURN l_output_value;
1766 
1767 --
1768 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1769       trace
1770          (p_msg      => 'END of AcctDerRule_12(invalid)'
1771          ,p_level    => C_LEVEL_PROCEDURE
1772          ,p_module   => l_log_module);
1773 END IF;
1774 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1775 x_value_type_code := null;
1776 l_output_value    := null;
1777 xla_accounting_err_pkg.build_message
1778                  (p_appli_s_name            => 'XLA'
1779                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1780                  ,p_token_1                 => 'COMPONENT_NAME'
1781                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1782                                                             l_component_type
1783                                                           , l_component_code
1784                                                           , l_component_type_code
1785                                                           , l_component_appl_id
1786                                                           , l_amb_context_code
1787                                                           )
1788                  ,p_token_2                 => 'OWNER'
1789                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1790                                                         'XLA_OWNER_TYPE'
1791                                                         ,l_component_type_code
1792                                                         )
1793                  ,p_token_3                 => 'PAD_NAME'
1794                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1795                  ,p_token_4                 => 'PAD_OWNER'
1796                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1797                                                         'XLA_OWNER_TYPE'
1798                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1799                                                         )
1800                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1801                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1802                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1803                  ,p_ae_header_id            => NULL
1804 );
1805 RETURN l_output_value;
1806 EXCEPTION
1807   WHEN xla_exceptions_pkg.application_exception THEN
1808       RAISE;
1809   WHEN OTHERS THEN
1810        xla_exceptions_pkg.raise_message
1811            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctDerRule_12');
1812 END AcctDerRule_12;
1813 --
1814 
1815 ---------------------------------------
1816 --
1817 -- PRIVATE FUNCTION
1818 --         AcctDerRule_13
1819 --
1820 ---------------------------------------
1821 FUNCTION AcctDerRule_13 (
1822   p_application_id              IN NUMBER
1823 , p_ae_header_id                IN NUMBER
1824 , p_side                        IN VARCHAR2 
1825 --Collection Document Bank Charges Account
1826  , p_source_15            IN NUMBER
1827 , x_transaction_coa_id         OUT NOCOPY NUMBER
1828 , x_accounting_coa_id          OUT NOCOPY NUMBER
1829 , x_value_type_code            OUT NOCOPY VARCHAR2
1830 )
1831 RETURN NUMBER
1832 IS
1833 l_component_type       VARCHAR2(80)  ;
1837 l_amb_context_code     VARCHAR2(30)  ;
1834 l_component_code       VARCHAR2(30)  ;
1835 l_component_type_code  VARCHAR2(1)   ;
1836 l_component_appl_id    INTEGER       ;
1838 l_log_module           VARCHAR2(240) ;
1839 l_output_value         NUMBER        ;
1840 BEGIN
1841 IF g_log_enabled THEN
1842       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_13';
1843 END IF;
1844 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1845       trace
1846          (p_msg      => 'BEGIN of AcctDerRule_13'
1847          ,p_level    => C_LEVEL_PROCEDURE
1848          ,p_module   => l_log_module);
1849 END IF;
1850 --
1851 l_component_type         := 'AMB_ADR';
1852 l_component_code         := 'COLL_DOC_BANK_CHARGES';
1853 l_component_type_code    := 'S';
1854 l_component_appl_id      :=  222;
1855 l_amb_context_code       := 'DEFAULT';
1856 x_transaction_coa_id     :=  null;
1857 x_accounting_coa_id      :=  null;
1858 --
1859 
1860  --
1861   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1862       trace
1863          (p_msg      => 'END of AcctDerRule_13'
1864          ,p_level    => C_LEVEL_PROCEDURE
1865          ,p_module   => l_log_module);
1866   END IF;
1867   x_value_type_code := 'S';
1868   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_15));
1869   RETURN l_output_value;
1870 
1871 --
1872 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1873       trace
1874          (p_msg      => 'END of AcctDerRule_13(invalid)'
1875          ,p_level    => C_LEVEL_PROCEDURE
1876          ,p_module   => l_log_module);
1877 END IF;
1878 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1879 x_value_type_code := null;
1880 l_output_value    := null;
1881 xla_accounting_err_pkg.build_message
1882                  (p_appli_s_name            => 'XLA'
1883                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1884                  ,p_token_1                 => 'COMPONENT_NAME'
1885                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1886                                                             l_component_type
1887                                                           , l_component_code
1888                                                           , l_component_type_code
1889                                                           , l_component_appl_id
1890                                                           , l_amb_context_code
1891                                                           )
1892                  ,p_token_2                 => 'OWNER'
1893                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1894                                                         'XLA_OWNER_TYPE'
1895                                                         ,l_component_type_code
1896                                                         )
1897                  ,p_token_3                 => 'PAD_NAME'
1898                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
1899                  ,p_token_4                 => 'PAD_OWNER'
1900                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
1901                                                         'XLA_OWNER_TYPE'
1902                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
1903                                                         )
1904                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
1905                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
1906                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
1907                  ,p_ae_header_id            => NULL
1908 );
1909 RETURN l_output_value;
1910 EXCEPTION
1911   WHEN xla_exceptions_pkg.application_exception THEN
1912       RAISE;
1913   WHEN OTHERS THEN
1914        xla_exceptions_pkg.raise_message
1915            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctDerRule_13');
1916 END AcctDerRule_13;
1917 --
1918 
1919 ---------------------------------------
1920 --
1921 -- PRIVATE FUNCTION
1922 --         AcctDerRule_14
1923 --
1924 ---------------------------------------
1925 FUNCTION AcctDerRule_14 (
1926   p_application_id              IN NUMBER
1927 , p_ae_header_id                IN NUMBER
1928 , p_side                        IN VARCHAR2 
1929 --Collection Document Bills Under Collection Account
1930  , p_source_16            IN NUMBER
1931 , x_transaction_coa_id         OUT NOCOPY NUMBER
1932 , x_accounting_coa_id          OUT NOCOPY NUMBER
1933 , x_value_type_code            OUT NOCOPY VARCHAR2
1934 )
1935 RETURN NUMBER
1936 IS
1937 l_component_type       VARCHAR2(80)  ;
1938 l_component_code       VARCHAR2(30)  ;
1939 l_component_type_code  VARCHAR2(1)   ;
1940 l_component_appl_id    INTEGER       ;
1941 l_amb_context_code     VARCHAR2(30)  ;
1942 l_log_module           VARCHAR2(240) ;
1943 l_output_value         NUMBER        ;
1944 BEGIN
1945 IF g_log_enabled THEN
1946       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_14';
1947 END IF;
1948 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1949       trace
1950          (p_msg      => 'BEGIN of AcctDerRule_14'
1951          ,p_level    => C_LEVEL_PROCEDURE
1952          ,p_module   => l_log_module);
1953 END IF;
1954 --
1955 l_component_type         := 'AMB_ADR';
1959 l_amb_context_code       := 'DEFAULT';
1956 l_component_code         := 'COLL_DOC_BILLS_UNDER_COLL';
1957 l_component_type_code    := 'S';
1958 l_component_appl_id      :=  222;
1960 x_transaction_coa_id     :=  null;
1961 x_accounting_coa_id      :=  null;
1962 --
1963 
1964  --
1965   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1966       trace
1967          (p_msg      => 'END of AcctDerRule_14'
1968          ,p_level    => C_LEVEL_PROCEDURE
1969          ,p_module   => l_log_module);
1970   END IF;
1971   x_value_type_code := 'S';
1972   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_16));
1973   RETURN l_output_value;
1974 
1975 --
1976 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1977       trace
1978          (p_msg      => 'END of AcctDerRule_14(invalid)'
1979          ,p_level    => C_LEVEL_PROCEDURE
1980          ,p_module   => l_log_module);
1981 END IF;
1982 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
1983 x_value_type_code := null;
1984 l_output_value    := null;
1985 xla_accounting_err_pkg.build_message
1986                  (p_appli_s_name            => 'XLA'
1987                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
1988                  ,p_token_1                 => 'COMPONENT_NAME'
1989                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
1990                                                             l_component_type
1991                                                           , l_component_code
1992                                                           , l_component_type_code
1993                                                           , l_component_appl_id
1994                                                           , l_amb_context_code
1995                                                           )
1996                  ,p_token_2                 => 'OWNER'
1997                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
1998                                                         'XLA_OWNER_TYPE'
1999                                                         ,l_component_type_code
2000                                                         )
2001                  ,p_token_3                 => 'PAD_NAME'
2002                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2003                  ,p_token_4                 => 'PAD_OWNER'
2004                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2005                                                         'XLA_OWNER_TYPE'
2006                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2007                                                         )
2008                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2009                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2010                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2011                  ,p_ae_header_id            => NULL
2012 );
2013 RETURN l_output_value;
2014 EXCEPTION
2015   WHEN xla_exceptions_pkg.application_exception THEN
2016       RAISE;
2017   WHEN OTHERS THEN
2018        xla_exceptions_pkg.raise_message
2019            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctDerRule_14');
2020 END AcctDerRule_14;
2021 --
2022 
2023 ---------------------------------------
2024 --
2025 -- PRIVATE FUNCTION
2026 --         AcctDerRule_15
2027 --
2028 ---------------------------------------
2029 FUNCTION AcctDerRule_15 (
2030   p_application_id              IN NUMBER
2031 , p_ae_header_id                IN NUMBER
2032 , p_side                        IN VARCHAR2 
2033 --Collection Document Bills Under Discount Account
2034  , p_source_17            IN NUMBER
2035 , x_transaction_coa_id         OUT NOCOPY NUMBER
2036 , x_accounting_coa_id          OUT NOCOPY NUMBER
2037 , x_value_type_code            OUT NOCOPY VARCHAR2
2038 )
2039 RETURN NUMBER
2040 IS
2041 l_component_type       VARCHAR2(80)  ;
2042 l_component_code       VARCHAR2(30)  ;
2043 l_component_type_code  VARCHAR2(1)   ;
2044 l_component_appl_id    INTEGER       ;
2045 l_amb_context_code     VARCHAR2(30)  ;
2046 l_log_module           VARCHAR2(240) ;
2047 l_output_value         NUMBER        ;
2048 BEGIN
2049 IF g_log_enabled THEN
2050       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_15';
2051 END IF;
2052 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2053       trace
2054          (p_msg      => 'BEGIN of AcctDerRule_15'
2055          ,p_level    => C_LEVEL_PROCEDURE
2056          ,p_module   => l_log_module);
2057 END IF;
2058 --
2059 l_component_type         := 'AMB_ADR';
2060 l_component_code         := 'COLL_DOC_BILLS_UNDER_DISC';
2061 l_component_type_code    := 'S';
2062 l_component_appl_id      :=  222;
2063 l_amb_context_code       := 'DEFAULT';
2064 x_transaction_coa_id     :=  null;
2065 x_accounting_coa_id      :=  null;
2066 --
2067 
2068  --
2069   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2070       trace
2071          (p_msg      => 'END of AcctDerRule_15'
2072          ,p_level    => C_LEVEL_PROCEDURE
2073          ,p_module   => l_log_module);
2074   END IF;
2075   x_value_type_code := 'S';
2076   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_17));
2077   RETURN l_output_value;
2078 
2079 --
2080 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2081       trace
2082          (p_msg      => 'END of AcctDerRule_15(invalid)'
2086 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2083          ,p_level    => C_LEVEL_PROCEDURE
2084          ,p_module   => l_log_module);
2085 END IF;
2087 x_value_type_code := null;
2088 l_output_value    := null;
2089 xla_accounting_err_pkg.build_message
2090                  (p_appli_s_name            => 'XLA'
2091                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2092                  ,p_token_1                 => 'COMPONENT_NAME'
2093                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2094                                                             l_component_type
2095                                                           , l_component_code
2096                                                           , l_component_type_code
2097                                                           , l_component_appl_id
2098                                                           , l_amb_context_code
2099                                                           )
2100                  ,p_token_2                 => 'OWNER'
2101                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2102                                                         'XLA_OWNER_TYPE'
2103                                                         ,l_component_type_code
2104                                                         )
2105                  ,p_token_3                 => 'PAD_NAME'
2106                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2107                  ,p_token_4                 => 'PAD_OWNER'
2108                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2109                                                         'XLA_OWNER_TYPE'
2110                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2111                                                         )
2112                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2113                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2114                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2115                  ,p_ae_header_id            => NULL
2116 );
2117 RETURN l_output_value;
2118 EXCEPTION
2119   WHEN xla_exceptions_pkg.application_exception THEN
2120       RAISE;
2121   WHEN OTHERS THEN
2122        xla_exceptions_pkg.raise_message
2123            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctDerRule_15');
2124 END AcctDerRule_15;
2125 --
2126 
2127 ---------------------------------------
2128 --
2129 -- PRIVATE FUNCTION
2130 --         AcctDerRule_16
2131 --
2132 ---------------------------------------
2133 FUNCTION AcctDerRule_16 (
2134   p_application_id              IN NUMBER
2135 , p_ae_header_id                IN NUMBER
2136 , p_side                        IN VARCHAR2 
2137 --Collection Document Cash Account
2138  , p_source_18            IN NUMBER
2139 , x_transaction_coa_id         OUT NOCOPY NUMBER
2140 , x_accounting_coa_id          OUT NOCOPY NUMBER
2141 , x_value_type_code            OUT NOCOPY VARCHAR2
2142 )
2143 RETURN NUMBER
2144 IS
2145 l_component_type       VARCHAR2(80)  ;
2146 l_component_code       VARCHAR2(30)  ;
2147 l_component_type_code  VARCHAR2(1)   ;
2148 l_component_appl_id    INTEGER       ;
2149 l_amb_context_code     VARCHAR2(30)  ;
2150 l_log_module           VARCHAR2(240) ;
2151 l_output_value         NUMBER        ;
2152 BEGIN
2153 IF g_log_enabled THEN
2154       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_16';
2155 END IF;
2156 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2157       trace
2158          (p_msg      => 'BEGIN of AcctDerRule_16'
2159          ,p_level    => C_LEVEL_PROCEDURE
2160          ,p_module   => l_log_module);
2161 END IF;
2162 --
2163 l_component_type         := 'AMB_ADR';
2164 l_component_code         := 'COLL_DOC_CASH';
2165 l_component_type_code    := 'S';
2166 l_component_appl_id      :=  222;
2167 l_amb_context_code       := 'DEFAULT';
2168 x_transaction_coa_id     :=  null;
2169 x_accounting_coa_id      :=  null;
2170 --
2171 
2172  --
2173   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2174       trace
2175          (p_msg      => 'END of AcctDerRule_16'
2176          ,p_level    => C_LEVEL_PROCEDURE
2177          ,p_module   => l_log_module);
2178   END IF;
2179   x_value_type_code := 'S';
2180   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_18));
2181   RETURN l_output_value;
2182 
2183 --
2184 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2185       trace
2186          (p_msg      => 'END of AcctDerRule_16(invalid)'
2187          ,p_level    => C_LEVEL_PROCEDURE
2188          ,p_module   => l_log_module);
2189 END IF;
2190 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2191 x_value_type_code := null;
2192 l_output_value    := null;
2193 xla_accounting_err_pkg.build_message
2194                  (p_appli_s_name            => 'XLA'
2195                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2196                  ,p_token_1                 => 'COMPONENT_NAME'
2197                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2198                                                             l_component_type
2202                                                           , l_amb_context_code
2199                                                           , l_component_code
2200                                                           , l_component_type_code
2201                                                           , l_component_appl_id
2203                                                           )
2204                  ,p_token_2                 => 'OWNER'
2205                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2206                                                         'XLA_OWNER_TYPE'
2207                                                         ,l_component_type_code
2208                                                         )
2209                  ,p_token_3                 => 'PAD_NAME'
2210                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2211                  ,p_token_4                 => 'PAD_OWNER'
2212                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2213                                                         'XLA_OWNER_TYPE'
2214                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2215                                                         )
2216                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2217                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2218                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2219                  ,p_ae_header_id            => NULL
2220 );
2221 RETURN l_output_value;
2222 EXCEPTION
2223   WHEN xla_exceptions_pkg.application_exception THEN
2224       RAISE;
2225   WHEN OTHERS THEN
2226        xla_exceptions_pkg.raise_message
2227            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctDerRule_16');
2228 END AcctDerRule_16;
2229 --
2230 
2231 ---------------------------------------
2232 --
2233 -- PRIVATE FUNCTION
2234 --         AcctDerRule_17
2235 --
2236 ---------------------------------------
2237 FUNCTION AcctDerRule_17 (
2238   p_application_id              IN NUMBER
2239 , p_ae_header_id                IN NUMBER
2240 , p_side                        IN VARCHAR2 
2241 --Collection Document Collection Endorsement Account
2242  , p_source_19            IN NUMBER
2243 , x_transaction_coa_id         OUT NOCOPY NUMBER
2244 , x_accounting_coa_id          OUT NOCOPY NUMBER
2245 , x_value_type_code            OUT NOCOPY VARCHAR2
2246 )
2247 RETURN NUMBER
2248 IS
2249 l_component_type       VARCHAR2(80)  ;
2250 l_component_code       VARCHAR2(30)  ;
2251 l_component_type_code  VARCHAR2(1)   ;
2252 l_component_appl_id    INTEGER       ;
2253 l_amb_context_code     VARCHAR2(30)  ;
2254 l_log_module           VARCHAR2(240) ;
2255 l_output_value         NUMBER        ;
2256 BEGIN
2257 IF g_log_enabled THEN
2258       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_17';
2259 END IF;
2260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2261       trace
2262          (p_msg      => 'BEGIN of AcctDerRule_17'
2263          ,p_level    => C_LEVEL_PROCEDURE
2264          ,p_module   => l_log_module);
2265 END IF;
2266 --
2267 l_component_type         := 'AMB_ADR';
2268 l_component_code         := 'COLL_DOC_COLL_ENDRSMNT';
2269 l_component_type_code    := 'S';
2270 l_component_appl_id      :=  222;
2271 l_amb_context_code       := 'DEFAULT';
2272 x_transaction_coa_id     :=  null;
2273 x_accounting_coa_id      :=  null;
2274 --
2275 
2276  --
2277   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2278       trace
2279          (p_msg      => 'END of AcctDerRule_17'
2280          ,p_level    => C_LEVEL_PROCEDURE
2281          ,p_module   => l_log_module);
2282   END IF;
2283   x_value_type_code := 'S';
2284   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_19));
2285   RETURN l_output_value;
2286 
2287 --
2288 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2289       trace
2290          (p_msg      => 'END of AcctDerRule_17(invalid)'
2291          ,p_level    => C_LEVEL_PROCEDURE
2292          ,p_module   => l_log_module);
2293 END IF;
2294 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2295 x_value_type_code := null;
2296 l_output_value    := null;
2297 xla_accounting_err_pkg.build_message
2298                  (p_appli_s_name            => 'XLA'
2299                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2300                  ,p_token_1                 => 'COMPONENT_NAME'
2301                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2302                                                             l_component_type
2303                                                           , l_component_code
2304                                                           , l_component_type_code
2305                                                           , l_component_appl_id
2306                                                           , l_amb_context_code
2307                                                           )
2308                  ,p_token_2                 => 'OWNER'
2309                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2310                                                         'XLA_OWNER_TYPE'
2311                                                         ,l_component_type_code
2315                  ,p_token_4                 => 'PAD_OWNER'
2312                                                         )
2313                  ,p_token_3                 => 'PAD_NAME'
2314                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2316                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2317                                                         'XLA_OWNER_TYPE'
2318                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2319                                                         )
2320                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2321                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2322                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2323                  ,p_ae_header_id            => NULL
2324 );
2325 RETURN l_output_value;
2326 EXCEPTION
2327   WHEN xla_exceptions_pkg.application_exception THEN
2328       RAISE;
2329   WHEN OTHERS THEN
2330        xla_exceptions_pkg.raise_message
2331            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctDerRule_17');
2332 END AcctDerRule_17;
2333 --
2334 
2335 ---------------------------------------
2336 --
2337 -- PRIVATE FUNCTION
2338 --         AcctDerRule_18
2339 --
2340 ---------------------------------------
2341 FUNCTION AcctDerRule_18 (
2342   p_application_id              IN NUMBER
2343 , p_ae_header_id                IN NUMBER
2344 , p_side                        IN VARCHAR2 
2345 --Collection Document Discount Endorsement Account
2346  , p_source_20            IN NUMBER
2347 , x_transaction_coa_id         OUT NOCOPY NUMBER
2348 , x_accounting_coa_id          OUT NOCOPY NUMBER
2349 , x_value_type_code            OUT NOCOPY VARCHAR2
2350 )
2351 RETURN NUMBER
2352 IS
2353 l_component_type       VARCHAR2(80)  ;
2354 l_component_code       VARCHAR2(30)  ;
2355 l_component_type_code  VARCHAR2(1)   ;
2356 l_component_appl_id    INTEGER       ;
2357 l_amb_context_code     VARCHAR2(30)  ;
2358 l_log_module           VARCHAR2(240) ;
2359 l_output_value         NUMBER        ;
2360 BEGIN
2361 IF g_log_enabled THEN
2362       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_18';
2363 END IF;
2364 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2365       trace
2366          (p_msg      => 'BEGIN of AcctDerRule_18'
2367          ,p_level    => C_LEVEL_PROCEDURE
2368          ,p_module   => l_log_module);
2369 END IF;
2370 --
2371 l_component_type         := 'AMB_ADR';
2372 l_component_code         := 'COLL_DOC_DISC_ENDRSMNT';
2373 l_component_type_code    := 'S';
2374 l_component_appl_id      :=  222;
2375 l_amb_context_code       := 'DEFAULT';
2376 x_transaction_coa_id     :=  null;
2377 x_accounting_coa_id      :=  null;
2378 --
2379 
2380  --
2381   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2382       trace
2383          (p_msg      => 'END of AcctDerRule_18'
2384          ,p_level    => C_LEVEL_PROCEDURE
2385          ,p_module   => l_log_module);
2386   END IF;
2387   x_value_type_code := 'S';
2388   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_20));
2389   RETURN l_output_value;
2390 
2391 --
2392 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2393       trace
2394          (p_msg      => 'END of AcctDerRule_18(invalid)'
2395          ,p_level    => C_LEVEL_PROCEDURE
2396          ,p_module   => l_log_module);
2397 END IF;
2398 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2399 x_value_type_code := null;
2400 l_output_value    := null;
2401 xla_accounting_err_pkg.build_message
2402                  (p_appli_s_name            => 'XLA'
2403                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2404                  ,p_token_1                 => 'COMPONENT_NAME'
2405                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2406                                                             l_component_type
2407                                                           , l_component_code
2408                                                           , l_component_type_code
2409                                                           , l_component_appl_id
2410                                                           , l_amb_context_code
2411                                                           )
2412                  ,p_token_2                 => 'OWNER'
2413                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2414                                                         'XLA_OWNER_TYPE'
2415                                                         ,l_component_type_code
2416                                                         )
2417                  ,p_token_3                 => 'PAD_NAME'
2418                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2419                  ,p_token_4                 => 'PAD_OWNER'
2420                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2421                                                         'XLA_OWNER_TYPE'
2422                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2423                                                         )
2424                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2425                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2426                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2427                  ,p_ae_header_id            => NULL
2431   WHEN xla_exceptions_pkg.application_exception THEN
2428 );
2429 RETURN l_output_value;
2430 EXCEPTION
2432       RAISE;
2433   WHEN OTHERS THEN
2434        xla_exceptions_pkg.raise_message
2435            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctDerRule_18');
2436 END AcctDerRule_18;
2437 --
2438 
2439 ---------------------------------------
2440 --
2441 -- PRIVATE FUNCTION
2442 --         AcctDerRule_19
2443 --
2444 ---------------------------------------
2445 FUNCTION AcctDerRule_19 (
2446   p_application_id              IN NUMBER
2447 , p_ae_header_id                IN NUMBER
2448 , p_side                        IN VARCHAR2 
2449 --Collection Document Factoring Charges Account
2450  , p_source_21            IN NUMBER
2451 , x_transaction_coa_id         OUT NOCOPY NUMBER
2452 , x_accounting_coa_id          OUT NOCOPY NUMBER
2453 , x_value_type_code            OUT NOCOPY VARCHAR2
2454 )
2455 RETURN NUMBER
2456 IS
2457 l_component_type       VARCHAR2(80)  ;
2458 l_component_code       VARCHAR2(30)  ;
2459 l_component_type_code  VARCHAR2(1)   ;
2460 l_component_appl_id    INTEGER       ;
2461 l_amb_context_code     VARCHAR2(30)  ;
2462 l_log_module           VARCHAR2(240) ;
2463 l_output_value         NUMBER        ;
2464 BEGIN
2465 IF g_log_enabled THEN
2466       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_19';
2467 END IF;
2468 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2469       trace
2470          (p_msg      => 'BEGIN of AcctDerRule_19'
2471          ,p_level    => C_LEVEL_PROCEDURE
2472          ,p_module   => l_log_module);
2473 END IF;
2474 --
2475 l_component_type         := 'AMB_ADR';
2476 l_component_code         := 'COLL_DOC_FACTORING_CHARGES';
2477 l_component_type_code    := 'S';
2478 l_component_appl_id      :=  222;
2479 l_amb_context_code       := 'DEFAULT';
2480 x_transaction_coa_id     :=  null;
2481 x_accounting_coa_id      :=  null;
2482 --
2483 
2484  --
2485   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2486       trace
2487          (p_msg      => 'END of AcctDerRule_19'
2488          ,p_level    => C_LEVEL_PROCEDURE
2489          ,p_module   => l_log_module);
2490   END IF;
2491   x_value_type_code := 'S';
2492   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_21));
2493   RETURN l_output_value;
2494 
2495 --
2496 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2497       trace
2498          (p_msg      => 'END of AcctDerRule_19(invalid)'
2499          ,p_level    => C_LEVEL_PROCEDURE
2500          ,p_module   => l_log_module);
2501 END IF;
2502 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2503 x_value_type_code := null;
2504 l_output_value    := null;
2505 xla_accounting_err_pkg.build_message
2506                  (p_appli_s_name            => 'XLA'
2507                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2508                  ,p_token_1                 => 'COMPONENT_NAME'
2509                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2510                                                             l_component_type
2511                                                           , l_component_code
2512                                                           , l_component_type_code
2513                                                           , l_component_appl_id
2514                                                           , l_amb_context_code
2515                                                           )
2516                  ,p_token_2                 => 'OWNER'
2517                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2518                                                         'XLA_OWNER_TYPE'
2519                                                         ,l_component_type_code
2520                                                         )
2521                  ,p_token_3                 => 'PAD_NAME'
2522                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2523                  ,p_token_4                 => 'PAD_OWNER'
2524                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2525                                                         'XLA_OWNER_TYPE'
2526                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2527                                                         )
2528                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2529                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2530                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2531                  ,p_ae_header_id            => NULL
2532 );
2533 RETURN l_output_value;
2534 EXCEPTION
2535   WHEN xla_exceptions_pkg.application_exception THEN
2536       RAISE;
2537   WHEN OTHERS THEN
2538        xla_exceptions_pkg.raise_message
2539            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctDerRule_19');
2540 END AcctDerRule_19;
2541 --
2542 
2543 ---------------------------------------
2544 --
2545 -- PRIVATE FUNCTION
2546 --         AcctDerRule_20
2547 --
2548 ---------------------------------------
2549 FUNCTION AcctDerRule_20 (
2550   p_application_id              IN NUMBER
2551 , p_ae_header_id                IN NUMBER
2552 , p_side                        IN VARCHAR2 
2553 --Distribution GL Account
2557 , x_value_type_code            OUT NOCOPY VARCHAR2
2554  , p_source_22            IN NUMBER
2555 , x_transaction_coa_id         OUT NOCOPY NUMBER
2556 , x_accounting_coa_id          OUT NOCOPY NUMBER
2558 )
2559 RETURN NUMBER
2560 IS
2561 l_component_type       VARCHAR2(80)  ;
2562 l_component_code       VARCHAR2(30)  ;
2563 l_component_type_code  VARCHAR2(1)   ;
2564 l_component_appl_id    INTEGER       ;
2565 l_amb_context_code     VARCHAR2(30)  ;
2566 l_log_module           VARCHAR2(240) ;
2567 l_output_value         NUMBER        ;
2568 BEGIN
2569 IF g_log_enabled THEN
2570       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_20';
2571 END IF;
2572 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2573       trace
2574          (p_msg      => 'BEGIN of AcctDerRule_20'
2575          ,p_level    => C_LEVEL_PROCEDURE
2576          ,p_module   => l_log_module);
2577 END IF;
2578 --
2579 l_component_type         := 'AMB_ADR';
2580 l_component_code         := 'DIST_CCID';
2581 l_component_type_code    := 'S';
2582 l_component_appl_id      :=  222;
2583 l_amb_context_code       := 'DEFAULT';
2584 x_transaction_coa_id     :=  null;
2585 x_accounting_coa_id      :=  null;
2586 --
2587 
2588  --
2589   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2590       trace
2591          (p_msg      => 'END of AcctDerRule_20'
2592          ,p_level    => C_LEVEL_PROCEDURE
2593          ,p_module   => l_log_module);
2594   END IF;
2595   x_value_type_code := 'S';
2596   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_22));
2597   RETURN l_output_value;
2598 
2599 --
2600 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2601       trace
2602          (p_msg      => 'END of AcctDerRule_20(invalid)'
2603          ,p_level    => C_LEVEL_PROCEDURE
2604          ,p_module   => l_log_module);
2605 END IF;
2606 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2607 x_value_type_code := null;
2608 l_output_value    := null;
2609 xla_accounting_err_pkg.build_message
2610                  (p_appli_s_name            => 'XLA'
2611                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2612                  ,p_token_1                 => 'COMPONENT_NAME'
2613                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2614                                                             l_component_type
2615                                                           , l_component_code
2616                                                           , l_component_type_code
2617                                                           , l_component_appl_id
2618                                                           , l_amb_context_code
2619                                                           )
2620                  ,p_token_2                 => 'OWNER'
2621                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2622                                                         'XLA_OWNER_TYPE'
2623                                                         ,l_component_type_code
2624                                                         )
2625                  ,p_token_3                 => 'PAD_NAME'
2626                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2627                  ,p_token_4                 => 'PAD_OWNER'
2628                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2629                                                         'XLA_OWNER_TYPE'
2630                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2631                                                         )
2632                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2633                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2634                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2635                  ,p_ae_header_id            => NULL
2636 );
2637 RETURN l_output_value;
2638 EXCEPTION
2639   WHEN xla_exceptions_pkg.application_exception THEN
2640       RAISE;
2641   WHEN OTHERS THEN
2642        xla_exceptions_pkg.raise_message
2643            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctDerRule_20');
2644 END AcctDerRule_20;
2645 --
2646 
2647 ---------------------------------------
2648 --
2649 -- PRIVATE FUNCTION
2650 --         AcctDerRule_21
2651 --
2652 ---------------------------------------
2653 FUNCTION AcctDerRule_21 (
2654   p_application_id              IN NUMBER
2655 , p_ae_header_id                IN NUMBER
2656 , p_side                        IN VARCHAR2 
2657 --Remittance Bank Account Unapplied Account
2658  , p_source_23            IN NUMBER
2659 , x_transaction_coa_id         OUT NOCOPY NUMBER
2660 , x_accounting_coa_id          OUT NOCOPY NUMBER
2661 , x_value_type_code            OUT NOCOPY VARCHAR2
2662 )
2663 RETURN NUMBER
2664 IS
2665 l_component_type       VARCHAR2(80)  ;
2666 l_component_code       VARCHAR2(30)  ;
2667 l_component_type_code  VARCHAR2(1)   ;
2668 l_component_appl_id    INTEGER       ;
2669 l_amb_context_code     VARCHAR2(30)  ;
2670 l_log_module           VARCHAR2(240) ;
2671 l_output_value         NUMBER        ;
2672 BEGIN
2673 IF g_log_enabled THEN
2674       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_21';
2675 END IF;
2676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2677       trace
2678          (p_msg      => 'BEGIN of AcctDerRule_21'
2682 --
2679          ,p_level    => C_LEVEL_PROCEDURE
2680          ,p_module   => l_log_module);
2681 END IF;
2683 l_component_type         := 'AMB_ADR';
2684 l_component_code         := 'RMT_BNK_UNAPP_CCID';
2685 l_component_type_code    := 'S';
2686 l_component_appl_id      :=  222;
2687 l_amb_context_code       := 'DEFAULT';
2688 x_transaction_coa_id     :=  null;
2689 x_accounting_coa_id      :=  null;
2690 --
2691 
2692  --
2693   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2694       trace
2695          (p_msg      => 'END of AcctDerRule_21'
2696          ,p_level    => C_LEVEL_PROCEDURE
2697          ,p_module   => l_log_module);
2698   END IF;
2699   x_value_type_code := 'S';
2700   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_23));
2701   RETURN l_output_value;
2702 
2703 --
2704 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2705       trace
2706          (p_msg      => 'END of AcctDerRule_21(invalid)'
2707          ,p_level    => C_LEVEL_PROCEDURE
2708          ,p_module   => l_log_module);
2709 END IF;
2710 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2711 x_value_type_code := null;
2712 l_output_value    := null;
2713 xla_accounting_err_pkg.build_message
2714                  (p_appli_s_name            => 'XLA'
2715                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2716                  ,p_token_1                 => 'COMPONENT_NAME'
2717                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2718                                                             l_component_type
2719                                                           , l_component_code
2720                                                           , l_component_type_code
2721                                                           , l_component_appl_id
2722                                                           , l_amb_context_code
2723                                                           )
2724                  ,p_token_2                 => 'OWNER'
2725                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2726                                                         'XLA_OWNER_TYPE'
2727                                                         ,l_component_type_code
2728                                                         )
2729                  ,p_token_3                 => 'PAD_NAME'
2730                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2731                  ,p_token_4                 => 'PAD_OWNER'
2732                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2733                                                         'XLA_OWNER_TYPE'
2734                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2735                                                         )
2736                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2737                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2738                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2739                  ,p_ae_header_id            => NULL
2740 );
2741 RETURN l_output_value;
2742 EXCEPTION
2743   WHEN xla_exceptions_pkg.application_exception THEN
2744       RAISE;
2745   WHEN OTHERS THEN
2746        xla_exceptions_pkg.raise_message
2747            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctDerRule_21');
2748 END AcctDerRule_21;
2749 --
2750 
2751 ---------------------------------------
2752 --
2753 -- PRIVATE FUNCTION
2754 --         AcctDerRule_22
2755 --
2756 ---------------------------------------
2757 FUNCTION AcctDerRule_22 (
2758   p_application_id              IN NUMBER
2759 , p_ae_header_id                IN NUMBER
2760 , p_side                        IN VARCHAR2 
2761 --System Gain Account
2762  , p_source_24            IN NUMBER
2763 , x_transaction_coa_id         OUT NOCOPY NUMBER
2764 , x_accounting_coa_id          OUT NOCOPY NUMBER
2765 , x_value_type_code            OUT NOCOPY VARCHAR2
2766 )
2767 RETURN NUMBER
2768 IS
2769 l_component_type       VARCHAR2(80)  ;
2770 l_component_code       VARCHAR2(30)  ;
2771 l_component_type_code  VARCHAR2(1)   ;
2772 l_component_appl_id    INTEGER       ;
2773 l_amb_context_code     VARCHAR2(30)  ;
2774 l_log_module           VARCHAR2(240) ;
2775 l_output_value         NUMBER        ;
2776 BEGIN
2777 IF g_log_enabled THEN
2778       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_22';
2779 END IF;
2780 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2781       trace
2782          (p_msg      => 'BEGIN of AcctDerRule_22'
2783          ,p_level    => C_LEVEL_PROCEDURE
2784          ,p_module   => l_log_module);
2785 END IF;
2786 --
2787 l_component_type         := 'AMB_ADR';
2788 l_component_code         := 'SYS_GAIN_CCID';
2789 l_component_type_code    := 'S';
2790 l_component_appl_id      :=  222;
2791 l_amb_context_code       := 'DEFAULT';
2792 x_transaction_coa_id     :=  null;
2793 x_accounting_coa_id      :=  null;
2794 --
2795 
2796  --
2797   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2798       trace
2799          (p_msg      => 'END of AcctDerRule_22'
2800          ,p_level    => C_LEVEL_PROCEDURE
2801          ,p_module   => l_log_module);
2802   END IF;
2803   x_value_type_code := 'S';
2807 --
2804   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_24));
2805   RETURN l_output_value;
2806 
2808 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2809       trace
2810          (p_msg      => 'END of AcctDerRule_22(invalid)'
2811          ,p_level    => C_LEVEL_PROCEDURE
2812          ,p_module   => l_log_module);
2813 END IF;
2814 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2815 x_value_type_code := null;
2816 l_output_value    := null;
2817 xla_accounting_err_pkg.build_message
2818                  (p_appli_s_name            => 'XLA'
2819                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2820                  ,p_token_1                 => 'COMPONENT_NAME'
2821                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2822                                                             l_component_type
2823                                                           , l_component_code
2824                                                           , l_component_type_code
2825                                                           , l_component_appl_id
2826                                                           , l_amb_context_code
2827                                                           )
2828                  ,p_token_2                 => 'OWNER'
2829                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2830                                                         'XLA_OWNER_TYPE'
2831                                                         ,l_component_type_code
2832                                                         )
2833                  ,p_token_3                 => 'PAD_NAME'
2834                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2835                  ,p_token_4                 => 'PAD_OWNER'
2836                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2837                                                         'XLA_OWNER_TYPE'
2838                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2839                                                         )
2840                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2841                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2842                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2843                  ,p_ae_header_id            => NULL
2844 );
2845 RETURN l_output_value;
2846 EXCEPTION
2847   WHEN xla_exceptions_pkg.application_exception THEN
2848       RAISE;
2849   WHEN OTHERS THEN
2850        xla_exceptions_pkg.raise_message
2851            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctDerRule_22');
2852 END AcctDerRule_22;
2853 --
2854 
2855 ---------------------------------------
2856 --
2857 -- PRIVATE FUNCTION
2858 --         AcctDerRule_23
2859 --
2860 ---------------------------------------
2861 FUNCTION AcctDerRule_23 (
2862   p_application_id              IN NUMBER
2863 , p_ae_header_id                IN NUMBER
2864 , p_side                        IN VARCHAR2 
2865 --System Loss Account
2866  , p_source_25            IN NUMBER
2867 , x_transaction_coa_id         OUT NOCOPY NUMBER
2868 , x_accounting_coa_id          OUT NOCOPY NUMBER
2869 , x_value_type_code            OUT NOCOPY VARCHAR2
2870 )
2871 RETURN NUMBER
2872 IS
2873 l_component_type       VARCHAR2(80)  ;
2874 l_component_code       VARCHAR2(30)  ;
2875 l_component_type_code  VARCHAR2(1)   ;
2876 l_component_appl_id    INTEGER       ;
2877 l_amb_context_code     VARCHAR2(30)  ;
2878 l_log_module           VARCHAR2(240) ;
2879 l_output_value         NUMBER        ;
2880 BEGIN
2881 IF g_log_enabled THEN
2882       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_23';
2883 END IF;
2884 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2885       trace
2886          (p_msg      => 'BEGIN of AcctDerRule_23'
2887          ,p_level    => C_LEVEL_PROCEDURE
2888          ,p_module   => l_log_module);
2889 END IF;
2890 --
2891 l_component_type         := 'AMB_ADR';
2892 l_component_code         := 'SYS_LOSS_CCID';
2893 l_component_type_code    := 'S';
2894 l_component_appl_id      :=  222;
2895 l_amb_context_code       := 'DEFAULT';
2896 x_transaction_coa_id     :=  null;
2897 x_accounting_coa_id      :=  null;
2898 --
2899 
2900  --
2901   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2902       trace
2903          (p_msg      => 'END of AcctDerRule_23'
2904          ,p_level    => C_LEVEL_PROCEDURE
2905          ,p_module   => l_log_module);
2906   END IF;
2907   x_value_type_code := 'S';
2908   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_25));
2909   RETURN l_output_value;
2910 
2911 --
2912 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2913       trace
2914          (p_msg      => 'END of AcctDerRule_23(invalid)'
2915          ,p_level    => C_LEVEL_PROCEDURE
2916          ,p_module   => l_log_module);
2917 END IF;
2918 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2919 x_value_type_code := null;
2920 l_output_value    := null;
2921 xla_accounting_err_pkg.build_message
2922                  (p_appli_s_name            => 'XLA'
2923                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2924                  ,p_token_1                 => 'COMPONENT_NAME'
2928                                                           , l_component_type_code
2925                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2926                                                             l_component_type
2927                                                           , l_component_code
2929                                                           , l_component_appl_id
2930                                                           , l_amb_context_code
2931                                                           )
2932                  ,p_token_2                 => 'OWNER'
2933                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2934                                                         'XLA_OWNER_TYPE'
2935                                                         ,l_component_type_code
2936                                                         )
2937                  ,p_token_3                 => 'PAD_NAME'
2938                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2939                  ,p_token_4                 => 'PAD_OWNER'
2940                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2941                                                         'XLA_OWNER_TYPE'
2942                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2943                                                         )
2944                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2945                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2946                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2947                  ,p_ae_header_id            => NULL
2948 );
2949 RETURN l_output_value;
2950 EXCEPTION
2951   WHEN xla_exceptions_pkg.application_exception THEN
2952       RAISE;
2953   WHEN OTHERS THEN
2954        xla_exceptions_pkg.raise_message
2955            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctDerRule_23');
2956 END AcctDerRule_23;
2957 --
2958 
2959 ---------------------------------------
2960 --
2961 -- PRIVATE FUNCTION
2962 --         AcctDerRule_24
2963 --
2964 ---------------------------------------
2965 FUNCTION AcctDerRule_24 (
2966   p_application_id              IN NUMBER
2967 , p_ae_header_id                IN NUMBER
2968 , p_side                        IN VARCHAR2 
2969 --Transaction Distribution GL Account
2970  , p_source_26            IN NUMBER
2971 , x_transaction_coa_id         OUT NOCOPY NUMBER
2972 , x_accounting_coa_id          OUT NOCOPY NUMBER
2973 , x_value_type_code            OUT NOCOPY VARCHAR2
2974 )
2975 RETURN NUMBER
2976 IS
2977 l_component_type       VARCHAR2(80)  ;
2978 l_component_code       VARCHAR2(30)  ;
2979 l_component_type_code  VARCHAR2(1)   ;
2980 l_component_appl_id    INTEGER       ;
2981 l_amb_context_code     VARCHAR2(30)  ;
2982 l_log_module           VARCHAR2(240) ;
2983 l_output_value         NUMBER        ;
2984 BEGIN
2985 IF g_log_enabled THEN
2986       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_24';
2987 END IF;
2988 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2989       trace
2990          (p_msg      => 'BEGIN of AcctDerRule_24'
2991          ,p_level    => C_LEVEL_PROCEDURE
2992          ,p_module   => l_log_module);
2993 END IF;
2994 --
2995 l_component_type         := 'AMB_ADR';
2996 l_component_code         := 'TRX_DIST_CCID';
2997 l_component_type_code    := 'S';
2998 l_component_appl_id      :=  222;
2999 l_amb_context_code       := 'DEFAULT';
3000 x_transaction_coa_id     :=  null;
3001 x_accounting_coa_id      :=  null;
3002 --
3003 
3004  --
3005   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3006       trace
3007          (p_msg      => 'END of AcctDerRule_24'
3008          ,p_level    => C_LEVEL_PROCEDURE
3009          ,p_module   => l_log_module);
3010   END IF;
3011   x_value_type_code := 'S';
3012   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_26));
3013   RETURN l_output_value;
3014 
3015 --
3016 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3017       trace
3018          (p_msg      => 'END of AcctDerRule_24(invalid)'
3019          ,p_level    => C_LEVEL_PROCEDURE
3020          ,p_module   => l_log_module);
3021 END IF;
3022 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3023 x_value_type_code := null;
3024 l_output_value    := null;
3025 xla_accounting_err_pkg.build_message
3026                  (p_appli_s_name            => 'XLA'
3027                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3028                  ,p_token_1                 => 'COMPONENT_NAME'
3029                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3030                                                             l_component_type
3031                                                           , l_component_code
3032                                                           , l_component_type_code
3033                                                           , l_component_appl_id
3034                                                           , l_amb_context_code
3035                                                           )
3036                  ,p_token_2                 => 'OWNER'
3037                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3041                  ,p_token_3                 => 'PAD_NAME'
3038                                                         'XLA_OWNER_TYPE'
3039                                                         ,l_component_type_code
3040                                                         )
3042                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3043                  ,p_token_4                 => 'PAD_OWNER'
3044                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3045                                                         'XLA_OWNER_TYPE'
3046                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3047                                                         )
3048                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3049                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3050                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3051                  ,p_ae_header_id            => NULL
3052 );
3053 RETURN l_output_value;
3054 EXCEPTION
3055   WHEN xla_exceptions_pkg.application_exception THEN
3056       RAISE;
3057   WHEN OTHERS THEN
3058        xla_exceptions_pkg.raise_message
3059            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctDerRule_24');
3060 END AcctDerRule_24;
3061 --
3062 
3063 ---------------------------------------
3064 --
3065 -- PRIVATE FUNCTION
3066 --         AcctLineType_25
3067 --
3068 ---------------------------------------
3069 PROCEDURE AcctLineType_25 (
3070   p_application_id        IN NUMBER
3071  ,p_event_id              IN NUMBER
3072  ,p_calculate_acctd_flag  IN VARCHAR2
3073  ,p_calculate_g_l_flag    IN VARCHAR2
3074  ,p_actual_flag           IN OUT VARCHAR2
3075  ,p_balance_type_code     OUT VARCHAR2
3076  ,p_gain_or_loss_ref      OUT VARCHAR2
3077  
3078 --Distribution GL Account
3079  , p_source_22            IN NUMBER
3080 --Distribution Source Type
3081  , p_source_27            IN VARCHAR2
3082 --Receivable Activity Type
3083  , p_source_28            IN VARCHAR2
3084 --Distribution Line Identifier
3085  , p_source_29            IN NUMBER
3086 --Distribution Type
3087  , p_source_30            IN VARCHAR2
3088 --Entered Amount
3089  , p_source_31            IN NUMBER
3090 --Currency Code
3091  , p_source_32            IN VARCHAR2
3092 --Exchange Date
3093  , p_source_33            IN DATE
3094 --Exchange Rate
3095  , p_source_34            IN NUMBER
3096 --Exchange Rate Type
3097  , p_source_35            IN VARCHAR2
3098 --Applied To Document Accounting Amount
3099  , p_source_36            IN NUMBER
3100 --Bill To Customer Account Identifier
3101  , p_source_37            IN NUMBER
3102 --Bill To Customer Site Use Identifier
3103  , p_source_38            IN NUMBER
3104 --SLA Party Type
3105  , p_source_39            IN VARCHAR2
3106 )
3107 IS
3108 
3109 l_component_type              VARCHAR2(80);
3110 l_component_code              VARCHAR2(30);
3111 l_component_type_code         VARCHAR2(1);
3112 l_component_appl_id           INTEGER;
3113 l_amb_context_code            VARCHAR2(30);
3114 l_entity_code                 VARCHAR2(30);
3115 l_event_class_code            VARCHAR2(30);
3116 l_ae_header_id                NUMBER;
3117 l_event_type_code             VARCHAR2(30);
3118 l_line_definition_code        VARCHAR2(30);
3119 l_line_definition_owner_code  VARCHAR2(1);
3120 --
3121 -- adr variables
3122 l_segment                     VARCHAR2(30);
3123 l_ccid                        NUMBER;
3124 l_adr_transaction_coa_id      NUMBER;
3125 l_adr_accounting_coa_id       NUMBER;
3126 l_adr_flexfield_segment_code  VARCHAR2(30);
3127 l_adr_flex_value_set_id       NUMBER;
3128 l_adr_value_type_code         VARCHAR2(30);
3129 l_adr_value_combination_id    NUMBER;
3130 l_adr_value_segment_code      VARCHAR2(30);
3131 
3132 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3133 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3134 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3135 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3136 
3137 -- 4262811 Variables ------------------------------------------------------------------------------------------
3138 l_entered_amt_idx             NUMBER;
3139 l_accted_amt_idx              NUMBER;
3140 l_acc_rev_flag                VARCHAR2(1);
3141 l_accrual_line_num            NUMBER;
3142 l_tmp_amt                     NUMBER;
3143 l_acc_rev_natural_side_code   VARCHAR2(1);
3144 
3145 l_num_entries                 NUMBER;
3146 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3147 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3148 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3149 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3150 l_recog_line_1                NUMBER;
3151 l_recog_line_2                NUMBER;
3152 
3153 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3154 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3155 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3156 
3160 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3157 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3158 
3159 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3161 
3162 ---------------------------------------------------------------------------------------------------------------
3163 
3164 
3165 --
3166 -- bulk performance
3167 --
3168 l_balance_type_code           VARCHAR2(1);
3169 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3170 l_log_module                  VARCHAR2(240);
3171 
3172 --
3173 -- Upgrade strategy
3174 --
3175 l_actual_upg_option           VARCHAR2(1);
3176 l_enc_upg_option           VARCHAR2(1);
3177 
3178 --
3179 BEGIN
3180 --
3181 IF g_log_enabled THEN
3182       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_25';
3183 END IF;
3184 --
3185 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3186 
3187       trace
3188          (p_msg      => 'BEGIN of AcctLineType_25'
3189          ,p_level    => C_LEVEL_PROCEDURE
3190          ,p_module   => l_log_module);
3191 
3192 END IF;
3193 --
3194 l_component_type             := 'AMB_JLT';
3195 l_component_code             := 'ADJ';
3196 l_component_type_code        := 'S';
3197 l_component_appl_id          :=  222;
3198 l_amb_context_code           := 'DEFAULT';
3199 l_entity_code                := 'ADJUSTMENTS';
3200 l_event_class_code           := 'ADJUSTMENT';
3201 l_event_type_code            := 'ADJUSTMENT_ALL';
3202 l_line_definition_owner_code := 'S';
3203 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
3204 --
3205 l_balance_type_code          := 'A';
3206 l_segment                     := NULL;
3207 l_ccid                        := NULL;
3208 l_adr_transaction_coa_id      := NULL;
3209 l_adr_accounting_coa_id       := NULL;
3210 l_adr_flexfield_segment_code  := NULL;
3211 l_adr_flex_value_set_id       := NULL;
3212 l_adr_value_type_code         := NULL;
3213 l_adr_value_combination_id    := NULL;
3214 l_adr_value_segment_code      := NULL;
3215 
3216 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3217 l_bflow_class_code           := '';    -- 4219869 Business Flow
3218 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3219 l_budgetary_control_flag     := 'N';
3220 
3221 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3222 l_bflow_applied_to_amt       := NULL; -- 5132302
3223 l_entered_amt_idx            := NULL;          -- 4262811
3224 l_accted_amt_idx             := NULL;          -- 4262811
3225 l_acc_rev_flag               := NULL;          -- 4262811
3226 l_accrual_line_num           := NULL;          -- 4262811
3227 l_tmp_amt                    := NULL;          -- 4262811
3228 --
3229  
3230 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3231     l_balance_type_code <> 'B' THEN
3232 IF NVL(p_source_27,'
3233 ') =  'ADJ' AND 
3234 NVL(p_source_28,'
3235 ') <>  'ENDORSEMENT'
3236  THEN 
3237 
3238    --
3239    XLA_AE_LINES_PKG.SetNewLine;
3240 
3241    p_balance_type_code          := l_balance_type_code;
3242    -- set the flag so later we will know whether the gain loss line needs to be created
3243    
3244    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3245      p_actual_flag :='A';
3246    END IF;
3247 
3248    --
3249    -- bulk performance
3250    --
3251    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3252                                       p_header_num   => 0); -- 4262811
3253    --
3254    -- set accounting line options
3255    --
3256    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3257            p_natural_side_code          => 'C'
3258          , p_gain_or_loss_flag          => 'N'
3259          , p_gl_transfer_mode_code      => 'S'
3260          , p_acct_entry_type_code       => 'A'
3261          , p_switch_side_flag           => 'Y'
3262          , p_merge_duplicate_code       => 'A'
3263          );
3264    --
3265    l_acc_rev_natural_side_code := 'D';  -- 4262811
3266    -- 
3267    --
3268    -- set accounting line type info
3269    --
3270    xla_ae_lines_pkg.SetAcctLineType
3271       (p_component_type             => l_component_type
3272       ,p_event_type_code            => l_event_type_code
3273       ,p_line_definition_owner_code => l_line_definition_owner_code
3274       ,p_line_definition_code       => l_line_definition_code
3275       ,p_accounting_line_code       => l_component_code
3276       ,p_accounting_line_type_code  => l_component_type_code
3277       ,p_accounting_line_appl_id    => l_component_appl_id
3278       ,p_amb_context_code           => l_amb_context_code
3279       ,p_entity_code                => l_entity_code
3280       ,p_event_class_code           => l_event_class_code);
3281    --
3282    -- set accounting class
3283    --
3284    xla_ae_lines_pkg.SetAcctClass(
3285            p_accounting_class_code  => 'ADJ'
3286          , p_ae_header_id           => l_ae_header_id
3287          );
3288 
3289    --
3290    -- set rounding class
3291    --
3292    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3293                       'RECEIVABLE';
3294 
3295    --
3299    -- bulk performance
3296    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3297    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3298    --
3300    --
3301    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3302 
3303    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3304       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3305 
3306    -- 4955764
3307    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3308       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3309 
3310    -- 4458381 Public Sector Enh
3311    
3312    --
3313    -- set accounting attributes for the line type
3314    --
3315    l_entered_amt_idx := 3;
3316    l_accted_amt_idx  := 8;
3317    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3318    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
3319    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
3320    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
3321    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
3322    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
3323    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
3324    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
3325    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
3326    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
3327    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
3328    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
3329    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
3330    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
3331    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
3332    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
3333    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
3334    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
3335    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
3336    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
3337    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
3338    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
3339    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
3340 
3341    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3342    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3343 
3344    ---------------------------------------------------------------------------------------------------------------
3345    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3346    ---------------------------------------------------------------------------------------------------------------
3347    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3348 
3349    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3350    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3351 
3352    IF xla_accounting_cache_pkg.GetValueChar
3353          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3354          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3355    AND l_bflow_method_code = 'PRIOR_ENTRY'
3356 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3357    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3358          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3359        )
3360    THEN
3361          xla_ae_lines_pkg.BflowUpgEntry
3362            (p_business_method_code    => l_bflow_method_code
3363            ,p_business_class_code     => l_bflow_class_code
3364            ,p_balance_type            => l_balance_type_code);
3365    ELSE
3366       NULL;
3367 -- No business flow processing for business flow method of NONE.
3368    END IF;
3369 
3370    --
3371    -- call analytical criteria
3372    --
3373    
3374    --
3375    -- call description
3376    --
3377    -- No description or it is inherited.
3378    --
3379    -- call ADRs
3380    -- Bug 4922099
3381    --
3382    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3383         (NVL(l_actual_upg_option, 'N') = 'O') OR
3384         (NVL(l_enc_upg_option, 'N') = 'O')
3385       )
3386    THEN
3387    NULL;
3388    --
3389    --
3390    
3391   l_ccid := AcctDerRule_20(
3392            p_application_id           => p_application_id
3393          , p_ae_header_id             => l_ae_header_id 
3394 , p_source_22 => p_source_22
3395          , x_transaction_coa_id       => l_adr_transaction_coa_id
3396          , x_accounting_coa_id        => l_adr_accounting_coa_id
3397          , x_value_type_code          => l_adr_value_type_code
3398          , p_side                     => 'NA'
3399    );
3400 
3401    xla_ae_lines_pkg.set_ccid(
3402     p_code_combination_id          => l_ccid
3403   , p_value_type_code              => l_adr_value_type_code
3404   , p_transaction_coa_id           => l_adr_transaction_coa_id
3405   , p_accounting_coa_id            => l_adr_accounting_coa_id
3406   , p_adr_code                     => 'DIST_CCID'
3410   , p_component_type_code          => l_component_type_code
3407   , p_adr_type_code                => 'S'
3408   , p_component_type               => l_component_type
3409   , p_component_code               => l_component_code
3411   , p_component_appl_id            => l_component_appl_id
3412   , p_amb_context_code             => l_amb_context_code
3413   , p_side                         => 'NA'
3414   );
3415 
3416 
3417    --
3418    --
3419    END IF;
3420    --
3421    -- Bug 4922099
3422    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3423           (NVL(l_enc_upg_option, 'N') = 'O')
3424         ) AND
3425         (l_bflow_method_code = 'PRIOR_ENTRY')
3426       )
3427    THEN
3428       IF
3429       --
3430       1 = 2
3431       --
3432       THEN
3433       xla_accounting_err_pkg.build_message
3434                                     (p_appli_s_name            => 'XLA'
3435                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3436                                     ,p_token_1                 => 'LINE_NUMBER'
3437                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
3438                                     ,p_token_2                 => 'LINE_TYPE_NAME'
3439                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
3440                                                                              l_component_type
3441                                                                             ,l_component_code
3442                                                                             ,l_component_type_code
3443                                                                             ,l_component_appl_id
3444                                                                             ,l_amb_context_code
3445                                                                             ,l_entity_code
3446                                                                             ,l_event_class_code
3447                                                                            )
3448                                     ,p_token_3                 => 'OWNER'
3449                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
3450                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
3451                                                                           ,p_lookup_code    => l_component_type_code
3452                                                                          )
3453                                     ,p_token_4                 => 'PRODUCT_NAME'
3454                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
3455                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
3456                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
3457                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
3458                                     ,p_ae_header_id            =>  NULL
3459                                        );
3460 
3461         IF (C_LEVEL_ERROR>= g_log_level) THEN
3462                  trace
3463                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
3464                       ,p_level    => C_LEVEL_ERROR
3465                       ,p_module   => l_log_module);
3466         END IF;
3467       END IF;
3468    END IF;
3469    --
3470    --
3471    ------------------------------------------------------------------------------------------------
3472    -- 4219869 Business Flow
3473    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
3474    -- Prior Entry.  Currently, the following code is always generated.
3475    ------------------------------------------------------------------------------------------------
3476    XLA_AE_LINES_PKG.ValidateCurrentLine;
3477 
3478    ------------------------------------------------------------------------------------
3479    -- 4219869 Business Flow
3480    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
3481    ------------------------------------------------------------------------------------
3482    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3483 
3484    ----------------------------------------------------------------------------------
3485    -- 4219869 Business Flow
3486    -- Update journal entry status -- Need to generate this within IF <condition>
3487    ----------------------------------------------------------------------------------
3488    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3489          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
3490          ,p_balance_type_code => l_balance_type_code
3491          );
3492 
3493    -------------------------------------------------------------------------------------------
3494    -- 4262811 - Generate the Accrual Reversal lines
3495    -------------------------------------------------------------------------------------------
3496    BEGIN
3497       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
3498                               (g_array_event(p_event_id).array_value_num('header_index'));
3499       IF l_acc_rev_flag IS NULL THEN
3500          l_acc_rev_flag := 'N';
3501       END IF;
3502    EXCEPTION
3503       WHEN OTHERS THEN
3504          l_acc_rev_flag := 'N';
3505    END;
3506    --
3507    IF (l_acc_rev_flag = 'Y') THEN
3508 
3512        ------------------------------------------------------------------------------------------
3509        -- 4645092  ------------------------------------------------------------------------------
3510        -- To allow MPA report to determine if it should generate report process
3511        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
3513 
3514        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
3515        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
3516    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
3517    -- call ADRs
3518    -- Bug 4922099
3519    --
3520    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3521         (NVL(l_actual_upg_option, 'N') = 'O') OR
3522         (NVL(l_enc_upg_option, 'N') = 'O')
3523       )
3524    THEN
3525    NULL;
3526    --
3527    --
3528    
3529   l_ccid := AcctDerRule_20(
3530            p_application_id           => p_application_id
3531          , p_ae_header_id             => l_ae_header_id 
3532 , p_source_22 => p_source_22
3533          , x_transaction_coa_id       => l_adr_transaction_coa_id
3534          , x_accounting_coa_id        => l_adr_accounting_coa_id
3535          , x_value_type_code          => l_adr_value_type_code
3536          , p_side                     => 'NA'
3537    );
3538 
3539    xla_ae_lines_pkg.set_ccid(
3540     p_code_combination_id          => l_ccid
3541   , p_value_type_code              => l_adr_value_type_code
3542   , p_transaction_coa_id           => l_adr_transaction_coa_id
3543   , p_accounting_coa_id            => l_adr_accounting_coa_id
3544   , p_adr_code                     => 'DIST_CCID'
3545   , p_adr_type_code                => 'S'
3546   , p_component_type               => l_component_type
3547   , p_component_code               => l_component_code
3548   , p_component_type_code          => l_component_type_code
3549   , p_component_appl_id            => l_component_appl_id
3550   , p_amb_context_code             => l_amb_context_code
3551   , p_side                         => 'NA'
3552   );
3553 
3554 
3555    --
3556    --
3557    END IF;
3558 
3559        --
3560        -- Update the line information that should be overwritten
3561        --
3562        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
3563                                          p_header_num   => 1);
3564        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
3565 
3566        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
3567 
3568        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
3569           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
3570        END IF;
3571 
3572       --
3573       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
3574       --
3575       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
3576           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
3577       ELSE
3578           ---------------------------------------------------------------------------------------------------
3579           -- 4262811a Switch Sign
3580           ---------------------------------------------------------------------------------------------------
3581           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
3582           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3583                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3584           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
3585                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3586           -- 5132302
3587           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
3588                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
3589 
3590       END IF;
3591 
3592       -- 4955764
3593       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3594       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
3595 
3596 
3597       XLA_AE_LINES_PKG.ValidateCurrentLine;
3598       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
3599 
3600       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
3601                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
3602                ,p_balance_type_code => l_balance_type_code);
3603 
3604    END IF;
3605 
3606    -----------------------------------------------------------------------------------------
3607    -- 4262811 Multiperiod Accounting
3608    -----------------------------------------------------------------------------------------
3609      -- No MPA option is assigned.
3610 
3611 
3612 END IF;
3613 END IF;
3614 --
3615 
3616 --
3617 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3618    trace
3619       (p_msg      => 'END of AcctLineType_25'
3620       ,p_level    => C_LEVEL_PROCEDURE
3621       ,p_module   => l_log_module);
3622 END IF;
3623 --
3624 EXCEPTION
3628        xla_exceptions_pkg.raise_message
3625   WHEN xla_exceptions_pkg.application_exception THEN
3626       RAISE;
3627   WHEN OTHERS THEN
3629            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_25');
3630 END AcctLineType_25;
3631 --
3632 
3633 ---------------------------------------
3634 --
3635 -- PRIVATE FUNCTION
3636 --         AcctLineType_26
3637 --
3638 ---------------------------------------
3639 PROCEDURE AcctLineType_26 (
3640   p_application_id        IN NUMBER
3641  ,p_event_id              IN NUMBER
3642  ,p_calculate_acctd_flag  IN VARCHAR2
3643  ,p_calculate_g_l_flag    IN VARCHAR2
3644  ,p_actual_flag           IN OUT VARCHAR2
3645  ,p_balance_type_code     OUT VARCHAR2
3646  ,p_gain_or_loss_ref      OUT VARCHAR2
3647  
3648 --Distribution GL Account
3649  , p_source_22            IN NUMBER
3650 --Distribution Source Type
3651  , p_source_27            IN VARCHAR2
3652 --Receivable Activity Type
3653  , p_source_28            IN VARCHAR2
3654 --Distribution Line Identifier
3655  , p_source_29            IN NUMBER
3656 --Distribution Type
3657  , p_source_30            IN VARCHAR2
3658 --Entered Amount
3659  , p_source_31            IN NUMBER
3660 --Currency Code
3661  , p_source_32            IN VARCHAR2
3662 --Exchange Date
3663  , p_source_33            IN DATE
3664 --Exchange Rate
3665  , p_source_34            IN NUMBER
3666 --Exchange Rate Type
3667  , p_source_35            IN VARCHAR2
3668 --Applied To Document Accounting Amount
3669  , p_source_36            IN NUMBER
3670 --Bill To Customer Account Identifier
3671  , p_source_37            IN NUMBER
3672 --Bill To Customer Site Use Identifier
3673  , p_source_38            IN NUMBER
3674 --SLA Party Type
3675  , p_source_39            IN VARCHAR2
3676 )
3677 IS
3678 
3679 l_component_type              VARCHAR2(80);
3680 l_component_code              VARCHAR2(30);
3681 l_component_type_code         VARCHAR2(1);
3682 l_component_appl_id           INTEGER;
3683 l_amb_context_code            VARCHAR2(30);
3684 l_entity_code                 VARCHAR2(30);
3685 l_event_class_code            VARCHAR2(30);
3686 l_ae_header_id                NUMBER;
3687 l_event_type_code             VARCHAR2(30);
3688 l_line_definition_code        VARCHAR2(30);
3689 l_line_definition_owner_code  VARCHAR2(1);
3690 --
3691 -- adr variables
3692 l_segment                     VARCHAR2(30);
3693 l_ccid                        NUMBER;
3694 l_adr_transaction_coa_id      NUMBER;
3695 l_adr_accounting_coa_id       NUMBER;
3696 l_adr_flexfield_segment_code  VARCHAR2(30);
3697 l_adr_flex_value_set_id       NUMBER;
3698 l_adr_value_type_code         VARCHAR2(30);
3699 l_adr_value_combination_id    NUMBER;
3700 l_adr_value_segment_code      VARCHAR2(30);
3701 
3702 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
3703 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
3704 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
3705 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
3706 
3707 -- 4262811 Variables ------------------------------------------------------------------------------------------
3708 l_entered_amt_idx             NUMBER;
3709 l_accted_amt_idx              NUMBER;
3710 l_acc_rev_flag                VARCHAR2(1);
3711 l_accrual_line_num            NUMBER;
3712 l_tmp_amt                     NUMBER;
3713 l_acc_rev_natural_side_code   VARCHAR2(1);
3714 
3715 l_num_entries                 NUMBER;
3716 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
3717 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
3718 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
3719 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
3720 l_recog_line_1                NUMBER;
3721 l_recog_line_2                NUMBER;
3722 
3723 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
3724 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
3725 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
3726 
3727 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
3728 
3729 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
3730 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
3731 
3732 ---------------------------------------------------------------------------------------------------------------
3733 
3734 
3735 --
3736 -- bulk performance
3737 --
3738 l_balance_type_code           VARCHAR2(1);
3739 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
3740 l_log_module                  VARCHAR2(240);
3741 
3742 --
3743 -- Upgrade strategy
3744 --
3745 l_actual_upg_option           VARCHAR2(1);
3746 l_enc_upg_option           VARCHAR2(1);
3747 
3748 --
3749 BEGIN
3750 --
3751 IF g_log_enabled THEN
3752       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_26';
3753 END IF;
3754 --
3755 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3756 
3757       trace
3758          (p_msg      => 'BEGIN of AcctLineType_26'
3759          ,p_level    => C_LEVEL_PROCEDURE
3760          ,p_module   => l_log_module);
3764 l_component_type             := 'AMB_JLT';
3761 
3762 END IF;
3763 --
3765 l_component_code             := 'ADJ_BR_ENDORSE';
3766 l_component_type_code        := 'S';
3767 l_component_appl_id          :=  222;
3768 l_amb_context_code           := 'DEFAULT';
3769 l_entity_code                := 'ADJUSTMENTS';
3770 l_event_class_code           := 'ADJUSTMENT';
3771 l_event_type_code            := 'ADJUSTMENT_ALL';
3772 l_line_definition_owner_code := 'S';
3773 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
3774 --
3775 l_balance_type_code          := 'A';
3776 l_segment                     := NULL;
3777 l_ccid                        := NULL;
3778 l_adr_transaction_coa_id      := NULL;
3779 l_adr_accounting_coa_id       := NULL;
3780 l_adr_flexfield_segment_code  := NULL;
3781 l_adr_flex_value_set_id       := NULL;
3782 l_adr_value_type_code         := NULL;
3783 l_adr_value_combination_id    := NULL;
3784 l_adr_value_segment_code      := NULL;
3785 
3786 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
3787 l_bflow_class_code           := '';    -- 4219869 Business Flow
3788 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
3789 l_budgetary_control_flag     := 'N';
3790 
3791 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
3792 l_bflow_applied_to_amt       := NULL; -- 5132302
3793 l_entered_amt_idx            := NULL;          -- 4262811
3794 l_accted_amt_idx             := NULL;          -- 4262811
3795 l_acc_rev_flag               := NULL;          -- 4262811
3796 l_accrual_line_num           := NULL;          -- 4262811
3797 l_tmp_amt                    := NULL;          -- 4262811
3798 --
3799  
3800 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
3801     l_balance_type_code <> 'B' THEN
3802 IF NVL(p_source_27,'
3803 ') =  'ADJ' AND 
3804 NVL(p_source_28,'
3805 ') =  'ENDORSEMENT'
3806  THEN 
3807 
3808    --
3809    XLA_AE_LINES_PKG.SetNewLine;
3810 
3811    p_balance_type_code          := l_balance_type_code;
3812    -- set the flag so later we will know whether the gain loss line needs to be created
3813    
3814    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
3815      p_actual_flag :='A';
3816    END IF;
3817 
3818    --
3819    -- bulk performance
3820    --
3821    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
3822                                       p_header_num   => 0); -- 4262811
3823    --
3824    -- set accounting line options
3825    --
3826    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
3827            p_natural_side_code          => 'C'
3828          , p_gain_or_loss_flag          => 'N'
3829          , p_gl_transfer_mode_code      => 'S'
3830          , p_acct_entry_type_code       => 'A'
3831          , p_switch_side_flag           => 'Y'
3832          , p_merge_duplicate_code       => 'A'
3833          );
3834    --
3835    l_acc_rev_natural_side_code := 'D';  -- 4262811
3836    -- 
3837    --
3838    -- set accounting line type info
3839    --
3840    xla_ae_lines_pkg.SetAcctLineType
3841       (p_component_type             => l_component_type
3842       ,p_event_type_code            => l_event_type_code
3843       ,p_line_definition_owner_code => l_line_definition_owner_code
3844       ,p_line_definition_code       => l_line_definition_code
3845       ,p_accounting_line_code       => l_component_code
3846       ,p_accounting_line_type_code  => l_component_type_code
3847       ,p_accounting_line_appl_id    => l_component_appl_id
3848       ,p_amb_context_code           => l_amb_context_code
3849       ,p_entity_code                => l_entity_code
3850       ,p_event_class_code           => l_event_class_code);
3851    --
3852    -- set accounting class
3853    --
3854    xla_ae_lines_pkg.SetAcctClass(
3855            p_accounting_class_code  => 'ENDORSEMENT'
3856          , p_ae_header_id           => l_ae_header_id
3857          );
3858 
3859    --
3860    -- set rounding class
3861    --
3862    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
3863                       'RECEIVABLE';
3864 
3865    --
3866    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
3867    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
3868    --
3869    -- bulk performance
3870    --
3871    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
3872 
3873    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
3874       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
3875 
3876    -- 4955764
3877    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
3878       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
3879 
3880    -- 4458381 Public Sector Enh
3881    
3882    --
3883    -- set accounting attributes for the line type
3884    --
3885    l_entered_amt_idx := 3;
3886    l_accted_amt_idx  := 8;
3887    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
3888    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
3889    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
3890    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
3891    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
3892    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
3896    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
3893    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
3894    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
3895    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
3897    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
3898    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
3899    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
3900    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
3901    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
3902    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
3903    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
3904    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
3905    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
3906    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
3907    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
3908    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
3909    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
3910 
3911    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
3912    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
3913 
3914    ---------------------------------------------------------------------------------------------------------------
3915    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
3916    ---------------------------------------------------------------------------------------------------------------
3917    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
3918 
3919    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3920    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
3921 
3922    IF xla_accounting_cache_pkg.GetValueChar
3923          (p_source_code         => 'LEDGER_CATEGORY_CODE'
3924          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
3925    AND l_bflow_method_code = 'PRIOR_ENTRY'
3926 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
3927    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
3928          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
3929        )
3930    THEN
3931          xla_ae_lines_pkg.BflowUpgEntry
3932            (p_business_method_code    => l_bflow_method_code
3933            ,p_business_class_code     => l_bflow_class_code
3934            ,p_balance_type            => l_balance_type_code);
3935    ELSE
3936       NULL;
3937 -- No business flow processing for business flow method of NONE.
3938    END IF;
3939 
3940    --
3941    -- call analytical criteria
3942    --
3943    
3944    --
3945    -- call description
3946    --
3947    -- No description or it is inherited.
3948    --
3949    -- call ADRs
3950    -- Bug 4922099
3951    --
3952    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
3953         (NVL(l_actual_upg_option, 'N') = 'O') OR
3954         (NVL(l_enc_upg_option, 'N') = 'O')
3955       )
3956    THEN
3957    NULL;
3958    --
3959    --
3960    
3961   l_ccid := AcctDerRule_20(
3962            p_application_id           => p_application_id
3963          , p_ae_header_id             => l_ae_header_id 
3964 , p_source_22 => p_source_22
3965          , x_transaction_coa_id       => l_adr_transaction_coa_id
3966          , x_accounting_coa_id        => l_adr_accounting_coa_id
3967          , x_value_type_code          => l_adr_value_type_code
3968          , p_side                     => 'NA'
3969    );
3970 
3971    xla_ae_lines_pkg.set_ccid(
3972     p_code_combination_id          => l_ccid
3973   , p_value_type_code              => l_adr_value_type_code
3974   , p_transaction_coa_id           => l_adr_transaction_coa_id
3975   , p_accounting_coa_id            => l_adr_accounting_coa_id
3976   , p_adr_code                     => 'DIST_CCID'
3977   , p_adr_type_code                => 'S'
3978   , p_component_type               => l_component_type
3979   , p_component_code               => l_component_code
3980   , p_component_type_code          => l_component_type_code
3981   , p_component_appl_id            => l_component_appl_id
3982   , p_amb_context_code             => l_amb_context_code
3983   , p_side                         => 'NA'
3984   );
3985 
3986 
3987    --
3988    --
3989    END IF;
3990    --
3991    -- Bug 4922099
3992    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
3993           (NVL(l_enc_upg_option, 'N') = 'O')
3994         ) AND
3995         (l_bflow_method_code = 'PRIOR_ENTRY')
3996       )
3997    THEN
3998       IF
3999       --
4000       1 = 2
4001       --
4002       THEN
4003       xla_accounting_err_pkg.build_message
4004                                     (p_appli_s_name            => 'XLA'
4005                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4006                                     ,p_token_1                 => 'LINE_NUMBER'
4007                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4008                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4009                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4013                                                                             ,l_component_appl_id
4010                                                                              l_component_type
4011                                                                             ,l_component_code
4012                                                                             ,l_component_type_code
4014                                                                             ,l_amb_context_code
4015                                                                             ,l_entity_code
4016                                                                             ,l_event_class_code
4017                                                                            )
4018                                     ,p_token_3                 => 'OWNER'
4019                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4020                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4021                                                                           ,p_lookup_code    => l_component_type_code
4022                                                                          )
4023                                     ,p_token_4                 => 'PRODUCT_NAME'
4024                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4025                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4026                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4027                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4028                                     ,p_ae_header_id            =>  NULL
4029                                        );
4030 
4031         IF (C_LEVEL_ERROR>= g_log_level) THEN
4032                  trace
4033                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4034                       ,p_level    => C_LEVEL_ERROR
4035                       ,p_module   => l_log_module);
4036         END IF;
4037       END IF;
4038    END IF;
4039    --
4040    --
4041    ------------------------------------------------------------------------------------------------
4042    -- 4219869 Business Flow
4043    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4044    -- Prior Entry.  Currently, the following code is always generated.
4045    ------------------------------------------------------------------------------------------------
4046    XLA_AE_LINES_PKG.ValidateCurrentLine;
4047 
4048    ------------------------------------------------------------------------------------
4049    -- 4219869 Business Flow
4050    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4051    ------------------------------------------------------------------------------------
4052    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4053 
4054    ----------------------------------------------------------------------------------
4055    -- 4219869 Business Flow
4056    -- Update journal entry status -- Need to generate this within IF <condition>
4057    ----------------------------------------------------------------------------------
4058    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4059          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4060          ,p_balance_type_code => l_balance_type_code
4061          );
4062 
4063    -------------------------------------------------------------------------------------------
4064    -- 4262811 - Generate the Accrual Reversal lines
4065    -------------------------------------------------------------------------------------------
4066    BEGIN
4067       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4068                               (g_array_event(p_event_id).array_value_num('header_index'));
4069       IF l_acc_rev_flag IS NULL THEN
4070          l_acc_rev_flag := 'N';
4071       END IF;
4072    EXCEPTION
4073       WHEN OTHERS THEN
4074          l_acc_rev_flag := 'N';
4075    END;
4076    --
4077    IF (l_acc_rev_flag = 'Y') THEN
4078 
4079        -- 4645092  ------------------------------------------------------------------------------
4080        -- To allow MPA report to determine if it should generate report process
4081        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4082        ------------------------------------------------------------------------------------------
4083 
4084        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4085        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4086    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
4087    -- call ADRs
4088    -- Bug 4922099
4089    --
4090    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4091         (NVL(l_actual_upg_option, 'N') = 'O') OR
4092         (NVL(l_enc_upg_option, 'N') = 'O')
4093       )
4094    THEN
4095    NULL;
4096    --
4097    --
4098    
4099   l_ccid := AcctDerRule_20(
4100            p_application_id           => p_application_id
4101          , p_ae_header_id             => l_ae_header_id 
4102 , p_source_22 => p_source_22
4103          , x_transaction_coa_id       => l_adr_transaction_coa_id
4104          , x_accounting_coa_id        => l_adr_accounting_coa_id
4105          , x_value_type_code          => l_adr_value_type_code
4106          , p_side                     => 'NA'
4110     p_code_combination_id          => l_ccid
4107    );
4108 
4109    xla_ae_lines_pkg.set_ccid(
4111   , p_value_type_code              => l_adr_value_type_code
4112   , p_transaction_coa_id           => l_adr_transaction_coa_id
4113   , p_accounting_coa_id            => l_adr_accounting_coa_id
4114   , p_adr_code                     => 'DIST_CCID'
4115   , p_adr_type_code                => 'S'
4116   , p_component_type               => l_component_type
4117   , p_component_code               => l_component_code
4118   , p_component_type_code          => l_component_type_code
4119   , p_component_appl_id            => l_component_appl_id
4120   , p_amb_context_code             => l_amb_context_code
4121   , p_side                         => 'NA'
4122   );
4123 
4124 
4125    --
4126    --
4127    END IF;
4128 
4129        --
4130        -- Update the line information that should be overwritten
4131        --
4132        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4133                                          p_header_num   => 1);
4134        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4135 
4136        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4137 
4138        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4139           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4140        END IF;
4141 
4142       --
4143       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4144       --
4145       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4146           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4147       ELSE
4148           ---------------------------------------------------------------------------------------------------
4149           -- 4262811a Switch Sign
4150           ---------------------------------------------------------------------------------------------------
4151           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4152           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4153                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4154           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4155                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4156           -- 5132302
4157           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4158                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4159 
4160       END IF;
4161 
4162       -- 4955764
4163       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4164       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4165 
4166 
4167       XLA_AE_LINES_PKG.ValidateCurrentLine;
4168       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4169 
4170       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4171                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4172                ,p_balance_type_code => l_balance_type_code);
4173 
4174    END IF;
4175 
4176    -----------------------------------------------------------------------------------------
4177    -- 4262811 Multiperiod Accounting
4178    -----------------------------------------------------------------------------------------
4179      -- No MPA option is assigned.
4180 
4181 
4182 END IF;
4183 END IF;
4184 --
4185 
4186 --
4187 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4188    trace
4189       (p_msg      => 'END of AcctLineType_26'
4190       ,p_level    => C_LEVEL_PROCEDURE
4191       ,p_module   => l_log_module);
4192 END IF;
4193 --
4194 EXCEPTION
4195   WHEN xla_exceptions_pkg.application_exception THEN
4196       RAISE;
4197   WHEN OTHERS THEN
4198        xla_exceptions_pkg.raise_message
4199            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_26');
4200 END AcctLineType_26;
4201 --
4202 
4203 ---------------------------------------
4204 --
4205 -- PRIVATE FUNCTION
4206 --         AcctLineType_27
4207 --
4208 ---------------------------------------
4209 PROCEDURE AcctLineType_27 (
4210   p_application_id        IN NUMBER
4211  ,p_event_id              IN NUMBER
4212  ,p_calculate_acctd_flag  IN VARCHAR2
4213  ,p_calculate_g_l_flag    IN VARCHAR2
4214  ,p_actual_flag           IN OUT VARCHAR2
4215  ,p_balance_type_code     OUT VARCHAR2
4216  ,p_gain_or_loss_ref      OUT VARCHAR2
4217  
4218 --Distribution GL Account
4219  , p_source_22            IN NUMBER
4220 --Distribution Source Type
4221  , p_source_27            IN VARCHAR2
4222 --Distribution Line Identifier
4223  , p_source_29            IN NUMBER
4224 --Distribution Type
4225  , p_source_30            IN VARCHAR2
4226 --Entered Amount
4227  , p_source_31            IN NUMBER
4228 --Currency Code
4229  , p_source_32            IN VARCHAR2
4230 --Exchange Date
4234 --Exchange Rate Type
4231  , p_source_33            IN DATE
4232 --Exchange Rate
4233  , p_source_34            IN NUMBER
4235  , p_source_35            IN VARCHAR2
4236 --Applied To Document Accounting Amount
4237  , p_source_36            IN NUMBER
4238 --Bill To Customer Account Identifier
4239  , p_source_37            IN NUMBER
4240 --Bill To Customer Site Use Identifier
4241  , p_source_38            IN NUMBER
4242 --SLA Party Type
4243  , p_source_39            IN VARCHAR2
4244 )
4245 IS
4246 
4247 l_component_type              VARCHAR2(80);
4248 l_component_code              VARCHAR2(30);
4249 l_component_type_code         VARCHAR2(1);
4250 l_component_appl_id           INTEGER;
4251 l_amb_context_code            VARCHAR2(30);
4252 l_entity_code                 VARCHAR2(30);
4253 l_event_class_code            VARCHAR2(30);
4254 l_ae_header_id                NUMBER;
4255 l_event_type_code             VARCHAR2(30);
4256 l_line_definition_code        VARCHAR2(30);
4257 l_line_definition_owner_code  VARCHAR2(1);
4258 --
4259 -- adr variables
4260 l_segment                     VARCHAR2(30);
4261 l_ccid                        NUMBER;
4262 l_adr_transaction_coa_id      NUMBER;
4263 l_adr_accounting_coa_id       NUMBER;
4264 l_adr_flexfield_segment_code  VARCHAR2(30);
4265 l_adr_flex_value_set_id       NUMBER;
4266 l_adr_value_type_code         VARCHAR2(30);
4267 l_adr_value_combination_id    NUMBER;
4268 l_adr_value_segment_code      VARCHAR2(30);
4269 
4270 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4271 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4272 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4273 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4274 
4275 -- 4262811 Variables ------------------------------------------------------------------------------------------
4276 l_entered_amt_idx             NUMBER;
4277 l_accted_amt_idx              NUMBER;
4278 l_acc_rev_flag                VARCHAR2(1);
4279 l_accrual_line_num            NUMBER;
4280 l_tmp_amt                     NUMBER;
4281 l_acc_rev_natural_side_code   VARCHAR2(1);
4282 
4283 l_num_entries                 NUMBER;
4284 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4285 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4286 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4287 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4288 l_recog_line_1                NUMBER;
4289 l_recog_line_2                NUMBER;
4290 
4291 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4292 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4293 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4294 
4295 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4296 
4297 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4298 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4299 
4300 ---------------------------------------------------------------------------------------------------------------
4301 
4302 
4303 --
4304 -- bulk performance
4305 --
4306 l_balance_type_code           VARCHAR2(1);
4307 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4308 l_log_module                  VARCHAR2(240);
4309 
4310 --
4311 -- Upgrade strategy
4312 --
4313 l_actual_upg_option           VARCHAR2(1);
4314 l_enc_upg_option           VARCHAR2(1);
4315 
4316 --
4317 BEGIN
4318 --
4319 IF g_log_enabled THEN
4320       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_27';
4321 END IF;
4322 --
4323 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4324 
4325       trace
4326          (p_msg      => 'BEGIN of AcctLineType_27'
4327          ,p_level    => C_LEVEL_PROCEDURE
4328          ,p_module   => l_log_module);
4329 
4330 END IF;
4331 --
4332 l_component_type             := 'AMB_JLT';
4333 l_component_code             := 'ADJ_CHRG';
4334 l_component_type_code        := 'S';
4335 l_component_appl_id          :=  222;
4336 l_amb_context_code           := 'DEFAULT';
4337 l_entity_code                := 'ADJUSTMENTS';
4338 l_event_class_code           := 'ADJUSTMENT';
4339 l_event_type_code            := 'ADJUSTMENT_ALL';
4340 l_line_definition_owner_code := 'S';
4341 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
4342 --
4343 l_balance_type_code          := 'A';
4344 l_segment                     := NULL;
4345 l_ccid                        := NULL;
4346 l_adr_transaction_coa_id      := NULL;
4347 l_adr_accounting_coa_id       := NULL;
4348 l_adr_flexfield_segment_code  := NULL;
4349 l_adr_flex_value_set_id       := NULL;
4350 l_adr_value_type_code         := NULL;
4351 l_adr_value_combination_id    := NULL;
4352 l_adr_value_segment_code      := NULL;
4353 
4354 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4355 l_bflow_class_code           := '';    -- 4219869 Business Flow
4356 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4357 l_budgetary_control_flag     := 'N';
4358 
4359 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4360 l_bflow_applied_to_amt       := NULL; -- 5132302
4364 l_accrual_line_num           := NULL;          -- 4262811
4361 l_entered_amt_idx            := NULL;          -- 4262811
4362 l_accted_amt_idx             := NULL;          -- 4262811
4363 l_acc_rev_flag               := NULL;          -- 4262811
4365 l_tmp_amt                    := NULL;          -- 4262811
4366 --
4367  
4368 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4369     l_balance_type_code <> 'B' THEN
4370 IF NVL(p_source_27,'
4371 ') =  'FINCHRG' OR 
4372 NVL(p_source_27,'
4373 ') =  'FINCHRG_NON_REC_TAX'
4374  THEN 
4375 
4376    --
4377    XLA_AE_LINES_PKG.SetNewLine;
4378 
4379    p_balance_type_code          := l_balance_type_code;
4380    -- set the flag so later we will know whether the gain loss line needs to be created
4381    
4382    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4383      p_actual_flag :='A';
4384    END IF;
4385 
4386    --
4387    -- bulk performance
4388    --
4389    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4390                                       p_header_num   => 0); -- 4262811
4391    --
4392    -- set accounting line options
4393    --
4394    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4395            p_natural_side_code          => 'C'
4396          , p_gain_or_loss_flag          => 'N'
4397          , p_gl_transfer_mode_code      => 'S'
4398          , p_acct_entry_type_code       => 'A'
4399          , p_switch_side_flag           => 'Y'
4400          , p_merge_duplicate_code       => 'A'
4401          );
4402    --
4403    l_acc_rev_natural_side_code := 'D';  -- 4262811
4404    -- 
4405    --
4406    -- set accounting line type info
4407    --
4408    xla_ae_lines_pkg.SetAcctLineType
4409       (p_component_type             => l_component_type
4410       ,p_event_type_code            => l_event_type_code
4411       ,p_line_definition_owner_code => l_line_definition_owner_code
4412       ,p_line_definition_code       => l_line_definition_code
4413       ,p_accounting_line_code       => l_component_code
4414       ,p_accounting_line_type_code  => l_component_type_code
4415       ,p_accounting_line_appl_id    => l_component_appl_id
4416       ,p_amb_context_code           => l_amb_context_code
4417       ,p_entity_code                => l_entity_code
4418       ,p_event_class_code           => l_event_class_code);
4419    --
4420    -- set accounting class
4421    --
4422    xla_ae_lines_pkg.SetAcctClass(
4423            p_accounting_class_code  => 'CHARGES'
4424          , p_ae_header_id           => l_ae_header_id
4425          );
4426 
4427    --
4428    -- set rounding class
4429    --
4430    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4431                       'RECEIVABLE';
4432 
4433    --
4434    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4435    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4436    --
4437    -- bulk performance
4438    --
4439    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4440 
4441    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4442       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4443 
4444    -- 4955764
4445    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4446       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4447 
4448    -- 4458381 Public Sector Enh
4449    
4450    --
4451    -- set accounting attributes for the line type
4452    --
4453    l_entered_amt_idx := 3;
4454    l_accted_amt_idx  := 8;
4455    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4456    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
4457    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
4458    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
4459    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
4460    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
4461    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
4462    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
4463    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
4464    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
4465    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
4466    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
4467    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
4468    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
4469    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
4470    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
4471    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
4472    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
4473    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
4474    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
4475    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
4476    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
4477    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
4478 
4479    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4483    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4480    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4481 
4482    ---------------------------------------------------------------------------------------------------------------
4484    ---------------------------------------------------------------------------------------------------------------
4485    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4486 
4487    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4488    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4489 
4490    IF xla_accounting_cache_pkg.GetValueChar
4491          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4492          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4493    AND l_bflow_method_code = 'PRIOR_ENTRY'
4494 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4495    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4496          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4497        )
4498    THEN
4499          xla_ae_lines_pkg.BflowUpgEntry
4500            (p_business_method_code    => l_bflow_method_code
4501            ,p_business_class_code     => l_bflow_class_code
4502            ,p_balance_type            => l_balance_type_code);
4503    ELSE
4504       NULL;
4505 -- No business flow processing for business flow method of NONE.
4506    END IF;
4507 
4508    --
4509    -- call analytical criteria
4510    --
4511    
4512    --
4513    -- call description
4514    --
4515    -- No description or it is inherited.
4516    --
4517    -- call ADRs
4518    -- Bug 4922099
4519    --
4520    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4521         (NVL(l_actual_upg_option, 'N') = 'O') OR
4522         (NVL(l_enc_upg_option, 'N') = 'O')
4523       )
4524    THEN
4525    NULL;
4526    --
4527    --
4528    
4529   l_ccid := AcctDerRule_20(
4530            p_application_id           => p_application_id
4531          , p_ae_header_id             => l_ae_header_id 
4532 , p_source_22 => p_source_22
4533          , x_transaction_coa_id       => l_adr_transaction_coa_id
4534          , x_accounting_coa_id        => l_adr_accounting_coa_id
4535          , x_value_type_code          => l_adr_value_type_code
4536          , p_side                     => 'NA'
4537    );
4538 
4539    xla_ae_lines_pkg.set_ccid(
4540     p_code_combination_id          => l_ccid
4541   , p_value_type_code              => l_adr_value_type_code
4542   , p_transaction_coa_id           => l_adr_transaction_coa_id
4543   , p_accounting_coa_id            => l_adr_accounting_coa_id
4544   , p_adr_code                     => 'DIST_CCID'
4545   , p_adr_type_code                => 'S'
4546   , p_component_type               => l_component_type
4547   , p_component_code               => l_component_code
4548   , p_component_type_code          => l_component_type_code
4549   , p_component_appl_id            => l_component_appl_id
4550   , p_amb_context_code             => l_amb_context_code
4551   , p_side                         => 'NA'
4552   );
4553 
4554 
4555    --
4556    --
4557    END IF;
4558    --
4559    -- Bug 4922099
4560    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4561           (NVL(l_enc_upg_option, 'N') = 'O')
4562         ) AND
4563         (l_bflow_method_code = 'PRIOR_ENTRY')
4564       )
4565    THEN
4566       IF
4567       --
4568       1 = 2
4569       --
4570       THEN
4571       xla_accounting_err_pkg.build_message
4572                                     (p_appli_s_name            => 'XLA'
4573                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4574                                     ,p_token_1                 => 'LINE_NUMBER'
4575                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4576                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4577                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4578                                                                              l_component_type
4579                                                                             ,l_component_code
4580                                                                             ,l_component_type_code
4581                                                                             ,l_component_appl_id
4582                                                                             ,l_amb_context_code
4583                                                                             ,l_entity_code
4584                                                                             ,l_event_class_code
4585                                                                            )
4586                                     ,p_token_3                 => 'OWNER'
4587                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4588                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4589                                                                           ,p_lookup_code    => l_component_type_code
4593                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4590                                                                          )
4591                                     ,p_token_4                 => 'PRODUCT_NAME'
4592                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4594                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4595                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4596                                     ,p_ae_header_id            =>  NULL
4597                                        );
4598 
4599         IF (C_LEVEL_ERROR>= g_log_level) THEN
4600                  trace
4601                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4602                       ,p_level    => C_LEVEL_ERROR
4603                       ,p_module   => l_log_module);
4604         END IF;
4605       END IF;
4606    END IF;
4607    --
4608    --
4609    ------------------------------------------------------------------------------------------------
4610    -- 4219869 Business Flow
4611    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4612    -- Prior Entry.  Currently, the following code is always generated.
4613    ------------------------------------------------------------------------------------------------
4614    XLA_AE_LINES_PKG.ValidateCurrentLine;
4615 
4616    ------------------------------------------------------------------------------------
4617    -- 4219869 Business Flow
4618    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4619    ------------------------------------------------------------------------------------
4620    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4621 
4622    ----------------------------------------------------------------------------------
4623    -- 4219869 Business Flow
4624    -- Update journal entry status -- Need to generate this within IF <condition>
4625    ----------------------------------------------------------------------------------
4626    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4627          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
4628          ,p_balance_type_code => l_balance_type_code
4629          );
4630 
4631    -------------------------------------------------------------------------------------------
4632    -- 4262811 - Generate the Accrual Reversal lines
4633    -------------------------------------------------------------------------------------------
4634    BEGIN
4635       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
4636                               (g_array_event(p_event_id).array_value_num('header_index'));
4637       IF l_acc_rev_flag IS NULL THEN
4638          l_acc_rev_flag := 'N';
4639       END IF;
4640    EXCEPTION
4641       WHEN OTHERS THEN
4642          l_acc_rev_flag := 'N';
4643    END;
4644    --
4645    IF (l_acc_rev_flag = 'Y') THEN
4646 
4647        -- 4645092  ------------------------------------------------------------------------------
4648        -- To allow MPA report to determine if it should generate report process
4649        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
4650        ------------------------------------------------------------------------------------------
4651 
4652        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
4653        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
4654    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
4655    -- call ADRs
4656    -- Bug 4922099
4657    --
4658    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4659         (NVL(l_actual_upg_option, 'N') = 'O') OR
4660         (NVL(l_enc_upg_option, 'N') = 'O')
4661       )
4662    THEN
4663    NULL;
4664    --
4665    --
4666    
4667   l_ccid := AcctDerRule_20(
4668            p_application_id           => p_application_id
4669          , p_ae_header_id             => l_ae_header_id 
4670 , p_source_22 => p_source_22
4671          , x_transaction_coa_id       => l_adr_transaction_coa_id
4672          , x_accounting_coa_id        => l_adr_accounting_coa_id
4673          , x_value_type_code          => l_adr_value_type_code
4674          , p_side                     => 'NA'
4675    );
4676 
4677    xla_ae_lines_pkg.set_ccid(
4678     p_code_combination_id          => l_ccid
4679   , p_value_type_code              => l_adr_value_type_code
4680   , p_transaction_coa_id           => l_adr_transaction_coa_id
4681   , p_accounting_coa_id            => l_adr_accounting_coa_id
4682   , p_adr_code                     => 'DIST_CCID'
4683   , p_adr_type_code                => 'S'
4684   , p_component_type               => l_component_type
4685   , p_component_code               => l_component_code
4686   , p_component_type_code          => l_component_type_code
4687   , p_component_appl_id            => l_component_appl_id
4688   , p_amb_context_code             => l_amb_context_code
4689   , p_side                         => 'NA'
4690   );
4691 
4692 
4693    --
4694    --
4695    END IF;
4696 
4697        --
4698        -- Update the line information that should be overwritten
4699        --
4700        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
4701                                          p_header_num   => 1);
4705 
4702        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
4703 
4704        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
4706        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
4707           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
4708        END IF;
4709 
4710       --
4711       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
4712       --
4713       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
4714           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
4715       ELSE
4716           ---------------------------------------------------------------------------------------------------
4717           -- 4262811a Switch Sign
4718           ---------------------------------------------------------------------------------------------------
4719           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
4720           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4721                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4722           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
4723                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4724           -- 5132302
4725           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
4726                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
4727 
4728       END IF;
4729 
4730       -- 4955764
4731       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4732       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
4733 
4734 
4735       XLA_AE_LINES_PKG.ValidateCurrentLine;
4736       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4737 
4738       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
4739                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
4740                ,p_balance_type_code => l_balance_type_code);
4741 
4742    END IF;
4743 
4744    -----------------------------------------------------------------------------------------
4745    -- 4262811 Multiperiod Accounting
4746    -----------------------------------------------------------------------------------------
4747      -- No MPA option is assigned.
4748 
4749 
4750 END IF;
4751 END IF;
4752 --
4753 
4754 --
4755 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4756    trace
4757       (p_msg      => 'END of AcctLineType_27'
4758       ,p_level    => C_LEVEL_PROCEDURE
4759       ,p_module   => l_log_module);
4760 END IF;
4761 --
4762 EXCEPTION
4763   WHEN xla_exceptions_pkg.application_exception THEN
4764       RAISE;
4765   WHEN OTHERS THEN
4766        xla_exceptions_pkg.raise_message
4767            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_27');
4768 END AcctLineType_27;
4769 --
4770 
4771 ---------------------------------------
4772 --
4773 -- PRIVATE FUNCTION
4774 --         AcctLineType_28
4775 --
4776 ---------------------------------------
4777 PROCEDURE AcctLineType_28 (
4778   p_application_id        IN NUMBER
4779  ,p_event_id              IN NUMBER
4780  ,p_calculate_acctd_flag  IN VARCHAR2
4781  ,p_calculate_g_l_flag    IN VARCHAR2
4782  ,p_actual_flag           IN OUT VARCHAR2
4783  ,p_balance_type_code     OUT VARCHAR2
4784  ,p_gain_or_loss_ref      OUT VARCHAR2
4785  
4786 --Distribution GL Account
4787  , p_source_22            IN NUMBER
4788 --Distribution Source Type
4789  , p_source_27            IN VARCHAR2
4790 --Distribution Line Identifier
4791  , p_source_29            IN NUMBER
4792 --Distribution Type
4793  , p_source_30            IN VARCHAR2
4794 --Entered Amount
4795  , p_source_31            IN NUMBER
4796 --Currency Code
4797  , p_source_32            IN VARCHAR2
4798 --Exchange Date
4799  , p_source_33            IN DATE
4800 --Exchange Rate
4801  , p_source_34            IN NUMBER
4802 --Exchange Rate Type
4803  , p_source_35            IN VARCHAR2
4804 --Applied To Document Accounting Amount
4805  , p_source_36            IN NUMBER
4806 --Bill To Customer Account Identifier
4807  , p_source_37            IN NUMBER
4808 --Bill To Customer Site Use Identifier
4809  , p_source_38            IN NUMBER
4810 --SLA Party Type
4811  , p_source_39            IN VARCHAR2
4812 )
4813 IS
4814 
4815 l_component_type              VARCHAR2(80);
4816 l_component_code              VARCHAR2(30);
4817 l_component_type_code         VARCHAR2(1);
4818 l_component_appl_id           INTEGER;
4819 l_amb_context_code            VARCHAR2(30);
4820 l_entity_code                 VARCHAR2(30);
4821 l_event_class_code            VARCHAR2(30);
4822 l_ae_header_id                NUMBER;
4823 l_event_type_code             VARCHAR2(30);
4824 l_line_definition_code        VARCHAR2(30);
4825 l_line_definition_owner_code  VARCHAR2(1);
4826 --
4827 -- adr variables
4831 l_adr_accounting_coa_id       NUMBER;
4828 l_segment                     VARCHAR2(30);
4829 l_ccid                        NUMBER;
4830 l_adr_transaction_coa_id      NUMBER;
4832 l_adr_flexfield_segment_code  VARCHAR2(30);
4833 l_adr_flex_value_set_id       NUMBER;
4834 l_adr_value_type_code         VARCHAR2(30);
4835 l_adr_value_combination_id    NUMBER;
4836 l_adr_value_segment_code      VARCHAR2(30);
4837 
4838 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4839 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4840 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4841 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4842 
4843 -- 4262811 Variables ------------------------------------------------------------------------------------------
4844 l_entered_amt_idx             NUMBER;
4845 l_accted_amt_idx              NUMBER;
4846 l_acc_rev_flag                VARCHAR2(1);
4847 l_accrual_line_num            NUMBER;
4848 l_tmp_amt                     NUMBER;
4849 l_acc_rev_natural_side_code   VARCHAR2(1);
4850 
4851 l_num_entries                 NUMBER;
4852 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4853 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4854 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4855 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4856 l_recog_line_1                NUMBER;
4857 l_recog_line_2                NUMBER;
4858 
4859 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4860 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4861 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4862 
4863 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4864 
4865 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4866 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4867 
4868 ---------------------------------------------------------------------------------------------------------------
4869 
4870 
4871 --
4872 -- bulk performance
4873 --
4874 l_balance_type_code           VARCHAR2(1);
4875 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4876 l_log_module                  VARCHAR2(240);
4877 
4878 --
4879 -- Upgrade strategy
4880 --
4881 l_actual_upg_option           VARCHAR2(1);
4882 l_enc_upg_option           VARCHAR2(1);
4883 
4884 --
4885 BEGIN
4886 --
4887 IF g_log_enabled THEN
4888       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_28';
4889 END IF;
4890 --
4891 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4892 
4893       trace
4894          (p_msg      => 'BEGIN of AcctLineType_28'
4895          ,p_level    => C_LEVEL_PROCEDURE
4896          ,p_module   => l_log_module);
4897 
4898 END IF;
4899 --
4900 l_component_type             := 'AMB_JLT';
4901 l_component_code             := 'ADJ_DEFAULT_REC';
4902 l_component_type_code        := 'S';
4903 l_component_appl_id          :=  222;
4904 l_amb_context_code           := 'DEFAULT';
4905 l_entity_code                := 'ADJUSTMENTS';
4906 l_event_class_code           := 'ADJUSTMENT';
4907 l_event_type_code            := 'ADJUSTMENT_ALL';
4908 l_line_definition_owner_code := 'S';
4909 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
4910 --
4911 l_balance_type_code          := 'A';
4912 l_segment                     := NULL;
4913 l_ccid                        := NULL;
4914 l_adr_transaction_coa_id      := NULL;
4915 l_adr_accounting_coa_id       := NULL;
4916 l_adr_flexfield_segment_code  := NULL;
4917 l_adr_flex_value_set_id       := NULL;
4918 l_adr_value_type_code         := NULL;
4919 l_adr_value_combination_id    := NULL;
4920 l_adr_value_segment_code      := NULL;
4921 
4922 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4923 l_bflow_class_code           := '';    -- 4219869 Business Flow
4924 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4925 l_budgetary_control_flag     := 'N';
4926 
4927 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4928 l_bflow_applied_to_amt       := NULL; -- 5132302
4929 l_entered_amt_idx            := NULL;          -- 4262811
4930 l_accted_amt_idx             := NULL;          -- 4262811
4931 l_acc_rev_flag               := NULL;          -- 4262811
4932 l_accrual_line_num           := NULL;          -- 4262811
4933 l_tmp_amt                    := NULL;          -- 4262811
4934 --
4935  
4936 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4937     l_balance_type_code <> 'B' THEN
4938 IF NVL(p_source_27,'
4939 ') =  'REC'
4940  THEN 
4941 
4942    --
4943    XLA_AE_LINES_PKG.SetNewLine;
4944 
4945    p_balance_type_code          := l_balance_type_code;
4946    -- set the flag so later we will know whether the gain loss line needs to be created
4947    
4948    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4949      p_actual_flag :='A';
4950    END IF;
4951 
4952    --
4953    -- bulk performance
4954    --
4955    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4956                                       p_header_num   => 0); -- 4262811
4957    --
4958    -- set accounting line options
4959    --
4963          , p_gl_transfer_mode_code      => 'S'
4960    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4961            p_natural_side_code          => 'C'
4962          , p_gain_or_loss_flag          => 'N'
4964          , p_acct_entry_type_code       => 'A'
4965          , p_switch_side_flag           => 'Y'
4966          , p_merge_duplicate_code       => 'A'
4967          );
4968    --
4969    l_acc_rev_natural_side_code := 'D';  -- 4262811
4970    -- 
4971    --
4972    -- set accounting line type info
4973    --
4974    xla_ae_lines_pkg.SetAcctLineType
4975       (p_component_type             => l_component_type
4976       ,p_event_type_code            => l_event_type_code
4977       ,p_line_definition_owner_code => l_line_definition_owner_code
4978       ,p_line_definition_code       => l_line_definition_code
4979       ,p_accounting_line_code       => l_component_code
4980       ,p_accounting_line_type_code  => l_component_type_code
4981       ,p_accounting_line_appl_id    => l_component_appl_id
4982       ,p_amb_context_code           => l_amb_context_code
4983       ,p_entity_code                => l_entity_code
4984       ,p_event_class_code           => l_event_class_code);
4985    --
4986    -- set accounting class
4987    --
4988    xla_ae_lines_pkg.SetAcctClass(
4989            p_accounting_class_code  => 'RECEIVABLE'
4990          , p_ae_header_id           => l_ae_header_id
4991          );
4992 
4993    --
4994    -- set rounding class
4995    --
4996    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4997                       'RECEIVABLE';
4998 
4999    --
5000    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5001    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5002    --
5003    -- bulk performance
5004    --
5005    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5006 
5007    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5008       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5009 
5010    -- 4955764
5011    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5012       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5013 
5014    -- 4458381 Public Sector Enh
5015    
5016    --
5017    -- set accounting attributes for the line type
5018    --
5019    l_entered_amt_idx := 3;
5020    l_accted_amt_idx  := 8;
5021    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5022    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5023    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
5024    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5025    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
5026    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5027    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
5028    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5029    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
5030    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5031    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
5032    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5033    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
5034    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5035    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
5036    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
5037    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
5038    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
5039    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
5040    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
5041    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
5042    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
5043    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
5044 
5045    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5046    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5047 
5048    ---------------------------------------------------------------------------------------------------------------
5049    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5050    ---------------------------------------------------------------------------------------------------------------
5051    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5052 
5053    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5054    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5055 
5056    IF xla_accounting_cache_pkg.GetValueChar
5057          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5058          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5059    AND l_bflow_method_code = 'PRIOR_ENTRY'
5060 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5061    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5062          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5063        )
5064    THEN
5068            ,p_balance_type            => l_balance_type_code);
5065          xla_ae_lines_pkg.BflowUpgEntry
5066            (p_business_method_code    => l_bflow_method_code
5067            ,p_business_class_code     => l_bflow_class_code
5069    ELSE
5070       NULL;
5071 -- No business flow processing for business flow method of NONE.
5072    END IF;
5073 
5074    --
5075    -- call analytical criteria
5076    --
5077    
5078    --
5079    -- call description
5080    --
5081    -- No description or it is inherited.
5082    --
5083    -- call ADRs
5084    -- Bug 4922099
5085    --
5086    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5087         (NVL(l_actual_upg_option, 'N') = 'O') OR
5088         (NVL(l_enc_upg_option, 'N') = 'O')
5089       )
5090    THEN
5091    NULL;
5092    --
5093    --
5094    
5095   l_ccid := AcctDerRule_20(
5096            p_application_id           => p_application_id
5097          , p_ae_header_id             => l_ae_header_id 
5098 , p_source_22 => p_source_22
5099          , x_transaction_coa_id       => l_adr_transaction_coa_id
5100          , x_accounting_coa_id        => l_adr_accounting_coa_id
5101          , x_value_type_code          => l_adr_value_type_code
5102          , p_side                     => 'NA'
5103    );
5104 
5105    xla_ae_lines_pkg.set_ccid(
5106     p_code_combination_id          => l_ccid
5107   , p_value_type_code              => l_adr_value_type_code
5108   , p_transaction_coa_id           => l_adr_transaction_coa_id
5109   , p_accounting_coa_id            => l_adr_accounting_coa_id
5110   , p_adr_code                     => 'DIST_CCID'
5111   , p_adr_type_code                => 'S'
5112   , p_component_type               => l_component_type
5113   , p_component_code               => l_component_code
5114   , p_component_type_code          => l_component_type_code
5115   , p_component_appl_id            => l_component_appl_id
5116   , p_amb_context_code             => l_amb_context_code
5117   , p_side                         => 'NA'
5118   );
5119 
5120 
5121    --
5122    --
5123    END IF;
5124    --
5125    -- Bug 4922099
5126    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5127           (NVL(l_enc_upg_option, 'N') = 'O')
5128         ) AND
5129         (l_bflow_method_code = 'PRIOR_ENTRY')
5130       )
5131    THEN
5132       IF
5133       --
5134       1 = 2
5135       --
5136       THEN
5137       xla_accounting_err_pkg.build_message
5138                                     (p_appli_s_name            => 'XLA'
5139                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5140                                     ,p_token_1                 => 'LINE_NUMBER'
5141                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5142                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5143                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5144                                                                              l_component_type
5145                                                                             ,l_component_code
5146                                                                             ,l_component_type_code
5147                                                                             ,l_component_appl_id
5148                                                                             ,l_amb_context_code
5149                                                                             ,l_entity_code
5150                                                                             ,l_event_class_code
5151                                                                            )
5152                                     ,p_token_3                 => 'OWNER'
5153                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5154                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5155                                                                           ,p_lookup_code    => l_component_type_code
5156                                                                          )
5157                                     ,p_token_4                 => 'PRODUCT_NAME'
5158                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5159                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5160                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5161                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5162                                     ,p_ae_header_id            =>  NULL
5163                                        );
5164 
5165         IF (C_LEVEL_ERROR>= g_log_level) THEN
5166                  trace
5167                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5168                       ,p_level    => C_LEVEL_ERROR
5169                       ,p_module   => l_log_module);
5170         END IF;
5171       END IF;
5172    END IF;
5173    --
5174    --
5175    ------------------------------------------------------------------------------------------------
5176    -- 4219869 Business Flow
5177    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5178    -- Prior Entry.  Currently, the following code is always generated.
5182    ------------------------------------------------------------------------------------
5179    ------------------------------------------------------------------------------------------------
5180    XLA_AE_LINES_PKG.ValidateCurrentLine;
5181 
5183    -- 4219869 Business Flow
5184    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5185    ------------------------------------------------------------------------------------
5186    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5187 
5188    ----------------------------------------------------------------------------------
5189    -- 4219869 Business Flow
5190    -- Update journal entry status -- Need to generate this within IF <condition>
5191    ----------------------------------------------------------------------------------
5192    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5193          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5194          ,p_balance_type_code => l_balance_type_code
5195          );
5196 
5197    -------------------------------------------------------------------------------------------
5198    -- 4262811 - Generate the Accrual Reversal lines
5199    -------------------------------------------------------------------------------------------
5200    BEGIN
5201       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5202                               (g_array_event(p_event_id).array_value_num('header_index'));
5203       IF l_acc_rev_flag IS NULL THEN
5204          l_acc_rev_flag := 'N';
5205       END IF;
5206    EXCEPTION
5207       WHEN OTHERS THEN
5208          l_acc_rev_flag := 'N';
5209    END;
5210    --
5211    IF (l_acc_rev_flag = 'Y') THEN
5212 
5213        -- 4645092  ------------------------------------------------------------------------------
5214        -- To allow MPA report to determine if it should generate report process
5215        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5216        ------------------------------------------------------------------------------------------
5217 
5218        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5219        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5220    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5221    -- call ADRs
5222    -- Bug 4922099
5223    --
5224    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5225         (NVL(l_actual_upg_option, 'N') = 'O') OR
5226         (NVL(l_enc_upg_option, 'N') = 'O')
5227       )
5228    THEN
5229    NULL;
5230    --
5231    --
5232    
5233   l_ccid := AcctDerRule_20(
5234            p_application_id           => p_application_id
5235          , p_ae_header_id             => l_ae_header_id 
5236 , p_source_22 => p_source_22
5237          , x_transaction_coa_id       => l_adr_transaction_coa_id
5238          , x_accounting_coa_id        => l_adr_accounting_coa_id
5239          , x_value_type_code          => l_adr_value_type_code
5240          , p_side                     => 'NA'
5241    );
5242 
5243    xla_ae_lines_pkg.set_ccid(
5244     p_code_combination_id          => l_ccid
5245   , p_value_type_code              => l_adr_value_type_code
5246   , p_transaction_coa_id           => l_adr_transaction_coa_id
5247   , p_accounting_coa_id            => l_adr_accounting_coa_id
5248   , p_adr_code                     => 'DIST_CCID'
5249   , p_adr_type_code                => 'S'
5250   , p_component_type               => l_component_type
5251   , p_component_code               => l_component_code
5252   , p_component_type_code          => l_component_type_code
5253   , p_component_appl_id            => l_component_appl_id
5254   , p_amb_context_code             => l_amb_context_code
5255   , p_side                         => 'NA'
5256   );
5257 
5258 
5259    --
5260    --
5261    END IF;
5262 
5263        --
5264        -- Update the line information that should be overwritten
5265        --
5266        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5267                                          p_header_num   => 1);
5268        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5269 
5270        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5271 
5272        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5273           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5274        END IF;
5275 
5276       --
5277       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5278       --
5279       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5280           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5281       ELSE
5282           ---------------------------------------------------------------------------------------------------
5283           -- 4262811a Switch Sign
5284           ---------------------------------------------------------------------------------------------------
5285           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5286           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5287                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5288           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5292                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5289                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5290           -- 5132302
5291           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5293 
5294       END IF;
5295 
5296       -- 4955764
5297       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5298       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5299 
5300 
5301       XLA_AE_LINES_PKG.ValidateCurrentLine;
5302       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5303 
5304       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5305                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5306                ,p_balance_type_code => l_balance_type_code);
5307 
5308    END IF;
5309 
5310    -----------------------------------------------------------------------------------------
5311    -- 4262811 Multiperiod Accounting
5312    -----------------------------------------------------------------------------------------
5313      -- No MPA option is assigned.
5314 
5315 
5316 END IF;
5317 END IF;
5318 --
5319 
5320 --
5321 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5322    trace
5323       (p_msg      => 'END of AcctLineType_28'
5324       ,p_level    => C_LEVEL_PROCEDURE
5325       ,p_module   => l_log_module);
5326 END IF;
5327 --
5328 EXCEPTION
5329   WHEN xla_exceptions_pkg.application_exception THEN
5330       RAISE;
5331   WHEN OTHERS THEN
5332        xla_exceptions_pkg.raise_message
5333            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_28');
5334 END AcctLineType_28;
5335 --
5336 
5337 ---------------------------------------
5338 --
5339 -- PRIVATE FUNCTION
5340 --         AcctLineType_29
5341 --
5342 ---------------------------------------
5343 PROCEDURE AcctLineType_29 (
5344   p_application_id        IN NUMBER
5345  ,p_event_id              IN NUMBER
5346  ,p_calculate_acctd_flag  IN VARCHAR2
5347  ,p_calculate_g_l_flag    IN VARCHAR2
5348  ,p_actual_flag           IN OUT VARCHAR2
5349  ,p_balance_type_code     OUT VARCHAR2
5350  ,p_gain_or_loss_ref      OUT VARCHAR2
5351  
5352 --Distribution GL Account
5353  , p_source_22            IN NUMBER
5354 --Distribution Source Type
5355  , p_source_27            IN VARCHAR2
5356 --Distribution Line Identifier
5357  , p_source_29            IN NUMBER
5358 --Distribution Type
5359  , p_source_30            IN VARCHAR2
5360 --Entered Amount
5361  , p_source_31            IN NUMBER
5362 --Currency Code
5363  , p_source_32            IN VARCHAR2
5364 --Exchange Date
5365  , p_source_33            IN DATE
5366 --Exchange Rate
5367  , p_source_34            IN NUMBER
5368 --Exchange Rate Type
5369  , p_source_35            IN VARCHAR2
5370 --Applied To Document Accounting Amount
5371  , p_source_36            IN NUMBER
5372 --Bill To Customer Account Identifier
5373  , p_source_37            IN NUMBER
5374 --Bill To Customer Site Use Identifier
5375  , p_source_38            IN NUMBER
5376 --SLA Party Type
5377  , p_source_39            IN VARCHAR2
5378 )
5379 IS
5380 
5381 l_component_type              VARCHAR2(80);
5382 l_component_code              VARCHAR2(30);
5383 l_component_type_code         VARCHAR2(1);
5384 l_component_appl_id           INTEGER;
5385 l_amb_context_code            VARCHAR2(30);
5386 l_entity_code                 VARCHAR2(30);
5387 l_event_class_code            VARCHAR2(30);
5388 l_ae_header_id                NUMBER;
5389 l_event_type_code             VARCHAR2(30);
5390 l_line_definition_code        VARCHAR2(30);
5391 l_line_definition_owner_code  VARCHAR2(1);
5392 --
5393 -- adr variables
5394 l_segment                     VARCHAR2(30);
5395 l_ccid                        NUMBER;
5396 l_adr_transaction_coa_id      NUMBER;
5397 l_adr_accounting_coa_id       NUMBER;
5398 l_adr_flexfield_segment_code  VARCHAR2(30);
5399 l_adr_flex_value_set_id       NUMBER;
5400 l_adr_value_type_code         VARCHAR2(30);
5401 l_adr_value_combination_id    NUMBER;
5402 l_adr_value_segment_code      VARCHAR2(30);
5403 
5404 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5405 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5406 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5407 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5408 
5409 -- 4262811 Variables ------------------------------------------------------------------------------------------
5410 l_entered_amt_idx             NUMBER;
5411 l_accted_amt_idx              NUMBER;
5412 l_acc_rev_flag                VARCHAR2(1);
5413 l_accrual_line_num            NUMBER;
5414 l_tmp_amt                     NUMBER;
5415 l_acc_rev_natural_side_code   VARCHAR2(1);
5416 
5417 l_num_entries                 NUMBER;
5418 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5419 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5420 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5421 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5422 l_recog_line_1                NUMBER;
5426 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5423 l_recog_line_2                NUMBER;
5424 
5425 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5427 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5428 
5429 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5430 
5431 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5432 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5433 
5434 ---------------------------------------------------------------------------------------------------------------
5435 
5436 
5437 --
5438 -- bulk performance
5439 --
5440 l_balance_type_code           VARCHAR2(1);
5441 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5442 l_log_module                  VARCHAR2(240);
5443 
5444 --
5445 -- Upgrade strategy
5446 --
5447 l_actual_upg_option           VARCHAR2(1);
5448 l_enc_upg_option           VARCHAR2(1);
5449 
5450 --
5451 BEGIN
5452 --
5453 IF g_log_enabled THEN
5454       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_29';
5455 END IF;
5456 --
5457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5458 
5459       trace
5460          (p_msg      => 'BEGIN of AcctLineType_29'
5461          ,p_level    => C_LEVEL_PROCEDURE
5462          ,p_module   => l_log_module);
5463 
5464 END IF;
5465 --
5466 l_component_type             := 'AMB_JLT';
5467 l_component_code             := 'ADJ_DEFERRED_TAX';
5468 l_component_type_code        := 'S';
5469 l_component_appl_id          :=  222;
5470 l_amb_context_code           := 'DEFAULT';
5471 l_entity_code                := 'ADJUSTMENTS';
5472 l_event_class_code           := 'ADJUSTMENT';
5473 l_event_type_code            := 'ADJUSTMENT_ALL';
5474 l_line_definition_owner_code := 'S';
5475 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
5476 --
5477 l_balance_type_code          := 'A';
5478 l_segment                     := NULL;
5479 l_ccid                        := NULL;
5480 l_adr_transaction_coa_id      := NULL;
5481 l_adr_accounting_coa_id       := NULL;
5482 l_adr_flexfield_segment_code  := NULL;
5483 l_adr_flex_value_set_id       := NULL;
5484 l_adr_value_type_code         := NULL;
5485 l_adr_value_combination_id    := NULL;
5486 l_adr_value_segment_code      := NULL;
5487 
5488 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5489 l_bflow_class_code           := '';    -- 4219869 Business Flow
5490 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5491 l_budgetary_control_flag     := 'N';
5492 
5493 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5494 l_bflow_applied_to_amt       := NULL; -- 5132302
5495 l_entered_amt_idx            := NULL;          -- 4262811
5496 l_accted_amt_idx             := NULL;          -- 4262811
5497 l_acc_rev_flag               := NULL;          -- 4262811
5498 l_accrual_line_num           := NULL;          -- 4262811
5499 l_tmp_amt                    := NULL;          -- 4262811
5500 --
5501  
5502 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5503     l_balance_type_code <> 'B' THEN
5504 IF NVL(p_source_27,'
5505 ') =  'DEFERRED_TAX'
5506  THEN 
5507 
5508    --
5509    XLA_AE_LINES_PKG.SetNewLine;
5510 
5511    p_balance_type_code          := l_balance_type_code;
5512    -- set the flag so later we will know whether the gain loss line needs to be created
5513    
5514    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5515      p_actual_flag :='A';
5516    END IF;
5517 
5518    --
5519    -- bulk performance
5520    --
5521    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5522                                       p_header_num   => 0); -- 4262811
5523    --
5524    -- set accounting line options
5525    --
5526    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5527            p_natural_side_code          => 'C'
5528          , p_gain_or_loss_flag          => 'N'
5529          , p_gl_transfer_mode_code      => 'S'
5530          , p_acct_entry_type_code       => 'A'
5531          , p_switch_side_flag           => 'Y'
5532          , p_merge_duplicate_code       => 'A'
5533          );
5534    --
5535    l_acc_rev_natural_side_code := 'D';  -- 4262811
5536    -- 
5537    --
5538    -- set accounting line type info
5539    --
5540    xla_ae_lines_pkg.SetAcctLineType
5541       (p_component_type             => l_component_type
5542       ,p_event_type_code            => l_event_type_code
5543       ,p_line_definition_owner_code => l_line_definition_owner_code
5544       ,p_line_definition_code       => l_line_definition_code
5545       ,p_accounting_line_code       => l_component_code
5546       ,p_accounting_line_type_code  => l_component_type_code
5547       ,p_accounting_line_appl_id    => l_component_appl_id
5548       ,p_amb_context_code           => l_amb_context_code
5549       ,p_entity_code                => l_entity_code
5550       ,p_event_class_code           => l_event_class_code);
5551    --
5552    -- set accounting class
5553    --
5554    xla_ae_lines_pkg.SetAcctClass(
5555            p_accounting_class_code  => 'DEFERRED_TAX'
5559    --
5556          , p_ae_header_id           => l_ae_header_id
5557          );
5558 
5560    -- set rounding class
5561    --
5562    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5563                       'RECEIVABLE';
5564 
5565    --
5566    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5567    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5568    --
5569    -- bulk performance
5570    --
5571    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5572 
5573    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5574       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5575 
5576    -- 4955764
5577    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5578       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5579 
5580    -- 4458381 Public Sector Enh
5581    
5582    --
5583    -- set accounting attributes for the line type
5584    --
5585    l_entered_amt_idx := 3;
5586    l_accted_amt_idx  := 8;
5587    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5588    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5589    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
5590    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5591    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
5592    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5593    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
5594    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5595    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
5596    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5597    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
5598    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5599    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
5600    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5601    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
5602    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
5603    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
5604    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
5605    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
5606    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
5607    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
5608    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
5609    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
5610 
5611    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5612    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5613 
5614    ---------------------------------------------------------------------------------------------------------------
5615    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5616    ---------------------------------------------------------------------------------------------------------------
5617    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5618 
5619    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5620    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5621 
5622    IF xla_accounting_cache_pkg.GetValueChar
5623          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5624          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5625    AND l_bflow_method_code = 'PRIOR_ENTRY'
5626 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5627    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5628          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5629        )
5630    THEN
5631          xla_ae_lines_pkg.BflowUpgEntry
5632            (p_business_method_code    => l_bflow_method_code
5633            ,p_business_class_code     => l_bflow_class_code
5634            ,p_balance_type            => l_balance_type_code);
5635    ELSE
5636       NULL;
5637 -- No business flow processing for business flow method of NONE.
5638    END IF;
5639 
5640    --
5641    -- call analytical criteria
5642    --
5643    
5644    --
5645    -- call description
5646    --
5647    -- No description or it is inherited.
5648    --
5649    -- call ADRs
5650    -- Bug 4922099
5651    --
5652    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5653         (NVL(l_actual_upg_option, 'N') = 'O') OR
5654         (NVL(l_enc_upg_option, 'N') = 'O')
5655       )
5656    THEN
5657    NULL;
5658    --
5659    --
5660    
5661   l_ccid := AcctDerRule_20(
5662            p_application_id           => p_application_id
5663          , p_ae_header_id             => l_ae_header_id 
5664 , p_source_22 => p_source_22
5665          , x_transaction_coa_id       => l_adr_transaction_coa_id
5666          , x_accounting_coa_id        => l_adr_accounting_coa_id
5667          , x_value_type_code          => l_adr_value_type_code
5668          , p_side                     => 'NA'
5669    );
5670 
5674   , p_transaction_coa_id           => l_adr_transaction_coa_id
5671    xla_ae_lines_pkg.set_ccid(
5672     p_code_combination_id          => l_ccid
5673   , p_value_type_code              => l_adr_value_type_code
5675   , p_accounting_coa_id            => l_adr_accounting_coa_id
5676   , p_adr_code                     => 'DIST_CCID'
5677   , p_adr_type_code                => 'S'
5678   , p_component_type               => l_component_type
5679   , p_component_code               => l_component_code
5680   , p_component_type_code          => l_component_type_code
5681   , p_component_appl_id            => l_component_appl_id
5682   , p_amb_context_code             => l_amb_context_code
5683   , p_side                         => 'NA'
5684   );
5685 
5686 
5687    --
5688    --
5689    END IF;
5690    --
5691    -- Bug 4922099
5692    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5693           (NVL(l_enc_upg_option, 'N') = 'O')
5694         ) AND
5695         (l_bflow_method_code = 'PRIOR_ENTRY')
5696       )
5697    THEN
5698       IF
5699       --
5700       1 = 2
5701       --
5702       THEN
5703       xla_accounting_err_pkg.build_message
5704                                     (p_appli_s_name            => 'XLA'
5705                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5706                                     ,p_token_1                 => 'LINE_NUMBER'
5707                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5708                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5709                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5710                                                                              l_component_type
5711                                                                             ,l_component_code
5712                                                                             ,l_component_type_code
5713                                                                             ,l_component_appl_id
5714                                                                             ,l_amb_context_code
5715                                                                             ,l_entity_code
5716                                                                             ,l_event_class_code
5717                                                                            )
5718                                     ,p_token_3                 => 'OWNER'
5719                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5720                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5721                                                                           ,p_lookup_code    => l_component_type_code
5722                                                                          )
5723                                     ,p_token_4                 => 'PRODUCT_NAME'
5724                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5725                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5726                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5727                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5728                                     ,p_ae_header_id            =>  NULL
5729                                        );
5730 
5731         IF (C_LEVEL_ERROR>= g_log_level) THEN
5732                  trace
5733                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5734                       ,p_level    => C_LEVEL_ERROR
5735                       ,p_module   => l_log_module);
5736         END IF;
5737       END IF;
5738    END IF;
5739    --
5740    --
5741    ------------------------------------------------------------------------------------------------
5742    -- 4219869 Business Flow
5743    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5744    -- Prior Entry.  Currently, the following code is always generated.
5745    ------------------------------------------------------------------------------------------------
5746    XLA_AE_LINES_PKG.ValidateCurrentLine;
5747 
5748    ------------------------------------------------------------------------------------
5749    -- 4219869 Business Flow
5750    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5751    ------------------------------------------------------------------------------------
5752    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5753 
5754    ----------------------------------------------------------------------------------
5755    -- 4219869 Business Flow
5756    -- Update journal entry status -- Need to generate this within IF <condition>
5757    ----------------------------------------------------------------------------------
5758    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5759          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5760          ,p_balance_type_code => l_balance_type_code
5761          );
5762 
5763    -------------------------------------------------------------------------------------------
5764    -- 4262811 - Generate the Accrual Reversal lines
5765    -------------------------------------------------------------------------------------------
5766    BEGIN
5767       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5771       END IF;
5768                               (g_array_event(p_event_id).array_value_num('header_index'));
5769       IF l_acc_rev_flag IS NULL THEN
5770          l_acc_rev_flag := 'N';
5772    EXCEPTION
5773       WHEN OTHERS THEN
5774          l_acc_rev_flag := 'N';
5775    END;
5776    --
5777    IF (l_acc_rev_flag = 'Y') THEN
5778 
5779        -- 4645092  ------------------------------------------------------------------------------
5780        -- To allow MPA report to determine if it should generate report process
5781        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5782        ------------------------------------------------------------------------------------------
5783 
5784        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5785        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5786    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5787    -- call ADRs
5788    -- Bug 4922099
5789    --
5790    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5791         (NVL(l_actual_upg_option, 'N') = 'O') OR
5792         (NVL(l_enc_upg_option, 'N') = 'O')
5793       )
5794    THEN
5795    NULL;
5796    --
5797    --
5798    
5799   l_ccid := AcctDerRule_20(
5800            p_application_id           => p_application_id
5801          , p_ae_header_id             => l_ae_header_id 
5802 , p_source_22 => p_source_22
5803          , x_transaction_coa_id       => l_adr_transaction_coa_id
5804          , x_accounting_coa_id        => l_adr_accounting_coa_id
5805          , x_value_type_code          => l_adr_value_type_code
5806          , p_side                     => 'NA'
5807    );
5808 
5809    xla_ae_lines_pkg.set_ccid(
5810     p_code_combination_id          => l_ccid
5811   , p_value_type_code              => l_adr_value_type_code
5812   , p_transaction_coa_id           => l_adr_transaction_coa_id
5813   , p_accounting_coa_id            => l_adr_accounting_coa_id
5814   , p_adr_code                     => 'DIST_CCID'
5815   , p_adr_type_code                => 'S'
5816   , p_component_type               => l_component_type
5817   , p_component_code               => l_component_code
5818   , p_component_type_code          => l_component_type_code
5819   , p_component_appl_id            => l_component_appl_id
5820   , p_amb_context_code             => l_amb_context_code
5821   , p_side                         => 'NA'
5822   );
5823 
5824 
5825    --
5826    --
5827    END IF;
5828 
5829        --
5830        -- Update the line information that should be overwritten
5831        --
5832        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5833                                          p_header_num   => 1);
5834        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5835 
5836        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5837 
5838        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5839           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5840        END IF;
5841 
5842       --
5843       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5844       --
5845       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5846           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5847       ELSE
5848           ---------------------------------------------------------------------------------------------------
5849           -- 4262811a Switch Sign
5850           ---------------------------------------------------------------------------------------------------
5851           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5852           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5853                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5854           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5855                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5856           -- 5132302
5857           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5858                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5859 
5860       END IF;
5861 
5862       -- 4955764
5863       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5864       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5865 
5866 
5867       XLA_AE_LINES_PKG.ValidateCurrentLine;
5868       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5869 
5870       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5871                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5872                ,p_balance_type_code => l_balance_type_code);
5873 
5874    END IF;
5875 
5876    -----------------------------------------------------------------------------------------
5877    -- 4262811 Multiperiod Accounting
5878    -----------------------------------------------------------------------------------------
5879      -- No MPA option is assigned.
5880 
5884 --
5881 
5882 END IF;
5883 END IF;
5885 
5886 --
5887 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5888    trace
5889       (p_msg      => 'END of AcctLineType_29'
5890       ,p_level    => C_LEVEL_PROCEDURE
5891       ,p_module   => l_log_module);
5892 END IF;
5893 --
5894 EXCEPTION
5895   WHEN xla_exceptions_pkg.application_exception THEN
5896       RAISE;
5897   WHEN OTHERS THEN
5898        xla_exceptions_pkg.raise_message
5899            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_29');
5900 END AcctLineType_29;
5901 --
5902 
5903 ---------------------------------------
5904 --
5905 -- PRIVATE FUNCTION
5906 --         AcctLineType_30
5907 --
5908 ---------------------------------------
5909 PROCEDURE AcctLineType_30 (
5910   p_application_id        IN NUMBER
5911  ,p_event_id              IN NUMBER
5912  ,p_calculate_acctd_flag  IN VARCHAR2
5913  ,p_calculate_g_l_flag    IN VARCHAR2
5914  ,p_actual_flag           IN OUT VARCHAR2
5915  ,p_balance_type_code     OUT VARCHAR2
5916  ,p_gain_or_loss_ref      OUT VARCHAR2
5917  
5918 --Distribution GL Account
5919  , p_source_22            IN NUMBER
5920 --Distribution Source Type
5921  , p_source_27            IN VARCHAR2
5922 --Distribution Line Identifier
5923  , p_source_29            IN NUMBER
5924 --Distribution Type
5925  , p_source_30            IN VARCHAR2
5926 --Entered Amount
5927  , p_source_31            IN NUMBER
5928 --Currency Code
5929  , p_source_32            IN VARCHAR2
5930 --Exchange Date
5931  , p_source_33            IN DATE
5932 --Exchange Rate
5933  , p_source_34            IN NUMBER
5934 --Exchange Rate Type
5935  , p_source_35            IN VARCHAR2
5936 --Applied To Document Accounting Amount
5937  , p_source_36            IN NUMBER
5938 --Bill To Customer Account Identifier
5939  , p_source_37            IN NUMBER
5940 --Bill To Customer Site Use Identifier
5941  , p_source_38            IN NUMBER
5942 --SLA Party Type
5943  , p_source_39            IN VARCHAR2
5944 )
5945 IS
5946 
5947 l_component_type              VARCHAR2(80);
5948 l_component_code              VARCHAR2(30);
5949 l_component_type_code         VARCHAR2(1);
5950 l_component_appl_id           INTEGER;
5951 l_amb_context_code            VARCHAR2(30);
5952 l_entity_code                 VARCHAR2(30);
5953 l_event_class_code            VARCHAR2(30);
5954 l_ae_header_id                NUMBER;
5955 l_event_type_code             VARCHAR2(30);
5956 l_line_definition_code        VARCHAR2(30);
5957 l_line_definition_owner_code  VARCHAR2(1);
5958 --
5959 -- adr variables
5960 l_segment                     VARCHAR2(30);
5961 l_ccid                        NUMBER;
5962 l_adr_transaction_coa_id      NUMBER;
5963 l_adr_accounting_coa_id       NUMBER;
5964 l_adr_flexfield_segment_code  VARCHAR2(30);
5965 l_adr_flex_value_set_id       NUMBER;
5966 l_adr_value_type_code         VARCHAR2(30);
5967 l_adr_value_combination_id    NUMBER;
5968 l_adr_value_segment_code      VARCHAR2(30);
5969 
5970 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5971 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5972 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5973 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5974 
5975 -- 4262811 Variables ------------------------------------------------------------------------------------------
5976 l_entered_amt_idx             NUMBER;
5977 l_accted_amt_idx              NUMBER;
5978 l_acc_rev_flag                VARCHAR2(1);
5979 l_accrual_line_num            NUMBER;
5980 l_tmp_amt                     NUMBER;
5981 l_acc_rev_natural_side_code   VARCHAR2(1);
5982 
5983 l_num_entries                 NUMBER;
5984 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5985 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5986 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5987 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5988 l_recog_line_1                NUMBER;
5989 l_recog_line_2                NUMBER;
5990 
5991 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5992 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5993 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5994 
5995 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5996 
5997 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5998 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5999 
6000 ---------------------------------------------------------------------------------------------------------------
6001 
6002 
6003 --
6004 -- bulk performance
6005 --
6006 l_balance_type_code           VARCHAR2(1);
6007 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6008 l_log_module                  VARCHAR2(240);
6009 
6010 --
6011 -- Upgrade strategy
6012 --
6013 l_actual_upg_option           VARCHAR2(1);
6014 l_enc_upg_option           VARCHAR2(1);
6015 
6016 --
6017 BEGIN
6018 --
6019 IF g_log_enabled THEN
6020       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_30';
6021 END IF;
6022 --
6023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6024 
6028          ,p_module   => l_log_module);
6025       trace
6026          (p_msg      => 'BEGIN of AcctLineType_30'
6027          ,p_level    => C_LEVEL_PROCEDURE
6029 
6030 END IF;
6031 --
6032 l_component_type             := 'AMB_JLT';
6033 l_component_code             := 'ADJ_FINCHRG_NON_REC_TAX';
6034 l_component_type_code        := 'S';
6035 l_component_appl_id          :=  222;
6036 l_amb_context_code           := 'DEFAULT';
6037 l_entity_code                := 'ADJUSTMENTS';
6038 l_event_class_code           := 'ADJUSTMENT';
6039 l_event_type_code            := 'ADJUSTMENT_ALL';
6040 l_line_definition_owner_code := 'S';
6041 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
6042 --
6043 l_balance_type_code          := 'A';
6044 l_segment                     := NULL;
6045 l_ccid                        := NULL;
6046 l_adr_transaction_coa_id      := NULL;
6047 l_adr_accounting_coa_id       := NULL;
6048 l_adr_flexfield_segment_code  := NULL;
6049 l_adr_flex_value_set_id       := NULL;
6050 l_adr_value_type_code         := NULL;
6051 l_adr_value_combination_id    := NULL;
6052 l_adr_value_segment_code      := NULL;
6053 
6054 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6055 l_bflow_class_code           := '';    -- 4219869 Business Flow
6056 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6057 l_budgetary_control_flag     := 'N';
6058 
6059 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6060 l_bflow_applied_to_amt       := NULL; -- 5132302
6061 l_entered_amt_idx            := NULL;          -- 4262811
6062 l_accted_amt_idx             := NULL;          -- 4262811
6063 l_acc_rev_flag               := NULL;          -- 4262811
6064 l_accrual_line_num           := NULL;          -- 4262811
6065 l_tmp_amt                    := NULL;          -- 4262811
6066 --
6067  
6068 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6069     l_balance_type_code <> 'B' THEN
6070 IF NVL(p_source_27,'
6071 ') =  'FINCHRG_NON_REC_TAX'
6072  THEN 
6073 
6074    --
6075    XLA_AE_LINES_PKG.SetNewLine;
6076 
6077    p_balance_type_code          := l_balance_type_code;
6078    -- set the flag so later we will know whether the gain loss line needs to be created
6079    
6080    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6081      p_actual_flag :='A';
6082    END IF;
6083 
6084    --
6085    -- bulk performance
6086    --
6087    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6088                                       p_header_num   => 0); -- 4262811
6089    --
6090    -- set accounting line options
6091    --
6092    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6093            p_natural_side_code          => 'C'
6094          , p_gain_or_loss_flag          => 'N'
6095          , p_gl_transfer_mode_code      => 'S'
6096          , p_acct_entry_type_code       => 'A'
6097          , p_switch_side_flag           => 'Y'
6098          , p_merge_duplicate_code       => 'A'
6099          );
6100    --
6101    l_acc_rev_natural_side_code := 'D';  -- 4262811
6102    -- 
6103    --
6104    -- set accounting line type info
6105    --
6106    xla_ae_lines_pkg.SetAcctLineType
6107       (p_component_type             => l_component_type
6108       ,p_event_type_code            => l_event_type_code
6109       ,p_line_definition_owner_code => l_line_definition_owner_code
6110       ,p_line_definition_code       => l_line_definition_code
6111       ,p_accounting_line_code       => l_component_code
6112       ,p_accounting_line_type_code  => l_component_type_code
6113       ,p_accounting_line_appl_id    => l_component_appl_id
6114       ,p_amb_context_code           => l_amb_context_code
6115       ,p_entity_code                => l_entity_code
6116       ,p_event_class_code           => l_event_class_code);
6117    --
6118    -- set accounting class
6119    --
6120    xla_ae_lines_pkg.SetAcctClass(
6121            p_accounting_class_code  => 'FINCHRG_NON_REC_TAX'
6122          , p_ae_header_id           => l_ae_header_id
6123          );
6124 
6125    --
6126    -- set rounding class
6127    --
6128    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6129                       'RECEIVABLE';
6130 
6131    --
6132    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6133    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6134    --
6135    -- bulk performance
6136    --
6137    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6138 
6139    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6140       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6141 
6142    -- 4955764
6143    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6144       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6145 
6146    -- 4458381 Public Sector Enh
6147    
6148    --
6149    -- set accounting attributes for the line type
6150    --
6151    l_entered_amt_idx := 3;
6152    l_accted_amt_idx  := 8;
6156    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6153    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6154    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6155    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
6157    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
6158    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6159    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
6160    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6161    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
6162    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6163    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
6164    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6165    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
6166    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6167    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
6168    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
6169    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
6170    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
6171    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
6172    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
6173    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
6174    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
6175    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
6176 
6177    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6178    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6179 
6180    ---------------------------------------------------------------------------------------------------------------
6181    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6182    ---------------------------------------------------------------------------------------------------------------
6183    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6184 
6185    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6186    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6187 
6188    IF xla_accounting_cache_pkg.GetValueChar
6189          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6190          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6191    AND l_bflow_method_code = 'PRIOR_ENTRY'
6192 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6193    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6194          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6195        )
6196    THEN
6197          xla_ae_lines_pkg.BflowUpgEntry
6198            (p_business_method_code    => l_bflow_method_code
6199            ,p_business_class_code     => l_bflow_class_code
6200            ,p_balance_type            => l_balance_type_code);
6201    ELSE
6202       NULL;
6203 -- No business flow processing for business flow method of NONE.
6204    END IF;
6205 
6206    --
6207    -- call analytical criteria
6208    --
6209    
6210    --
6211    -- call description
6212    --
6213    -- No description or it is inherited.
6214    --
6215    -- call ADRs
6216    -- Bug 4922099
6217    --
6218    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6219         (NVL(l_actual_upg_option, 'N') = 'O') OR
6220         (NVL(l_enc_upg_option, 'N') = 'O')
6221       )
6222    THEN
6223    NULL;
6224    --
6225    --
6226    
6227   l_ccid := AcctDerRule_20(
6228            p_application_id           => p_application_id
6229          , p_ae_header_id             => l_ae_header_id 
6230 , p_source_22 => p_source_22
6231          , x_transaction_coa_id       => l_adr_transaction_coa_id
6232          , x_accounting_coa_id        => l_adr_accounting_coa_id
6233          , x_value_type_code          => l_adr_value_type_code
6234          , p_side                     => 'NA'
6235    );
6236 
6237    xla_ae_lines_pkg.set_ccid(
6238     p_code_combination_id          => l_ccid
6239   , p_value_type_code              => l_adr_value_type_code
6240   , p_transaction_coa_id           => l_adr_transaction_coa_id
6241   , p_accounting_coa_id            => l_adr_accounting_coa_id
6242   , p_adr_code                     => 'DIST_CCID'
6243   , p_adr_type_code                => 'S'
6244   , p_component_type               => l_component_type
6245   , p_component_code               => l_component_code
6246   , p_component_type_code          => l_component_type_code
6247   , p_component_appl_id            => l_component_appl_id
6248   , p_amb_context_code             => l_amb_context_code
6249   , p_side                         => 'NA'
6250   );
6251 
6252 
6253    --
6254    --
6255    END IF;
6256    --
6257    -- Bug 4922099
6258    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6259           (NVL(l_enc_upg_option, 'N') = 'O')
6260         ) AND
6261         (l_bflow_method_code = 'PRIOR_ENTRY')
6262       )
6263    THEN
6264       IF
6265       --
6266       1 = 2
6267       --
6268       THEN
6269       xla_accounting_err_pkg.build_message
6270                                     (p_appli_s_name            => 'XLA'
6271                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6272                                     ,p_token_1                 => 'LINE_NUMBER'
6276                                                                              l_component_type
6273                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6274                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6275                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6277                                                                             ,l_component_code
6278                                                                             ,l_component_type_code
6279                                                                             ,l_component_appl_id
6280                                                                             ,l_amb_context_code
6281                                                                             ,l_entity_code
6282                                                                             ,l_event_class_code
6283                                                                            )
6284                                     ,p_token_3                 => 'OWNER'
6285                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6286                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6287                                                                           ,p_lookup_code    => l_component_type_code
6288                                                                          )
6289                                     ,p_token_4                 => 'PRODUCT_NAME'
6290                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6291                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6292                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6293                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6294                                     ,p_ae_header_id            =>  NULL
6295                                        );
6296 
6297         IF (C_LEVEL_ERROR>= g_log_level) THEN
6298                  trace
6299                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6300                       ,p_level    => C_LEVEL_ERROR
6301                       ,p_module   => l_log_module);
6302         END IF;
6303       END IF;
6304    END IF;
6305    --
6306    --
6307    ------------------------------------------------------------------------------------------------
6308    -- 4219869 Business Flow
6309    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6310    -- Prior Entry.  Currently, the following code is always generated.
6311    ------------------------------------------------------------------------------------------------
6312    XLA_AE_LINES_PKG.ValidateCurrentLine;
6313 
6314    ------------------------------------------------------------------------------------
6315    -- 4219869 Business Flow
6316    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6317    ------------------------------------------------------------------------------------
6318    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6319 
6320    ----------------------------------------------------------------------------------
6321    -- 4219869 Business Flow
6322    -- Update journal entry status -- Need to generate this within IF <condition>
6323    ----------------------------------------------------------------------------------
6324    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6325          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6326          ,p_balance_type_code => l_balance_type_code
6327          );
6328 
6329    -------------------------------------------------------------------------------------------
6330    -- 4262811 - Generate the Accrual Reversal lines
6331    -------------------------------------------------------------------------------------------
6332    BEGIN
6333       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6334                               (g_array_event(p_event_id).array_value_num('header_index'));
6335       IF l_acc_rev_flag IS NULL THEN
6336          l_acc_rev_flag := 'N';
6337       END IF;
6338    EXCEPTION
6339       WHEN OTHERS THEN
6340          l_acc_rev_flag := 'N';
6341    END;
6342    --
6343    IF (l_acc_rev_flag = 'Y') THEN
6344 
6345        -- 4645092  ------------------------------------------------------------------------------
6346        -- To allow MPA report to determine if it should generate report process
6347        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6348        ------------------------------------------------------------------------------------------
6349 
6350        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6351        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6352    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
6353    -- call ADRs
6354    -- Bug 4922099
6355    --
6356    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6357         (NVL(l_actual_upg_option, 'N') = 'O') OR
6358         (NVL(l_enc_upg_option, 'N') = 'O')
6359       )
6360    THEN
6361    NULL;
6362    --
6363    --
6364    
6365   l_ccid := AcctDerRule_20(
6366            p_application_id           => p_application_id
6367          , p_ae_header_id             => l_ae_header_id 
6368 , p_source_22 => p_source_22
6372          , p_side                     => 'NA'
6369          , x_transaction_coa_id       => l_adr_transaction_coa_id
6370          , x_accounting_coa_id        => l_adr_accounting_coa_id
6371          , x_value_type_code          => l_adr_value_type_code
6373    );
6374 
6375    xla_ae_lines_pkg.set_ccid(
6376     p_code_combination_id          => l_ccid
6377   , p_value_type_code              => l_adr_value_type_code
6378   , p_transaction_coa_id           => l_adr_transaction_coa_id
6379   , p_accounting_coa_id            => l_adr_accounting_coa_id
6380   , p_adr_code                     => 'DIST_CCID'
6381   , p_adr_type_code                => 'S'
6382   , p_component_type               => l_component_type
6383   , p_component_code               => l_component_code
6384   , p_component_type_code          => l_component_type_code
6385   , p_component_appl_id            => l_component_appl_id
6386   , p_amb_context_code             => l_amb_context_code
6387   , p_side                         => 'NA'
6388   );
6389 
6390 
6391    --
6392    --
6393    END IF;
6394 
6395        --
6396        -- Update the line information that should be overwritten
6397        --
6398        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6399                                          p_header_num   => 1);
6400        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6401 
6402        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6403 
6404        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6405           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6406        END IF;
6407 
6408       --
6409       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6410       --
6411       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6412           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6413       ELSE
6414           ---------------------------------------------------------------------------------------------------
6415           -- 4262811a Switch Sign
6416           ---------------------------------------------------------------------------------------------------
6417           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6418           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6419                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6420           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6421                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6422           -- 5132302
6423           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6424                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6425 
6426       END IF;
6427 
6428       -- 4955764
6429       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6430       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6431 
6432 
6433       XLA_AE_LINES_PKG.ValidateCurrentLine;
6434       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6435 
6436       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6437                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6438                ,p_balance_type_code => l_balance_type_code);
6439 
6440    END IF;
6441 
6442    -----------------------------------------------------------------------------------------
6443    -- 4262811 Multiperiod Accounting
6444    -----------------------------------------------------------------------------------------
6445      -- No MPA option is assigned.
6446 
6447 
6448 END IF;
6449 END IF;
6450 --
6451 
6452 --
6453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6454    trace
6455       (p_msg      => 'END of AcctLineType_30'
6456       ,p_level    => C_LEVEL_PROCEDURE
6457       ,p_module   => l_log_module);
6458 END IF;
6459 --
6460 EXCEPTION
6461   WHEN xla_exceptions_pkg.application_exception THEN
6462       RAISE;
6463   WHEN OTHERS THEN
6464        xla_exceptions_pkg.raise_message
6465            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_30');
6466 END AcctLineType_30;
6467 --
6468 
6469 ---------------------------------------
6470 --
6471 -- PRIVATE FUNCTION
6472 --         AcctLineType_31
6473 --
6474 ---------------------------------------
6475 PROCEDURE AcctLineType_31 (
6476   p_application_id        IN NUMBER
6477  ,p_event_id              IN NUMBER
6478  ,p_calculate_acctd_flag  IN VARCHAR2
6479  ,p_calculate_g_l_flag    IN VARCHAR2
6480  ,p_actual_flag           IN OUT VARCHAR2
6481  ,p_balance_type_code     OUT VARCHAR2
6482  ,p_gain_or_loss_ref      OUT VARCHAR2
6483  
6484 --Distribution GL Account
6485  , p_source_22            IN NUMBER
6486 --Distribution Source Type
6487  , p_source_27            IN VARCHAR2
6488 --Distribution Line Identifier
6489  , p_source_29            IN NUMBER
6490 --Distribution Type
6494 --Currency Code
6491  , p_source_30            IN VARCHAR2
6492 --Entered Amount
6493  , p_source_31            IN NUMBER
6495  , p_source_32            IN VARCHAR2
6496 --Exchange Date
6497  , p_source_33            IN DATE
6498 --Exchange Rate
6499  , p_source_34            IN NUMBER
6500 --Exchange Rate Type
6501  , p_source_35            IN VARCHAR2
6502 --Applied To Document Accounting Amount
6503  , p_source_36            IN NUMBER
6504 --Bill To Customer Account Identifier
6505  , p_source_37            IN NUMBER
6506 --Bill To Customer Site Use Identifier
6507  , p_source_38            IN NUMBER
6508 --SLA Party Type
6509  , p_source_39            IN VARCHAR2
6510 )
6511 IS
6512 
6513 l_component_type              VARCHAR2(80);
6514 l_component_code              VARCHAR2(30);
6515 l_component_type_code         VARCHAR2(1);
6516 l_component_appl_id           INTEGER;
6517 l_amb_context_code            VARCHAR2(30);
6518 l_entity_code                 VARCHAR2(30);
6519 l_event_class_code            VARCHAR2(30);
6520 l_ae_header_id                NUMBER;
6521 l_event_type_code             VARCHAR2(30);
6522 l_line_definition_code        VARCHAR2(30);
6523 l_line_definition_owner_code  VARCHAR2(1);
6524 --
6525 -- adr variables
6526 l_segment                     VARCHAR2(30);
6527 l_ccid                        NUMBER;
6528 l_adr_transaction_coa_id      NUMBER;
6529 l_adr_accounting_coa_id       NUMBER;
6530 l_adr_flexfield_segment_code  VARCHAR2(30);
6531 l_adr_flex_value_set_id       NUMBER;
6532 l_adr_value_type_code         VARCHAR2(30);
6533 l_adr_value_combination_id    NUMBER;
6534 l_adr_value_segment_code      VARCHAR2(30);
6535 
6536 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6537 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6538 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6539 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6540 
6541 -- 4262811 Variables ------------------------------------------------------------------------------------------
6542 l_entered_amt_idx             NUMBER;
6543 l_accted_amt_idx              NUMBER;
6544 l_acc_rev_flag                VARCHAR2(1);
6545 l_accrual_line_num            NUMBER;
6546 l_tmp_amt                     NUMBER;
6547 l_acc_rev_natural_side_code   VARCHAR2(1);
6548 
6549 l_num_entries                 NUMBER;
6550 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6551 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6552 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6553 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6554 l_recog_line_1                NUMBER;
6555 l_recog_line_2                NUMBER;
6556 
6557 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6558 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6559 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6560 
6561 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6562 
6563 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6564 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6565 
6566 ---------------------------------------------------------------------------------------------------------------
6567 
6568 
6569 --
6570 -- bulk performance
6571 --
6572 l_balance_type_code           VARCHAR2(1);
6573 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6574 l_log_module                  VARCHAR2(240);
6575 
6576 --
6577 -- Upgrade strategy
6578 --
6579 l_actual_upg_option           VARCHAR2(1);
6580 l_enc_upg_option           VARCHAR2(1);
6581 
6582 --
6583 BEGIN
6584 --
6585 IF g_log_enabled THEN
6586       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_31';
6587 END IF;
6588 --
6589 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6590 
6591       trace
6592          (p_msg      => 'BEGIN of AcctLineType_31'
6593          ,p_level    => C_LEVEL_PROCEDURE
6594          ,p_module   => l_log_module);
6595 
6596 END IF;
6597 --
6598 l_component_type             := 'AMB_JLT';
6599 l_component_code             := 'ADJ_NON_REC_TAX';
6600 l_component_type_code        := 'S';
6601 l_component_appl_id          :=  222;
6602 l_amb_context_code           := 'DEFAULT';
6603 l_entity_code                := 'ADJUSTMENTS';
6604 l_event_class_code           := 'ADJUSTMENT';
6605 l_event_type_code            := 'ADJUSTMENT_ALL';
6606 l_line_definition_owner_code := 'S';
6607 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
6608 --
6609 l_balance_type_code          := 'A';
6610 l_segment                     := NULL;
6611 l_ccid                        := NULL;
6612 l_adr_transaction_coa_id      := NULL;
6613 l_adr_accounting_coa_id       := NULL;
6614 l_adr_flexfield_segment_code  := NULL;
6615 l_adr_flex_value_set_id       := NULL;
6616 l_adr_value_type_code         := NULL;
6617 l_adr_value_combination_id    := NULL;
6618 l_adr_value_segment_code      := NULL;
6619 
6620 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6624 
6621 l_bflow_class_code           := '';    -- 4219869 Business Flow
6622 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6623 l_budgetary_control_flag     := 'N';
6625 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6626 l_bflow_applied_to_amt       := NULL; -- 5132302
6627 l_entered_amt_idx            := NULL;          -- 4262811
6628 l_accted_amt_idx             := NULL;          -- 4262811
6629 l_acc_rev_flag               := NULL;          -- 4262811
6630 l_accrual_line_num           := NULL;          -- 4262811
6631 l_tmp_amt                    := NULL;          -- 4262811
6632 --
6633  
6634 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6635     l_balance_type_code <> 'B' THEN
6636 IF NVL(p_source_27,'
6637 ') =  'ADJ_NON_REC_TAX'
6638  THEN 
6639 
6640    --
6641    XLA_AE_LINES_PKG.SetNewLine;
6642 
6643    p_balance_type_code          := l_balance_type_code;
6644    -- set the flag so later we will know whether the gain loss line needs to be created
6645    
6646    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6647      p_actual_flag :='A';
6648    END IF;
6649 
6650    --
6651    -- bulk performance
6652    --
6653    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6654                                       p_header_num   => 0); -- 4262811
6655    --
6656    -- set accounting line options
6657    --
6658    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6659            p_natural_side_code          => 'C'
6660          , p_gain_or_loss_flag          => 'N'
6661          , p_gl_transfer_mode_code      => 'S'
6662          , p_acct_entry_type_code       => 'A'
6663          , p_switch_side_flag           => 'Y'
6664          , p_merge_duplicate_code       => 'A'
6665          );
6666    --
6667    l_acc_rev_natural_side_code := 'D';  -- 4262811
6668    -- 
6669    --
6670    -- set accounting line type info
6671    --
6672    xla_ae_lines_pkg.SetAcctLineType
6673       (p_component_type             => l_component_type
6674       ,p_event_type_code            => l_event_type_code
6675       ,p_line_definition_owner_code => l_line_definition_owner_code
6676       ,p_line_definition_code       => l_line_definition_code
6677       ,p_accounting_line_code       => l_component_code
6678       ,p_accounting_line_type_code  => l_component_type_code
6679       ,p_accounting_line_appl_id    => l_component_appl_id
6680       ,p_amb_context_code           => l_amb_context_code
6681       ,p_entity_code                => l_entity_code
6682       ,p_event_class_code           => l_event_class_code);
6683    --
6684    -- set accounting class
6685    --
6686    xla_ae_lines_pkg.SetAcctClass(
6687            p_accounting_class_code  => 'ADJ_NON_REC_TAX'
6688          , p_ae_header_id           => l_ae_header_id
6689          );
6690 
6691    --
6692    -- set rounding class
6693    --
6694    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6695                       'RECEIVABLE';
6696 
6697    --
6698    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6699    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6700    --
6701    -- bulk performance
6702    --
6703    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6704 
6705    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6706       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6707 
6708    -- 4955764
6709    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6710       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6711 
6712    -- 4458381 Public Sector Enh
6713    
6714    --
6715    -- set accounting attributes for the line type
6716    --
6717    l_entered_amt_idx := 3;
6718    l_accted_amt_idx  := 8;
6719    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6720    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6721    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
6722    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6723    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
6724    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6725    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
6726    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6727    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
6728    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6729    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
6730    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6731    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
6732    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6733    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
6734    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
6735    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
6736    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
6737    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
6738    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
6739    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
6740    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
6744    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6741    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
6742 
6743    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6745 
6746    ---------------------------------------------------------------------------------------------------------------
6747    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6748    ---------------------------------------------------------------------------------------------------------------
6749    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6750 
6751    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6752    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6753 
6754    IF xla_accounting_cache_pkg.GetValueChar
6755          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6756          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6757    AND l_bflow_method_code = 'PRIOR_ENTRY'
6758 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6759    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6760          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6761        )
6762    THEN
6763          xla_ae_lines_pkg.BflowUpgEntry
6764            (p_business_method_code    => l_bflow_method_code
6765            ,p_business_class_code     => l_bflow_class_code
6766            ,p_balance_type            => l_balance_type_code);
6767    ELSE
6768       NULL;
6769 -- No business flow processing for business flow method of NONE.
6770    END IF;
6771 
6772    --
6773    -- call analytical criteria
6774    --
6775    
6776    --
6777    -- call description
6778    --
6779    -- No description or it is inherited.
6780    --
6781    -- call ADRs
6782    -- Bug 4922099
6783    --
6784    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6785         (NVL(l_actual_upg_option, 'N') = 'O') OR
6786         (NVL(l_enc_upg_option, 'N') = 'O')
6787       )
6788    THEN
6789    NULL;
6790    --
6791    --
6792    
6793   l_ccid := AcctDerRule_20(
6794            p_application_id           => p_application_id
6795          , p_ae_header_id             => l_ae_header_id 
6796 , p_source_22 => p_source_22
6797          , x_transaction_coa_id       => l_adr_transaction_coa_id
6798          , x_accounting_coa_id        => l_adr_accounting_coa_id
6799          , x_value_type_code          => l_adr_value_type_code
6800          , p_side                     => 'NA'
6801    );
6802 
6803    xla_ae_lines_pkg.set_ccid(
6804     p_code_combination_id          => l_ccid
6805   , p_value_type_code              => l_adr_value_type_code
6806   , p_transaction_coa_id           => l_adr_transaction_coa_id
6807   , p_accounting_coa_id            => l_adr_accounting_coa_id
6808   , p_adr_code                     => 'DIST_CCID'
6809   , p_adr_type_code                => 'S'
6810   , p_component_type               => l_component_type
6811   , p_component_code               => l_component_code
6812   , p_component_type_code          => l_component_type_code
6813   , p_component_appl_id            => l_component_appl_id
6814   , p_amb_context_code             => l_amb_context_code
6815   , p_side                         => 'NA'
6816   );
6817 
6818 
6819    --
6820    --
6821    END IF;
6822    --
6823    -- Bug 4922099
6824    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6825           (NVL(l_enc_upg_option, 'N') = 'O')
6826         ) AND
6827         (l_bflow_method_code = 'PRIOR_ENTRY')
6828       )
6829    THEN
6830       IF
6831       --
6832       1 = 2
6833       --
6834       THEN
6835       xla_accounting_err_pkg.build_message
6836                                     (p_appli_s_name            => 'XLA'
6837                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6838                                     ,p_token_1                 => 'LINE_NUMBER'
6839                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6840                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6841                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6842                                                                              l_component_type
6843                                                                             ,l_component_code
6844                                                                             ,l_component_type_code
6845                                                                             ,l_component_appl_id
6846                                                                             ,l_amb_context_code
6847                                                                             ,l_entity_code
6848                                                                             ,l_event_class_code
6849                                                                            )
6850                                     ,p_token_3                 => 'OWNER'
6851                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6852                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6856                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6853                                                                           ,p_lookup_code    => l_component_type_code
6854                                                                          )
6855                                     ,p_token_4                 => 'PRODUCT_NAME'
6857                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6858                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6859                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6860                                     ,p_ae_header_id            =>  NULL
6861                                        );
6862 
6863         IF (C_LEVEL_ERROR>= g_log_level) THEN
6864                  trace
6865                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6866                       ,p_level    => C_LEVEL_ERROR
6867                       ,p_module   => l_log_module);
6868         END IF;
6869       END IF;
6870    END IF;
6871    --
6872    --
6873    ------------------------------------------------------------------------------------------------
6874    -- 4219869 Business Flow
6875    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6876    -- Prior Entry.  Currently, the following code is always generated.
6877    ------------------------------------------------------------------------------------------------
6878    XLA_AE_LINES_PKG.ValidateCurrentLine;
6879 
6880    ------------------------------------------------------------------------------------
6881    -- 4219869 Business Flow
6882    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6883    ------------------------------------------------------------------------------------
6884    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6885 
6886    ----------------------------------------------------------------------------------
6887    -- 4219869 Business Flow
6888    -- Update journal entry status -- Need to generate this within IF <condition>
6889    ----------------------------------------------------------------------------------
6890    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6891          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6892          ,p_balance_type_code => l_balance_type_code
6893          );
6894 
6895    -------------------------------------------------------------------------------------------
6896    -- 4262811 - Generate the Accrual Reversal lines
6897    -------------------------------------------------------------------------------------------
6898    BEGIN
6899       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6900                               (g_array_event(p_event_id).array_value_num('header_index'));
6901       IF l_acc_rev_flag IS NULL THEN
6902          l_acc_rev_flag := 'N';
6903       END IF;
6904    EXCEPTION
6905       WHEN OTHERS THEN
6906          l_acc_rev_flag := 'N';
6907    END;
6908    --
6909    IF (l_acc_rev_flag = 'Y') THEN
6910 
6911        -- 4645092  ------------------------------------------------------------------------------
6912        -- To allow MPA report to determine if it should generate report process
6913        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6914        ------------------------------------------------------------------------------------------
6915 
6916        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6917        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6918    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
6919    -- call ADRs
6920    -- Bug 4922099
6921    --
6922    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6923         (NVL(l_actual_upg_option, 'N') = 'O') OR
6924         (NVL(l_enc_upg_option, 'N') = 'O')
6925       )
6926    THEN
6927    NULL;
6928    --
6929    --
6930    
6931   l_ccid := AcctDerRule_20(
6932            p_application_id           => p_application_id
6933          , p_ae_header_id             => l_ae_header_id 
6934 , p_source_22 => p_source_22
6935          , x_transaction_coa_id       => l_adr_transaction_coa_id
6936          , x_accounting_coa_id        => l_adr_accounting_coa_id
6937          , x_value_type_code          => l_adr_value_type_code
6938          , p_side                     => 'NA'
6939    );
6940 
6941    xla_ae_lines_pkg.set_ccid(
6942     p_code_combination_id          => l_ccid
6943   , p_value_type_code              => l_adr_value_type_code
6944   , p_transaction_coa_id           => l_adr_transaction_coa_id
6945   , p_accounting_coa_id            => l_adr_accounting_coa_id
6946   , p_adr_code                     => 'DIST_CCID'
6947   , p_adr_type_code                => 'S'
6948   , p_component_type               => l_component_type
6949   , p_component_code               => l_component_code
6950   , p_component_type_code          => l_component_type_code
6951   , p_component_appl_id            => l_component_appl_id
6952   , p_amb_context_code             => l_amb_context_code
6953   , p_side                         => 'NA'
6954   );
6955 
6956 
6957    --
6958    --
6959    END IF;
6960 
6961        --
6962        -- Update the line information that should be overwritten
6963        --
6967 
6964        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6965                                          p_header_num   => 1);
6966        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6968        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6969 
6970        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6971           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6972        END IF;
6973 
6974       --
6975       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6976       --
6977       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6978           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6979       ELSE
6980           ---------------------------------------------------------------------------------------------------
6981           -- 4262811a Switch Sign
6982           ---------------------------------------------------------------------------------------------------
6983           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6984           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6985                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6986           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6987                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6988           -- 5132302
6989           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6990                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6991 
6992       END IF;
6993 
6994       -- 4955764
6995       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6996       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6997 
6998 
6999       XLA_AE_LINES_PKG.ValidateCurrentLine;
7000       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7001 
7002       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7003                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7004                ,p_balance_type_code => l_balance_type_code);
7005 
7006    END IF;
7007 
7008    -----------------------------------------------------------------------------------------
7009    -- 4262811 Multiperiod Accounting
7010    -----------------------------------------------------------------------------------------
7011      -- No MPA option is assigned.
7012 
7013 
7014 END IF;
7015 END IF;
7016 --
7017 
7018 --
7019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7020    trace
7021       (p_msg      => 'END of AcctLineType_31'
7022       ,p_level    => C_LEVEL_PROCEDURE
7023       ,p_module   => l_log_module);
7024 END IF;
7025 --
7026 EXCEPTION
7027   WHEN xla_exceptions_pkg.application_exception THEN
7028       RAISE;
7029   WHEN OTHERS THEN
7030        xla_exceptions_pkg.raise_message
7031            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_31');
7032 END AcctLineType_31;
7033 --
7034 
7035 ---------------------------------------
7036 --
7037 -- PRIVATE FUNCTION
7038 --         AcctLineType_32
7039 --
7040 ---------------------------------------
7041 PROCEDURE AcctLineType_32 (
7042   p_application_id        IN NUMBER
7043  ,p_event_id              IN NUMBER
7044  ,p_calculate_acctd_flag  IN VARCHAR2
7045  ,p_calculate_g_l_flag    IN VARCHAR2
7046  ,p_actual_flag           IN OUT VARCHAR2
7047  ,p_balance_type_code     OUT VARCHAR2
7048  ,p_gain_or_loss_ref      OUT VARCHAR2
7049  
7050 --Distribution GL Account
7051  , p_source_22            IN NUMBER
7052 --Distribution Source Type
7053  , p_source_27            IN VARCHAR2
7054 --Distribution Line Identifier
7055  , p_source_29            IN NUMBER
7056 --Distribution Type
7057  , p_source_30            IN VARCHAR2
7058 --Entered Amount
7059  , p_source_31            IN NUMBER
7060 --Currency Code
7061  , p_source_32            IN VARCHAR2
7062 --Exchange Date
7063  , p_source_33            IN DATE
7064 --Exchange Rate
7065  , p_source_34            IN NUMBER
7066 --Exchange Rate Type
7067  , p_source_35            IN VARCHAR2
7068 --Applied To Document Accounting Amount
7069  , p_source_36            IN NUMBER
7070 --Bill To Customer Account Identifier
7071  , p_source_37            IN NUMBER
7072 --Bill To Customer Site Use Identifier
7073  , p_source_38            IN NUMBER
7074 --SLA Party Type
7075  , p_source_39            IN VARCHAR2
7076 )
7077 IS
7078 
7079 l_component_type              VARCHAR2(80);
7080 l_component_code              VARCHAR2(30);
7081 l_component_type_code         VARCHAR2(1);
7082 l_component_appl_id           INTEGER;
7083 l_amb_context_code            VARCHAR2(30);
7084 l_entity_code                 VARCHAR2(30);
7085 l_event_class_code            VARCHAR2(30);
7086 l_ae_header_id                NUMBER;
7087 l_event_type_code             VARCHAR2(30);
7088 l_line_definition_code        VARCHAR2(30);
7092 l_segment                     VARCHAR2(30);
7089 l_line_definition_owner_code  VARCHAR2(1);
7090 --
7091 -- adr variables
7093 l_ccid                        NUMBER;
7094 l_adr_transaction_coa_id      NUMBER;
7095 l_adr_accounting_coa_id       NUMBER;
7096 l_adr_flexfield_segment_code  VARCHAR2(30);
7097 l_adr_flex_value_set_id       NUMBER;
7098 l_adr_value_type_code         VARCHAR2(30);
7099 l_adr_value_combination_id    NUMBER;
7100 l_adr_value_segment_code      VARCHAR2(30);
7101 
7102 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7103 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7104 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7105 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7106 
7107 -- 4262811 Variables ------------------------------------------------------------------------------------------
7108 l_entered_amt_idx             NUMBER;
7109 l_accted_amt_idx              NUMBER;
7110 l_acc_rev_flag                VARCHAR2(1);
7111 l_accrual_line_num            NUMBER;
7112 l_tmp_amt                     NUMBER;
7113 l_acc_rev_natural_side_code   VARCHAR2(1);
7114 
7115 l_num_entries                 NUMBER;
7116 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7117 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7118 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7119 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7120 l_recog_line_1                NUMBER;
7121 l_recog_line_2                NUMBER;
7122 
7123 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7124 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7125 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7126 
7127 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7128 
7129 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7130 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7131 
7132 ---------------------------------------------------------------------------------------------------------------
7133 
7134 
7135 --
7136 -- bulk performance
7137 --
7138 l_balance_type_code           VARCHAR2(1);
7139 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7140 l_log_module                  VARCHAR2(240);
7141 
7142 --
7143 -- Upgrade strategy
7144 --
7145 l_actual_upg_option           VARCHAR2(1);
7146 l_enc_upg_option           VARCHAR2(1);
7147 
7148 --
7149 BEGIN
7150 --
7151 IF g_log_enabled THEN
7152       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_32';
7153 END IF;
7154 --
7155 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7156 
7157       trace
7158          (p_msg      => 'BEGIN of AcctLineType_32'
7159          ,p_level    => C_LEVEL_PROCEDURE
7160          ,p_module   => l_log_module);
7161 
7162 END IF;
7163 --
7164 l_component_type             := 'AMB_JLT';
7165 l_component_code             := 'ADJ_TAX';
7166 l_component_type_code        := 'S';
7167 l_component_appl_id          :=  222;
7168 l_amb_context_code           := 'DEFAULT';
7169 l_entity_code                := 'ADJUSTMENTS';
7170 l_event_class_code           := 'ADJUSTMENT';
7171 l_event_type_code            := 'ADJUSTMENT_ALL';
7172 l_line_definition_owner_code := 'S';
7173 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
7174 --
7175 l_balance_type_code          := 'A';
7176 l_segment                     := NULL;
7177 l_ccid                        := NULL;
7178 l_adr_transaction_coa_id      := NULL;
7179 l_adr_accounting_coa_id       := NULL;
7180 l_adr_flexfield_segment_code  := NULL;
7181 l_adr_flex_value_set_id       := NULL;
7182 l_adr_value_type_code         := NULL;
7183 l_adr_value_combination_id    := NULL;
7184 l_adr_value_segment_code      := NULL;
7185 
7186 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7187 l_bflow_class_code           := '';    -- 4219869 Business Flow
7188 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7189 l_budgetary_control_flag     := 'N';
7190 
7191 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7192 l_bflow_applied_to_amt       := NULL; -- 5132302
7193 l_entered_amt_idx            := NULL;          -- 4262811
7194 l_accted_amt_idx             := NULL;          -- 4262811
7195 l_acc_rev_flag               := NULL;          -- 4262811
7196 l_accrual_line_num           := NULL;          -- 4262811
7197 l_tmp_amt                    := NULL;          -- 4262811
7198 --
7199  
7200 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7201     l_balance_type_code <> 'B' THEN
7202 IF NVL(p_source_27,'
7203 ') =  'TAX'
7204  THEN 
7205 
7206    --
7207    XLA_AE_LINES_PKG.SetNewLine;
7208 
7209    p_balance_type_code          := l_balance_type_code;
7210    -- set the flag so later we will know whether the gain loss line needs to be created
7211    
7212    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7213      p_actual_flag :='A';
7214    END IF;
7215 
7216    --
7217    -- bulk performance
7218    --
7219    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7223    --
7220                                       p_header_num   => 0); -- 4262811
7221    --
7222    -- set accounting line options
7224    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7225            p_natural_side_code          => 'C'
7226          , p_gain_or_loss_flag          => 'N'
7227          , p_gl_transfer_mode_code      => 'S'
7228          , p_acct_entry_type_code       => 'A'
7229          , p_switch_side_flag           => 'Y'
7230          , p_merge_duplicate_code       => 'A'
7231          );
7232    --
7233    l_acc_rev_natural_side_code := 'D';  -- 4262811
7234    -- 
7235    --
7236    -- set accounting line type info
7237    --
7238    xla_ae_lines_pkg.SetAcctLineType
7239       (p_component_type             => l_component_type
7240       ,p_event_type_code            => l_event_type_code
7241       ,p_line_definition_owner_code => l_line_definition_owner_code
7242       ,p_line_definition_code       => l_line_definition_code
7243       ,p_accounting_line_code       => l_component_code
7244       ,p_accounting_line_type_code  => l_component_type_code
7245       ,p_accounting_line_appl_id    => l_component_appl_id
7246       ,p_amb_context_code           => l_amb_context_code
7247       ,p_entity_code                => l_entity_code
7248       ,p_event_class_code           => l_event_class_code);
7249    --
7250    -- set accounting class
7251    --
7252    xla_ae_lines_pkg.SetAcctClass(
7253            p_accounting_class_code  => 'TAX'
7254          , p_ae_header_id           => l_ae_header_id
7255          );
7256 
7257    --
7258    -- set rounding class
7259    --
7260    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7261                       'RECEIVABLE';
7262 
7263    --
7264    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7265    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7266    --
7267    -- bulk performance
7268    --
7269    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7270 
7271    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7272       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7273 
7274    -- 4955764
7275    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7276       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7277 
7278    -- 4458381 Public Sector Enh
7279    
7280    --
7281    -- set accounting attributes for the line type
7282    --
7283    l_entered_amt_idx := 3;
7284    l_accted_amt_idx  := 8;
7285    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7286    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7287    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
7288    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7289    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
7290    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7291    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
7292    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7293    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
7294    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7295    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
7296    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7297    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
7298    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7299    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
7300    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7301    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
7302    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
7303    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
7304    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
7305    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
7306    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
7307    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
7308 
7309    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7310    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7311 
7312    ---------------------------------------------------------------------------------------------------------------
7313    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7314    ---------------------------------------------------------------------------------------------------------------
7315    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7316 
7317    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7318    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7319 
7320    IF xla_accounting_cache_pkg.GetValueChar
7321          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7322          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7323    AND l_bflow_method_code = 'PRIOR_ENTRY'
7324 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7325    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7326          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7327        )
7328    THEN
7332            ,p_balance_type            => l_balance_type_code);
7329          xla_ae_lines_pkg.BflowUpgEntry
7330            (p_business_method_code    => l_bflow_method_code
7331            ,p_business_class_code     => l_bflow_class_code
7333    ELSE
7334       NULL;
7335 -- No business flow processing for business flow method of NONE.
7336    END IF;
7337 
7338    --
7339    -- call analytical criteria
7340    --
7341    
7342    --
7343    -- call description
7344    --
7345    -- No description or it is inherited.
7346    --
7347    -- call ADRs
7348    -- Bug 4922099
7349    --
7350    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7351         (NVL(l_actual_upg_option, 'N') = 'O') OR
7352         (NVL(l_enc_upg_option, 'N') = 'O')
7353       )
7354    THEN
7355    NULL;
7356    --
7357    --
7358    
7359   l_ccid := AcctDerRule_20(
7360            p_application_id           => p_application_id
7361          , p_ae_header_id             => l_ae_header_id 
7362 , p_source_22 => p_source_22
7363          , x_transaction_coa_id       => l_adr_transaction_coa_id
7364          , x_accounting_coa_id        => l_adr_accounting_coa_id
7365          , x_value_type_code          => l_adr_value_type_code
7366          , p_side                     => 'NA'
7367    );
7368 
7369    xla_ae_lines_pkg.set_ccid(
7370     p_code_combination_id          => l_ccid
7371   , p_value_type_code              => l_adr_value_type_code
7372   , p_transaction_coa_id           => l_adr_transaction_coa_id
7373   , p_accounting_coa_id            => l_adr_accounting_coa_id
7374   , p_adr_code                     => 'DIST_CCID'
7375   , p_adr_type_code                => 'S'
7376   , p_component_type               => l_component_type
7377   , p_component_code               => l_component_code
7378   , p_component_type_code          => l_component_type_code
7379   , p_component_appl_id            => l_component_appl_id
7380   , p_amb_context_code             => l_amb_context_code
7381   , p_side                         => 'NA'
7382   );
7383 
7384 
7385    --
7386    --
7387    END IF;
7388    --
7389    -- Bug 4922099
7390    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7391           (NVL(l_enc_upg_option, 'N') = 'O')
7392         ) AND
7393         (l_bflow_method_code = 'PRIOR_ENTRY')
7394       )
7395    THEN
7396       IF
7397       --
7398       1 = 2
7399       --
7400       THEN
7401       xla_accounting_err_pkg.build_message
7402                                     (p_appli_s_name            => 'XLA'
7403                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7404                                     ,p_token_1                 => 'LINE_NUMBER'
7405                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7406                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7407                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7408                                                                              l_component_type
7409                                                                             ,l_component_code
7410                                                                             ,l_component_type_code
7411                                                                             ,l_component_appl_id
7412                                                                             ,l_amb_context_code
7413                                                                             ,l_entity_code
7414                                                                             ,l_event_class_code
7415                                                                            )
7416                                     ,p_token_3                 => 'OWNER'
7417                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7418                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7419                                                                           ,p_lookup_code    => l_component_type_code
7420                                                                          )
7421                                     ,p_token_4                 => 'PRODUCT_NAME'
7422                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7423                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7424                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7425                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7426                                     ,p_ae_header_id            =>  NULL
7427                                        );
7428 
7429         IF (C_LEVEL_ERROR>= g_log_level) THEN
7430                  trace
7431                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7432                       ,p_level    => C_LEVEL_ERROR
7433                       ,p_module   => l_log_module);
7434         END IF;
7435       END IF;
7436    END IF;
7437    --
7438    --
7439    ------------------------------------------------------------------------------------------------
7440    -- 4219869 Business Flow
7444    XLA_AE_LINES_PKG.ValidateCurrentLine;
7441    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7442    -- Prior Entry.  Currently, the following code is always generated.
7443    ------------------------------------------------------------------------------------------------
7445 
7446    ------------------------------------------------------------------------------------
7447    -- 4219869 Business Flow
7448    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7449    ------------------------------------------------------------------------------------
7450    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7451 
7452    ----------------------------------------------------------------------------------
7453    -- 4219869 Business Flow
7454    -- Update journal entry status -- Need to generate this within IF <condition>
7455    ----------------------------------------------------------------------------------
7456    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7457          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7458          ,p_balance_type_code => l_balance_type_code
7459          );
7460 
7461    -------------------------------------------------------------------------------------------
7462    -- 4262811 - Generate the Accrual Reversal lines
7463    -------------------------------------------------------------------------------------------
7464    BEGIN
7465       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7466                               (g_array_event(p_event_id).array_value_num('header_index'));
7467       IF l_acc_rev_flag IS NULL THEN
7468          l_acc_rev_flag := 'N';
7469       END IF;
7470    EXCEPTION
7471       WHEN OTHERS THEN
7472          l_acc_rev_flag := 'N';
7473    END;
7474    --
7475    IF (l_acc_rev_flag = 'Y') THEN
7476 
7477        -- 4645092  ------------------------------------------------------------------------------
7478        -- To allow MPA report to determine if it should generate report process
7479        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7480        ------------------------------------------------------------------------------------------
7481 
7482        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7483        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7484    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
7485    -- call ADRs
7486    -- Bug 4922099
7487    --
7488    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7489         (NVL(l_actual_upg_option, 'N') = 'O') OR
7490         (NVL(l_enc_upg_option, 'N') = 'O')
7491       )
7492    THEN
7493    NULL;
7494    --
7495    --
7496    
7497   l_ccid := AcctDerRule_20(
7498            p_application_id           => p_application_id
7499          , p_ae_header_id             => l_ae_header_id 
7500 , p_source_22 => p_source_22
7501          , x_transaction_coa_id       => l_adr_transaction_coa_id
7502          , x_accounting_coa_id        => l_adr_accounting_coa_id
7503          , x_value_type_code          => l_adr_value_type_code
7504          , p_side                     => 'NA'
7505    );
7506 
7507    xla_ae_lines_pkg.set_ccid(
7508     p_code_combination_id          => l_ccid
7509   , p_value_type_code              => l_adr_value_type_code
7510   , p_transaction_coa_id           => l_adr_transaction_coa_id
7511   , p_accounting_coa_id            => l_adr_accounting_coa_id
7512   , p_adr_code                     => 'DIST_CCID'
7513   , p_adr_type_code                => 'S'
7514   , p_component_type               => l_component_type
7515   , p_component_code               => l_component_code
7516   , p_component_type_code          => l_component_type_code
7517   , p_component_appl_id            => l_component_appl_id
7518   , p_amb_context_code             => l_amb_context_code
7519   , p_side                         => 'NA'
7520   );
7521 
7522 
7523    --
7524    --
7525    END IF;
7526 
7527        --
7528        -- Update the line information that should be overwritten
7529        --
7530        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7531                                          p_header_num   => 1);
7532        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7533 
7534        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7535 
7536        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7537           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7538        END IF;
7539 
7540       --
7541       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7542       --
7543       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7544           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7545       ELSE
7546           ---------------------------------------------------------------------------------------------------
7547           -- 4262811a Switch Sign
7548           ---------------------------------------------------------------------------------------------------
7549           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7550           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7554           -- 5132302
7551                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7552           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7553                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7555           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7556                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7557 
7558       END IF;
7559 
7560       -- 4955764
7561       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7562       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7563 
7564 
7565       XLA_AE_LINES_PKG.ValidateCurrentLine;
7566       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7567 
7568       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7569                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7570                ,p_balance_type_code => l_balance_type_code);
7571 
7572    END IF;
7573 
7574    -----------------------------------------------------------------------------------------
7575    -- 4262811 Multiperiod Accounting
7576    -----------------------------------------------------------------------------------------
7577      -- No MPA option is assigned.
7578 
7579 
7580 END IF;
7581 END IF;
7582 --
7583 
7584 --
7585 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7586    trace
7587       (p_msg      => 'END of AcctLineType_32'
7588       ,p_level    => C_LEVEL_PROCEDURE
7589       ,p_module   => l_log_module);
7590 END IF;
7591 --
7592 EXCEPTION
7593   WHEN xla_exceptions_pkg.application_exception THEN
7594       RAISE;
7595   WHEN OTHERS THEN
7596        xla_exceptions_pkg.raise_message
7597            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_32');
7598 END AcctLineType_32;
7599 --
7600 
7601 ---------------------------------------
7602 --
7603 -- PRIVATE FUNCTION
7604 --         AcctLineType_33
7605 --
7606 ---------------------------------------
7607 PROCEDURE AcctLineType_33 (
7608   p_application_id        IN NUMBER
7609  ,p_event_id              IN NUMBER
7610  ,p_calculate_acctd_flag  IN VARCHAR2
7611  ,p_calculate_g_l_flag    IN VARCHAR2
7612  ,p_actual_flag           IN OUT VARCHAR2
7613  ,p_balance_type_code     OUT VARCHAR2
7614  ,p_gain_or_loss_ref      OUT VARCHAR2
7615  
7616 --Distribution GL Account
7617  , p_source_22            IN NUMBER
7618 --Distribution Source Type
7619  , p_source_27            IN VARCHAR2
7620 --Distribution Line Identifier
7621  , p_source_29            IN NUMBER
7622 --Distribution Type
7623  , p_source_30            IN VARCHAR2
7624 --Entered Amount
7625  , p_source_31            IN NUMBER
7626 --Currency Code
7627  , p_source_32            IN VARCHAR2
7628 --Exchange Date
7629  , p_source_33            IN DATE
7630 --Exchange Rate
7631  , p_source_34            IN NUMBER
7632 --Exchange Rate Type
7633  , p_source_35            IN VARCHAR2
7634 --SLA Party Type
7635  , p_source_39            IN VARCHAR2
7636 --Accounting Amount
7637  , p_source_40            IN NUMBER
7638 --Drawee Account Identifier
7639  , p_source_41            IN NUMBER
7640 --DRAW_SITE_SITE_USE_ID
7641  , p_source_42            IN NUMBER
7642 )
7643 IS
7644 
7645 l_component_type              VARCHAR2(80);
7646 l_component_code              VARCHAR2(30);
7647 l_component_type_code         VARCHAR2(1);
7648 l_component_appl_id           INTEGER;
7649 l_amb_context_code            VARCHAR2(30);
7650 l_entity_code                 VARCHAR2(30);
7651 l_event_class_code            VARCHAR2(30);
7652 l_ae_header_id                NUMBER;
7653 l_event_type_code             VARCHAR2(30);
7654 l_line_definition_code        VARCHAR2(30);
7655 l_line_definition_owner_code  VARCHAR2(1);
7656 --
7657 -- adr variables
7658 l_segment                     VARCHAR2(30);
7659 l_ccid                        NUMBER;
7660 l_adr_transaction_coa_id      NUMBER;
7661 l_adr_accounting_coa_id       NUMBER;
7662 l_adr_flexfield_segment_code  VARCHAR2(30);
7663 l_adr_flex_value_set_id       NUMBER;
7664 l_adr_value_type_code         VARCHAR2(30);
7665 l_adr_value_combination_id    NUMBER;
7666 l_adr_value_segment_code      VARCHAR2(30);
7667 
7668 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7669 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7670 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7671 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7672 
7673 -- 4262811 Variables ------------------------------------------------------------------------------------------
7674 l_entered_amt_idx             NUMBER;
7675 l_accted_amt_idx              NUMBER;
7676 l_acc_rev_flag                VARCHAR2(1);
7677 l_accrual_line_num            NUMBER;
7678 l_tmp_amt                     NUMBER;
7679 l_acc_rev_natural_side_code   VARCHAR2(1);
7680 
7681 l_num_entries                 NUMBER;
7682 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7683 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7684 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7685 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7686 l_recog_line_1                NUMBER;
7690 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7687 l_recog_line_2                NUMBER;
7688 
7689 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7691 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7692 
7693 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7694 
7695 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7696 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7697 
7698 ---------------------------------------------------------------------------------------------------------------
7699 
7700 
7701 --
7702 -- bulk performance
7703 --
7704 l_balance_type_code           VARCHAR2(1);
7705 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7706 l_log_module                  VARCHAR2(240);
7707 
7708 --
7709 -- Upgrade strategy
7710 --
7711 l_actual_upg_option           VARCHAR2(1);
7712 l_enc_upg_option           VARCHAR2(1);
7713 
7714 --
7715 BEGIN
7716 --
7717 IF g_log_enabled THEN
7718       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_33';
7719 END IF;
7720 --
7721 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7722 
7723       trace
7724          (p_msg      => 'BEGIN of AcctLineType_33'
7725          ,p_level    => C_LEVEL_PROCEDURE
7726          ,p_module   => l_log_module);
7727 
7728 END IF;
7729 --
7730 l_component_type             := 'AMB_JLT';
7731 l_component_code             := 'BR_DEFERRED_TAX';
7732 l_component_type_code        := 'S';
7733 l_component_appl_id          :=  222;
7734 l_amb_context_code           := 'DEFAULT';
7735 l_entity_code                := 'BILLS_RECEIVABLE';
7736 l_event_class_code           := 'BILL';
7737 l_event_type_code            := 'BILL_ALL';
7738 l_line_definition_owner_code := 'S';
7739 l_line_definition_code       := 'AR_BILL_RECEIVABLES_JLD';
7740 --
7741 l_balance_type_code          := 'A';
7742 l_segment                     := NULL;
7743 l_ccid                        := NULL;
7744 l_adr_transaction_coa_id      := NULL;
7745 l_adr_accounting_coa_id       := NULL;
7746 l_adr_flexfield_segment_code  := NULL;
7747 l_adr_flex_value_set_id       := NULL;
7748 l_adr_value_type_code         := NULL;
7749 l_adr_value_combination_id    := NULL;
7750 l_adr_value_segment_code      := NULL;
7751 
7752 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7753 l_bflow_class_code           := '';    -- 4219869 Business Flow
7754 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7755 l_budgetary_control_flag     := 'N';
7756 
7757 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7758 l_bflow_applied_to_amt       := NULL; -- 5132302
7759 l_entered_amt_idx            := NULL;          -- 4262811
7760 l_accted_amt_idx             := NULL;          -- 4262811
7761 l_acc_rev_flag               := NULL;          -- 4262811
7762 l_accrual_line_num           := NULL;          -- 4262811
7763 l_tmp_amt                    := NULL;          -- 4262811
7764 --
7765  
7766 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7767     l_balance_type_code <> 'B' THEN
7768 IF NVL(p_source_27,'
7769 ') =  'DEFERRED_TAX'
7770  THEN 
7771 
7772    --
7773    XLA_AE_LINES_PKG.SetNewLine;
7774 
7775    p_balance_type_code          := l_balance_type_code;
7776    -- set the flag so later we will know whether the gain loss line needs to be created
7777    
7778    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7779      p_actual_flag :='A';
7780    END IF;
7781 
7782    --
7783    -- bulk performance
7784    --
7785    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7786                                       p_header_num   => 0); -- 4262811
7787    --
7788    -- set accounting line options
7789    --
7790    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7791            p_natural_side_code          => 'C'
7792          , p_gain_or_loss_flag          => 'N'
7793          , p_gl_transfer_mode_code      => 'S'
7794          , p_acct_entry_type_code       => 'A'
7795          , p_switch_side_flag           => 'Y'
7796          , p_merge_duplicate_code       => 'A'
7797          );
7798    --
7799    l_acc_rev_natural_side_code := 'D';  -- 4262811
7800    -- 
7801    --
7802    -- set accounting line type info
7803    --
7804    xla_ae_lines_pkg.SetAcctLineType
7805       (p_component_type             => l_component_type
7806       ,p_event_type_code            => l_event_type_code
7807       ,p_line_definition_owner_code => l_line_definition_owner_code
7808       ,p_line_definition_code       => l_line_definition_code
7809       ,p_accounting_line_code       => l_component_code
7810       ,p_accounting_line_type_code  => l_component_type_code
7811       ,p_accounting_line_appl_id    => l_component_appl_id
7812       ,p_amb_context_code           => l_amb_context_code
7813       ,p_entity_code                => l_entity_code
7814       ,p_event_class_code           => l_event_class_code);
7815    --
7816    -- set accounting class
7817    --
7818    xla_ae_lines_pkg.SetAcctClass(
7819            p_accounting_class_code  => 'DEFERRED_TAX'
7820          , p_ae_header_id           => l_ae_header_id
7821          );
7822 
7823    --
7827                       'DEFERRED_TAX';
7824    -- set rounding class
7825    --
7826    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7828 
7829    --
7830    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7831    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7832    --
7833    -- bulk performance
7834    --
7835    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7836 
7837    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7838       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7839 
7840    -- 4955764
7841    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7842       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7843 
7844    -- 4458381 Public Sector Enh
7845    
7846    --
7847    -- set accounting attributes for the line type
7848    --
7849    l_entered_amt_idx := 3;
7850    l_accted_amt_idx  := 8;
7851    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7852    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7853    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
7854    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7855    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
7856    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7857    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
7858    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7859    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
7860    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7861    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
7862    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7863    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
7864    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7865    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
7866    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7867    l_rec_acct_attrs.array_num_value(8)  := p_source_40;
7868    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
7869    l_rec_acct_attrs.array_num_value(9)  := p_source_41;
7870    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
7871    l_rec_acct_attrs.array_num_value(10)  := p_source_42;
7872    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
7873    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
7874 
7875    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7876    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7877 
7878    ---------------------------------------------------------------------------------------------------------------
7879    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7880    ---------------------------------------------------------------------------------------------------------------
7881    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7882 
7883    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7884    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7885 
7886    IF xla_accounting_cache_pkg.GetValueChar
7887          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7888          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7889    AND l_bflow_method_code = 'PRIOR_ENTRY'
7890 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7891    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7892          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7893        )
7894    THEN
7895          xla_ae_lines_pkg.BflowUpgEntry
7896            (p_business_method_code    => l_bflow_method_code
7897            ,p_business_class_code     => l_bflow_class_code
7898            ,p_balance_type            => l_balance_type_code);
7899    ELSE
7900       NULL;
7901 -- No business flow processing for business flow method of NONE.
7902    END IF;
7903 
7904    --
7905    -- call analytical criteria
7906    --
7907    
7908    --
7909    -- call description
7910    --
7911    -- No description or it is inherited.
7912    --
7913    -- call ADRs
7914    -- Bug 4922099
7915    --
7916    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7917         (NVL(l_actual_upg_option, 'N') = 'O') OR
7918         (NVL(l_enc_upg_option, 'N') = 'O')
7919       )
7920    THEN
7921    NULL;
7922    --
7923    --
7924    
7925   l_ccid := AcctDerRule_20(
7926            p_application_id           => p_application_id
7927          , p_ae_header_id             => l_ae_header_id 
7928 , p_source_22 => p_source_22
7929          , x_transaction_coa_id       => l_adr_transaction_coa_id
7930          , x_accounting_coa_id        => l_adr_accounting_coa_id
7931          , x_value_type_code          => l_adr_value_type_code
7932          , p_side                     => 'NA'
7933    );
7934 
7935    xla_ae_lines_pkg.set_ccid(
7936     p_code_combination_id          => l_ccid
7937   , p_value_type_code              => l_adr_value_type_code
7938   , p_transaction_coa_id           => l_adr_transaction_coa_id
7942   , p_component_type               => l_component_type
7939   , p_accounting_coa_id            => l_adr_accounting_coa_id
7940   , p_adr_code                     => 'DIST_CCID'
7941   , p_adr_type_code                => 'S'
7943   , p_component_code               => l_component_code
7944   , p_component_type_code          => l_component_type_code
7945   , p_component_appl_id            => l_component_appl_id
7946   , p_amb_context_code             => l_amb_context_code
7947   , p_side                         => 'NA'
7948   );
7949 
7950 
7951    --
7952    --
7953    END IF;
7954    --
7955    -- Bug 4922099
7956    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7957           (NVL(l_enc_upg_option, 'N') = 'O')
7958         ) AND
7959         (l_bflow_method_code = 'PRIOR_ENTRY')
7960       )
7961    THEN
7962       IF
7963       --
7964       1 = 2
7965       --
7966       THEN
7967       xla_accounting_err_pkg.build_message
7968                                     (p_appli_s_name            => 'XLA'
7969                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7970                                     ,p_token_1                 => 'LINE_NUMBER'
7971                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7972                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7973                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7974                                                                              l_component_type
7975                                                                             ,l_component_code
7976                                                                             ,l_component_type_code
7977                                                                             ,l_component_appl_id
7978                                                                             ,l_amb_context_code
7979                                                                             ,l_entity_code
7980                                                                             ,l_event_class_code
7981                                                                            )
7982                                     ,p_token_3                 => 'OWNER'
7983                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7984                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7985                                                                           ,p_lookup_code    => l_component_type_code
7986                                                                          )
7987                                     ,p_token_4                 => 'PRODUCT_NAME'
7988                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7989                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7990                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7991                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7992                                     ,p_ae_header_id            =>  NULL
7993                                        );
7994 
7995         IF (C_LEVEL_ERROR>= g_log_level) THEN
7996                  trace
7997                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7998                       ,p_level    => C_LEVEL_ERROR
7999                       ,p_module   => l_log_module);
8000         END IF;
8001       END IF;
8002    END IF;
8003    --
8004    --
8005    ------------------------------------------------------------------------------------------------
8006    -- 4219869 Business Flow
8007    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8008    -- Prior Entry.  Currently, the following code is always generated.
8009    ------------------------------------------------------------------------------------------------
8010    XLA_AE_LINES_PKG.ValidateCurrentLine;
8011 
8012    ------------------------------------------------------------------------------------
8013    -- 4219869 Business Flow
8014    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8015    ------------------------------------------------------------------------------------
8016    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8017 
8018    ----------------------------------------------------------------------------------
8019    -- 4219869 Business Flow
8020    -- Update journal entry status -- Need to generate this within IF <condition>
8021    ----------------------------------------------------------------------------------
8022    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8023          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8024          ,p_balance_type_code => l_balance_type_code
8025          );
8026 
8027    -------------------------------------------------------------------------------------------
8028    -- 4262811 - Generate the Accrual Reversal lines
8029    -------------------------------------------------------------------------------------------
8030    BEGIN
8031       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8032                               (g_array_event(p_event_id).array_value_num('header_index'));
8033       IF l_acc_rev_flag IS NULL THEN
8034          l_acc_rev_flag := 'N';
8038          l_acc_rev_flag := 'N';
8035       END IF;
8036    EXCEPTION
8037       WHEN OTHERS THEN
8039    END;
8040    --
8041    IF (l_acc_rev_flag = 'Y') THEN
8042 
8043        -- 4645092  ------------------------------------------------------------------------------
8044        -- To allow MPA report to determine if it should generate report process
8045        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8046        ------------------------------------------------------------------------------------------
8047 
8048        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8049        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8050    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
8051    -- call ADRs
8052    -- Bug 4922099
8053    --
8054    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8055         (NVL(l_actual_upg_option, 'N') = 'O') OR
8056         (NVL(l_enc_upg_option, 'N') = 'O')
8057       )
8058    THEN
8059    NULL;
8060    --
8061    --
8062    
8063   l_ccid := AcctDerRule_20(
8064            p_application_id           => p_application_id
8065          , p_ae_header_id             => l_ae_header_id 
8066 , p_source_22 => p_source_22
8067          , x_transaction_coa_id       => l_adr_transaction_coa_id
8068          , x_accounting_coa_id        => l_adr_accounting_coa_id
8069          , x_value_type_code          => l_adr_value_type_code
8070          , p_side                     => 'NA'
8071    );
8072 
8073    xla_ae_lines_pkg.set_ccid(
8074     p_code_combination_id          => l_ccid
8075   , p_value_type_code              => l_adr_value_type_code
8076   , p_transaction_coa_id           => l_adr_transaction_coa_id
8077   , p_accounting_coa_id            => l_adr_accounting_coa_id
8078   , p_adr_code                     => 'DIST_CCID'
8079   , p_adr_type_code                => 'S'
8080   , p_component_type               => l_component_type
8081   , p_component_code               => l_component_code
8082   , p_component_type_code          => l_component_type_code
8083   , p_component_appl_id            => l_component_appl_id
8084   , p_amb_context_code             => l_amb_context_code
8085   , p_side                         => 'NA'
8086   );
8087 
8088 
8089    --
8090    --
8091    END IF;
8092 
8093        --
8094        -- Update the line information that should be overwritten
8095        --
8096        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8097                                          p_header_num   => 1);
8098        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8099 
8100        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8101 
8102        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8103           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8104        END IF;
8105 
8106       --
8107       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8108       --
8109       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8110           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8111       ELSE
8112           ---------------------------------------------------------------------------------------------------
8113           -- 4262811a Switch Sign
8114           ---------------------------------------------------------------------------------------------------
8115           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8116           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8117                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8118           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8119                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8120           -- 5132302
8121           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8122                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8123 
8124       END IF;
8125 
8126       -- 4955764
8127       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8128       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8129 
8130 
8131       XLA_AE_LINES_PKG.ValidateCurrentLine;
8132       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8133 
8134       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8135                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8136                ,p_balance_type_code => l_balance_type_code);
8137 
8138    END IF;
8139 
8140    -----------------------------------------------------------------------------------------
8141    -- 4262811 Multiperiod Accounting
8142    -----------------------------------------------------------------------------------------
8143      -- No MPA option is assigned.
8144 
8145 
8146 END IF;
8147 END IF;
8148 --
8149 
8150 --
8154       ,p_level    => C_LEVEL_PROCEDURE
8151 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8152    trace
8153       (p_msg      => 'END of AcctLineType_33'
8155       ,p_module   => l_log_module);
8156 END IF;
8157 --
8158 EXCEPTION
8159   WHEN xla_exceptions_pkg.application_exception THEN
8160       RAISE;
8161   WHEN OTHERS THEN
8162        xla_exceptions_pkg.raise_message
8163            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_33');
8164 END AcctLineType_33;
8165 --
8166 
8167 ---------------------------------------
8168 --
8169 -- PRIVATE FUNCTION
8170 --         AcctLineType_34
8171 --
8172 ---------------------------------------
8173 PROCEDURE AcctLineType_34 (
8174   p_application_id        IN NUMBER
8175  ,p_event_id              IN NUMBER
8176  ,p_calculate_acctd_flag  IN VARCHAR2
8177  ,p_calculate_g_l_flag    IN VARCHAR2
8178  ,p_actual_flag           IN OUT VARCHAR2
8179  ,p_balance_type_code     OUT VARCHAR2
8180  ,p_gain_or_loss_ref      OUT VARCHAR2
8181  
8182 --Distribution GL Account
8183  , p_source_22            IN NUMBER
8184 --Distribution Source Type
8185  , p_source_27            IN VARCHAR2
8186 --Distribution Line Identifier
8187  , p_source_29            IN NUMBER
8188 --Distribution Type
8189  , p_source_30            IN VARCHAR2
8190 --Entered Amount
8191  , p_source_31            IN NUMBER
8192 --Currency Code
8193  , p_source_32            IN VARCHAR2
8194 --Exchange Date
8195  , p_source_33            IN DATE
8196 --Exchange Rate
8197  , p_source_34            IN NUMBER
8198 --Exchange Rate Type
8199  , p_source_35            IN VARCHAR2
8200 --SLA Party Type
8201  , p_source_39            IN VARCHAR2
8202 --Accounting Amount
8203  , p_source_40            IN NUMBER
8204 --Drawee Account Identifier
8205  , p_source_41            IN NUMBER
8206 --DRAW_SITE_SITE_USE_ID
8207  , p_source_42            IN NUMBER
8208 )
8209 IS
8210 
8211 l_component_type              VARCHAR2(80);
8212 l_component_code              VARCHAR2(30);
8213 l_component_type_code         VARCHAR2(1);
8214 l_component_appl_id           INTEGER;
8215 l_amb_context_code            VARCHAR2(30);
8216 l_entity_code                 VARCHAR2(30);
8217 l_event_class_code            VARCHAR2(30);
8218 l_ae_header_id                NUMBER;
8219 l_event_type_code             VARCHAR2(30);
8220 l_line_definition_code        VARCHAR2(30);
8221 l_line_definition_owner_code  VARCHAR2(1);
8222 --
8223 -- adr variables
8224 l_segment                     VARCHAR2(30);
8225 l_ccid                        NUMBER;
8226 l_adr_transaction_coa_id      NUMBER;
8227 l_adr_accounting_coa_id       NUMBER;
8228 l_adr_flexfield_segment_code  VARCHAR2(30);
8229 l_adr_flex_value_set_id       NUMBER;
8230 l_adr_value_type_code         VARCHAR2(30);
8231 l_adr_value_combination_id    NUMBER;
8232 l_adr_value_segment_code      VARCHAR2(30);
8233 
8234 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8235 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8236 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8237 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8238 
8239 -- 4262811 Variables ------------------------------------------------------------------------------------------
8240 l_entered_amt_idx             NUMBER;
8241 l_accted_amt_idx              NUMBER;
8242 l_acc_rev_flag                VARCHAR2(1);
8243 l_accrual_line_num            NUMBER;
8244 l_tmp_amt                     NUMBER;
8245 l_acc_rev_natural_side_code   VARCHAR2(1);
8246 
8247 l_num_entries                 NUMBER;
8248 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8249 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8250 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8251 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8252 l_recog_line_1                NUMBER;
8253 l_recog_line_2                NUMBER;
8254 
8255 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8256 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8257 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8258 
8259 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8260 
8261 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8262 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8263 
8264 ---------------------------------------------------------------------------------------------------------------
8265 
8266 
8267 --
8268 -- bulk performance
8269 --
8270 l_balance_type_code           VARCHAR2(1);
8271 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8272 l_log_module                  VARCHAR2(240);
8273 
8274 --
8275 -- Upgrade strategy
8276 --
8277 l_actual_upg_option           VARCHAR2(1);
8278 l_enc_upg_option           VARCHAR2(1);
8279 
8280 --
8281 BEGIN
8282 --
8283 IF g_log_enabled THEN
8284       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_34';
8285 END IF;
8286 --
8287 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8288 
8289       trace
8290          (p_msg      => 'BEGIN of AcctLineType_34'
8294 END IF;
8291          ,p_level    => C_LEVEL_PROCEDURE
8292          ,p_module   => l_log_module);
8293 
8295 --
8296 l_component_type             := 'AMB_JLT';
8297 l_component_code             := 'BR_FACTOR';
8298 l_component_type_code        := 'S';
8299 l_component_appl_id          :=  222;
8300 l_amb_context_code           := 'DEFAULT';
8301 l_entity_code                := 'BILLS_RECEIVABLE';
8302 l_event_class_code           := 'BILL';
8303 l_event_type_code            := 'BILL_ALL';
8304 l_line_definition_owner_code := 'S';
8305 l_line_definition_code       := 'AR_BILL_RECEIVABLES_JLD';
8306 --
8307 l_balance_type_code          := 'A';
8308 l_segment                     := NULL;
8309 l_ccid                        := NULL;
8310 l_adr_transaction_coa_id      := NULL;
8311 l_adr_accounting_coa_id       := NULL;
8312 l_adr_flexfield_segment_code  := NULL;
8313 l_adr_flex_value_set_id       := NULL;
8314 l_adr_value_type_code         := NULL;
8315 l_adr_value_combination_id    := NULL;
8316 l_adr_value_segment_code      := NULL;
8317 
8318 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8319 l_bflow_class_code           := '';    -- 4219869 Business Flow
8320 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8321 l_budgetary_control_flag     := 'N';
8322 
8323 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8324 l_bflow_applied_to_amt       := NULL; -- 5132302
8325 l_entered_amt_idx            := NULL;          -- 4262811
8326 l_accted_amt_idx             := NULL;          -- 4262811
8327 l_acc_rev_flag               := NULL;          -- 4262811
8328 l_accrual_line_num           := NULL;          -- 4262811
8329 l_tmp_amt                    := NULL;          -- 4262811
8330 --
8331  
8332 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8333     l_balance_type_code <> 'B' THEN
8334 IF NVL(p_source_27,'
8335 ') =  'FACTOR'
8336  THEN 
8337 
8338    --
8339    XLA_AE_LINES_PKG.SetNewLine;
8340 
8341    p_balance_type_code          := l_balance_type_code;
8342    -- set the flag so later we will know whether the gain loss line needs to be created
8343    
8344    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8345      p_actual_flag :='A';
8346    END IF;
8347 
8348    --
8349    -- bulk performance
8350    --
8351    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8352                                       p_header_num   => 0); -- 4262811
8353    --
8354    -- set accounting line options
8355    --
8356    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8357            p_natural_side_code          => 'C'
8358          , p_gain_or_loss_flag          => 'N'
8359          , p_gl_transfer_mode_code      => 'S'
8360          , p_acct_entry_type_code       => 'A'
8361          , p_switch_side_flag           => 'Y'
8362          , p_merge_duplicate_code       => 'A'
8363          );
8364    --
8365    l_acc_rev_natural_side_code := 'D';  -- 4262811
8366    -- 
8367    --
8368    -- set accounting line type info
8369    --
8370    xla_ae_lines_pkg.SetAcctLineType
8371       (p_component_type             => l_component_type
8372       ,p_event_type_code            => l_event_type_code
8373       ,p_line_definition_owner_code => l_line_definition_owner_code
8374       ,p_line_definition_code       => l_line_definition_code
8375       ,p_accounting_line_code       => l_component_code
8376       ,p_accounting_line_type_code  => l_component_type_code
8377       ,p_accounting_line_appl_id    => l_component_appl_id
8378       ,p_amb_context_code           => l_amb_context_code
8379       ,p_entity_code                => l_entity_code
8380       ,p_event_class_code           => l_event_class_code);
8381    --
8382    -- set accounting class
8383    --
8384    xla_ae_lines_pkg.SetAcctClass(
8385            p_accounting_class_code  => 'FAC_BR'
8386          , p_ae_header_id           => l_ae_header_id
8387          );
8388 
8389    --
8390    -- set rounding class
8391    --
8392    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8393                       'FAC_BR';
8394 
8395    --
8396    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8397    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8398    --
8399    -- bulk performance
8400    --
8401    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8402 
8403    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8404       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8405 
8406    -- 4955764
8407    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8408       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8409 
8410    -- 4458381 Public Sector Enh
8411    
8412    --
8413    -- set accounting attributes for the line type
8414    --
8415    l_entered_amt_idx := 3;
8416    l_accted_amt_idx  := 8;
8417    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8418    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8419    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
8423    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
8420    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8421    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
8422    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8424    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8425    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
8426    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8427    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
8428    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8429    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
8430    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8431    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
8432    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
8433    l_rec_acct_attrs.array_num_value(8)  := p_source_40;
8434    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
8435    l_rec_acct_attrs.array_num_value(9)  := p_source_41;
8436    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
8437    l_rec_acct_attrs.array_num_value(10)  := p_source_42;
8438    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
8439    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
8440 
8441    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8442    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8443 
8444    ---------------------------------------------------------------------------------------------------------------
8445    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8446    ---------------------------------------------------------------------------------------------------------------
8447    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8448 
8449    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8450    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8451 
8452    IF xla_accounting_cache_pkg.GetValueChar
8453          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8454          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8455    AND l_bflow_method_code = 'PRIOR_ENTRY'
8456 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8457    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8458          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8459        )
8460    THEN
8461          xla_ae_lines_pkg.BflowUpgEntry
8462            (p_business_method_code    => l_bflow_method_code
8463            ,p_business_class_code     => l_bflow_class_code
8464            ,p_balance_type            => l_balance_type_code);
8465    ELSE
8466       NULL;
8467 -- No business flow processing for business flow method of NONE.
8468    END IF;
8469 
8470    --
8471    -- call analytical criteria
8472    --
8473    
8474    --
8475    -- call description
8476    --
8477    -- No description or it is inherited.
8478    --
8479    -- call ADRs
8480    -- Bug 4922099
8481    --
8482    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8483         (NVL(l_actual_upg_option, 'N') = 'O') OR
8484         (NVL(l_enc_upg_option, 'N') = 'O')
8485       )
8486    THEN
8487    NULL;
8488    --
8489    --
8490    
8491   l_ccid := AcctDerRule_20(
8492            p_application_id           => p_application_id
8493          , p_ae_header_id             => l_ae_header_id 
8494 , p_source_22 => p_source_22
8495          , x_transaction_coa_id       => l_adr_transaction_coa_id
8496          , x_accounting_coa_id        => l_adr_accounting_coa_id
8497          , x_value_type_code          => l_adr_value_type_code
8498          , p_side                     => 'NA'
8499    );
8500 
8501    xla_ae_lines_pkg.set_ccid(
8502     p_code_combination_id          => l_ccid
8503   , p_value_type_code              => l_adr_value_type_code
8504   , p_transaction_coa_id           => l_adr_transaction_coa_id
8505   , p_accounting_coa_id            => l_adr_accounting_coa_id
8506   , p_adr_code                     => 'DIST_CCID'
8507   , p_adr_type_code                => 'S'
8508   , p_component_type               => l_component_type
8509   , p_component_code               => l_component_code
8510   , p_component_type_code          => l_component_type_code
8511   , p_component_appl_id            => l_component_appl_id
8512   , p_amb_context_code             => l_amb_context_code
8513   , p_side                         => 'NA'
8514   );
8515 
8516 
8517    --
8518    --
8519    END IF;
8520    --
8521    -- Bug 4922099
8522    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8523           (NVL(l_enc_upg_option, 'N') = 'O')
8524         ) AND
8525         (l_bflow_method_code = 'PRIOR_ENTRY')
8526       )
8527    THEN
8528       IF
8529       --
8530       1 = 2
8531       --
8532       THEN
8533       xla_accounting_err_pkg.build_message
8534                                     (p_appli_s_name            => 'XLA'
8535                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8536                                     ,p_token_1                 => 'LINE_NUMBER'
8537                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8541                                                                             ,l_component_code
8538                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8539                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8540                                                                              l_component_type
8542                                                                             ,l_component_type_code
8543                                                                             ,l_component_appl_id
8544                                                                             ,l_amb_context_code
8545                                                                             ,l_entity_code
8546                                                                             ,l_event_class_code
8547                                                                            )
8548                                     ,p_token_3                 => 'OWNER'
8549                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8550                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8551                                                                           ,p_lookup_code    => l_component_type_code
8552                                                                          )
8553                                     ,p_token_4                 => 'PRODUCT_NAME'
8554                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8555                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8556                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8557                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8558                                     ,p_ae_header_id            =>  NULL
8559                                        );
8560 
8561         IF (C_LEVEL_ERROR>= g_log_level) THEN
8562                  trace
8563                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8564                       ,p_level    => C_LEVEL_ERROR
8565                       ,p_module   => l_log_module);
8566         END IF;
8567       END IF;
8568    END IF;
8569    --
8570    --
8571    ------------------------------------------------------------------------------------------------
8572    -- 4219869 Business Flow
8573    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8574    -- Prior Entry.  Currently, the following code is always generated.
8575    ------------------------------------------------------------------------------------------------
8576    XLA_AE_LINES_PKG.ValidateCurrentLine;
8577 
8578    ------------------------------------------------------------------------------------
8579    -- 4219869 Business Flow
8580    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8581    ------------------------------------------------------------------------------------
8582    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8583 
8584    ----------------------------------------------------------------------------------
8585    -- 4219869 Business Flow
8586    -- Update journal entry status -- Need to generate this within IF <condition>
8587    ----------------------------------------------------------------------------------
8588    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8589          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8590          ,p_balance_type_code => l_balance_type_code
8591          );
8592 
8593    -------------------------------------------------------------------------------------------
8594    -- 4262811 - Generate the Accrual Reversal lines
8595    -------------------------------------------------------------------------------------------
8596    BEGIN
8597       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8598                               (g_array_event(p_event_id).array_value_num('header_index'));
8599       IF l_acc_rev_flag IS NULL THEN
8600          l_acc_rev_flag := 'N';
8601       END IF;
8602    EXCEPTION
8603       WHEN OTHERS THEN
8604          l_acc_rev_flag := 'N';
8605    END;
8606    --
8607    IF (l_acc_rev_flag = 'Y') THEN
8608 
8609        -- 4645092  ------------------------------------------------------------------------------
8610        -- To allow MPA report to determine if it should generate report process
8611        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8612        ------------------------------------------------------------------------------------------
8613 
8614        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8615        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8616    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
8617    -- call ADRs
8618    -- Bug 4922099
8619    --
8620    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8621         (NVL(l_actual_upg_option, 'N') = 'O') OR
8622         (NVL(l_enc_upg_option, 'N') = 'O')
8623       )
8624    THEN
8625    NULL;
8626    --
8627    --
8628    
8629   l_ccid := AcctDerRule_20(
8630            p_application_id           => p_application_id
8631          , p_ae_header_id             => l_ae_header_id 
8632 , p_source_22 => p_source_22
8633          , x_transaction_coa_id       => l_adr_transaction_coa_id
8637    );
8634          , x_accounting_coa_id        => l_adr_accounting_coa_id
8635          , x_value_type_code          => l_adr_value_type_code
8636          , p_side                     => 'NA'
8638 
8639    xla_ae_lines_pkg.set_ccid(
8640     p_code_combination_id          => l_ccid
8641   , p_value_type_code              => l_adr_value_type_code
8642   , p_transaction_coa_id           => l_adr_transaction_coa_id
8643   , p_accounting_coa_id            => l_adr_accounting_coa_id
8644   , p_adr_code                     => 'DIST_CCID'
8645   , p_adr_type_code                => 'S'
8646   , p_component_type               => l_component_type
8647   , p_component_code               => l_component_code
8648   , p_component_type_code          => l_component_type_code
8649   , p_component_appl_id            => l_component_appl_id
8650   , p_amb_context_code             => l_amb_context_code
8651   , p_side                         => 'NA'
8652   );
8653 
8654 
8655    --
8656    --
8657    END IF;
8658 
8659        --
8660        -- Update the line information that should be overwritten
8661        --
8662        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8663                                          p_header_num   => 1);
8664        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8665 
8666        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8667 
8668        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8669           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8670        END IF;
8671 
8672       --
8673       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8674       --
8675       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8676           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8677       ELSE
8678           ---------------------------------------------------------------------------------------------------
8679           -- 4262811a Switch Sign
8680           ---------------------------------------------------------------------------------------------------
8681           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8682           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8683                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8684           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8685                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8686           -- 5132302
8687           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8688                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8689 
8690       END IF;
8691 
8692       -- 4955764
8693       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8694       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8695 
8696 
8697       XLA_AE_LINES_PKG.ValidateCurrentLine;
8698       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8699 
8700       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8701                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8702                ,p_balance_type_code => l_balance_type_code);
8703 
8704    END IF;
8705 
8706    -----------------------------------------------------------------------------------------
8707    -- 4262811 Multiperiod Accounting
8708    -----------------------------------------------------------------------------------------
8709      -- No MPA option is assigned.
8710 
8711 
8712 END IF;
8713 END IF;
8714 --
8715 
8716 --
8717 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8718    trace
8719       (p_msg      => 'END of AcctLineType_34'
8720       ,p_level    => C_LEVEL_PROCEDURE
8721       ,p_module   => l_log_module);
8722 END IF;
8723 --
8724 EXCEPTION
8725   WHEN xla_exceptions_pkg.application_exception THEN
8726       RAISE;
8727   WHEN OTHERS THEN
8728        xla_exceptions_pkg.raise_message
8729            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_34');
8730 END AcctLineType_34;
8731 --
8732 
8733 ---------------------------------------
8734 --
8735 -- PRIVATE FUNCTION
8736 --         AcctLineType_35
8737 --
8738 ---------------------------------------
8739 PROCEDURE AcctLineType_35 (
8740   p_application_id        IN NUMBER
8741  ,p_event_id              IN NUMBER
8742  ,p_calculate_acctd_flag  IN VARCHAR2
8743  ,p_calculate_g_l_flag    IN VARCHAR2
8744  ,p_actual_flag           IN OUT VARCHAR2
8745  ,p_balance_type_code     OUT VARCHAR2
8746  ,p_gain_or_loss_ref      OUT VARCHAR2
8747  
8748 --Distribution GL Account
8749  , p_source_22            IN NUMBER
8750 --Distribution Source Type
8751  , p_source_27            IN VARCHAR2
8752 --Distribution Line Identifier
8753  , p_source_29            IN NUMBER
8754 --Distribution Type
8755  , p_source_30            IN VARCHAR2
8756 --Entered Amount
8760 --Exchange Date
8757  , p_source_31            IN NUMBER
8758 --Currency Code
8759  , p_source_32            IN VARCHAR2
8761  , p_source_33            IN DATE
8762 --Exchange Rate
8763  , p_source_34            IN NUMBER
8764 --Exchange Rate Type
8765  , p_source_35            IN VARCHAR2
8766 --SLA Party Type
8767  , p_source_39            IN VARCHAR2
8768 --Accounting Amount
8769  , p_source_40            IN NUMBER
8770 --Drawee Account Identifier
8771  , p_source_41            IN NUMBER
8772 --DRAW_SITE_SITE_USE_ID
8773  , p_source_42            IN NUMBER
8774 )
8775 IS
8776 
8777 l_component_type              VARCHAR2(80);
8778 l_component_code              VARCHAR2(30);
8779 l_component_type_code         VARCHAR2(1);
8780 l_component_appl_id           INTEGER;
8781 l_amb_context_code            VARCHAR2(30);
8782 l_entity_code                 VARCHAR2(30);
8783 l_event_class_code            VARCHAR2(30);
8784 l_ae_header_id                NUMBER;
8785 l_event_type_code             VARCHAR2(30);
8786 l_line_definition_code        VARCHAR2(30);
8787 l_line_definition_owner_code  VARCHAR2(1);
8788 --
8789 -- adr variables
8790 l_segment                     VARCHAR2(30);
8791 l_ccid                        NUMBER;
8792 l_adr_transaction_coa_id      NUMBER;
8793 l_adr_accounting_coa_id       NUMBER;
8794 l_adr_flexfield_segment_code  VARCHAR2(30);
8795 l_adr_flex_value_set_id       NUMBER;
8796 l_adr_value_type_code         VARCHAR2(30);
8797 l_adr_value_combination_id    NUMBER;
8798 l_adr_value_segment_code      VARCHAR2(30);
8799 
8800 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8801 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8802 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8803 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8804 
8805 -- 4262811 Variables ------------------------------------------------------------------------------------------
8806 l_entered_amt_idx             NUMBER;
8807 l_accted_amt_idx              NUMBER;
8808 l_acc_rev_flag                VARCHAR2(1);
8809 l_accrual_line_num            NUMBER;
8810 l_tmp_amt                     NUMBER;
8811 l_acc_rev_natural_side_code   VARCHAR2(1);
8812 
8813 l_num_entries                 NUMBER;
8814 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8815 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8816 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8817 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8818 l_recog_line_1                NUMBER;
8819 l_recog_line_2                NUMBER;
8820 
8821 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8822 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8823 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8824 
8825 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8826 
8827 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8828 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8829 
8830 ---------------------------------------------------------------------------------------------------------------
8831 
8832 
8833 --
8834 -- bulk performance
8835 --
8836 l_balance_type_code           VARCHAR2(1);
8837 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8838 l_log_module                  VARCHAR2(240);
8839 
8840 --
8841 -- Upgrade strategy
8842 --
8843 l_actual_upg_option           VARCHAR2(1);
8844 l_enc_upg_option           VARCHAR2(1);
8845 
8846 --
8847 BEGIN
8848 --
8849 IF g_log_enabled THEN
8850       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_35';
8851 END IF;
8852 --
8853 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8854 
8855       trace
8856          (p_msg      => 'BEGIN of AcctLineType_35'
8857          ,p_level    => C_LEVEL_PROCEDURE
8858          ,p_module   => l_log_module);
8859 
8860 END IF;
8861 --
8862 l_component_type             := 'AMB_JLT';
8863 l_component_code             := 'BR_REC';
8864 l_component_type_code        := 'S';
8865 l_component_appl_id          :=  222;
8866 l_amb_context_code           := 'DEFAULT';
8867 l_entity_code                := 'BILLS_RECEIVABLE';
8868 l_event_class_code           := 'BILL';
8869 l_event_type_code            := 'BILL_ALL';
8870 l_line_definition_owner_code := 'S';
8871 l_line_definition_code       := 'AR_BILL_RECEIVABLES_JLD';
8872 --
8873 l_balance_type_code          := 'A';
8874 l_segment                     := NULL;
8875 l_ccid                        := NULL;
8876 l_adr_transaction_coa_id      := NULL;
8877 l_adr_accounting_coa_id       := NULL;
8878 l_adr_flexfield_segment_code  := NULL;
8879 l_adr_flex_value_set_id       := NULL;
8880 l_adr_value_type_code         := NULL;
8881 l_adr_value_combination_id    := NULL;
8882 l_adr_value_segment_code      := NULL;
8883 
8884 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8885 l_bflow_class_code           := '';    -- 4219869 Business Flow
8886 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8887 l_budgetary_control_flag     := 'N';
8888 
8889 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8890 l_bflow_applied_to_amt       := NULL; -- 5132302
8891 l_entered_amt_idx            := NULL;          -- 4262811
8895 l_tmp_amt                    := NULL;          -- 4262811
8892 l_accted_amt_idx             := NULL;          -- 4262811
8893 l_acc_rev_flag               := NULL;          -- 4262811
8894 l_accrual_line_num           := NULL;          -- 4262811
8896 --
8897  
8898 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8899     l_balance_type_code <> 'B' THEN
8900 IF NVL(p_source_27,'
8901 ') =  'REC'
8902  THEN 
8903 
8904    --
8905    XLA_AE_LINES_PKG.SetNewLine;
8906 
8907    p_balance_type_code          := l_balance_type_code;
8908    -- set the flag so later we will know whether the gain loss line needs to be created
8909    
8910    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8911      p_actual_flag :='A';
8912    END IF;
8913 
8914    --
8915    -- bulk performance
8916    --
8917    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8918                                       p_header_num   => 0); -- 4262811
8919    --
8920    -- set accounting line options
8921    --
8922    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8923            p_natural_side_code          => 'C'
8924          , p_gain_or_loss_flag          => 'N'
8925          , p_gl_transfer_mode_code      => 'S'
8926          , p_acct_entry_type_code       => 'A'
8927          , p_switch_side_flag           => 'Y'
8928          , p_merge_duplicate_code       => 'A'
8929          );
8930    --
8931    l_acc_rev_natural_side_code := 'D';  -- 4262811
8932    -- 
8933    --
8934    -- set accounting line type info
8935    --
8936    xla_ae_lines_pkg.SetAcctLineType
8937       (p_component_type             => l_component_type
8938       ,p_event_type_code            => l_event_type_code
8939       ,p_line_definition_owner_code => l_line_definition_owner_code
8940       ,p_line_definition_code       => l_line_definition_code
8941       ,p_accounting_line_code       => l_component_code
8942       ,p_accounting_line_type_code  => l_component_type_code
8943       ,p_accounting_line_appl_id    => l_component_appl_id
8944       ,p_amb_context_code           => l_amb_context_code
8945       ,p_entity_code                => l_entity_code
8946       ,p_event_class_code           => l_event_class_code);
8947    --
8948    -- set accounting class
8949    --
8950    xla_ae_lines_pkg.SetAcctClass(
8951            p_accounting_class_code  => 'RECEIVABLE'
8952          , p_ae_header_id           => l_ae_header_id
8953          );
8954 
8955    --
8956    -- set rounding class
8957    --
8958    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8959                       'RECEIVABLE';
8960 
8961    --
8962    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8963    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8964    --
8965    -- bulk performance
8966    --
8967    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8968 
8969    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8970       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8971 
8972    -- 4955764
8973    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8974       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8975 
8976    -- 4458381 Public Sector Enh
8977    
8978    --
8979    -- set accounting attributes for the line type
8980    --
8981    l_entered_amt_idx := 3;
8982    l_accted_amt_idx  := 8;
8983    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8984    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8985    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
8986    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8987    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
8988    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8989    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
8990    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8991    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
8992    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8993    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
8994    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8995    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
8996    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8997    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
8998    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
8999    l_rec_acct_attrs.array_num_value(8)  := p_source_40;
9000    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
9001    l_rec_acct_attrs.array_num_value(9)  := p_source_41;
9002    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
9003    l_rec_acct_attrs.array_num_value(10)  := p_source_42;
9004    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
9005    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
9006 
9007    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9008    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9009 
9013    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9010    ---------------------------------------------------------------------------------------------------------------
9011    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9012    ---------------------------------------------------------------------------------------------------------------
9014 
9015    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9016    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9017 
9018    IF xla_accounting_cache_pkg.GetValueChar
9019          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9020          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9021    AND l_bflow_method_code = 'PRIOR_ENTRY'
9022 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9023    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9024          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9025        )
9026    THEN
9027          xla_ae_lines_pkg.BflowUpgEntry
9028            (p_business_method_code    => l_bflow_method_code
9029            ,p_business_class_code     => l_bflow_class_code
9030            ,p_balance_type            => l_balance_type_code);
9031    ELSE
9032       NULL;
9033 -- No business flow processing for business flow method of NONE.
9034    END IF;
9035 
9036    --
9037    -- call analytical criteria
9038    --
9039    
9040    --
9041    -- call description
9042    --
9043    -- No description or it is inherited.
9044    --
9045    -- call ADRs
9046    -- Bug 4922099
9047    --
9048    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9049         (NVL(l_actual_upg_option, 'N') = 'O') OR
9050         (NVL(l_enc_upg_option, 'N') = 'O')
9051       )
9052    THEN
9053    NULL;
9054    --
9055    --
9056    
9057   l_ccid := AcctDerRule_20(
9058            p_application_id           => p_application_id
9059          , p_ae_header_id             => l_ae_header_id 
9060 , p_source_22 => p_source_22
9061          , x_transaction_coa_id       => l_adr_transaction_coa_id
9062          , x_accounting_coa_id        => l_adr_accounting_coa_id
9063          , x_value_type_code          => l_adr_value_type_code
9064          , p_side                     => 'NA'
9065    );
9066 
9067    xla_ae_lines_pkg.set_ccid(
9068     p_code_combination_id          => l_ccid
9069   , p_value_type_code              => l_adr_value_type_code
9070   , p_transaction_coa_id           => l_adr_transaction_coa_id
9071   , p_accounting_coa_id            => l_adr_accounting_coa_id
9072   , p_adr_code                     => 'DIST_CCID'
9073   , p_adr_type_code                => 'S'
9074   , p_component_type               => l_component_type
9075   , p_component_code               => l_component_code
9076   , p_component_type_code          => l_component_type_code
9077   , p_component_appl_id            => l_component_appl_id
9078   , p_amb_context_code             => l_amb_context_code
9079   , p_side                         => 'NA'
9080   );
9081 
9082 
9083    --
9084    --
9085    END IF;
9086    --
9087    -- Bug 4922099
9088    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9089           (NVL(l_enc_upg_option, 'N') = 'O')
9090         ) AND
9091         (l_bflow_method_code = 'PRIOR_ENTRY')
9092       )
9093    THEN
9094       IF
9095       --
9096       1 = 2
9097       --
9098       THEN
9099       xla_accounting_err_pkg.build_message
9100                                     (p_appli_s_name            => 'XLA'
9101                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9102                                     ,p_token_1                 => 'LINE_NUMBER'
9103                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9104                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9105                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9106                                                                              l_component_type
9107                                                                             ,l_component_code
9108                                                                             ,l_component_type_code
9109                                                                             ,l_component_appl_id
9110                                                                             ,l_amb_context_code
9111                                                                             ,l_entity_code
9112                                                                             ,l_event_class_code
9113                                                                            )
9114                                     ,p_token_3                 => 'OWNER'
9115                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9116                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9117                                                                           ,p_lookup_code    => l_component_type_code
9118                                                                          )
9122                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9119                                     ,p_token_4                 => 'PRODUCT_NAME'
9120                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9121                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9123                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9124                                     ,p_ae_header_id            =>  NULL
9125                                        );
9126 
9127         IF (C_LEVEL_ERROR>= g_log_level) THEN
9128                  trace
9129                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9130                       ,p_level    => C_LEVEL_ERROR
9131                       ,p_module   => l_log_module);
9132         END IF;
9133       END IF;
9134    END IF;
9135    --
9136    --
9137    ------------------------------------------------------------------------------------------------
9138    -- 4219869 Business Flow
9139    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9140    -- Prior Entry.  Currently, the following code is always generated.
9141    ------------------------------------------------------------------------------------------------
9142    XLA_AE_LINES_PKG.ValidateCurrentLine;
9143 
9144    ------------------------------------------------------------------------------------
9145    -- 4219869 Business Flow
9146    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9147    ------------------------------------------------------------------------------------
9148    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9149 
9150    ----------------------------------------------------------------------------------
9151    -- 4219869 Business Flow
9152    -- Update journal entry status -- Need to generate this within IF <condition>
9153    ----------------------------------------------------------------------------------
9154    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9155          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9156          ,p_balance_type_code => l_balance_type_code
9157          );
9158 
9159    -------------------------------------------------------------------------------------------
9160    -- 4262811 - Generate the Accrual Reversal lines
9161    -------------------------------------------------------------------------------------------
9162    BEGIN
9163       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9164                               (g_array_event(p_event_id).array_value_num('header_index'));
9165       IF l_acc_rev_flag IS NULL THEN
9166          l_acc_rev_flag := 'N';
9167       END IF;
9168    EXCEPTION
9169       WHEN OTHERS THEN
9170          l_acc_rev_flag := 'N';
9171    END;
9172    --
9173    IF (l_acc_rev_flag = 'Y') THEN
9174 
9175        -- 4645092  ------------------------------------------------------------------------------
9176        -- To allow MPA report to determine if it should generate report process
9177        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9178        ------------------------------------------------------------------------------------------
9179 
9180        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9181        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9182    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
9183    -- call ADRs
9184    -- Bug 4922099
9185    --
9186    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9187         (NVL(l_actual_upg_option, 'N') = 'O') OR
9188         (NVL(l_enc_upg_option, 'N') = 'O')
9189       )
9190    THEN
9191    NULL;
9192    --
9193    --
9194    
9195   l_ccid := AcctDerRule_20(
9196            p_application_id           => p_application_id
9197          , p_ae_header_id             => l_ae_header_id 
9198 , p_source_22 => p_source_22
9199          , x_transaction_coa_id       => l_adr_transaction_coa_id
9200          , x_accounting_coa_id        => l_adr_accounting_coa_id
9201          , x_value_type_code          => l_adr_value_type_code
9202          , p_side                     => 'NA'
9203    );
9204 
9205    xla_ae_lines_pkg.set_ccid(
9206     p_code_combination_id          => l_ccid
9207   , p_value_type_code              => l_adr_value_type_code
9208   , p_transaction_coa_id           => l_adr_transaction_coa_id
9209   , p_accounting_coa_id            => l_adr_accounting_coa_id
9210   , p_adr_code                     => 'DIST_CCID'
9211   , p_adr_type_code                => 'S'
9212   , p_component_type               => l_component_type
9213   , p_component_code               => l_component_code
9214   , p_component_type_code          => l_component_type_code
9215   , p_component_appl_id            => l_component_appl_id
9216   , p_amb_context_code             => l_amb_context_code
9217   , p_side                         => 'NA'
9218   );
9219 
9220 
9221    --
9222    --
9223    END IF;
9224 
9225        --
9226        -- Update the line information that should be overwritten
9227        --
9228        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9229                                          p_header_num   => 1);
9233 
9230        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9231 
9232        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9234        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9235           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9236        END IF;
9237 
9238       --
9239       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9240       --
9241       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9242           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9243       ELSE
9244           ---------------------------------------------------------------------------------------------------
9245           -- 4262811a Switch Sign
9246           ---------------------------------------------------------------------------------------------------
9247           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9248           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9249                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9250           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9251                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9252           -- 5132302
9253           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9254                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9255 
9256       END IF;
9257 
9258       -- 4955764
9259       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9260       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9261 
9262 
9263       XLA_AE_LINES_PKG.ValidateCurrentLine;
9264       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9265 
9266       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9267                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9268                ,p_balance_type_code => l_balance_type_code);
9269 
9270    END IF;
9271 
9272    -----------------------------------------------------------------------------------------
9273    -- 4262811 Multiperiod Accounting
9274    -----------------------------------------------------------------------------------------
9275      -- No MPA option is assigned.
9276 
9277 
9278 END IF;
9279 END IF;
9280 --
9281 
9282 --
9283 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9284    trace
9285       (p_msg      => 'END of AcctLineType_35'
9286       ,p_level    => C_LEVEL_PROCEDURE
9287       ,p_module   => l_log_module);
9288 END IF;
9289 --
9290 EXCEPTION
9291   WHEN xla_exceptions_pkg.application_exception THEN
9292       RAISE;
9293   WHEN OTHERS THEN
9294        xla_exceptions_pkg.raise_message
9295            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_35');
9296 END AcctLineType_35;
9297 --
9298 
9299 ---------------------------------------
9300 --
9301 -- PRIVATE FUNCTION
9302 --         AcctLineType_36
9303 --
9304 ---------------------------------------
9305 PROCEDURE AcctLineType_36 (
9306   p_application_id        IN NUMBER
9307  ,p_event_id              IN NUMBER
9308  ,p_calculate_acctd_flag  IN VARCHAR2
9309  ,p_calculate_g_l_flag    IN VARCHAR2
9310  ,p_actual_flag           IN OUT VARCHAR2
9311  ,p_balance_type_code     OUT VARCHAR2
9312  ,p_gain_or_loss_ref      OUT VARCHAR2
9313  
9314 --Distribution GL Account
9315  , p_source_22            IN NUMBER
9316 --Distribution Source Type
9317  , p_source_27            IN VARCHAR2
9318 --Distribution Line Identifier
9319  , p_source_29            IN NUMBER
9320 --Distribution Type
9321  , p_source_30            IN VARCHAR2
9322 --Entered Amount
9323  , p_source_31            IN NUMBER
9324 --Currency Code
9325  , p_source_32            IN VARCHAR2
9326 --Exchange Date
9327  , p_source_33            IN DATE
9328 --Exchange Rate
9329  , p_source_34            IN NUMBER
9330 --Exchange Rate Type
9331  , p_source_35            IN VARCHAR2
9332 --SLA Party Type
9333  , p_source_39            IN VARCHAR2
9334 --Accounting Amount
9335  , p_source_40            IN NUMBER
9336 --Drawee Account Identifier
9337  , p_source_41            IN NUMBER
9338 --DRAW_SITE_SITE_USE_ID
9339  , p_source_42            IN NUMBER
9340 )
9341 IS
9342 
9343 l_component_type              VARCHAR2(80);
9344 l_component_code              VARCHAR2(30);
9345 l_component_type_code         VARCHAR2(1);
9346 l_component_appl_id           INTEGER;
9347 l_amb_context_code            VARCHAR2(30);
9348 l_entity_code                 VARCHAR2(30);
9349 l_event_class_code            VARCHAR2(30);
9350 l_ae_header_id                NUMBER;
9351 l_event_type_code             VARCHAR2(30);
9352 l_line_definition_code        VARCHAR2(30);
9353 l_line_definition_owner_code  VARCHAR2(1);
9354 --
9355 -- adr variables
9356 l_segment                     VARCHAR2(30);
9357 l_ccid                        NUMBER;
9361 l_adr_flex_value_set_id       NUMBER;
9358 l_adr_transaction_coa_id      NUMBER;
9359 l_adr_accounting_coa_id       NUMBER;
9360 l_adr_flexfield_segment_code  VARCHAR2(30);
9362 l_adr_value_type_code         VARCHAR2(30);
9363 l_adr_value_combination_id    NUMBER;
9364 l_adr_value_segment_code      VARCHAR2(30);
9365 
9366 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9367 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9368 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9369 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9370 
9371 -- 4262811 Variables ------------------------------------------------------------------------------------------
9372 l_entered_amt_idx             NUMBER;
9373 l_accted_amt_idx              NUMBER;
9374 l_acc_rev_flag                VARCHAR2(1);
9375 l_accrual_line_num            NUMBER;
9376 l_tmp_amt                     NUMBER;
9377 l_acc_rev_natural_side_code   VARCHAR2(1);
9378 
9379 l_num_entries                 NUMBER;
9380 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9381 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9382 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9383 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9384 l_recog_line_1                NUMBER;
9385 l_recog_line_2                NUMBER;
9386 
9387 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9388 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9389 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9390 
9391 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9392 
9393 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9394 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9395 
9396 ---------------------------------------------------------------------------------------------------------------
9397 
9398 
9399 --
9400 -- bulk performance
9401 --
9402 l_balance_type_code           VARCHAR2(1);
9403 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9404 l_log_module                  VARCHAR2(240);
9405 
9406 --
9407 -- Upgrade strategy
9408 --
9409 l_actual_upg_option           VARCHAR2(1);
9410 l_enc_upg_option           VARCHAR2(1);
9411 
9412 --
9413 BEGIN
9414 --
9415 IF g_log_enabled THEN
9416       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_36';
9417 END IF;
9418 --
9419 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9420 
9421       trace
9422          (p_msg      => 'BEGIN of AcctLineType_36'
9423          ,p_level    => C_LEVEL_PROCEDURE
9424          ,p_module   => l_log_module);
9425 
9426 END IF;
9427 --
9428 l_component_type             := 'AMB_JLT';
9429 l_component_code             := 'BR_REMIT';
9430 l_component_type_code        := 'S';
9431 l_component_appl_id          :=  222;
9432 l_amb_context_code           := 'DEFAULT';
9433 l_entity_code                := 'BILLS_RECEIVABLE';
9434 l_event_class_code           := 'BILL';
9435 l_event_type_code            := 'BILL_ALL';
9436 l_line_definition_owner_code := 'S';
9437 l_line_definition_code       := 'AR_BILL_RECEIVABLES_JLD';
9438 --
9439 l_balance_type_code          := 'A';
9440 l_segment                     := NULL;
9441 l_ccid                        := NULL;
9442 l_adr_transaction_coa_id      := NULL;
9443 l_adr_accounting_coa_id       := NULL;
9444 l_adr_flexfield_segment_code  := NULL;
9445 l_adr_flex_value_set_id       := NULL;
9446 l_adr_value_type_code         := NULL;
9447 l_adr_value_combination_id    := NULL;
9448 l_adr_value_segment_code      := NULL;
9449 
9450 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9451 l_bflow_class_code           := '';    -- 4219869 Business Flow
9452 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9453 l_budgetary_control_flag     := 'N';
9454 
9455 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9456 l_bflow_applied_to_amt       := NULL; -- 5132302
9457 l_entered_amt_idx            := NULL;          -- 4262811
9458 l_accted_amt_idx             := NULL;          -- 4262811
9459 l_acc_rev_flag               := NULL;          -- 4262811
9460 l_accrual_line_num           := NULL;          -- 4262811
9461 l_tmp_amt                    := NULL;          -- 4262811
9462 --
9463  
9464 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9465     l_balance_type_code <> 'B' THEN
9466 IF NVL(p_source_27,'
9467 ') =  'REMITTANCE'
9468  THEN 
9469 
9470    --
9471    XLA_AE_LINES_PKG.SetNewLine;
9472 
9473    p_balance_type_code          := l_balance_type_code;
9474    -- set the flag so later we will know whether the gain loss line needs to be created
9475    
9476    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9477      p_actual_flag :='A';
9478    END IF;
9479 
9480    --
9481    -- bulk performance
9482    --
9483    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9484                                       p_header_num   => 0); -- 4262811
9485    --
9486    -- set accounting line options
9487    --
9488    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9492          , p_acct_entry_type_code       => 'A'
9489            p_natural_side_code          => 'C'
9490          , p_gain_or_loss_flag          => 'N'
9491          , p_gl_transfer_mode_code      => 'S'
9493          , p_switch_side_flag           => 'Y'
9494          , p_merge_duplicate_code       => 'A'
9495          );
9496    --
9497    l_acc_rev_natural_side_code := 'D';  -- 4262811
9498    -- 
9499    --
9500    -- set accounting line type info
9501    --
9502    xla_ae_lines_pkg.SetAcctLineType
9503       (p_component_type             => l_component_type
9504       ,p_event_type_code            => l_event_type_code
9505       ,p_line_definition_owner_code => l_line_definition_owner_code
9506       ,p_line_definition_code       => l_line_definition_code
9507       ,p_accounting_line_code       => l_component_code
9508       ,p_accounting_line_type_code  => l_component_type_code
9509       ,p_accounting_line_appl_id    => l_component_appl_id
9510       ,p_amb_context_code           => l_amb_context_code
9511       ,p_entity_code                => l_entity_code
9512       ,p_event_class_code           => l_event_class_code);
9513    --
9514    -- set accounting class
9515    --
9516    xla_ae_lines_pkg.SetAcctClass(
9517            p_accounting_class_code  => 'REM_BR'
9518          , p_ae_header_id           => l_ae_header_id
9519          );
9520 
9521    --
9522    -- set rounding class
9523    --
9524    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9525                       'REM_BR';
9526 
9527    --
9528    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9529    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9530    --
9531    -- bulk performance
9532    --
9533    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9534 
9535    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9536       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9537 
9538    -- 4955764
9539    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9540       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9541 
9542    -- 4458381 Public Sector Enh
9543    
9544    --
9545    -- set accounting attributes for the line type
9546    --
9547    l_entered_amt_idx := 3;
9548    l_accted_amt_idx  := 8;
9549    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9550    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9551    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
9552    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9553    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
9554    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9555    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
9556    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9557    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
9558    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9559    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
9560    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9561    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
9562    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9563    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
9564    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
9565    l_rec_acct_attrs.array_num_value(8)  := p_source_40;
9566    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
9567    l_rec_acct_attrs.array_num_value(9)  := p_source_41;
9568    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
9569    l_rec_acct_attrs.array_num_value(10)  := p_source_42;
9570    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
9571    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
9572 
9573    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9574    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9575 
9576    ---------------------------------------------------------------------------------------------------------------
9577    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9578    ---------------------------------------------------------------------------------------------------------------
9579    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9580 
9581    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9582    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9583 
9584    IF xla_accounting_cache_pkg.GetValueChar
9585          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9586          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9587    AND l_bflow_method_code = 'PRIOR_ENTRY'
9588 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9589    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9590          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9591        )
9592    THEN
9593          xla_ae_lines_pkg.BflowUpgEntry
9594            (p_business_method_code    => l_bflow_method_code
9595            ,p_business_class_code     => l_bflow_class_code
9599 -- No business flow processing for business flow method of NONE.
9596            ,p_balance_type            => l_balance_type_code);
9597    ELSE
9598       NULL;
9600    END IF;
9601 
9602    --
9603    -- call analytical criteria
9604    --
9605    
9606    --
9607    -- call description
9608    --
9609    -- No description or it is inherited.
9610    --
9611    -- call ADRs
9612    -- Bug 4922099
9613    --
9614    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9615         (NVL(l_actual_upg_option, 'N') = 'O') OR
9616         (NVL(l_enc_upg_option, 'N') = 'O')
9617       )
9618    THEN
9619    NULL;
9620    --
9621    --
9622    
9623   l_ccid := AcctDerRule_20(
9624            p_application_id           => p_application_id
9625          , p_ae_header_id             => l_ae_header_id 
9626 , p_source_22 => p_source_22
9627          , x_transaction_coa_id       => l_adr_transaction_coa_id
9628          , x_accounting_coa_id        => l_adr_accounting_coa_id
9629          , x_value_type_code          => l_adr_value_type_code
9630          , p_side                     => 'NA'
9631    );
9632 
9633    xla_ae_lines_pkg.set_ccid(
9634     p_code_combination_id          => l_ccid
9635   , p_value_type_code              => l_adr_value_type_code
9636   , p_transaction_coa_id           => l_adr_transaction_coa_id
9637   , p_accounting_coa_id            => l_adr_accounting_coa_id
9638   , p_adr_code                     => 'DIST_CCID'
9639   , p_adr_type_code                => 'S'
9640   , p_component_type               => l_component_type
9641   , p_component_code               => l_component_code
9642   , p_component_type_code          => l_component_type_code
9643   , p_component_appl_id            => l_component_appl_id
9644   , p_amb_context_code             => l_amb_context_code
9645   , p_side                         => 'NA'
9646   );
9647 
9648 
9649    --
9650    --
9651    END IF;
9652    --
9653    -- Bug 4922099
9654    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9655           (NVL(l_enc_upg_option, 'N') = 'O')
9656         ) AND
9657         (l_bflow_method_code = 'PRIOR_ENTRY')
9658       )
9659    THEN
9660       IF
9661       --
9662       1 = 2
9663       --
9664       THEN
9665       xla_accounting_err_pkg.build_message
9666                                     (p_appli_s_name            => 'XLA'
9667                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9668                                     ,p_token_1                 => 'LINE_NUMBER'
9669                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9670                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9671                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9672                                                                              l_component_type
9673                                                                             ,l_component_code
9674                                                                             ,l_component_type_code
9675                                                                             ,l_component_appl_id
9676                                                                             ,l_amb_context_code
9677                                                                             ,l_entity_code
9678                                                                             ,l_event_class_code
9679                                                                            )
9680                                     ,p_token_3                 => 'OWNER'
9681                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9682                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9683                                                                           ,p_lookup_code    => l_component_type_code
9684                                                                          )
9685                                     ,p_token_4                 => 'PRODUCT_NAME'
9686                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9687                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9688                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9689                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9690                                     ,p_ae_header_id            =>  NULL
9691                                        );
9692 
9693         IF (C_LEVEL_ERROR>= g_log_level) THEN
9694                  trace
9695                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9696                       ,p_level    => C_LEVEL_ERROR
9697                       ,p_module   => l_log_module);
9698         END IF;
9699       END IF;
9700    END IF;
9701    --
9702    --
9703    ------------------------------------------------------------------------------------------------
9704    -- 4219869 Business Flow
9705    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9706    -- Prior Entry.  Currently, the following code is always generated.
9707    ------------------------------------------------------------------------------------------------
9711    -- 4219869 Business Flow
9708    XLA_AE_LINES_PKG.ValidateCurrentLine;
9709 
9710    ------------------------------------------------------------------------------------
9712    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9713    ------------------------------------------------------------------------------------
9714    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9715 
9716    ----------------------------------------------------------------------------------
9717    -- 4219869 Business Flow
9718    -- Update journal entry status -- Need to generate this within IF <condition>
9719    ----------------------------------------------------------------------------------
9720    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9721          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9722          ,p_balance_type_code => l_balance_type_code
9723          );
9724 
9725    -------------------------------------------------------------------------------------------
9726    -- 4262811 - Generate the Accrual Reversal lines
9727    -------------------------------------------------------------------------------------------
9728    BEGIN
9729       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9730                               (g_array_event(p_event_id).array_value_num('header_index'));
9731       IF l_acc_rev_flag IS NULL THEN
9732          l_acc_rev_flag := 'N';
9733       END IF;
9734    EXCEPTION
9735       WHEN OTHERS THEN
9736          l_acc_rev_flag := 'N';
9737    END;
9738    --
9739    IF (l_acc_rev_flag = 'Y') THEN
9740 
9741        -- 4645092  ------------------------------------------------------------------------------
9742        -- To allow MPA report to determine if it should generate report process
9743        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9744        ------------------------------------------------------------------------------------------
9745 
9746        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9747        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9748    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
9749    -- call ADRs
9750    -- Bug 4922099
9751    --
9752    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9753         (NVL(l_actual_upg_option, 'N') = 'O') OR
9754         (NVL(l_enc_upg_option, 'N') = 'O')
9755       )
9756    THEN
9757    NULL;
9758    --
9759    --
9760    
9761   l_ccid := AcctDerRule_20(
9762            p_application_id           => p_application_id
9763          , p_ae_header_id             => l_ae_header_id 
9764 , p_source_22 => p_source_22
9765          , x_transaction_coa_id       => l_adr_transaction_coa_id
9766          , x_accounting_coa_id        => l_adr_accounting_coa_id
9767          , x_value_type_code          => l_adr_value_type_code
9768          , p_side                     => 'NA'
9769    );
9770 
9771    xla_ae_lines_pkg.set_ccid(
9772     p_code_combination_id          => l_ccid
9773   , p_value_type_code              => l_adr_value_type_code
9774   , p_transaction_coa_id           => l_adr_transaction_coa_id
9775   , p_accounting_coa_id            => l_adr_accounting_coa_id
9776   , p_adr_code                     => 'DIST_CCID'
9777   , p_adr_type_code                => 'S'
9778   , p_component_type               => l_component_type
9779   , p_component_code               => l_component_code
9780   , p_component_type_code          => l_component_type_code
9781   , p_component_appl_id            => l_component_appl_id
9782   , p_amb_context_code             => l_amb_context_code
9783   , p_side                         => 'NA'
9784   );
9785 
9786 
9787    --
9788    --
9789    END IF;
9790 
9791        --
9792        -- Update the line information that should be overwritten
9793        --
9794        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9795                                          p_header_num   => 1);
9796        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9797 
9798        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9799 
9800        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9801           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9802        END IF;
9803 
9804       --
9805       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9806       --
9807       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9808           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9809       ELSE
9810           ---------------------------------------------------------------------------------------------------
9811           -- 4262811a Switch Sign
9812           ---------------------------------------------------------------------------------------------------
9813           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9814           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9815                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9816           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9820                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9817                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9818           -- 5132302
9819           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9821 
9822       END IF;
9823 
9824       -- 4955764
9825       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9826       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9827 
9828 
9829       XLA_AE_LINES_PKG.ValidateCurrentLine;
9830       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9831 
9832       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9833                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9834                ,p_balance_type_code => l_balance_type_code);
9835 
9836    END IF;
9837 
9838    -----------------------------------------------------------------------------------------
9839    -- 4262811 Multiperiod Accounting
9840    -----------------------------------------------------------------------------------------
9841      -- No MPA option is assigned.
9842 
9843 
9844 END IF;
9845 END IF;
9846 --
9847 
9848 --
9849 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9850    trace
9851       (p_msg      => 'END of AcctLineType_36'
9852       ,p_level    => C_LEVEL_PROCEDURE
9853       ,p_module   => l_log_module);
9854 END IF;
9855 --
9856 EXCEPTION
9857   WHEN xla_exceptions_pkg.application_exception THEN
9858       RAISE;
9859   WHEN OTHERS THEN
9860        xla_exceptions_pkg.raise_message
9861            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_36');
9862 END AcctLineType_36;
9863 --
9864 
9865 ---------------------------------------
9866 --
9867 -- PRIVATE FUNCTION
9868 --         AcctLineType_37
9869 --
9870 ---------------------------------------
9871 PROCEDURE AcctLineType_37 (
9872   p_application_id        IN NUMBER
9873  ,p_event_id              IN NUMBER
9874  ,p_calculate_acctd_flag  IN VARCHAR2
9875  ,p_calculate_g_l_flag    IN VARCHAR2
9876  ,p_actual_flag           IN OUT VARCHAR2
9877  ,p_balance_type_code     OUT VARCHAR2
9878  ,p_gain_or_loss_ref      OUT VARCHAR2
9879  
9880 --Distribution GL Account
9881  , p_source_22            IN NUMBER
9882 --Distribution Source Type
9883  , p_source_27            IN VARCHAR2
9884 --Distribution Line Identifier
9885  , p_source_29            IN NUMBER
9886 --Distribution Type
9887  , p_source_30            IN VARCHAR2
9888 --Entered Amount
9889  , p_source_31            IN NUMBER
9890 --Currency Code
9891  , p_source_32            IN VARCHAR2
9892 --Exchange Date
9893  , p_source_33            IN DATE
9894 --Exchange Rate
9895  , p_source_34            IN NUMBER
9896 --Exchange Rate Type
9897  , p_source_35            IN VARCHAR2
9898 --SLA Party Type
9899  , p_source_39            IN VARCHAR2
9900 --Accounting Amount
9901  , p_source_40            IN NUMBER
9902 --Drawee Account Identifier
9903  , p_source_41            IN NUMBER
9904 --DRAW_SITE_SITE_USE_ID
9905  , p_source_42            IN NUMBER
9906 )
9907 IS
9908 
9909 l_component_type              VARCHAR2(80);
9910 l_component_code              VARCHAR2(30);
9911 l_component_type_code         VARCHAR2(1);
9912 l_component_appl_id           INTEGER;
9913 l_amb_context_code            VARCHAR2(30);
9914 l_entity_code                 VARCHAR2(30);
9915 l_event_class_code            VARCHAR2(30);
9916 l_ae_header_id                NUMBER;
9917 l_event_type_code             VARCHAR2(30);
9918 l_line_definition_code        VARCHAR2(30);
9919 l_line_definition_owner_code  VARCHAR2(1);
9920 --
9921 -- adr variables
9922 l_segment                     VARCHAR2(30);
9923 l_ccid                        NUMBER;
9924 l_adr_transaction_coa_id      NUMBER;
9925 l_adr_accounting_coa_id       NUMBER;
9926 l_adr_flexfield_segment_code  VARCHAR2(30);
9927 l_adr_flex_value_set_id       NUMBER;
9928 l_adr_value_type_code         VARCHAR2(30);
9929 l_adr_value_combination_id    NUMBER;
9930 l_adr_value_segment_code      VARCHAR2(30);
9931 
9932 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9933 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9934 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9935 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9936 
9937 -- 4262811 Variables ------------------------------------------------------------------------------------------
9938 l_entered_amt_idx             NUMBER;
9939 l_accted_amt_idx              NUMBER;
9940 l_acc_rev_flag                VARCHAR2(1);
9941 l_accrual_line_num            NUMBER;
9942 l_tmp_amt                     NUMBER;
9943 l_acc_rev_natural_side_code   VARCHAR2(1);
9944 
9945 l_num_entries                 NUMBER;
9946 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9947 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9948 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9949 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9953 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9950 l_recog_line_1                NUMBER;
9951 l_recog_line_2                NUMBER;
9952 
9954 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9955 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9956 
9957 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9958 
9959 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9960 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9961 
9962 ---------------------------------------------------------------------------------------------------------------
9963 
9964 
9965 --
9966 -- bulk performance
9967 --
9968 l_balance_type_code           VARCHAR2(1);
9969 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9970 l_log_module                  VARCHAR2(240);
9971 
9972 --
9973 -- Upgrade strategy
9974 --
9975 l_actual_upg_option           VARCHAR2(1);
9976 l_enc_upg_option           VARCHAR2(1);
9977 
9978 --
9979 BEGIN
9980 --
9981 IF g_log_enabled THEN
9982       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_37';
9983 END IF;
9984 --
9985 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9986 
9987       trace
9988          (p_msg      => 'BEGIN of AcctLineType_37'
9989          ,p_level    => C_LEVEL_PROCEDURE
9990          ,p_module   => l_log_module);
9991 
9992 END IF;
9993 --
9994 l_component_type             := 'AMB_JLT';
9995 l_component_code             := 'BR_TAX';
9996 l_component_type_code        := 'S';
9997 l_component_appl_id          :=  222;
9998 l_amb_context_code           := 'DEFAULT';
9999 l_entity_code                := 'BILLS_RECEIVABLE';
10000 l_event_class_code           := 'BILL';
10001 l_event_type_code            := 'BILL_ALL';
10002 l_line_definition_owner_code := 'S';
10003 l_line_definition_code       := 'AR_BILL_RECEIVABLES_JLD';
10004 --
10005 l_balance_type_code          := 'A';
10006 l_segment                     := NULL;
10007 l_ccid                        := NULL;
10008 l_adr_transaction_coa_id      := NULL;
10009 l_adr_accounting_coa_id       := NULL;
10010 l_adr_flexfield_segment_code  := NULL;
10011 l_adr_flex_value_set_id       := NULL;
10012 l_adr_value_type_code         := NULL;
10013 l_adr_value_combination_id    := NULL;
10014 l_adr_value_segment_code      := NULL;
10015 
10016 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10017 l_bflow_class_code           := '';    -- 4219869 Business Flow
10018 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10019 l_budgetary_control_flag     := 'N';
10020 
10021 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10022 l_bflow_applied_to_amt       := NULL; -- 5132302
10023 l_entered_amt_idx            := NULL;          -- 4262811
10024 l_accted_amt_idx             := NULL;          -- 4262811
10025 l_acc_rev_flag               := NULL;          -- 4262811
10026 l_accrual_line_num           := NULL;          -- 4262811
10027 l_tmp_amt                    := NULL;          -- 4262811
10028 --
10029  
10030 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10031     l_balance_type_code <> 'B' THEN
10032 IF NVL(p_source_27,'
10033 ') =  'TAX'
10034  THEN 
10035 
10036    --
10037    XLA_AE_LINES_PKG.SetNewLine;
10038 
10039    p_balance_type_code          := l_balance_type_code;
10040    -- set the flag so later we will know whether the gain loss line needs to be created
10041    
10042    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10043      p_actual_flag :='A';
10044    END IF;
10045 
10046    --
10047    -- bulk performance
10048    --
10049    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10050                                       p_header_num   => 0); -- 4262811
10051    --
10052    -- set accounting line options
10053    --
10054    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10055            p_natural_side_code          => 'C'
10056          , p_gain_or_loss_flag          => 'N'
10057          , p_gl_transfer_mode_code      => 'S'
10058          , p_acct_entry_type_code       => 'A'
10059          , p_switch_side_flag           => 'Y'
10060          , p_merge_duplicate_code       => 'A'
10061          );
10062    --
10063    l_acc_rev_natural_side_code := 'D';  -- 4262811
10064    -- 
10065    --
10066    -- set accounting line type info
10067    --
10068    xla_ae_lines_pkg.SetAcctLineType
10069       (p_component_type             => l_component_type
10070       ,p_event_type_code            => l_event_type_code
10071       ,p_line_definition_owner_code => l_line_definition_owner_code
10072       ,p_line_definition_code       => l_line_definition_code
10073       ,p_accounting_line_code       => l_component_code
10074       ,p_accounting_line_type_code  => l_component_type_code
10075       ,p_accounting_line_appl_id    => l_component_appl_id
10076       ,p_amb_context_code           => l_amb_context_code
10077       ,p_entity_code                => l_entity_code
10078       ,p_event_class_code           => l_event_class_code);
10079    --
10080    -- set accounting class
10081    --
10082    xla_ae_lines_pkg.SetAcctClass(
10083            p_accounting_class_code  => 'TAX'
10084          , p_ae_header_id           => l_ae_header_id
10085          );
10086 
10087    --
10091                       'TAX';
10088    -- set rounding class
10089    --
10090    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10092 
10093    --
10094    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10095    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10096    --
10097    -- bulk performance
10098    --
10099    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10100 
10101    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10102       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10103 
10104    -- 4955764
10105    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10106       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10107 
10108    -- 4458381 Public Sector Enh
10109    
10110    --
10111    -- set accounting attributes for the line type
10112    --
10113    l_entered_amt_idx := 3;
10114    l_accted_amt_idx  := 8;
10115    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10116    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10117    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
10118    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10119    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
10120    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10121    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
10122    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10123    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
10124    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10125    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
10126    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10127    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
10128    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10129    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
10130    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
10131    l_rec_acct_attrs.array_num_value(8)  := p_source_40;
10132    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
10133    l_rec_acct_attrs.array_num_value(9)  := p_source_41;
10134    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
10135    l_rec_acct_attrs.array_num_value(10)  := p_source_42;
10136    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
10137    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
10138 
10139    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10140    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10141 
10142    ---------------------------------------------------------------------------------------------------------------
10143    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10144    ---------------------------------------------------------------------------------------------------------------
10145    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10146 
10147    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10148    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10149 
10150    IF xla_accounting_cache_pkg.GetValueChar
10151          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10152          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10153    AND l_bflow_method_code = 'PRIOR_ENTRY'
10154 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10155    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10156          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10157        )
10158    THEN
10159          xla_ae_lines_pkg.BflowUpgEntry
10160            (p_business_method_code    => l_bflow_method_code
10161            ,p_business_class_code     => l_bflow_class_code
10162            ,p_balance_type            => l_balance_type_code);
10163    ELSE
10164       NULL;
10165 -- No business flow processing for business flow method of NONE.
10166    END IF;
10167 
10168    --
10169    -- call analytical criteria
10170    --
10171    
10172    --
10173    -- call description
10174    --
10175    -- No description or it is inherited.
10176    --
10177    -- call ADRs
10178    -- Bug 4922099
10179    --
10180    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10181         (NVL(l_actual_upg_option, 'N') = 'O') OR
10182         (NVL(l_enc_upg_option, 'N') = 'O')
10183       )
10184    THEN
10185    NULL;
10186    --
10187    --
10188    
10189   l_ccid := AcctDerRule_20(
10190            p_application_id           => p_application_id
10191          , p_ae_header_id             => l_ae_header_id 
10192 , p_source_22 => p_source_22
10193          , x_transaction_coa_id       => l_adr_transaction_coa_id
10194          , x_accounting_coa_id        => l_adr_accounting_coa_id
10195          , x_value_type_code          => l_adr_value_type_code
10196          , p_side                     => 'NA'
10197    );
10198 
10199    xla_ae_lines_pkg.set_ccid(
10200     p_code_combination_id          => l_ccid
10204   , p_adr_code                     => 'DIST_CCID'
10201   , p_value_type_code              => l_adr_value_type_code
10202   , p_transaction_coa_id           => l_adr_transaction_coa_id
10203   , p_accounting_coa_id            => l_adr_accounting_coa_id
10205   , p_adr_type_code                => 'S'
10206   , p_component_type               => l_component_type
10207   , p_component_code               => l_component_code
10208   , p_component_type_code          => l_component_type_code
10209   , p_component_appl_id            => l_component_appl_id
10210   , p_amb_context_code             => l_amb_context_code
10211   , p_side                         => 'NA'
10212   );
10213 
10214 
10215    --
10216    --
10217    END IF;
10218    --
10219    -- Bug 4922099
10220    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10221           (NVL(l_enc_upg_option, 'N') = 'O')
10222         ) AND
10223         (l_bflow_method_code = 'PRIOR_ENTRY')
10224       )
10225    THEN
10226       IF
10227       --
10228       1 = 2
10229       --
10230       THEN
10231       xla_accounting_err_pkg.build_message
10232                                     (p_appli_s_name            => 'XLA'
10233                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10234                                     ,p_token_1                 => 'LINE_NUMBER'
10235                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10236                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10237                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10238                                                                              l_component_type
10239                                                                             ,l_component_code
10240                                                                             ,l_component_type_code
10241                                                                             ,l_component_appl_id
10242                                                                             ,l_amb_context_code
10243                                                                             ,l_entity_code
10244                                                                             ,l_event_class_code
10245                                                                            )
10246                                     ,p_token_3                 => 'OWNER'
10247                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10248                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10249                                                                           ,p_lookup_code    => l_component_type_code
10250                                                                          )
10251                                     ,p_token_4                 => 'PRODUCT_NAME'
10252                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10253                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10254                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10255                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10256                                     ,p_ae_header_id            =>  NULL
10257                                        );
10258 
10259         IF (C_LEVEL_ERROR>= g_log_level) THEN
10260                  trace
10261                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10262                       ,p_level    => C_LEVEL_ERROR
10263                       ,p_module   => l_log_module);
10264         END IF;
10265       END IF;
10266    END IF;
10267    --
10268    --
10269    ------------------------------------------------------------------------------------------------
10270    -- 4219869 Business Flow
10271    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10272    -- Prior Entry.  Currently, the following code is always generated.
10273    ------------------------------------------------------------------------------------------------
10274    XLA_AE_LINES_PKG.ValidateCurrentLine;
10275 
10276    ------------------------------------------------------------------------------------
10277    -- 4219869 Business Flow
10278    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10279    ------------------------------------------------------------------------------------
10280    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10281 
10282    ----------------------------------------------------------------------------------
10283    -- 4219869 Business Flow
10284    -- Update journal entry status -- Need to generate this within IF <condition>
10285    ----------------------------------------------------------------------------------
10286    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10287          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10288          ,p_balance_type_code => l_balance_type_code
10289          );
10290 
10291    -------------------------------------------------------------------------------------------
10292    -- 4262811 - Generate the Accrual Reversal lines
10293    -------------------------------------------------------------------------------------------
10294    BEGIN
10298          l_acc_rev_flag := 'N';
10295       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10296                               (g_array_event(p_event_id).array_value_num('header_index'));
10297       IF l_acc_rev_flag IS NULL THEN
10299       END IF;
10300    EXCEPTION
10301       WHEN OTHERS THEN
10302          l_acc_rev_flag := 'N';
10303    END;
10304    --
10305    IF (l_acc_rev_flag = 'Y') THEN
10306 
10307        -- 4645092  ------------------------------------------------------------------------------
10308        -- To allow MPA report to determine if it should generate report process
10309        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10310        ------------------------------------------------------------------------------------------
10311 
10312        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10313        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10314    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
10315    -- call ADRs
10316    -- Bug 4922099
10317    --
10318    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10319         (NVL(l_actual_upg_option, 'N') = 'O') OR
10320         (NVL(l_enc_upg_option, 'N') = 'O')
10321       )
10322    THEN
10323    NULL;
10324    --
10325    --
10326    
10327   l_ccid := AcctDerRule_20(
10328            p_application_id           => p_application_id
10329          , p_ae_header_id             => l_ae_header_id 
10330 , p_source_22 => p_source_22
10331          , x_transaction_coa_id       => l_adr_transaction_coa_id
10332          , x_accounting_coa_id        => l_adr_accounting_coa_id
10333          , x_value_type_code          => l_adr_value_type_code
10334          , p_side                     => 'NA'
10335    );
10336 
10337    xla_ae_lines_pkg.set_ccid(
10338     p_code_combination_id          => l_ccid
10339   , p_value_type_code              => l_adr_value_type_code
10340   , p_transaction_coa_id           => l_adr_transaction_coa_id
10341   , p_accounting_coa_id            => l_adr_accounting_coa_id
10342   , p_adr_code                     => 'DIST_CCID'
10343   , p_adr_type_code                => 'S'
10344   , p_component_type               => l_component_type
10345   , p_component_code               => l_component_code
10346   , p_component_type_code          => l_component_type_code
10347   , p_component_appl_id            => l_component_appl_id
10348   , p_amb_context_code             => l_amb_context_code
10349   , p_side                         => 'NA'
10350   );
10351 
10352 
10353    --
10354    --
10355    END IF;
10356 
10357        --
10358        -- Update the line information that should be overwritten
10359        --
10360        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10361                                          p_header_num   => 1);
10362        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10363 
10364        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10365 
10366        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10367           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10368        END IF;
10369 
10370       --
10371       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10372       --
10373       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10374           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10375       ELSE
10376           ---------------------------------------------------------------------------------------------------
10377           -- 4262811a Switch Sign
10378           ---------------------------------------------------------------------------------------------------
10379           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10380           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10381                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10382           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10383                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10384           -- 5132302
10385           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10386                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10387 
10388       END IF;
10389 
10390       -- 4955764
10391       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10392       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10393 
10394 
10395       XLA_AE_LINES_PKG.ValidateCurrentLine;
10396       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10397 
10398       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10399                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10400                ,p_balance_type_code => l_balance_type_code);
10401 
10402    END IF;
10403 
10407      -- No MPA option is assigned.
10404    -----------------------------------------------------------------------------------------
10405    -- 4262811 Multiperiod Accounting
10406    -----------------------------------------------------------------------------------------
10408 
10409 
10410 END IF;
10411 END IF;
10412 --
10413 
10414 --
10415 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10416    trace
10417       (p_msg      => 'END of AcctLineType_37'
10418       ,p_level    => C_LEVEL_PROCEDURE
10419       ,p_module   => l_log_module);
10420 END IF;
10421 --
10422 EXCEPTION
10423   WHEN xla_exceptions_pkg.application_exception THEN
10424       RAISE;
10425   WHEN OTHERS THEN
10426        xla_exceptions_pkg.raise_message
10427            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_37');
10428 END AcctLineType_37;
10429 --
10430 
10431 ---------------------------------------
10432 --
10433 -- PRIVATE FUNCTION
10434 --         AcctLineType_38
10435 --
10436 ---------------------------------------
10437 PROCEDURE AcctLineType_38 (
10438   p_application_id        IN NUMBER
10439  ,p_event_id              IN NUMBER
10440  ,p_calculate_acctd_flag  IN VARCHAR2
10441  ,p_calculate_g_l_flag    IN VARCHAR2
10442  ,p_actual_flag           IN OUT VARCHAR2
10443  ,p_balance_type_code     OUT VARCHAR2
10444  ,p_gain_or_loss_ref      OUT VARCHAR2
10445  
10446 --Distribution GL Account
10447  , p_source_22            IN NUMBER
10448 --Distribution Source Type
10449  , p_source_27            IN VARCHAR2
10450 --Distribution Line Identifier
10451  , p_source_29            IN NUMBER
10452 --Distribution Type
10453  , p_source_30            IN VARCHAR2
10454 --Entered Amount
10455  , p_source_31            IN NUMBER
10456 --Currency Code
10457  , p_source_32            IN VARCHAR2
10458 --Exchange Date
10459  , p_source_33            IN DATE
10460 --Exchange Rate
10461  , p_source_34            IN NUMBER
10462 --Exchange Rate Type
10463  , p_source_35            IN VARCHAR2
10464 --SLA Party Type
10465  , p_source_39            IN VARCHAR2
10466 --Accounting Amount
10467  , p_source_40            IN NUMBER
10468 --Drawee Account Identifier
10469  , p_source_41            IN NUMBER
10470 --DRAW_SITE_SITE_USE_ID
10471  , p_source_42            IN NUMBER
10472 )
10473 IS
10474 
10475 l_component_type              VARCHAR2(80);
10476 l_component_code              VARCHAR2(30);
10477 l_component_type_code         VARCHAR2(1);
10478 l_component_appl_id           INTEGER;
10479 l_amb_context_code            VARCHAR2(30);
10480 l_entity_code                 VARCHAR2(30);
10481 l_event_class_code            VARCHAR2(30);
10482 l_ae_header_id                NUMBER;
10483 l_event_type_code             VARCHAR2(30);
10484 l_line_definition_code        VARCHAR2(30);
10485 l_line_definition_owner_code  VARCHAR2(1);
10486 --
10487 -- adr variables
10488 l_segment                     VARCHAR2(30);
10489 l_ccid                        NUMBER;
10490 l_adr_transaction_coa_id      NUMBER;
10491 l_adr_accounting_coa_id       NUMBER;
10492 l_adr_flexfield_segment_code  VARCHAR2(30);
10493 l_adr_flex_value_set_id       NUMBER;
10494 l_adr_value_type_code         VARCHAR2(30);
10495 l_adr_value_combination_id    NUMBER;
10496 l_adr_value_segment_code      VARCHAR2(30);
10497 
10498 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10499 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10500 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10501 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10502 
10503 -- 4262811 Variables ------------------------------------------------------------------------------------------
10504 l_entered_amt_idx             NUMBER;
10505 l_accted_amt_idx              NUMBER;
10506 l_acc_rev_flag                VARCHAR2(1);
10507 l_accrual_line_num            NUMBER;
10508 l_tmp_amt                     NUMBER;
10509 l_acc_rev_natural_side_code   VARCHAR2(1);
10510 
10511 l_num_entries                 NUMBER;
10512 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10513 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10514 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10515 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10516 l_recog_line_1                NUMBER;
10517 l_recog_line_2                NUMBER;
10518 
10519 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10520 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10521 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10522 
10523 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10524 
10525 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10526 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10527 
10528 ---------------------------------------------------------------------------------------------------------------
10529 
10530 
10531 --
10532 -- bulk performance
10533 --
10534 l_balance_type_code           VARCHAR2(1);
10535 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10536 l_log_module                  VARCHAR2(240);
10537 
10541 l_actual_upg_option           VARCHAR2(1);
10538 --
10539 -- Upgrade strategy
10540 --
10542 l_enc_upg_option           VARCHAR2(1);
10543 
10544 --
10545 BEGIN
10546 --
10547 IF g_log_enabled THEN
10548       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_38';
10549 END IF;
10550 --
10551 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10552 
10553       trace
10554          (p_msg      => 'BEGIN of AcctLineType_38'
10555          ,p_level    => C_LEVEL_PROCEDURE
10556          ,p_module   => l_log_module);
10557 
10558 END IF;
10559 --
10560 l_component_type             := 'AMB_JLT';
10561 l_component_code             := 'BR_UNPAID';
10562 l_component_type_code        := 'S';
10563 l_component_appl_id          :=  222;
10564 l_amb_context_code           := 'DEFAULT';
10565 l_entity_code                := 'BILLS_RECEIVABLE';
10566 l_event_class_code           := 'BILL';
10567 l_event_type_code            := 'BILL_ALL';
10568 l_line_definition_owner_code := 'S';
10569 l_line_definition_code       := 'AR_BILL_RECEIVABLES_JLD';
10570 --
10571 l_balance_type_code          := 'A';
10572 l_segment                     := NULL;
10573 l_ccid                        := NULL;
10574 l_adr_transaction_coa_id      := NULL;
10575 l_adr_accounting_coa_id       := NULL;
10576 l_adr_flexfield_segment_code  := NULL;
10577 l_adr_flex_value_set_id       := NULL;
10578 l_adr_value_type_code         := NULL;
10579 l_adr_value_combination_id    := NULL;
10580 l_adr_value_segment_code      := NULL;
10581 
10582 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10583 l_bflow_class_code           := '';    -- 4219869 Business Flow
10584 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10585 l_budgetary_control_flag     := 'N';
10586 
10587 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10588 l_bflow_applied_to_amt       := NULL; -- 5132302
10589 l_entered_amt_idx            := NULL;          -- 4262811
10590 l_accted_amt_idx             := NULL;          -- 4262811
10591 l_acc_rev_flag               := NULL;          -- 4262811
10592 l_accrual_line_num           := NULL;          -- 4262811
10593 l_tmp_amt                    := NULL;          -- 4262811
10594 --
10595  
10596 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10597     l_balance_type_code <> 'B' THEN
10598 IF NVL(p_source_27,'
10599 ') =  'UNPAIDREC'
10600  THEN 
10601 
10602    --
10603    XLA_AE_LINES_PKG.SetNewLine;
10604 
10605    p_balance_type_code          := l_balance_type_code;
10606    -- set the flag so later we will know whether the gain loss line needs to be created
10607    
10608    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10609      p_actual_flag :='A';
10610    END IF;
10611 
10612    --
10613    -- bulk performance
10614    --
10615    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10616                                       p_header_num   => 0); -- 4262811
10617    --
10618    -- set accounting line options
10619    --
10620    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10621            p_natural_side_code          => 'C'
10622          , p_gain_or_loss_flag          => 'N'
10623          , p_gl_transfer_mode_code      => 'S'
10624          , p_acct_entry_type_code       => 'A'
10625          , p_switch_side_flag           => 'Y'
10626          , p_merge_duplicate_code       => 'A'
10627          );
10628    --
10629    l_acc_rev_natural_side_code := 'D';  -- 4262811
10630    -- 
10631    --
10632    -- set accounting line type info
10633    --
10634    xla_ae_lines_pkg.SetAcctLineType
10635       (p_component_type             => l_component_type
10636       ,p_event_type_code            => l_event_type_code
10637       ,p_line_definition_owner_code => l_line_definition_owner_code
10638       ,p_line_definition_code       => l_line_definition_code
10639       ,p_accounting_line_code       => l_component_code
10640       ,p_accounting_line_type_code  => l_component_type_code
10641       ,p_accounting_line_appl_id    => l_component_appl_id
10642       ,p_amb_context_code           => l_amb_context_code
10643       ,p_entity_code                => l_entity_code
10644       ,p_event_class_code           => l_event_class_code);
10645    --
10646    -- set accounting class
10647    --
10648    xla_ae_lines_pkg.SetAcctClass(
10649            p_accounting_class_code  => 'UNPAID_BR'
10650          , p_ae_header_id           => l_ae_header_id
10651          );
10652 
10653    --
10654    -- set rounding class
10655    --
10656    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10657                       'UNPAID_BR';
10658 
10659    --
10660    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10661    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10662    --
10663    -- bulk performance
10664    --
10665    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10666 
10667    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10668       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10669 
10670    -- 4955764
10674    -- 4458381 Public Sector Enh
10671    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10672       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10673 
10675    
10676    --
10677    -- set accounting attributes for the line type
10678    --
10679    l_entered_amt_idx := 3;
10680    l_accted_amt_idx  := 8;
10681    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10682    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10683    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
10684    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10685    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
10686    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10687    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
10688    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10689    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
10690    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10691    l_rec_acct_attrs.array_date_value(5)  := p_source_33;
10692    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10693    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
10694    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10695    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
10696    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
10697    l_rec_acct_attrs.array_num_value(8)  := p_source_40;
10698    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
10699    l_rec_acct_attrs.array_num_value(9)  := p_source_41;
10700    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
10701    l_rec_acct_attrs.array_num_value(10)  := p_source_42;
10702    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
10703    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
10704 
10705    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10706    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10707 
10708    ---------------------------------------------------------------------------------------------------------------
10709    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10710    ---------------------------------------------------------------------------------------------------------------
10711    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10712 
10713    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10714    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10715 
10716    IF xla_accounting_cache_pkg.GetValueChar
10717          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10718          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10719    AND l_bflow_method_code = 'PRIOR_ENTRY'
10720 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10721    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10722          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10723        )
10724    THEN
10725          xla_ae_lines_pkg.BflowUpgEntry
10726            (p_business_method_code    => l_bflow_method_code
10727            ,p_business_class_code     => l_bflow_class_code
10728            ,p_balance_type            => l_balance_type_code);
10729    ELSE
10730       NULL;
10731 -- No business flow processing for business flow method of NONE.
10732    END IF;
10733 
10734    --
10735    -- call analytical criteria
10736    --
10737    
10738    --
10739    -- call description
10740    --
10741    -- No description or it is inherited.
10742    --
10743    -- call ADRs
10744    -- Bug 4922099
10745    --
10746    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10747         (NVL(l_actual_upg_option, 'N') = 'O') OR
10748         (NVL(l_enc_upg_option, 'N') = 'O')
10749       )
10750    THEN
10751    NULL;
10752    --
10753    --
10754    
10755   l_ccid := AcctDerRule_20(
10756            p_application_id           => p_application_id
10757          , p_ae_header_id             => l_ae_header_id 
10758 , p_source_22 => p_source_22
10759          , x_transaction_coa_id       => l_adr_transaction_coa_id
10760          , x_accounting_coa_id        => l_adr_accounting_coa_id
10761          , x_value_type_code          => l_adr_value_type_code
10762          , p_side                     => 'NA'
10763    );
10764 
10765    xla_ae_lines_pkg.set_ccid(
10766     p_code_combination_id          => l_ccid
10767   , p_value_type_code              => l_adr_value_type_code
10768   , p_transaction_coa_id           => l_adr_transaction_coa_id
10769   , p_accounting_coa_id            => l_adr_accounting_coa_id
10770   , p_adr_code                     => 'DIST_CCID'
10771   , p_adr_type_code                => 'S'
10772   , p_component_type               => l_component_type
10773   , p_component_code               => l_component_code
10774   , p_component_type_code          => l_component_type_code
10775   , p_component_appl_id            => l_component_appl_id
10776   , p_amb_context_code             => l_amb_context_code
10777   , p_side                         => 'NA'
10778   );
10779 
10780 
10781    --
10782    --
10783    END IF;
10784    --
10788         ) AND
10785    -- Bug 4922099
10786    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10787           (NVL(l_enc_upg_option, 'N') = 'O')
10789         (l_bflow_method_code = 'PRIOR_ENTRY')
10790       )
10791    THEN
10792       IF
10793       --
10794       1 = 2
10795       --
10796       THEN
10797       xla_accounting_err_pkg.build_message
10798                                     (p_appli_s_name            => 'XLA'
10799                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10800                                     ,p_token_1                 => 'LINE_NUMBER'
10801                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10802                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10803                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10804                                                                              l_component_type
10805                                                                             ,l_component_code
10806                                                                             ,l_component_type_code
10807                                                                             ,l_component_appl_id
10808                                                                             ,l_amb_context_code
10809                                                                             ,l_entity_code
10810                                                                             ,l_event_class_code
10811                                                                            )
10812                                     ,p_token_3                 => 'OWNER'
10813                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10814                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10815                                                                           ,p_lookup_code    => l_component_type_code
10816                                                                          )
10817                                     ,p_token_4                 => 'PRODUCT_NAME'
10818                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10819                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10820                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10821                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10822                                     ,p_ae_header_id            =>  NULL
10823                                        );
10824 
10825         IF (C_LEVEL_ERROR>= g_log_level) THEN
10826                  trace
10827                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10828                       ,p_level    => C_LEVEL_ERROR
10829                       ,p_module   => l_log_module);
10830         END IF;
10831       END IF;
10832    END IF;
10833    --
10834    --
10835    ------------------------------------------------------------------------------------------------
10836    -- 4219869 Business Flow
10837    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10838    -- Prior Entry.  Currently, the following code is always generated.
10839    ------------------------------------------------------------------------------------------------
10840    XLA_AE_LINES_PKG.ValidateCurrentLine;
10841 
10842    ------------------------------------------------------------------------------------
10843    -- 4219869 Business Flow
10844    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10845    ------------------------------------------------------------------------------------
10846    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10847 
10848    ----------------------------------------------------------------------------------
10849    -- 4219869 Business Flow
10850    -- Update journal entry status -- Need to generate this within IF <condition>
10851    ----------------------------------------------------------------------------------
10852    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10853          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10854          ,p_balance_type_code => l_balance_type_code
10855          );
10856 
10857    -------------------------------------------------------------------------------------------
10858    -- 4262811 - Generate the Accrual Reversal lines
10859    -------------------------------------------------------------------------------------------
10860    BEGIN
10861       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10862                               (g_array_event(p_event_id).array_value_num('header_index'));
10863       IF l_acc_rev_flag IS NULL THEN
10864          l_acc_rev_flag := 'N';
10865       END IF;
10866    EXCEPTION
10867       WHEN OTHERS THEN
10868          l_acc_rev_flag := 'N';
10869    END;
10870    --
10871    IF (l_acc_rev_flag = 'Y') THEN
10872 
10873        -- 4645092  ------------------------------------------------------------------------------
10874        -- To allow MPA report to determine if it should generate report process
10875        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10876        ------------------------------------------------------------------------------------------
10877 
10878        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10882    -- Bug 4922099
10879        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10880    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
10881    -- call ADRs
10883    --
10884    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10885         (NVL(l_actual_upg_option, 'N') = 'O') OR
10886         (NVL(l_enc_upg_option, 'N') = 'O')
10887       )
10888    THEN
10889    NULL;
10890    --
10891    --
10892    
10893   l_ccid := AcctDerRule_20(
10894            p_application_id           => p_application_id
10895          , p_ae_header_id             => l_ae_header_id 
10896 , p_source_22 => p_source_22
10897          , x_transaction_coa_id       => l_adr_transaction_coa_id
10898          , x_accounting_coa_id        => l_adr_accounting_coa_id
10899          , x_value_type_code          => l_adr_value_type_code
10900          , p_side                     => 'NA'
10901    );
10902 
10903    xla_ae_lines_pkg.set_ccid(
10904     p_code_combination_id          => l_ccid
10905   , p_value_type_code              => l_adr_value_type_code
10906   , p_transaction_coa_id           => l_adr_transaction_coa_id
10907   , p_accounting_coa_id            => l_adr_accounting_coa_id
10908   , p_adr_code                     => 'DIST_CCID'
10909   , p_adr_type_code                => 'S'
10910   , p_component_type               => l_component_type
10911   , p_component_code               => l_component_code
10912   , p_component_type_code          => l_component_type_code
10913   , p_component_appl_id            => l_component_appl_id
10914   , p_amb_context_code             => l_amb_context_code
10915   , p_side                         => 'NA'
10916   );
10917 
10918 
10919    --
10920    --
10921    END IF;
10922 
10923        --
10924        -- Update the line information that should be overwritten
10925        --
10926        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10927                                          p_header_num   => 1);
10928        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10929 
10930        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10931 
10932        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10933           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10934        END IF;
10935 
10936       --
10937       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10938       --
10939       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10940           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10941       ELSE
10942           ---------------------------------------------------------------------------------------------------
10943           -- 4262811a Switch Sign
10944           ---------------------------------------------------------------------------------------------------
10945           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10946           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10947                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10948           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10949                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10950           -- 5132302
10951           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10952                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10953 
10954       END IF;
10955 
10956       -- 4955764
10957       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10958       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10959 
10960 
10961       XLA_AE_LINES_PKG.ValidateCurrentLine;
10962       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10963 
10964       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10965                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10966                ,p_balance_type_code => l_balance_type_code);
10967 
10968    END IF;
10969 
10970    -----------------------------------------------------------------------------------------
10971    -- 4262811 Multiperiod Accounting
10972    -----------------------------------------------------------------------------------------
10973      -- No MPA option is assigned.
10974 
10975 
10976 END IF;
10977 END IF;
10978 --
10979 
10980 --
10981 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10982    trace
10983       (p_msg      => 'END of AcctLineType_38'
10984       ,p_level    => C_LEVEL_PROCEDURE
10985       ,p_module   => l_log_module);
10986 END IF;
10987 --
10988 EXCEPTION
10989   WHEN xla_exceptions_pkg.application_exception THEN
10990       RAISE;
10991   WHEN OTHERS THEN
10992        xla_exceptions_pkg.raise_message
10993            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_38');
10994 END AcctLineType_38;
10995 --
10996 
11000 --         AcctLineType_39
10997 ---------------------------------------
10998 --
10999 -- PRIVATE FUNCTION
11001 --
11002 ---------------------------------------
11003 PROCEDURE AcctLineType_39 (
11004   p_application_id        IN NUMBER
11005  ,p_event_id              IN NUMBER
11006  ,p_calculate_acctd_flag  IN VARCHAR2
11007  ,p_calculate_g_l_flag    IN VARCHAR2
11008  ,p_actual_flag           IN OUT VARCHAR2
11009  ,p_balance_type_code     OUT VARCHAR2
11010  ,p_gain_or_loss_ref      OUT VARCHAR2
11011  
11012 --Transaction Distribution GL Account
11013  , p_source_26            IN NUMBER
11014 --Bill To Customer Account Identifier
11015  , p_source_37            IN NUMBER
11016 --Bill To Customer Site Use Identifier
11017  , p_source_38            IN NUMBER
11018 --SLA Party Type
11019  , p_source_39            IN VARCHAR2
11020 --Transaction Distribution Account Class
11021  , p_source_43            IN VARCHAR2
11022 --Transaction Distribution Identifier
11023  , p_source_44            IN NUMBER
11024 --Transaction Distribution Type
11025  , p_source_45            IN VARCHAR2
11026 --Transaction Distribution Entered Amount
11027  , p_source_46            IN NUMBER
11028 --Transaction Currency Code
11029  , p_source_47            IN VARCHAR2
11030 --Transaction Exchange Date
11031  , p_source_48            IN DATE
11032 --Transaction Exchange Rate
11033  , p_source_49            IN NUMBER
11034 --Transaction Exchange Rate Type
11035  , p_source_50            IN VARCHAR2
11036 --Transaction Accounting Amount
11037  , p_source_51            IN NUMBER
11038 )
11039 IS
11040 
11041 l_component_type              VARCHAR2(80);
11042 l_component_code              VARCHAR2(30);
11043 l_component_type_code         VARCHAR2(1);
11044 l_component_appl_id           INTEGER;
11045 l_amb_context_code            VARCHAR2(30);
11046 l_entity_code                 VARCHAR2(30);
11047 l_event_class_code            VARCHAR2(30);
11048 l_ae_header_id                NUMBER;
11049 l_event_type_code             VARCHAR2(30);
11050 l_line_definition_code        VARCHAR2(30);
11051 l_line_definition_owner_code  VARCHAR2(1);
11052 --
11053 -- adr variables
11054 l_segment                     VARCHAR2(30);
11055 l_ccid                        NUMBER;
11056 l_adr_transaction_coa_id      NUMBER;
11057 l_adr_accounting_coa_id       NUMBER;
11058 l_adr_flexfield_segment_code  VARCHAR2(30);
11059 l_adr_flex_value_set_id       NUMBER;
11060 l_adr_value_type_code         VARCHAR2(30);
11061 l_adr_value_combination_id    NUMBER;
11062 l_adr_value_segment_code      VARCHAR2(30);
11063 
11064 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11065 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11066 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11067 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11068 
11069 -- 4262811 Variables ------------------------------------------------------------------------------------------
11070 l_entered_amt_idx             NUMBER;
11071 l_accted_amt_idx              NUMBER;
11072 l_acc_rev_flag                VARCHAR2(1);
11073 l_accrual_line_num            NUMBER;
11074 l_tmp_amt                     NUMBER;
11075 l_acc_rev_natural_side_code   VARCHAR2(1);
11076 
11077 l_num_entries                 NUMBER;
11078 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11079 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11080 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11081 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11082 l_recog_line_1                NUMBER;
11083 l_recog_line_2                NUMBER;
11084 
11085 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11086 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11087 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11088 
11089 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11090 
11091 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11092 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11093 
11094 ---------------------------------------------------------------------------------------------------------------
11095 
11096 
11097 --
11098 -- bulk performance
11099 --
11100 l_balance_type_code           VARCHAR2(1);
11101 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11102 l_log_module                  VARCHAR2(240);
11103 
11104 --
11105 -- Upgrade strategy
11106 --
11107 l_actual_upg_option           VARCHAR2(1);
11108 l_enc_upg_option           VARCHAR2(1);
11109 
11110 --
11111 BEGIN
11112 --
11113 IF g_log_enabled THEN
11114       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_39';
11115 END IF;
11116 --
11117 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11118 
11119       trace
11120          (p_msg      => 'BEGIN of AcctLineType_39'
11121          ,p_level    => C_LEVEL_PROCEDURE
11122          ,p_module   => l_log_module);
11123 
11124 END IF;
11125 --
11126 l_component_type             := 'AMB_JLT';
11127 l_component_code             := 'CB_DEFAULT_REC';
11128 l_component_type_code        := 'S';
11129 l_component_appl_id          :=  222;
11130 l_amb_context_code           := 'DEFAULT';
11134 l_line_definition_owner_code := 'S';
11131 l_entity_code                := 'TRANSACTIONS';
11132 l_event_class_code           := 'CHARGEBACK';
11133 l_event_type_code            := 'CHARGEBACK_ALL';
11135 l_line_definition_code       := 'AR_CB_DEFAULT_ACCRUAL';
11136 --
11137 l_balance_type_code          := 'A';
11138 l_segment                     := NULL;
11139 l_ccid                        := NULL;
11140 l_adr_transaction_coa_id      := NULL;
11141 l_adr_accounting_coa_id       := NULL;
11142 l_adr_flexfield_segment_code  := NULL;
11143 l_adr_flex_value_set_id       := NULL;
11144 l_adr_value_type_code         := NULL;
11145 l_adr_value_combination_id    := NULL;
11146 l_adr_value_segment_code      := NULL;
11147 
11148 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11149 l_bflow_class_code           := '';    -- 4219869 Business Flow
11150 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11151 l_budgetary_control_flag     := 'N';
11152 
11153 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11154 l_bflow_applied_to_amt       := NULL; -- 5132302
11155 l_entered_amt_idx            := NULL;          -- 4262811
11156 l_accted_amt_idx             := NULL;          -- 4262811
11157 l_acc_rev_flag               := NULL;          -- 4262811
11158 l_accrual_line_num           := NULL;          -- 4262811
11159 l_tmp_amt                    := NULL;          -- 4262811
11160 --
11161  
11162 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11163     l_balance_type_code <> 'B' THEN
11164 IF NVL(p_source_43,'
11165 ') =  'REC'
11166  THEN 
11167 
11168    --
11169    XLA_AE_LINES_PKG.SetNewLine;
11170 
11171    p_balance_type_code          := l_balance_type_code;
11172    -- set the flag so later we will know whether the gain loss line needs to be created
11173    
11174    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11175      p_actual_flag :='A';
11176    END IF;
11177 
11178    --
11179    -- bulk performance
11180    --
11181    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11182                                       p_header_num   => 0); -- 4262811
11183    --
11184    -- set accounting line options
11185    --
11186    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11187            p_natural_side_code          => 'D'
11188          , p_gain_or_loss_flag          => 'N'
11189          , p_gl_transfer_mode_code      => 'S'
11190          , p_acct_entry_type_code       => 'A'
11191          , p_switch_side_flag           => 'Y'
11192          , p_merge_duplicate_code       => 'A'
11193          );
11194    --
11195    l_acc_rev_natural_side_code := 'C';  -- 4262811
11196    -- 
11197    --
11198    -- set accounting line type info
11199    --
11200    xla_ae_lines_pkg.SetAcctLineType
11201       (p_component_type             => l_component_type
11202       ,p_event_type_code            => l_event_type_code
11203       ,p_line_definition_owner_code => l_line_definition_owner_code
11204       ,p_line_definition_code       => l_line_definition_code
11205       ,p_accounting_line_code       => l_component_code
11206       ,p_accounting_line_type_code  => l_component_type_code
11207       ,p_accounting_line_appl_id    => l_component_appl_id
11208       ,p_amb_context_code           => l_amb_context_code
11209       ,p_entity_code                => l_entity_code
11210       ,p_event_class_code           => l_event_class_code);
11211    --
11212    -- set accounting class
11213    --
11214    xla_ae_lines_pkg.SetAcctClass(
11215            p_accounting_class_code  => 'RECEIVABLE'
11216          , p_ae_header_id           => l_ae_header_id
11217          );
11218 
11219    --
11220    -- set rounding class
11221    --
11222    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11223                       'RECEIVABLE';
11224 
11225    --
11226    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11227    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11228    --
11229    -- bulk performance
11230    --
11231    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11232 
11233    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11234       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11235 
11236    -- 4955764
11237    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11238       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11239 
11240    -- 4458381 Public Sector Enh
11241    
11242    --
11243    -- set accounting attributes for the line type
11244    --
11245    l_entered_amt_idx := 3;
11246    l_accted_amt_idx  := 8;
11247    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11248    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11249    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
11250    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11251    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
11252    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11256    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11253    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
11254    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11255    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
11257    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
11258    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11259    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
11260    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11261    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
11262    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
11263    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
11264    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
11265    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
11266    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
11267    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
11268    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
11269    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
11270 
11271    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11272    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11273 
11274    ---------------------------------------------------------------------------------------------------------------
11275    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11276    ---------------------------------------------------------------------------------------------------------------
11277    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11278 
11279    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11280    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11281 
11282    IF xla_accounting_cache_pkg.GetValueChar
11283          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11284          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11285    AND l_bflow_method_code = 'PRIOR_ENTRY'
11286 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11287    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11288          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11289        )
11290    THEN
11291          xla_ae_lines_pkg.BflowUpgEntry
11292            (p_business_method_code    => l_bflow_method_code
11293            ,p_business_class_code     => l_bflow_class_code
11294            ,p_balance_type            => l_balance_type_code);
11295    ELSE
11296       NULL;
11297 -- No business flow processing for business flow method of NONE.
11298    END IF;
11299 
11300    --
11301    -- call analytical criteria
11302    --
11303    
11304    --
11305    -- call description
11306    --
11307    -- No description or it is inherited.
11308    --
11309    -- call ADRs
11310    -- Bug 4922099
11311    --
11312    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11313         (NVL(l_actual_upg_option, 'N') = 'O') OR
11314         (NVL(l_enc_upg_option, 'N') = 'O')
11315       )
11316    THEN
11317    NULL;
11318    --
11319    --
11320    
11321   l_ccid := AcctDerRule_24(
11322            p_application_id           => p_application_id
11323          , p_ae_header_id             => l_ae_header_id 
11324 , p_source_26 => p_source_26
11325          , x_transaction_coa_id       => l_adr_transaction_coa_id
11326          , x_accounting_coa_id        => l_adr_accounting_coa_id
11327          , x_value_type_code          => l_adr_value_type_code
11328          , p_side                     => 'NA'
11329    );
11330 
11331    xla_ae_lines_pkg.set_ccid(
11332     p_code_combination_id          => l_ccid
11333   , p_value_type_code              => l_adr_value_type_code
11334   , p_transaction_coa_id           => l_adr_transaction_coa_id
11335   , p_accounting_coa_id            => l_adr_accounting_coa_id
11336   , p_adr_code                     => 'TRX_DIST_CCID'
11337   , p_adr_type_code                => 'S'
11338   , p_component_type               => l_component_type
11339   , p_component_code               => l_component_code
11340   , p_component_type_code          => l_component_type_code
11341   , p_component_appl_id            => l_component_appl_id
11342   , p_amb_context_code             => l_amb_context_code
11343   , p_side                         => 'NA'
11344   );
11345 
11346 
11347    --
11348    --
11349    END IF;
11350    --
11351    -- Bug 4922099
11352    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11353           (NVL(l_enc_upg_option, 'N') = 'O')
11354         ) AND
11355         (l_bflow_method_code = 'PRIOR_ENTRY')
11356       )
11357    THEN
11358       IF
11359       --
11360       1 = 2
11361       --
11362       THEN
11363       xla_accounting_err_pkg.build_message
11364                                     (p_appli_s_name            => 'XLA'
11365                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11366                                     ,p_token_1                 => 'LINE_NUMBER'
11367                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11368                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11372                                                                             ,l_component_type_code
11369                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11370                                                                              l_component_type
11371                                                                             ,l_component_code
11373                                                                             ,l_component_appl_id
11374                                                                             ,l_amb_context_code
11375                                                                             ,l_entity_code
11376                                                                             ,l_event_class_code
11377                                                                            )
11378                                     ,p_token_3                 => 'OWNER'
11379                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11380                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11381                                                                           ,p_lookup_code    => l_component_type_code
11382                                                                          )
11383                                     ,p_token_4                 => 'PRODUCT_NAME'
11384                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11385                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11386                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11387                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11388                                     ,p_ae_header_id            =>  NULL
11389                                        );
11390 
11391         IF (C_LEVEL_ERROR>= g_log_level) THEN
11392                  trace
11393                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11394                       ,p_level    => C_LEVEL_ERROR
11395                       ,p_module   => l_log_module);
11396         END IF;
11397       END IF;
11398    END IF;
11399    --
11400    --
11401    ------------------------------------------------------------------------------------------------
11402    -- 4219869 Business Flow
11403    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11404    -- Prior Entry.  Currently, the following code is always generated.
11405    ------------------------------------------------------------------------------------------------
11406    XLA_AE_LINES_PKG.ValidateCurrentLine;
11407 
11408    ------------------------------------------------------------------------------------
11409    -- 4219869 Business Flow
11410    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11411    ------------------------------------------------------------------------------------
11412    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11413 
11414    ----------------------------------------------------------------------------------
11415    -- 4219869 Business Flow
11416    -- Update journal entry status -- Need to generate this within IF <condition>
11417    ----------------------------------------------------------------------------------
11418    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11419          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11420          ,p_balance_type_code => l_balance_type_code
11421          );
11422 
11423    -------------------------------------------------------------------------------------------
11424    -- 4262811 - Generate the Accrual Reversal lines
11425    -------------------------------------------------------------------------------------------
11426    BEGIN
11427       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11428                               (g_array_event(p_event_id).array_value_num('header_index'));
11429       IF l_acc_rev_flag IS NULL THEN
11430          l_acc_rev_flag := 'N';
11431       END IF;
11432    EXCEPTION
11433       WHEN OTHERS THEN
11434          l_acc_rev_flag := 'N';
11435    END;
11436    --
11437    IF (l_acc_rev_flag = 'Y') THEN
11438 
11439        -- 4645092  ------------------------------------------------------------------------------
11440        -- To allow MPA report to determine if it should generate report process
11441        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11442        ------------------------------------------------------------------------------------------
11443 
11444        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11445        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11446    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
11447    -- call ADRs
11448    -- Bug 4922099
11449    --
11450    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11451         (NVL(l_actual_upg_option, 'N') = 'O') OR
11452         (NVL(l_enc_upg_option, 'N') = 'O')
11453       )
11454    THEN
11455    NULL;
11456    --
11457    --
11458    
11459   l_ccid := AcctDerRule_24(
11460            p_application_id           => p_application_id
11461          , p_ae_header_id             => l_ae_header_id 
11462 , p_source_26 => p_source_26
11463          , x_transaction_coa_id       => l_adr_transaction_coa_id
11464          , x_accounting_coa_id        => l_adr_accounting_coa_id
11468 
11465          , x_value_type_code          => l_adr_value_type_code
11466          , p_side                     => 'NA'
11467    );
11469    xla_ae_lines_pkg.set_ccid(
11470     p_code_combination_id          => l_ccid
11471   , p_value_type_code              => l_adr_value_type_code
11472   , p_transaction_coa_id           => l_adr_transaction_coa_id
11473   , p_accounting_coa_id            => l_adr_accounting_coa_id
11474   , p_adr_code                     => 'TRX_DIST_CCID'
11475   , p_adr_type_code                => 'S'
11476   , p_component_type               => l_component_type
11477   , p_component_code               => l_component_code
11478   , p_component_type_code          => l_component_type_code
11479   , p_component_appl_id            => l_component_appl_id
11480   , p_amb_context_code             => l_amb_context_code
11481   , p_side                         => 'NA'
11482   );
11483 
11484 
11485    --
11486    --
11487    END IF;
11488 
11489        --
11490        -- Update the line information that should be overwritten
11491        --
11492        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11493                                          p_header_num   => 1);
11494        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11495 
11496        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11497 
11498        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11499           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11500        END IF;
11501 
11502       --
11503       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11504       --
11505       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11506           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11507       ELSE
11508           ---------------------------------------------------------------------------------------------------
11509           -- 4262811a Switch Sign
11510           ---------------------------------------------------------------------------------------------------
11511           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11512           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11513                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11514           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11515                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11516           -- 5132302
11517           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11518                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11519 
11520       END IF;
11521 
11522       -- 4955764
11523       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11524       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11525 
11526 
11527       XLA_AE_LINES_PKG.ValidateCurrentLine;
11528       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11529 
11530       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11531                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11532                ,p_balance_type_code => l_balance_type_code);
11533 
11534    END IF;
11535 
11536    -----------------------------------------------------------------------------------------
11537    -- 4262811 Multiperiod Accounting
11538    -----------------------------------------------------------------------------------------
11539      -- No MPA option is assigned.
11540 
11541 
11542 END IF;
11543 END IF;
11544 --
11545 
11546 --
11547 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11548    trace
11549       (p_msg      => 'END of AcctLineType_39'
11550       ,p_level    => C_LEVEL_PROCEDURE
11551       ,p_module   => l_log_module);
11552 END IF;
11553 --
11554 EXCEPTION
11555   WHEN xla_exceptions_pkg.application_exception THEN
11556       RAISE;
11557   WHEN OTHERS THEN
11558        xla_exceptions_pkg.raise_message
11559            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_39');
11560 END AcctLineType_39;
11561 --
11562 
11563 ---------------------------------------
11564 --
11565 -- PRIVATE FUNCTION
11566 --         AcctLineType_40
11567 --
11568 ---------------------------------------
11569 PROCEDURE AcctLineType_40 (
11570   p_application_id        IN NUMBER
11571  ,p_event_id              IN NUMBER
11572  ,p_calculate_acctd_flag  IN VARCHAR2
11573  ,p_calculate_g_l_flag    IN VARCHAR2
11574  ,p_actual_flag           IN OUT VARCHAR2
11575  ,p_balance_type_code     OUT VARCHAR2
11576  ,p_gain_or_loss_ref      OUT VARCHAR2
11577  
11578 --Transaction Distribution GL Account
11579  , p_source_26            IN NUMBER
11580 --Bill To Customer Account Identifier
11581  , p_source_37            IN NUMBER
11582 --Bill To Customer Site Use Identifier
11583  , p_source_38            IN NUMBER
11584 --SLA Party Type
11585  , p_source_39            IN VARCHAR2
11586 --Transaction Distribution Account Class
11590 --Transaction Distribution Type
11587  , p_source_43            IN VARCHAR2
11588 --Transaction Distribution Identifier
11589  , p_source_44            IN NUMBER
11591  , p_source_45            IN VARCHAR2
11592 --Transaction Distribution Entered Amount
11593  , p_source_46            IN NUMBER
11594 --Transaction Currency Code
11595  , p_source_47            IN VARCHAR2
11596 --Transaction Exchange Date
11597  , p_source_48            IN DATE
11598 --Transaction Exchange Rate
11599  , p_source_49            IN NUMBER
11600 --Transaction Exchange Rate Type
11601  , p_source_50            IN VARCHAR2
11602 --Transaction Accounting Amount
11603  , p_source_51            IN NUMBER
11604 )
11605 IS
11606 
11607 l_component_type              VARCHAR2(80);
11608 l_component_code              VARCHAR2(30);
11609 l_component_type_code         VARCHAR2(1);
11610 l_component_appl_id           INTEGER;
11611 l_amb_context_code            VARCHAR2(30);
11612 l_entity_code                 VARCHAR2(30);
11613 l_event_class_code            VARCHAR2(30);
11614 l_ae_header_id                NUMBER;
11615 l_event_type_code             VARCHAR2(30);
11616 l_line_definition_code        VARCHAR2(30);
11617 l_line_definition_owner_code  VARCHAR2(1);
11618 --
11619 -- adr variables
11620 l_segment                     VARCHAR2(30);
11621 l_ccid                        NUMBER;
11622 l_adr_transaction_coa_id      NUMBER;
11623 l_adr_accounting_coa_id       NUMBER;
11624 l_adr_flexfield_segment_code  VARCHAR2(30);
11625 l_adr_flex_value_set_id       NUMBER;
11626 l_adr_value_type_code         VARCHAR2(30);
11627 l_adr_value_combination_id    NUMBER;
11628 l_adr_value_segment_code      VARCHAR2(30);
11629 
11630 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11631 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11632 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11633 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11634 
11635 -- 4262811 Variables ------------------------------------------------------------------------------------------
11636 l_entered_amt_idx             NUMBER;
11637 l_accted_amt_idx              NUMBER;
11638 l_acc_rev_flag                VARCHAR2(1);
11639 l_accrual_line_num            NUMBER;
11640 l_tmp_amt                     NUMBER;
11641 l_acc_rev_natural_side_code   VARCHAR2(1);
11642 
11643 l_num_entries                 NUMBER;
11644 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11645 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11646 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11647 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11648 l_recog_line_1                NUMBER;
11649 l_recog_line_2                NUMBER;
11650 
11651 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11652 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11653 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11654 
11655 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11656 
11657 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11658 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11659 
11660 ---------------------------------------------------------------------------------------------------------------
11661 
11662 
11663 --
11664 -- bulk performance
11665 --
11666 l_balance_type_code           VARCHAR2(1);
11667 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11668 l_log_module                  VARCHAR2(240);
11669 
11670 --
11671 -- Upgrade strategy
11672 --
11673 l_actual_upg_option           VARCHAR2(1);
11674 l_enc_upg_option           VARCHAR2(1);
11675 
11676 --
11677 BEGIN
11678 --
11679 IF g_log_enabled THEN
11680       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_40';
11681 END IF;
11682 --
11683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11684 
11685       trace
11686          (p_msg      => 'BEGIN of AcctLineType_40'
11687          ,p_level    => C_LEVEL_PROCEDURE
11688          ,p_module   => l_log_module);
11689 
11690 END IF;
11691 --
11692 l_component_type             := 'AMB_JLT';
11693 l_component_code             := 'CB_REV';
11694 l_component_type_code        := 'S';
11695 l_component_appl_id          :=  222;
11696 l_amb_context_code           := 'DEFAULT';
11697 l_entity_code                := 'TRANSACTIONS';
11698 l_event_class_code           := 'CHARGEBACK';
11699 l_event_type_code            := 'CHARGEBACK_ALL';
11700 l_line_definition_owner_code := 'S';
11701 l_line_definition_code       := 'AR_CB_DEFAULT_ACCRUAL';
11702 --
11703 l_balance_type_code          := 'A';
11704 l_segment                     := NULL;
11705 l_ccid                        := NULL;
11706 l_adr_transaction_coa_id      := NULL;
11707 l_adr_accounting_coa_id       := NULL;
11708 l_adr_flexfield_segment_code  := NULL;
11709 l_adr_flex_value_set_id       := NULL;
11710 l_adr_value_type_code         := NULL;
11711 l_adr_value_combination_id    := NULL;
11712 l_adr_value_segment_code      := NULL;
11713 
11714 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11718 
11715 l_bflow_class_code           := '';    -- 4219869 Business Flow
11716 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11717 l_budgetary_control_flag     := 'N';
11719 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11720 l_bflow_applied_to_amt       := NULL; -- 5132302
11721 l_entered_amt_idx            := NULL;          -- 4262811
11722 l_accted_amt_idx             := NULL;          -- 4262811
11723 l_acc_rev_flag               := NULL;          -- 4262811
11724 l_accrual_line_num           := NULL;          -- 4262811
11725 l_tmp_amt                    := NULL;          -- 4262811
11726 --
11727  
11728 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11729     l_balance_type_code <> 'B' THEN
11730 IF NVL(p_source_43,'
11731 ') =  'REV'
11732  THEN 
11733 
11734    --
11735    XLA_AE_LINES_PKG.SetNewLine;
11736 
11737    p_balance_type_code          := l_balance_type_code;
11738    -- set the flag so later we will know whether the gain loss line needs to be created
11739    
11740    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11741      p_actual_flag :='A';
11742    END IF;
11743 
11744    --
11745    -- bulk performance
11746    --
11747    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11748                                       p_header_num   => 0); -- 4262811
11749    --
11750    -- set accounting line options
11751    --
11752    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11753            p_natural_side_code          => 'C'
11754          , p_gain_or_loss_flag          => 'N'
11755          , p_gl_transfer_mode_code      => 'S'
11756          , p_acct_entry_type_code       => 'A'
11757          , p_switch_side_flag           => 'Y'
11758          , p_merge_duplicate_code       => 'A'
11759          );
11760    --
11761    l_acc_rev_natural_side_code := 'D';  -- 4262811
11762    -- 
11763    --
11764    -- set accounting line type info
11765    --
11766    xla_ae_lines_pkg.SetAcctLineType
11767       (p_component_type             => l_component_type
11768       ,p_event_type_code            => l_event_type_code
11769       ,p_line_definition_owner_code => l_line_definition_owner_code
11770       ,p_line_definition_code       => l_line_definition_code
11771       ,p_accounting_line_code       => l_component_code
11772       ,p_accounting_line_type_code  => l_component_type_code
11773       ,p_accounting_line_appl_id    => l_component_appl_id
11774       ,p_amb_context_code           => l_amb_context_code
11775       ,p_entity_code                => l_entity_code
11776       ,p_event_class_code           => l_event_class_code);
11777    --
11778    -- set accounting class
11779    --
11780    xla_ae_lines_pkg.SetAcctClass(
11781            p_accounting_class_code  => 'REVENUE'
11782          , p_ae_header_id           => l_ae_header_id
11783          );
11784 
11785    --
11786    -- set rounding class
11787    --
11788    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11789                       'RECEIVABLE';
11790 
11791    --
11792    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11793    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11794    --
11795    -- bulk performance
11796    --
11797    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11798 
11799    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11800       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11801 
11802    -- 4955764
11803    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11804       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11805 
11806    -- 4458381 Public Sector Enh
11807    
11808    --
11809    -- set accounting attributes for the line type
11810    --
11811    l_entered_amt_idx := 3;
11812    l_accted_amt_idx  := 8;
11813    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11814    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11815    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
11816    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11817    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
11818    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11819    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
11820    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11821    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
11822    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11823    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
11824    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11825    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
11826    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11827    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
11828    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
11829    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
11830    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
11834    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
11831    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
11832    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
11833    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
11835    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
11836 
11837    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11838    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11839 
11840    ---------------------------------------------------------------------------------------------------------------
11841    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11842    ---------------------------------------------------------------------------------------------------------------
11843    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11844 
11845    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11846    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11847 
11848    IF xla_accounting_cache_pkg.GetValueChar
11849          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11850          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11851    AND l_bflow_method_code = 'PRIOR_ENTRY'
11852 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11853    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11854          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11855        )
11856    THEN
11857          xla_ae_lines_pkg.BflowUpgEntry
11858            (p_business_method_code    => l_bflow_method_code
11859            ,p_business_class_code     => l_bflow_class_code
11860            ,p_balance_type            => l_balance_type_code);
11861    ELSE
11862       NULL;
11863 -- No business flow processing for business flow method of NONE.
11864    END IF;
11865 
11866    --
11867    -- call analytical criteria
11868    --
11869    
11870    --
11871    -- call description
11872    --
11873    -- No description or it is inherited.
11874    --
11875    -- call ADRs
11876    -- Bug 4922099
11877    --
11878    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11879         (NVL(l_actual_upg_option, 'N') = 'O') OR
11880         (NVL(l_enc_upg_option, 'N') = 'O')
11881       )
11882    THEN
11883    NULL;
11884    --
11885    --
11886    
11887   l_ccid := AcctDerRule_24(
11888            p_application_id           => p_application_id
11889          , p_ae_header_id             => l_ae_header_id 
11890 , p_source_26 => p_source_26
11891          , x_transaction_coa_id       => l_adr_transaction_coa_id
11892          , x_accounting_coa_id        => l_adr_accounting_coa_id
11893          , x_value_type_code          => l_adr_value_type_code
11894          , p_side                     => 'NA'
11895    );
11896 
11897    xla_ae_lines_pkg.set_ccid(
11898     p_code_combination_id          => l_ccid
11899   , p_value_type_code              => l_adr_value_type_code
11900   , p_transaction_coa_id           => l_adr_transaction_coa_id
11901   , p_accounting_coa_id            => l_adr_accounting_coa_id
11902   , p_adr_code                     => 'TRX_DIST_CCID'
11903   , p_adr_type_code                => 'S'
11904   , p_component_type               => l_component_type
11905   , p_component_code               => l_component_code
11906   , p_component_type_code          => l_component_type_code
11907   , p_component_appl_id            => l_component_appl_id
11908   , p_amb_context_code             => l_amb_context_code
11909   , p_side                         => 'NA'
11910   );
11911 
11912 
11913    --
11914    --
11915    END IF;
11916    --
11917    -- Bug 4922099
11918    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11919           (NVL(l_enc_upg_option, 'N') = 'O')
11920         ) AND
11921         (l_bflow_method_code = 'PRIOR_ENTRY')
11922       )
11923    THEN
11924       IF
11925       --
11926       1 = 2
11927       --
11928       THEN
11929       xla_accounting_err_pkg.build_message
11930                                     (p_appli_s_name            => 'XLA'
11931                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11932                                     ,p_token_1                 => 'LINE_NUMBER'
11933                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11934                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11935                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11936                                                                              l_component_type
11937                                                                             ,l_component_code
11938                                                                             ,l_component_type_code
11939                                                                             ,l_component_appl_id
11940                                                                             ,l_amb_context_code
11941                                                                             ,l_entity_code
11942                                                                             ,l_event_class_code
11943                                                                            )
11947                                                                           ,p_lookup_code    => l_component_type_code
11944                                     ,p_token_3                 => 'OWNER'
11945                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11946                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11948                                                                          )
11949                                     ,p_token_4                 => 'PRODUCT_NAME'
11950                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11951                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11952                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11953                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11954                                     ,p_ae_header_id            =>  NULL
11955                                        );
11956 
11957         IF (C_LEVEL_ERROR>= g_log_level) THEN
11958                  trace
11959                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11960                       ,p_level    => C_LEVEL_ERROR
11961                       ,p_module   => l_log_module);
11962         END IF;
11963       END IF;
11964    END IF;
11965    --
11966    --
11967    ------------------------------------------------------------------------------------------------
11968    -- 4219869 Business Flow
11969    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11970    -- Prior Entry.  Currently, the following code is always generated.
11971    ------------------------------------------------------------------------------------------------
11972    XLA_AE_LINES_PKG.ValidateCurrentLine;
11973 
11974    ------------------------------------------------------------------------------------
11975    -- 4219869 Business Flow
11976    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11977    ------------------------------------------------------------------------------------
11978    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11979 
11980    ----------------------------------------------------------------------------------
11981    -- 4219869 Business Flow
11982    -- Update journal entry status -- Need to generate this within IF <condition>
11983    ----------------------------------------------------------------------------------
11984    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11985          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11986          ,p_balance_type_code => l_balance_type_code
11987          );
11988 
11989    -------------------------------------------------------------------------------------------
11990    -- 4262811 - Generate the Accrual Reversal lines
11991    -------------------------------------------------------------------------------------------
11992    BEGIN
11993       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11994                               (g_array_event(p_event_id).array_value_num('header_index'));
11995       IF l_acc_rev_flag IS NULL THEN
11996          l_acc_rev_flag := 'N';
11997       END IF;
11998    EXCEPTION
11999       WHEN OTHERS THEN
12000          l_acc_rev_flag := 'N';
12001    END;
12002    --
12003    IF (l_acc_rev_flag = 'Y') THEN
12004 
12005        -- 4645092  ------------------------------------------------------------------------------
12006        -- To allow MPA report to determine if it should generate report process
12007        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12008        ------------------------------------------------------------------------------------------
12009 
12010        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12011        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12012    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
12013    -- call ADRs
12014    -- Bug 4922099
12015    --
12016    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12017         (NVL(l_actual_upg_option, 'N') = 'O') OR
12018         (NVL(l_enc_upg_option, 'N') = 'O')
12019       )
12020    THEN
12021    NULL;
12022    --
12023    --
12024    
12025   l_ccid := AcctDerRule_24(
12026            p_application_id           => p_application_id
12027          , p_ae_header_id             => l_ae_header_id 
12028 , p_source_26 => p_source_26
12029          , x_transaction_coa_id       => l_adr_transaction_coa_id
12030          , x_accounting_coa_id        => l_adr_accounting_coa_id
12031          , x_value_type_code          => l_adr_value_type_code
12032          , p_side                     => 'NA'
12033    );
12034 
12035    xla_ae_lines_pkg.set_ccid(
12036     p_code_combination_id          => l_ccid
12037   , p_value_type_code              => l_adr_value_type_code
12038   , p_transaction_coa_id           => l_adr_transaction_coa_id
12039   , p_accounting_coa_id            => l_adr_accounting_coa_id
12040   , p_adr_code                     => 'TRX_DIST_CCID'
12041   , p_adr_type_code                => 'S'
12042   , p_component_type               => l_component_type
12043   , p_component_code               => l_component_code
12044   , p_component_type_code          => l_component_type_code
12045   , p_component_appl_id            => l_component_appl_id
12049 
12046   , p_amb_context_code             => l_amb_context_code
12047   , p_side                         => 'NA'
12048   );
12050 
12051    --
12052    --
12053    END IF;
12054 
12055        --
12056        -- Update the line information that should be overwritten
12057        --
12058        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12059                                          p_header_num   => 1);
12060        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12061 
12062        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12063 
12064        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12065           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12066        END IF;
12067 
12068       --
12069       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12070       --
12071       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12072           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12073       ELSE
12074           ---------------------------------------------------------------------------------------------------
12075           -- 4262811a Switch Sign
12076           ---------------------------------------------------------------------------------------------------
12077           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12078           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12079                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12080           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12081                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12082           -- 5132302
12083           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12084                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12085 
12086       END IF;
12087 
12088       -- 4955764
12089       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12090       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12091 
12092 
12093       XLA_AE_LINES_PKG.ValidateCurrentLine;
12094       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12095 
12096       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12097                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12098                ,p_balance_type_code => l_balance_type_code);
12099 
12100    END IF;
12101 
12102    -----------------------------------------------------------------------------------------
12103    -- 4262811 Multiperiod Accounting
12104    -----------------------------------------------------------------------------------------
12105      -- No MPA option is assigned.
12106 
12107 
12108 END IF;
12109 END IF;
12110 --
12111 
12112 --
12113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12114    trace
12115       (p_msg      => 'END of AcctLineType_40'
12116       ,p_level    => C_LEVEL_PROCEDURE
12117       ,p_module   => l_log_module);
12118 END IF;
12119 --
12120 EXCEPTION
12121   WHEN xla_exceptions_pkg.application_exception THEN
12122       RAISE;
12123   WHEN OTHERS THEN
12124        xla_exceptions_pkg.raise_message
12125            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_40');
12126 END AcctLineType_40;
12127 --
12128 
12129 ---------------------------------------
12130 --
12131 -- PRIVATE FUNCTION
12132 --         AcctLineType_41
12133 --
12134 ---------------------------------------
12135 PROCEDURE AcctLineType_41 (
12136   p_application_id        IN NUMBER
12137  ,p_event_id              IN NUMBER
12138  ,p_calculate_acctd_flag  IN VARCHAR2
12139  ,p_calculate_g_l_flag    IN VARCHAR2
12140  ,p_actual_flag           IN OUT VARCHAR2
12141  ,p_balance_type_code     OUT VARCHAR2
12142  ,p_gain_or_loss_ref      OUT VARCHAR2
12143  
12144 --Distribution GL Account
12145  , p_source_22            IN NUMBER
12146 --Distribution Source Type
12147  , p_source_27            IN VARCHAR2
12148 --Entered Amount
12149  , p_source_31            IN NUMBER
12150 --SLA Party Type
12151  , p_source_39            IN VARCHAR2
12152 --Credit Memo Distribution Identifier
12153  , p_source_52            IN NUMBER
12154 --Credit memo distributions type
12155  , p_source_53            IN VARCHAR2
12156 --Credit Memo Currency Code
12157  , p_source_54            IN VARCHAR2
12158 --Credit Memo Exchange Date
12159  , p_source_55            IN DATE
12160 --Credit Memo Exchange Rate
12161  , p_source_56            IN NUMBER
12162 --Credit Memo Exchange Rate Type
12163  , p_source_57            IN VARCHAR2
12164 --Gain Loss Reference
12165  , p_source_58            IN VARCHAR2
12166 --Credit Memo Accounting Amount
12167  , p_source_59            IN NUMBER
12168 --Credit Memo Bill To Customer Account Identifier
12169  , p_source_60            IN NUMBER
12170 --Credit Memo Bill To Customer Site Use Identifier
12171  , p_source_61            IN NUMBER
12172 --Credit Memo Tax Line Identifier
12176 
12173  , p_source_62            IN NUMBER
12174 )
12175 IS
12177 l_component_type              VARCHAR2(80);
12178 l_component_code              VARCHAR2(30);
12179 l_component_type_code         VARCHAR2(1);
12180 l_component_appl_id           INTEGER;
12181 l_amb_context_code            VARCHAR2(30);
12182 l_entity_code                 VARCHAR2(30);
12183 l_event_class_code            VARCHAR2(30);
12184 l_ae_header_id                NUMBER;
12185 l_event_type_code             VARCHAR2(30);
12186 l_line_definition_code        VARCHAR2(30);
12187 l_line_definition_owner_code  VARCHAR2(1);
12188 --
12189 -- adr variables
12190 l_segment                     VARCHAR2(30);
12191 l_ccid                        NUMBER;
12192 l_adr_transaction_coa_id      NUMBER;
12193 l_adr_accounting_coa_id       NUMBER;
12194 l_adr_flexfield_segment_code  VARCHAR2(30);
12195 l_adr_flex_value_set_id       NUMBER;
12196 l_adr_value_type_code         VARCHAR2(30);
12197 l_adr_value_combination_id    NUMBER;
12198 l_adr_value_segment_code      VARCHAR2(30);
12199 
12200 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12201 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12202 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12203 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12204 
12205 -- 4262811 Variables ------------------------------------------------------------------------------------------
12206 l_entered_amt_idx             NUMBER;
12207 l_accted_amt_idx              NUMBER;
12208 l_acc_rev_flag                VARCHAR2(1);
12209 l_accrual_line_num            NUMBER;
12210 l_tmp_amt                     NUMBER;
12211 l_acc_rev_natural_side_code   VARCHAR2(1);
12212 
12213 l_num_entries                 NUMBER;
12214 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12215 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12216 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12217 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12218 l_recog_line_1                NUMBER;
12219 l_recog_line_2                NUMBER;
12220 
12221 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12222 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12223 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12224 
12225 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12226 
12227 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12228 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12229 
12230 ---------------------------------------------------------------------------------------------------------------
12231 
12232 
12233 --
12234 -- bulk performance
12235 --
12236 l_balance_type_code           VARCHAR2(1);
12237 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12238 l_log_module                  VARCHAR2(240);
12239 
12240 --
12241 -- Upgrade strategy
12242 --
12243 l_actual_upg_option           VARCHAR2(1);
12244 l_enc_upg_option           VARCHAR2(1);
12245 
12246 --
12247 BEGIN
12248 --
12249 IF g_log_enabled THEN
12250       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_41';
12251 END IF;
12252 --
12253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12254 
12255       trace
12256          (p_msg      => 'BEGIN of AcctLineType_41'
12257          ,p_level    => C_LEVEL_PROCEDURE
12258          ,p_module   => l_log_module);
12259 
12260 END IF;
12261 --
12262 l_component_type             := 'AMB_JLT';
12263 l_component_code             := 'CM_APP_DEFAULT_DEFERRED_TAX';
12264 l_component_type_code        := 'S';
12265 l_component_appl_id          :=  222;
12266 l_amb_context_code           := 'DEFAULT';
12267 l_entity_code                := 'TRANSACTIONS';
12268 l_event_class_code           := 'CREDIT_MEMO';
12269 l_event_type_code            := 'CREDIT_MEMO_ALL';
12270 l_line_definition_owner_code := 'S';
12271 l_line_definition_code       := 'JA_CN_AR_CM_DEFAULT_ACCRUAL';
12272 --
12273 l_balance_type_code          := 'A';
12274 l_segment                     := NULL;
12275 l_ccid                        := NULL;
12276 l_adr_transaction_coa_id      := NULL;
12277 l_adr_accounting_coa_id       := NULL;
12278 l_adr_flexfield_segment_code  := NULL;
12279 l_adr_flex_value_set_id       := NULL;
12280 l_adr_value_type_code         := NULL;
12281 l_adr_value_combination_id    := NULL;
12282 l_adr_value_segment_code      := NULL;
12283 
12284 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12285 l_bflow_class_code           := '';    -- 4219869 Business Flow
12286 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12287 l_budgetary_control_flag     := 'N';
12288 
12289 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12290 l_bflow_applied_to_amt       := NULL; -- 5132302
12291 l_entered_amt_idx            := NULL;          -- 4262811
12292 l_accted_amt_idx             := NULL;          -- 4262811
12293 l_acc_rev_flag               := NULL;          -- 4262811
12294 l_accrual_line_num           := NULL;          -- 4262811
12295 l_tmp_amt                    := NULL;          -- 4262811
12296 --
12297  
12301 ') =  'DEFERRED_TAX'
12298 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12299     l_balance_type_code <> 'B' THEN
12300 IF NVL(p_source_27,'
12302  THEN 
12303 
12304    --
12305    XLA_AE_LINES_PKG.SetNewLine;
12306 
12307    p_balance_type_code          := l_balance_type_code;
12308    -- set the flag so later we will know whether the gain loss line needs to be created
12309    
12310    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12311      p_actual_flag :='A';
12312    END IF;
12313 
12314    --
12315    -- bulk performance
12316    --
12317    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12318                                       p_header_num   => 0); -- 4262811
12319    --
12320    -- set accounting line options
12321    --
12322    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12323            p_natural_side_code          => 'C'
12324          , p_gain_or_loss_flag          => 'N'
12325          , p_gl_transfer_mode_code      => 'S'
12326          , p_acct_entry_type_code       => 'A'
12327          , p_switch_side_flag           => 'Y'
12328          , p_merge_duplicate_code       => 'A'
12329          );
12330    --
12331    l_acc_rev_natural_side_code := 'D';  -- 4262811
12332    -- 
12333    --
12334    -- set accounting line type info
12335    --
12336    xla_ae_lines_pkg.SetAcctLineType
12337       (p_component_type             => l_component_type
12338       ,p_event_type_code            => l_event_type_code
12339       ,p_line_definition_owner_code => l_line_definition_owner_code
12340       ,p_line_definition_code       => l_line_definition_code
12341       ,p_accounting_line_code       => l_component_code
12342       ,p_accounting_line_type_code  => l_component_type_code
12343       ,p_accounting_line_appl_id    => l_component_appl_id
12344       ,p_amb_context_code           => l_amb_context_code
12345       ,p_entity_code                => l_entity_code
12346       ,p_event_class_code           => l_event_class_code);
12347    --
12348    -- set accounting class
12349    --
12350    xla_ae_lines_pkg.SetAcctClass(
12351            p_accounting_class_code  => 'DEFERRED_TAX'
12352          , p_ae_header_id           => l_ae_header_id
12353          );
12354 
12355    --
12356    -- set rounding class
12357    --
12358    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12359                       'RECEIVABLE';
12360 
12361    --
12362    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12363    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12364    --
12365    -- bulk performance
12366    --
12367    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12368 
12369    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12370       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12371 
12372    -- 4955764
12373    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12374       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12375 
12376    -- 4458381 Public Sector Enh
12377    
12378    --
12379    -- set accounting attributes for the line type
12380    --
12381    l_entered_amt_idx := 3;
12382    l_accted_amt_idx  := 9;
12383    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12384    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12385    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_52);
12386    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12387    l_rec_acct_attrs.array_char_value(2)  := p_source_53;
12388    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12389    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
12390    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12391    l_rec_acct_attrs.array_char_value(4)  := p_source_54;
12392    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12393    l_rec_acct_attrs.array_date_value(5)  := p_source_55;
12394    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12395    l_rec_acct_attrs.array_num_value(6)  := p_source_56;
12396    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12397    l_rec_acct_attrs.array_char_value(7)  := p_source_57;
12398    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
12399    l_rec_acct_attrs.array_char_value(8)  := p_source_58;
12400    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
12401    l_rec_acct_attrs.array_num_value(9)  := p_source_59;
12402    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
12403    l_rec_acct_attrs.array_num_value(10)  := p_source_60;
12404    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
12405    l_rec_acct_attrs.array_num_value(11)  := p_source_61;
12406    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
12407    l_rec_acct_attrs.array_char_value(12)  := p_source_39;
12408    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
12409    l_rec_acct_attrs.array_num_value(13)  := p_source_62;
12410 
12411    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12412    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12413 
12417    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12414    ---------------------------------------------------------------------------------------------------------------
12415    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12416    ---------------------------------------------------------------------------------------------------------------
12418 
12419    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12420    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12421 
12422    IF xla_accounting_cache_pkg.GetValueChar
12423          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12424          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12425    AND l_bflow_method_code = 'PRIOR_ENTRY'
12426 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12427    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12428          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12429        )
12430    THEN
12431          xla_ae_lines_pkg.BflowUpgEntry
12432            (p_business_method_code    => l_bflow_method_code
12433            ,p_business_class_code     => l_bflow_class_code
12434            ,p_balance_type            => l_balance_type_code);
12435    ELSE
12436       NULL;
12437 -- No business flow processing for business flow method of NONE.
12438    END IF;
12439 
12440    --
12441    -- call analytical criteria
12442    --
12443    
12444    --
12445    -- call description
12446    --
12447    -- No description or it is inherited.
12448    --
12449    -- call ADRs
12450    -- Bug 4922099
12451    --
12452    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12453         (NVL(l_actual_upg_option, 'N') = 'O') OR
12454         (NVL(l_enc_upg_option, 'N') = 'O')
12455       )
12456    THEN
12457    NULL;
12458    --
12459    --
12460    
12461   l_ccid := AcctDerRule_20(
12462            p_application_id           => p_application_id
12463          , p_ae_header_id             => l_ae_header_id 
12464 , p_source_22 => p_source_22
12465          , x_transaction_coa_id       => l_adr_transaction_coa_id
12466          , x_accounting_coa_id        => l_adr_accounting_coa_id
12467          , x_value_type_code          => l_adr_value_type_code
12468          , p_side                     => 'NA'
12469    );
12470 
12471    xla_ae_lines_pkg.set_ccid(
12472     p_code_combination_id          => l_ccid
12473   , p_value_type_code              => l_adr_value_type_code
12474   , p_transaction_coa_id           => l_adr_transaction_coa_id
12475   , p_accounting_coa_id            => l_adr_accounting_coa_id
12476   , p_adr_code                     => 'DIST_CCID'
12477   , p_adr_type_code                => 'S'
12478   , p_component_type               => l_component_type
12479   , p_component_code               => l_component_code
12480   , p_component_type_code          => l_component_type_code
12481   , p_component_appl_id            => l_component_appl_id
12482   , p_amb_context_code             => l_amb_context_code
12483   , p_side                         => 'NA'
12484   );
12485 
12486 
12487    --
12488    --
12489    END IF;
12490    --
12491    -- Bug 4922099
12492    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12493           (NVL(l_enc_upg_option, 'N') = 'O')
12494         ) AND
12495         (l_bflow_method_code = 'PRIOR_ENTRY')
12496       )
12497    THEN
12498       IF
12499       --
12500       1 = 2
12501       --
12502       THEN
12503       xla_accounting_err_pkg.build_message
12504                                     (p_appli_s_name            => 'XLA'
12505                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12506                                     ,p_token_1                 => 'LINE_NUMBER'
12507                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12508                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12509                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12510                                                                              l_component_type
12511                                                                             ,l_component_code
12512                                                                             ,l_component_type_code
12513                                                                             ,l_component_appl_id
12514                                                                             ,l_amb_context_code
12515                                                                             ,l_entity_code
12516                                                                             ,l_event_class_code
12517                                                                            )
12518                                     ,p_token_3                 => 'OWNER'
12519                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12520                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12521                                                                           ,p_lookup_code    => l_component_type_code
12525                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12522                                                                          )
12523                                     ,p_token_4                 => 'PRODUCT_NAME'
12524                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12526                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12527                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12528                                     ,p_ae_header_id            =>  NULL
12529                                        );
12530 
12531         IF (C_LEVEL_ERROR>= g_log_level) THEN
12532                  trace
12533                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12534                       ,p_level    => C_LEVEL_ERROR
12535                       ,p_module   => l_log_module);
12536         END IF;
12537       END IF;
12538    END IF;
12539    --
12540    --
12541    ------------------------------------------------------------------------------------------------
12542    -- 4219869 Business Flow
12543    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12544    -- Prior Entry.  Currently, the following code is always generated.
12545    ------------------------------------------------------------------------------------------------
12546    XLA_AE_LINES_PKG.ValidateCurrentLine;
12547 
12548    ------------------------------------------------------------------------------------
12549    -- 4219869 Business Flow
12550    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12551    ------------------------------------------------------------------------------------
12552    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12553 
12554    ----------------------------------------------------------------------------------
12555    -- 4219869 Business Flow
12556    -- Update journal entry status -- Need to generate this within IF <condition>
12557    ----------------------------------------------------------------------------------
12558    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12559          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12560          ,p_balance_type_code => l_balance_type_code
12561          );
12562 
12563    -------------------------------------------------------------------------------------------
12564    -- 4262811 - Generate the Accrual Reversal lines
12565    -------------------------------------------------------------------------------------------
12566    BEGIN
12567       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12568                               (g_array_event(p_event_id).array_value_num('header_index'));
12569       IF l_acc_rev_flag IS NULL THEN
12570          l_acc_rev_flag := 'N';
12571       END IF;
12572    EXCEPTION
12573       WHEN OTHERS THEN
12574          l_acc_rev_flag := 'N';
12575    END;
12576    --
12577    IF (l_acc_rev_flag = 'Y') THEN
12578 
12579        -- 4645092  ------------------------------------------------------------------------------
12580        -- To allow MPA report to determine if it should generate report process
12581        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12582        ------------------------------------------------------------------------------------------
12583 
12584        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12585        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12586    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
12587    -- call ADRs
12588    -- Bug 4922099
12589    --
12590    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12591         (NVL(l_actual_upg_option, 'N') = 'O') OR
12592         (NVL(l_enc_upg_option, 'N') = 'O')
12593       )
12594    THEN
12595    NULL;
12596    --
12597    --
12598    
12599   l_ccid := AcctDerRule_20(
12600            p_application_id           => p_application_id
12601          , p_ae_header_id             => l_ae_header_id 
12602 , p_source_22 => p_source_22
12603          , x_transaction_coa_id       => l_adr_transaction_coa_id
12604          , x_accounting_coa_id        => l_adr_accounting_coa_id
12605          , x_value_type_code          => l_adr_value_type_code
12606          , p_side                     => 'NA'
12607    );
12608 
12609    xla_ae_lines_pkg.set_ccid(
12610     p_code_combination_id          => l_ccid
12611   , p_value_type_code              => l_adr_value_type_code
12612   , p_transaction_coa_id           => l_adr_transaction_coa_id
12613   , p_accounting_coa_id            => l_adr_accounting_coa_id
12614   , p_adr_code                     => 'DIST_CCID'
12615   , p_adr_type_code                => 'S'
12616   , p_component_type               => l_component_type
12617   , p_component_code               => l_component_code
12618   , p_component_type_code          => l_component_type_code
12619   , p_component_appl_id            => l_component_appl_id
12620   , p_amb_context_code             => l_amb_context_code
12621   , p_side                         => 'NA'
12622   );
12623 
12624 
12625    --
12626    --
12627    END IF;
12628 
12629        --
12630        -- Update the line information that should be overwritten
12631        --
12635 
12632        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12633                                          p_header_num   => 1);
12634        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12636        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12637 
12638        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12639           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12640        END IF;
12641 
12642       --
12643       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12644       --
12645       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12646           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12647       ELSE
12648           ---------------------------------------------------------------------------------------------------
12649           -- 4262811a Switch Sign
12650           ---------------------------------------------------------------------------------------------------
12651           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12652           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12653                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12654           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12655                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12656           -- 5132302
12657           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12658                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12659 
12660       END IF;
12661 
12662       -- 4955764
12663       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12664       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12665 
12666 
12667       XLA_AE_LINES_PKG.ValidateCurrentLine;
12668       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12669 
12670       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12671                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12672                ,p_balance_type_code => l_balance_type_code);
12673 
12674    END IF;
12675 
12676    -----------------------------------------------------------------------------------------
12677    -- 4262811 Multiperiod Accounting
12678    -----------------------------------------------------------------------------------------
12679      -- No MPA option is assigned.
12680 
12681 
12682 END IF;
12683 END IF;
12684 --
12685 
12686 --
12687 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12688    trace
12689       (p_msg      => 'END of AcctLineType_41'
12690       ,p_level    => C_LEVEL_PROCEDURE
12691       ,p_module   => l_log_module);
12692 END IF;
12693 --
12694 EXCEPTION
12695   WHEN xla_exceptions_pkg.application_exception THEN
12696       RAISE;
12697   WHEN OTHERS THEN
12698        xla_exceptions_pkg.raise_message
12699            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_41');
12700 END AcctLineType_41;
12701 --
12702 
12703 ---------------------------------------
12704 --
12705 -- PRIVATE FUNCTION
12706 --         AcctLineType_42
12707 --
12708 ---------------------------------------
12709 PROCEDURE AcctLineType_42 (
12710   p_application_id        IN NUMBER
12711  ,p_event_id              IN NUMBER
12712  ,p_calculate_acctd_flag  IN VARCHAR2
12713  ,p_calculate_g_l_flag    IN VARCHAR2
12714  ,p_actual_flag           IN OUT VARCHAR2
12715  ,p_balance_type_code     OUT VARCHAR2
12716  ,p_gain_or_loss_ref      OUT VARCHAR2
12717  
12718 --Transaction Type Name
12719  , p_source_1            IN VARCHAR2
12720 --Transaction Number
12721  , p_source_2            IN VARCHAR2
12722 --Transaction Document Sequence Number
12723  , p_source_3            IN NUMBER
12724 --Distribution GL Account
12725  , p_source_22            IN NUMBER
12726 --Distribution Source Type
12727  , p_source_27            IN VARCHAR2
12728 --Entered Amount
12729  , p_source_31            IN NUMBER
12730 --SLA Party Type
12731  , p_source_39            IN VARCHAR2
12732 --Credit Memo Distribution Identifier
12733  , p_source_52            IN NUMBER
12734 --Credit memo distributions type
12735  , p_source_53            IN VARCHAR2
12736 --Credit Memo Currency Code
12737  , p_source_54            IN VARCHAR2
12738 --Credit Memo Exchange Date
12739  , p_source_55            IN DATE
12740 --Credit Memo Exchange Rate
12741  , p_source_56            IN NUMBER
12742 --Credit Memo Exchange Rate Type
12743  , p_source_57            IN VARCHAR2
12744 --Gain Loss Reference
12745  , p_source_58            IN VARCHAR2
12746 --Credit Memo Accounting Amount
12747  , p_source_59            IN NUMBER
12748 --Credit Memo Bill To Customer Account Identifier
12749  , p_source_60            IN NUMBER
12750 --Credit Memo Bill To Customer Site Use Identifier
12751  , p_source_61            IN NUMBER
12752 --Credit Memo Tax Line Identifier
12753  , p_source_62            IN NUMBER
12754 )
12755 IS
12756 
12757 l_component_type              VARCHAR2(80);
12758 l_component_code              VARCHAR2(30);
12762 l_entity_code                 VARCHAR2(30);
12759 l_component_type_code         VARCHAR2(1);
12760 l_component_appl_id           INTEGER;
12761 l_amb_context_code            VARCHAR2(30);
12763 l_event_class_code            VARCHAR2(30);
12764 l_ae_header_id                NUMBER;
12765 l_event_type_code             VARCHAR2(30);
12766 l_line_definition_code        VARCHAR2(30);
12767 l_line_definition_owner_code  VARCHAR2(1);
12768 --
12769 -- adr variables
12770 l_segment                     VARCHAR2(30);
12771 l_ccid                        NUMBER;
12772 l_adr_transaction_coa_id      NUMBER;
12773 l_adr_accounting_coa_id       NUMBER;
12774 l_adr_flexfield_segment_code  VARCHAR2(30);
12775 l_adr_flex_value_set_id       NUMBER;
12776 l_adr_value_type_code         VARCHAR2(30);
12777 l_adr_value_combination_id    NUMBER;
12778 l_adr_value_segment_code      VARCHAR2(30);
12779 
12780 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12781 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12782 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12783 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12784 
12785 -- 4262811 Variables ------------------------------------------------------------------------------------------
12786 l_entered_amt_idx             NUMBER;
12787 l_accted_amt_idx              NUMBER;
12788 l_acc_rev_flag                VARCHAR2(1);
12789 l_accrual_line_num            NUMBER;
12790 l_tmp_amt                     NUMBER;
12791 l_acc_rev_natural_side_code   VARCHAR2(1);
12792 
12793 l_num_entries                 NUMBER;
12794 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12795 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12796 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12797 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12798 l_recog_line_1                NUMBER;
12799 l_recog_line_2                NUMBER;
12800 
12801 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12802 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12803 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12804 
12805 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12806 
12807 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12808 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12809 
12810 ---------------------------------------------------------------------------------------------------------------
12811 
12812 
12813 --
12814 -- bulk performance
12815 --
12816 l_balance_type_code           VARCHAR2(1);
12817 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12818 l_log_module                  VARCHAR2(240);
12819 
12820 --
12821 -- Upgrade strategy
12822 --
12823 l_actual_upg_option           VARCHAR2(1);
12824 l_enc_upg_option           VARCHAR2(1);
12825 
12826 --
12827 BEGIN
12828 --
12829 IF g_log_enabled THEN
12830       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_42';
12831 END IF;
12832 --
12833 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12834 
12835       trace
12836          (p_msg      => 'BEGIN of AcctLineType_42'
12837          ,p_level    => C_LEVEL_PROCEDURE
12838          ,p_module   => l_log_module);
12839 
12840 END IF;
12841 --
12842 l_component_type             := 'AMB_JLT';
12843 l_component_code             := 'CM_APP_DEFAULT_REC';
12844 l_component_type_code        := 'S';
12845 l_component_appl_id          :=  222;
12846 l_amb_context_code           := 'DEFAULT';
12847 l_entity_code                := 'TRANSACTIONS';
12848 l_event_class_code           := 'CREDIT_MEMO';
12849 l_event_type_code            := 'CREDIT_MEMO_ALL';
12850 l_line_definition_owner_code := 'S';
12851 l_line_definition_code       := 'JA_CN_AR_CM_DEFAULT_ACCRUAL';
12852 --
12853 l_balance_type_code          := 'A';
12854 l_segment                     := NULL;
12855 l_ccid                        := NULL;
12856 l_adr_transaction_coa_id      := NULL;
12857 l_adr_accounting_coa_id       := NULL;
12858 l_adr_flexfield_segment_code  := NULL;
12859 l_adr_flex_value_set_id       := NULL;
12860 l_adr_value_type_code         := NULL;
12861 l_adr_value_combination_id    := NULL;
12862 l_adr_value_segment_code      := NULL;
12863 
12864 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12865 l_bflow_class_code           := '';    -- 4219869 Business Flow
12866 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12867 l_budgetary_control_flag     := 'N';
12868 
12869 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12870 l_bflow_applied_to_amt       := NULL; -- 5132302
12871 l_entered_amt_idx            := NULL;          -- 4262811
12872 l_accted_amt_idx             := NULL;          -- 4262811
12873 l_acc_rev_flag               := NULL;          -- 4262811
12874 l_accrual_line_num           := NULL;          -- 4262811
12875 l_tmp_amt                    := NULL;          -- 4262811
12876 --
12877  
12878 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12879     l_balance_type_code <> 'B' THEN
12880 IF NVL(p_source_27,'
12881 ') =  'REC'
12882  THEN 
12883 
12884    --
12885    XLA_AE_LINES_PKG.SetNewLine;
12886 
12890    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12887    p_balance_type_code          := l_balance_type_code;
12888    -- set the flag so later we will know whether the gain loss line needs to be created
12889    
12891      p_actual_flag :='A';
12892    END IF;
12893 
12894    --
12895    -- bulk performance
12896    --
12897    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12898                                       p_header_num   => 0); -- 4262811
12899    --
12900    -- set accounting line options
12901    --
12902    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12903            p_natural_side_code          => 'C'
12904          , p_gain_or_loss_flag          => 'N'
12905          , p_gl_transfer_mode_code      => 'S'
12906          , p_acct_entry_type_code       => 'A'
12907          , p_switch_side_flag           => 'Y'
12908          , p_merge_duplicate_code       => 'A'
12909          );
12910    --
12911    l_acc_rev_natural_side_code := 'D';  -- 4262811
12912    -- 
12913    --
12914    -- set accounting line type info
12915    --
12916    xla_ae_lines_pkg.SetAcctLineType
12917       (p_component_type             => l_component_type
12918       ,p_event_type_code            => l_event_type_code
12919       ,p_line_definition_owner_code => l_line_definition_owner_code
12920       ,p_line_definition_code       => l_line_definition_code
12921       ,p_accounting_line_code       => l_component_code
12922       ,p_accounting_line_type_code  => l_component_type_code
12923       ,p_accounting_line_appl_id    => l_component_appl_id
12924       ,p_amb_context_code           => l_amb_context_code
12925       ,p_entity_code                => l_entity_code
12926       ,p_event_class_code           => l_event_class_code);
12927    --
12928    -- set accounting class
12929    --
12930    xla_ae_lines_pkg.SetAcctClass(
12931            p_accounting_class_code  => 'RECEIVABLE'
12932          , p_ae_header_id           => l_ae_header_id
12933          );
12934 
12935    --
12936    -- set rounding class
12937    --
12938    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12939                       'RECEIVABLE';
12940 
12941    --
12942    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12943    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12944    --
12945    -- bulk performance
12946    --
12947    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12948 
12949    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12950       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12951 
12952    -- 4955764
12953    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12954       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12955 
12956    -- 4458381 Public Sector Enh
12957    
12958    --
12959    -- set accounting attributes for the line type
12960    --
12961    l_entered_amt_idx := 3;
12962    l_accted_amt_idx  := 9;
12963    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12964    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12965    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_52);
12966    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12967    l_rec_acct_attrs.array_char_value(2)  := p_source_53;
12968    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12969    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
12970    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12971    l_rec_acct_attrs.array_char_value(4)  := p_source_54;
12972    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12973    l_rec_acct_attrs.array_date_value(5)  := p_source_55;
12974    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12975    l_rec_acct_attrs.array_num_value(6)  := p_source_56;
12976    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12977    l_rec_acct_attrs.array_char_value(7)  := p_source_57;
12978    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
12979    l_rec_acct_attrs.array_char_value(8)  := p_source_58;
12980    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
12981    l_rec_acct_attrs.array_num_value(9)  := p_source_59;
12982    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
12983    l_rec_acct_attrs.array_num_value(10)  := p_source_60;
12984    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
12985    l_rec_acct_attrs.array_num_value(11)  := p_source_61;
12986    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
12987    l_rec_acct_attrs.array_char_value(12)  := p_source_39;
12988    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
12989    l_rec_acct_attrs.array_num_value(13)  := p_source_62;
12990 
12991    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12992    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12993 
12994    ---------------------------------------------------------------------------------------------------------------
12995    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12996    ---------------------------------------------------------------------------------------------------------------
13000    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12997    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12998 
12999    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13001 
13002    IF xla_accounting_cache_pkg.GetValueChar
13003          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13004          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13005    AND l_bflow_method_code = 'PRIOR_ENTRY'
13006 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13007    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13008          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13009        )
13010    THEN
13011          xla_ae_lines_pkg.BflowUpgEntry
13012            (p_business_method_code    => l_bflow_method_code
13013            ,p_business_class_code     => l_bflow_class_code
13014            ,p_balance_type            => l_balance_type_code);
13015    ELSE
13016       NULL;
13017 -- No business flow processing for business flow method of NONE.
13018    END IF;
13019 
13020    --
13021    -- call analytical criteria
13022    --
13023    
13024    --
13025    -- call description
13026    --
13027    
13028 xla_ae_lines_pkg.SetLineDescription(
13029    p_ae_header_id => l_ae_header_id
13030   ,p_description  => Description_1 (
13031      p_application_id         => p_application_id
13032    , p_ae_header_id           => l_ae_header_id 
13033 , p_source_1 => p_source_1
13034 , p_source_2 => p_source_2
13035 , p_source_3 => p_source_3
13036    )
13037 );
13038 
13039 
13040    --
13041    -- call ADRs
13042    -- Bug 4922099
13043    --
13044    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13045         (NVL(l_actual_upg_option, 'N') = 'O') OR
13046         (NVL(l_enc_upg_option, 'N') = 'O')
13047       )
13048    THEN
13049    NULL;
13050    --
13051    --
13052    
13053   l_ccid := AcctDerRule_20(
13054            p_application_id           => p_application_id
13055          , p_ae_header_id             => l_ae_header_id 
13056 , p_source_22 => p_source_22
13057          , x_transaction_coa_id       => l_adr_transaction_coa_id
13058          , x_accounting_coa_id        => l_adr_accounting_coa_id
13059          , x_value_type_code          => l_adr_value_type_code
13060          , p_side                     => 'NA'
13061    );
13062 
13063    xla_ae_lines_pkg.set_ccid(
13064     p_code_combination_id          => l_ccid
13065   , p_value_type_code              => l_adr_value_type_code
13066   , p_transaction_coa_id           => l_adr_transaction_coa_id
13067   , p_accounting_coa_id            => l_adr_accounting_coa_id
13068   , p_adr_code                     => 'DIST_CCID'
13069   , p_adr_type_code                => 'S'
13070   , p_component_type               => l_component_type
13071   , p_component_code               => l_component_code
13072   , p_component_type_code          => l_component_type_code
13073   , p_component_appl_id            => l_component_appl_id
13074   , p_amb_context_code             => l_amb_context_code
13075   , p_side                         => 'NA'
13076   );
13077 
13078 
13079    --
13080    --
13081    END IF;
13082    --
13083    -- Bug 4922099
13084    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13085           (NVL(l_enc_upg_option, 'N') = 'O')
13086         ) AND
13087         (l_bflow_method_code = 'PRIOR_ENTRY')
13088       )
13089    THEN
13090       IF
13091       --
13092       1 = 2
13093       --
13094       THEN
13095       xla_accounting_err_pkg.build_message
13096                                     (p_appli_s_name            => 'XLA'
13097                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13098                                     ,p_token_1                 => 'LINE_NUMBER'
13099                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13100                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13101                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13102                                                                              l_component_type
13103                                                                             ,l_component_code
13104                                                                             ,l_component_type_code
13105                                                                             ,l_component_appl_id
13106                                                                             ,l_amb_context_code
13107                                                                             ,l_entity_code
13108                                                                             ,l_event_class_code
13109                                                                            )
13110                                     ,p_token_3                 => 'OWNER'
13111                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13112                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13113                                                                           ,p_lookup_code    => l_component_type_code
13117                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13114                                                                          )
13115                                     ,p_token_4                 => 'PRODUCT_NAME'
13116                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13118                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13119                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13120                                     ,p_ae_header_id            =>  NULL
13121                                        );
13122 
13123         IF (C_LEVEL_ERROR>= g_log_level) THEN
13124                  trace
13125                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13126                       ,p_level    => C_LEVEL_ERROR
13127                       ,p_module   => l_log_module);
13128         END IF;
13129       END IF;
13130    END IF;
13131    --
13132    --
13133    ------------------------------------------------------------------------------------------------
13134    -- 4219869 Business Flow
13135    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13136    -- Prior Entry.  Currently, the following code is always generated.
13137    ------------------------------------------------------------------------------------------------
13138    XLA_AE_LINES_PKG.ValidateCurrentLine;
13139 
13140    ------------------------------------------------------------------------------------
13141    -- 4219869 Business Flow
13142    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13143    ------------------------------------------------------------------------------------
13144    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13145 
13146    ----------------------------------------------------------------------------------
13147    -- 4219869 Business Flow
13148    -- Update journal entry status -- Need to generate this within IF <condition>
13149    ----------------------------------------------------------------------------------
13150    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13151          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13152          ,p_balance_type_code => l_balance_type_code
13153          );
13154 
13155    -------------------------------------------------------------------------------------------
13156    -- 4262811 - Generate the Accrual Reversal lines
13157    -------------------------------------------------------------------------------------------
13158    BEGIN
13159       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13160                               (g_array_event(p_event_id).array_value_num('header_index'));
13161       IF l_acc_rev_flag IS NULL THEN
13162          l_acc_rev_flag := 'N';
13163       END IF;
13164    EXCEPTION
13165       WHEN OTHERS THEN
13166          l_acc_rev_flag := 'N';
13167    END;
13168    --
13169    IF (l_acc_rev_flag = 'Y') THEN
13170 
13171        -- 4645092  ------------------------------------------------------------------------------
13172        -- To allow MPA report to determine if it should generate report process
13173        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13174        ------------------------------------------------------------------------------------------
13175 
13176        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13177        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13178    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
13179    -- call ADRs
13180    -- Bug 4922099
13181    --
13182    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13183         (NVL(l_actual_upg_option, 'N') = 'O') OR
13184         (NVL(l_enc_upg_option, 'N') = 'O')
13185       )
13186    THEN
13187    NULL;
13188    --
13189    --
13190    
13191   l_ccid := AcctDerRule_20(
13192            p_application_id           => p_application_id
13193          , p_ae_header_id             => l_ae_header_id 
13194 , p_source_22 => p_source_22
13195          , x_transaction_coa_id       => l_adr_transaction_coa_id
13196          , x_accounting_coa_id        => l_adr_accounting_coa_id
13197          , x_value_type_code          => l_adr_value_type_code
13198          , p_side                     => 'NA'
13199    );
13200 
13201    xla_ae_lines_pkg.set_ccid(
13202     p_code_combination_id          => l_ccid
13203   , p_value_type_code              => l_adr_value_type_code
13204   , p_transaction_coa_id           => l_adr_transaction_coa_id
13205   , p_accounting_coa_id            => l_adr_accounting_coa_id
13206   , p_adr_code                     => 'DIST_CCID'
13207   , p_adr_type_code                => 'S'
13208   , p_component_type               => l_component_type
13209   , p_component_code               => l_component_code
13210   , p_component_type_code          => l_component_type_code
13211   , p_component_appl_id            => l_component_appl_id
13212   , p_amb_context_code             => l_amb_context_code
13213   , p_side                         => 'NA'
13214   );
13215 
13216 
13217    --
13218    --
13219    END IF;
13220 
13221        --
13222        -- Update the line information that should be overwritten
13223        --
13227 
13224        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13225                                          p_header_num   => 1);
13226        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13228        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13229 
13230        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13231           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13232        END IF;
13233 
13234       --
13235       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13236       --
13237       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13238           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13239       ELSE
13240           ---------------------------------------------------------------------------------------------------
13241           -- 4262811a Switch Sign
13242           ---------------------------------------------------------------------------------------------------
13243           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13244           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13245                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13246           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13247                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13248           -- 5132302
13249           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13250                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13251 
13252       END IF;
13253 
13254       -- 4955764
13255       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13256       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13257 
13258 
13259       XLA_AE_LINES_PKG.ValidateCurrentLine;
13260       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13261 
13262       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13263                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13264                ,p_balance_type_code => l_balance_type_code);
13265 
13266    END IF;
13267 
13268    -----------------------------------------------------------------------------------------
13269    -- 4262811 Multiperiod Accounting
13270    -----------------------------------------------------------------------------------------
13271      -- No MPA option is assigned.
13272 
13273 
13274 END IF;
13275 END IF;
13276 --
13277 
13278 --
13279 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13280    trace
13281       (p_msg      => 'END of AcctLineType_42'
13282       ,p_level    => C_LEVEL_PROCEDURE
13283       ,p_module   => l_log_module);
13284 END IF;
13285 --
13286 EXCEPTION
13287   WHEN xla_exceptions_pkg.application_exception THEN
13288       RAISE;
13289   WHEN OTHERS THEN
13290        xla_exceptions_pkg.raise_message
13291            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_42');
13292 END AcctLineType_42;
13293 --
13294 
13295 ---------------------------------------
13296 --
13297 -- PRIVATE FUNCTION
13298 --         AcctLineType_43
13299 --
13300 ---------------------------------------
13301 PROCEDURE AcctLineType_43 (
13302   p_application_id        IN NUMBER
13303  ,p_event_id              IN NUMBER
13304  ,p_calculate_acctd_flag  IN VARCHAR2
13305  ,p_calculate_g_l_flag    IN VARCHAR2
13306  ,p_actual_flag           IN OUT VARCHAR2
13307  ,p_balance_type_code     OUT VARCHAR2
13308  ,p_gain_or_loss_ref      OUT VARCHAR2
13309  
13310 --Distribution GL Account
13311  , p_source_22            IN NUMBER
13312 --Distribution Source Type
13313  , p_source_27            IN VARCHAR2
13314 --Entered Amount
13315  , p_source_31            IN NUMBER
13316 --SLA Party Type
13317  , p_source_39            IN VARCHAR2
13318 --Credit Memo Distribution Identifier
13319  , p_source_52            IN NUMBER
13320 --Credit memo distributions type
13321  , p_source_53            IN VARCHAR2
13322 --Credit Memo Currency Code
13323  , p_source_54            IN VARCHAR2
13324 --Credit Memo Exchange Date
13325  , p_source_55            IN DATE
13326 --Credit Memo Exchange Rate
13327  , p_source_56            IN NUMBER
13328 --Credit Memo Exchange Rate Type
13329  , p_source_57            IN VARCHAR2
13330 --Gain Loss Reference
13331  , p_source_58            IN VARCHAR2
13332 --Credit Memo Accounting Amount
13333  , p_source_59            IN NUMBER
13334 --Credit Memo Bill To Customer Account Identifier
13335  , p_source_60            IN NUMBER
13336 --Credit Memo Bill To Customer Site Use Identifier
13337  , p_source_61            IN NUMBER
13338 --Credit Memo Tax Line Identifier
13339  , p_source_62            IN NUMBER
13340 )
13341 IS
13342 
13343 l_component_type              VARCHAR2(80);
13344 l_component_code              VARCHAR2(30);
13348 l_entity_code                 VARCHAR2(30);
13345 l_component_type_code         VARCHAR2(1);
13346 l_component_appl_id           INTEGER;
13347 l_amb_context_code            VARCHAR2(30);
13349 l_event_class_code            VARCHAR2(30);
13350 l_ae_header_id                NUMBER;
13351 l_event_type_code             VARCHAR2(30);
13352 l_line_definition_code        VARCHAR2(30);
13353 l_line_definition_owner_code  VARCHAR2(1);
13354 --
13355 -- adr variables
13356 l_segment                     VARCHAR2(30);
13357 l_ccid                        NUMBER;
13358 l_adr_transaction_coa_id      NUMBER;
13359 l_adr_accounting_coa_id       NUMBER;
13360 l_adr_flexfield_segment_code  VARCHAR2(30);
13361 l_adr_flex_value_set_id       NUMBER;
13362 l_adr_value_type_code         VARCHAR2(30);
13363 l_adr_value_combination_id    NUMBER;
13364 l_adr_value_segment_code      VARCHAR2(30);
13365 
13366 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13367 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13368 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13369 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13370 
13371 -- 4262811 Variables ------------------------------------------------------------------------------------------
13372 l_entered_amt_idx             NUMBER;
13373 l_accted_amt_idx              NUMBER;
13374 l_acc_rev_flag                VARCHAR2(1);
13375 l_accrual_line_num            NUMBER;
13376 l_tmp_amt                     NUMBER;
13377 l_acc_rev_natural_side_code   VARCHAR2(1);
13378 
13379 l_num_entries                 NUMBER;
13380 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13381 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13382 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13383 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13384 l_recog_line_1                NUMBER;
13385 l_recog_line_2                NUMBER;
13386 
13387 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13388 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13389 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13390 
13391 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13392 
13393 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13394 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13395 
13396 ---------------------------------------------------------------------------------------------------------------
13397 
13398 
13399 --
13400 -- bulk performance
13401 --
13402 l_balance_type_code           VARCHAR2(1);
13403 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13404 l_log_module                  VARCHAR2(240);
13405 
13406 --
13407 -- Upgrade strategy
13408 --
13409 l_actual_upg_option           VARCHAR2(1);
13410 l_enc_upg_option           VARCHAR2(1);
13411 
13412 --
13413 BEGIN
13414 --
13415 IF g_log_enabled THEN
13416       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_43';
13417 END IF;
13418 --
13419 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13420 
13421       trace
13422          (p_msg      => 'BEGIN of AcctLineType_43'
13423          ,p_level    => C_LEVEL_PROCEDURE
13424          ,p_module   => l_log_module);
13425 
13426 END IF;
13427 --
13428 l_component_type             := 'AMB_JLT';
13429 l_component_code             := 'CM_APP_DEFAULT_TAX';
13430 l_component_type_code        := 'S';
13431 l_component_appl_id          :=  222;
13432 l_amb_context_code           := 'DEFAULT';
13433 l_entity_code                := 'TRANSACTIONS';
13434 l_event_class_code           := 'CREDIT_MEMO';
13435 l_event_type_code            := 'CREDIT_MEMO_ALL';
13436 l_line_definition_owner_code := 'S';
13437 l_line_definition_code       := 'JA_CN_AR_CM_DEFAULT_ACCRUAL';
13438 --
13439 l_balance_type_code          := 'A';
13440 l_segment                     := NULL;
13441 l_ccid                        := NULL;
13442 l_adr_transaction_coa_id      := NULL;
13443 l_adr_accounting_coa_id       := NULL;
13444 l_adr_flexfield_segment_code  := NULL;
13445 l_adr_flex_value_set_id       := NULL;
13446 l_adr_value_type_code         := NULL;
13447 l_adr_value_combination_id    := NULL;
13448 l_adr_value_segment_code      := NULL;
13449 
13450 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13451 l_bflow_class_code           := '';    -- 4219869 Business Flow
13452 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13453 l_budgetary_control_flag     := 'N';
13454 
13455 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13456 l_bflow_applied_to_amt       := NULL; -- 5132302
13457 l_entered_amt_idx            := NULL;          -- 4262811
13458 l_accted_amt_idx             := NULL;          -- 4262811
13459 l_acc_rev_flag               := NULL;          -- 4262811
13460 l_accrual_line_num           := NULL;          -- 4262811
13461 l_tmp_amt                    := NULL;          -- 4262811
13462 --
13463  
13464 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13465     l_balance_type_code <> 'B' THEN
13466 IF NVL(p_source_27,'
13467 ') =  'TAX'
13468  THEN 
13469 
13470    --
13471    XLA_AE_LINES_PKG.SetNewLine;
13472 
13476    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13473    p_balance_type_code          := l_balance_type_code;
13474    -- set the flag so later we will know whether the gain loss line needs to be created
13475    
13477      p_actual_flag :='A';
13478    END IF;
13479 
13480    --
13481    -- bulk performance
13482    --
13483    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13484                                       p_header_num   => 0); -- 4262811
13485    --
13486    -- set accounting line options
13487    --
13488    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13489            p_natural_side_code          => 'C'
13490          , p_gain_or_loss_flag          => 'N'
13491          , p_gl_transfer_mode_code      => 'S'
13492          , p_acct_entry_type_code       => 'A'
13493          , p_switch_side_flag           => 'Y'
13494          , p_merge_duplicate_code       => 'A'
13495          );
13496    --
13497    l_acc_rev_natural_side_code := 'D';  -- 4262811
13498    -- 
13499    --
13500    -- set accounting line type info
13501    --
13502    xla_ae_lines_pkg.SetAcctLineType
13503       (p_component_type             => l_component_type
13504       ,p_event_type_code            => l_event_type_code
13505       ,p_line_definition_owner_code => l_line_definition_owner_code
13506       ,p_line_definition_code       => l_line_definition_code
13507       ,p_accounting_line_code       => l_component_code
13508       ,p_accounting_line_type_code  => l_component_type_code
13509       ,p_accounting_line_appl_id    => l_component_appl_id
13510       ,p_amb_context_code           => l_amb_context_code
13511       ,p_entity_code                => l_entity_code
13512       ,p_event_class_code           => l_event_class_code);
13513    --
13514    -- set accounting class
13515    --
13516    xla_ae_lines_pkg.SetAcctClass(
13517            p_accounting_class_code  => 'TAX'
13518          , p_ae_header_id           => l_ae_header_id
13519          );
13520 
13521    --
13522    -- set rounding class
13523    --
13524    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13525                       'RECEIVABLE';
13526 
13527    --
13528    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13529    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13530    --
13531    -- bulk performance
13532    --
13533    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13534 
13535    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13536       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13537 
13538    -- 4955764
13539    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13540       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13541 
13542    -- 4458381 Public Sector Enh
13543    
13544    --
13545    -- set accounting attributes for the line type
13546    --
13547    l_entered_amt_idx := 3;
13548    l_accted_amt_idx  := 9;
13549    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13550    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13551    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_52);
13552    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13553    l_rec_acct_attrs.array_char_value(2)  := p_source_53;
13554    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13555    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
13556    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13557    l_rec_acct_attrs.array_char_value(4)  := p_source_54;
13558    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13559    l_rec_acct_attrs.array_date_value(5)  := p_source_55;
13560    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13561    l_rec_acct_attrs.array_num_value(6)  := p_source_56;
13562    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13563    l_rec_acct_attrs.array_char_value(7)  := p_source_57;
13564    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
13565    l_rec_acct_attrs.array_char_value(8)  := p_source_58;
13566    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
13567    l_rec_acct_attrs.array_num_value(9)  := p_source_59;
13568    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
13569    l_rec_acct_attrs.array_num_value(10)  := p_source_60;
13570    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
13571    l_rec_acct_attrs.array_num_value(11)  := p_source_61;
13572    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
13573    l_rec_acct_attrs.array_char_value(12)  := p_source_39;
13574    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
13575    l_rec_acct_attrs.array_num_value(13)  := p_source_62;
13576 
13577    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13578    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13579 
13580    ---------------------------------------------------------------------------------------------------------------
13581    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13585    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13582    ---------------------------------------------------------------------------------------------------------------
13583    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13584 
13586    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13587 
13588    IF xla_accounting_cache_pkg.GetValueChar
13589          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13590          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13591    AND l_bflow_method_code = 'PRIOR_ENTRY'
13592 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13593    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13594          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13595        )
13596    THEN
13597          xla_ae_lines_pkg.BflowUpgEntry
13598            (p_business_method_code    => l_bflow_method_code
13599            ,p_business_class_code     => l_bflow_class_code
13600            ,p_balance_type            => l_balance_type_code);
13601    ELSE
13602       NULL;
13603 -- No business flow processing for business flow method of NONE.
13604    END IF;
13605 
13606    --
13607    -- call analytical criteria
13608    --
13609    
13610    --
13611    -- call description
13612    --
13613    -- No description or it is inherited.
13614    --
13615    -- call ADRs
13616    -- Bug 4922099
13617    --
13618    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13619         (NVL(l_actual_upg_option, 'N') = 'O') OR
13620         (NVL(l_enc_upg_option, 'N') = 'O')
13621       )
13622    THEN
13623    NULL;
13624    --
13625    --
13626    
13627   l_ccid := AcctDerRule_20(
13628            p_application_id           => p_application_id
13629          , p_ae_header_id             => l_ae_header_id 
13630 , p_source_22 => p_source_22
13631          , x_transaction_coa_id       => l_adr_transaction_coa_id
13632          , x_accounting_coa_id        => l_adr_accounting_coa_id
13633          , x_value_type_code          => l_adr_value_type_code
13634          , p_side                     => 'NA'
13635    );
13636 
13637    xla_ae_lines_pkg.set_ccid(
13638     p_code_combination_id          => l_ccid
13639   , p_value_type_code              => l_adr_value_type_code
13640   , p_transaction_coa_id           => l_adr_transaction_coa_id
13641   , p_accounting_coa_id            => l_adr_accounting_coa_id
13642   , p_adr_code                     => 'DIST_CCID'
13643   , p_adr_type_code                => 'S'
13644   , p_component_type               => l_component_type
13645   , p_component_code               => l_component_code
13646   , p_component_type_code          => l_component_type_code
13647   , p_component_appl_id            => l_component_appl_id
13648   , p_amb_context_code             => l_amb_context_code
13649   , p_side                         => 'NA'
13650   );
13651 
13652 
13653    --
13654    --
13655    END IF;
13656    --
13657    -- Bug 4922099
13658    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13659           (NVL(l_enc_upg_option, 'N') = 'O')
13660         ) AND
13661         (l_bflow_method_code = 'PRIOR_ENTRY')
13662       )
13663    THEN
13664       IF
13665       --
13666       1 = 2
13667       --
13668       THEN
13669       xla_accounting_err_pkg.build_message
13670                                     (p_appli_s_name            => 'XLA'
13671                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13672                                     ,p_token_1                 => 'LINE_NUMBER'
13673                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13674                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13675                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13676                                                                              l_component_type
13677                                                                             ,l_component_code
13678                                                                             ,l_component_type_code
13679                                                                             ,l_component_appl_id
13680                                                                             ,l_amb_context_code
13681                                                                             ,l_entity_code
13682                                                                             ,l_event_class_code
13683                                                                            )
13684                                     ,p_token_3                 => 'OWNER'
13685                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13686                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13687                                                                           ,p_lookup_code    => l_component_type_code
13688                                                                          )
13689                                     ,p_token_4                 => 'PRODUCT_NAME'
13690                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13691                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13695                                        );
13692                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13693                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13694                                     ,p_ae_header_id            =>  NULL
13696 
13697         IF (C_LEVEL_ERROR>= g_log_level) THEN
13698                  trace
13699                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13700                       ,p_level    => C_LEVEL_ERROR
13701                       ,p_module   => l_log_module);
13702         END IF;
13703       END IF;
13704    END IF;
13705    --
13706    --
13707    ------------------------------------------------------------------------------------------------
13708    -- 4219869 Business Flow
13709    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13710    -- Prior Entry.  Currently, the following code is always generated.
13711    ------------------------------------------------------------------------------------------------
13712    XLA_AE_LINES_PKG.ValidateCurrentLine;
13713 
13714    ------------------------------------------------------------------------------------
13715    -- 4219869 Business Flow
13716    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13717    ------------------------------------------------------------------------------------
13718    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13719 
13720    ----------------------------------------------------------------------------------
13721    -- 4219869 Business Flow
13722    -- Update journal entry status -- Need to generate this within IF <condition>
13723    ----------------------------------------------------------------------------------
13724    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13725          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13726          ,p_balance_type_code => l_balance_type_code
13727          );
13728 
13729    -------------------------------------------------------------------------------------------
13730    -- 4262811 - Generate the Accrual Reversal lines
13731    -------------------------------------------------------------------------------------------
13732    BEGIN
13733       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13734                               (g_array_event(p_event_id).array_value_num('header_index'));
13735       IF l_acc_rev_flag IS NULL THEN
13736          l_acc_rev_flag := 'N';
13737       END IF;
13738    EXCEPTION
13739       WHEN OTHERS THEN
13740          l_acc_rev_flag := 'N';
13741    END;
13742    --
13743    IF (l_acc_rev_flag = 'Y') THEN
13744 
13745        -- 4645092  ------------------------------------------------------------------------------
13746        -- To allow MPA report to determine if it should generate report process
13747        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13748        ------------------------------------------------------------------------------------------
13749 
13750        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13751        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13752    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
13753    -- call ADRs
13754    -- Bug 4922099
13755    --
13756    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13757         (NVL(l_actual_upg_option, 'N') = 'O') OR
13758         (NVL(l_enc_upg_option, 'N') = 'O')
13759       )
13760    THEN
13761    NULL;
13762    --
13763    --
13764    
13765   l_ccid := AcctDerRule_20(
13766            p_application_id           => p_application_id
13767          , p_ae_header_id             => l_ae_header_id 
13768 , p_source_22 => p_source_22
13769          , x_transaction_coa_id       => l_adr_transaction_coa_id
13770          , x_accounting_coa_id        => l_adr_accounting_coa_id
13771          , x_value_type_code          => l_adr_value_type_code
13772          , p_side                     => 'NA'
13773    );
13774 
13775    xla_ae_lines_pkg.set_ccid(
13776     p_code_combination_id          => l_ccid
13777   , p_value_type_code              => l_adr_value_type_code
13778   , p_transaction_coa_id           => l_adr_transaction_coa_id
13779   , p_accounting_coa_id            => l_adr_accounting_coa_id
13780   , p_adr_code                     => 'DIST_CCID'
13781   , p_adr_type_code                => 'S'
13782   , p_component_type               => l_component_type
13783   , p_component_code               => l_component_code
13784   , p_component_type_code          => l_component_type_code
13785   , p_component_appl_id            => l_component_appl_id
13786   , p_amb_context_code             => l_amb_context_code
13787   , p_side                         => 'NA'
13788   );
13789 
13790 
13791    --
13792    --
13793    END IF;
13794 
13795        --
13796        -- Update the line information that should be overwritten
13797        --
13798        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13799                                          p_header_num   => 1);
13800        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13801 
13805           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13802        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13803 
13804        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13806        END IF;
13807 
13808       --
13809       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13810       --
13811       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13812           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13813       ELSE
13814           ---------------------------------------------------------------------------------------------------
13815           -- 4262811a Switch Sign
13816           ---------------------------------------------------------------------------------------------------
13817           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13818           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13819                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13820           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13821                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13822           -- 5132302
13823           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13824                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13825 
13826       END IF;
13827 
13828       -- 4955764
13829       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13830       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13831 
13832 
13833       XLA_AE_LINES_PKG.ValidateCurrentLine;
13834       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13835 
13836       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13837                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13838                ,p_balance_type_code => l_balance_type_code);
13839 
13840    END IF;
13841 
13842    -----------------------------------------------------------------------------------------
13843    -- 4262811 Multiperiod Accounting
13844    -----------------------------------------------------------------------------------------
13845      -- No MPA option is assigned.
13846 
13847 
13848 END IF;
13849 END IF;
13850 --
13851 
13852 --
13853 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13854    trace
13855       (p_msg      => 'END of AcctLineType_43'
13856       ,p_level    => C_LEVEL_PROCEDURE
13857       ,p_module   => l_log_module);
13858 END IF;
13859 --
13860 EXCEPTION
13861   WHEN xla_exceptions_pkg.application_exception THEN
13862       RAISE;
13863   WHEN OTHERS THEN
13864        xla_exceptions_pkg.raise_message
13865            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_43');
13866 END AcctLineType_43;
13867 --
13868 
13869 ---------------------------------------
13870 --
13871 -- PRIVATE FUNCTION
13872 --         AcctLineType_44
13873 --
13874 ---------------------------------------
13875 PROCEDURE AcctLineType_44 (
13876   p_application_id        IN NUMBER
13877  ,p_event_id              IN NUMBER
13878  ,p_calculate_acctd_flag  IN VARCHAR2
13879  ,p_calculate_g_l_flag    IN VARCHAR2
13880  ,p_actual_flag           IN OUT VARCHAR2
13881  ,p_balance_type_code     OUT VARCHAR2
13882  ,p_gain_or_loss_ref      OUT VARCHAR2
13883  
13884 --Distribution GL Account
13885  , p_source_22            IN NUMBER
13886 --Distribution Source Type
13887  , p_source_27            IN VARCHAR2
13888 --Receivable Activity Type
13889  , p_source_28            IN VARCHAR2
13890 --Entered Amount
13891  , p_source_31            IN NUMBER
13892 --SLA Party Type
13893  , p_source_39            IN VARCHAR2
13894 --Credit Memo Distribution Identifier
13895  , p_source_52            IN NUMBER
13896 --Credit memo distributions type
13897  , p_source_53            IN VARCHAR2
13898 --Credit Memo Currency Code
13899  , p_source_54            IN VARCHAR2
13900 --Credit Memo Exchange Date
13901  , p_source_55            IN DATE
13902 --Credit Memo Exchange Rate
13903  , p_source_56            IN NUMBER
13904 --Credit Memo Exchange Rate Type
13905  , p_source_57            IN VARCHAR2
13906 --Gain Loss Reference
13907  , p_source_58            IN VARCHAR2
13908 --Credit Memo Accounting Amount
13909  , p_source_59            IN NUMBER
13910 --Credit Memo Bill To Customer Account Identifier
13911  , p_source_60            IN NUMBER
13912 --Credit Memo Bill To Customer Site Use Identifier
13913  , p_source_61            IN NUMBER
13914 --Credit Memo Tax Line Identifier
13915  , p_source_62            IN NUMBER
13916 )
13917 IS
13918 
13919 l_component_type              VARCHAR2(80);
13920 l_component_code              VARCHAR2(30);
13921 l_component_type_code         VARCHAR2(1);
13922 l_component_appl_id           INTEGER;
13923 l_amb_context_code            VARCHAR2(30);
13924 l_entity_code                 VARCHAR2(30);
13925 l_event_class_code            VARCHAR2(30);
13926 l_ae_header_id                NUMBER;
13930 --
13927 l_event_type_code             VARCHAR2(30);
13928 l_line_definition_code        VARCHAR2(30);
13929 l_line_definition_owner_code  VARCHAR2(1);
13931 -- adr variables
13932 l_segment                     VARCHAR2(30);
13933 l_ccid                        NUMBER;
13934 l_adr_transaction_coa_id      NUMBER;
13935 l_adr_accounting_coa_id       NUMBER;
13936 l_adr_flexfield_segment_code  VARCHAR2(30);
13937 l_adr_flex_value_set_id       NUMBER;
13938 l_adr_value_type_code         VARCHAR2(30);
13939 l_adr_value_combination_id    NUMBER;
13940 l_adr_value_segment_code      VARCHAR2(30);
13941 
13942 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13943 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13944 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13945 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13946 
13947 -- 4262811 Variables ------------------------------------------------------------------------------------------
13948 l_entered_amt_idx             NUMBER;
13949 l_accted_amt_idx              NUMBER;
13950 l_acc_rev_flag                VARCHAR2(1);
13951 l_accrual_line_num            NUMBER;
13952 l_tmp_amt                     NUMBER;
13953 l_acc_rev_natural_side_code   VARCHAR2(1);
13954 
13955 l_num_entries                 NUMBER;
13956 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13957 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13958 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13959 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13960 l_recog_line_1                NUMBER;
13961 l_recog_line_2                NUMBER;
13962 
13963 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13964 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13965 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13966 
13967 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13968 
13969 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13970 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13971 
13972 ---------------------------------------------------------------------------------------------------------------
13973 
13974 
13975 --
13976 -- bulk performance
13977 --
13978 l_balance_type_code           VARCHAR2(1);
13979 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13980 l_log_module                  VARCHAR2(240);
13981 
13982 --
13983 -- Upgrade strategy
13984 --
13985 l_actual_upg_option           VARCHAR2(1);
13986 l_enc_upg_option           VARCHAR2(1);
13987 
13988 --
13989 BEGIN
13990 --
13991 IF g_log_enabled THEN
13992       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_44';
13993 END IF;
13994 --
13995 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13996 
13997       trace
13998          (p_msg      => 'BEGIN of AcctLineType_44'
13999          ,p_level    => C_LEVEL_PROCEDURE
14000          ,p_module   => l_log_module);
14001 
14002 END IF;
14003 --
14004 l_component_type             := 'AMB_JLT';
14005 l_component_code             := 'CM_APP_REFUND';
14006 l_component_type_code        := 'S';
14007 l_component_appl_id          :=  222;
14008 l_amb_context_code           := 'DEFAULT';
14009 l_entity_code                := 'TRANSACTIONS';
14010 l_event_class_code           := 'CREDIT_MEMO';
14011 l_event_type_code            := 'CREDIT_MEMO_ALL';
14012 l_line_definition_owner_code := 'S';
14013 l_line_definition_code       := 'JA_CN_AR_CM_DEFAULT_ACCRUAL';
14014 --
14015 l_balance_type_code          := 'A';
14016 l_segment                     := NULL;
14017 l_ccid                        := NULL;
14018 l_adr_transaction_coa_id      := NULL;
14019 l_adr_accounting_coa_id       := NULL;
14020 l_adr_flexfield_segment_code  := NULL;
14021 l_adr_flex_value_set_id       := NULL;
14022 l_adr_value_type_code         := NULL;
14023 l_adr_value_combination_id    := NULL;
14024 l_adr_value_segment_code      := NULL;
14025 
14026 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14027 l_bflow_class_code           := '';    -- 4219869 Business Flow
14028 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14029 l_budgetary_control_flag     := 'N';
14030 
14031 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14032 l_bflow_applied_to_amt       := NULL; -- 5132302
14033 l_entered_amt_idx            := NULL;          -- 4262811
14034 l_accted_amt_idx             := NULL;          -- 4262811
14035 l_acc_rev_flag               := NULL;          -- 4262811
14036 l_accrual_line_num           := NULL;          -- 4262811
14037 l_tmp_amt                    := NULL;          -- 4262811
14038 --
14039  
14040 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14041     l_balance_type_code <> 'B' THEN
14042 IF (NVL(p_source_27,'
14043 ') =  'ACTIVITY' AND 
14044 NVL(p_source_28,'
14045 ') =  'REFUND') OR 
14046 (NVL(p_source_27,'
14047 ') =  'ACTIVITY' AND 
14048 NVL(p_source_28,'
14049 ') =  'CM_REFUND')
14050  THEN 
14051 
14052    --
14053    XLA_AE_LINES_PKG.SetNewLine;
14054 
14055    p_balance_type_code          := l_balance_type_code;
14059      p_actual_flag :='A';
14056    -- set the flag so later we will know whether the gain loss line needs to be created
14057    
14058    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14060    END IF;
14061 
14062    --
14063    -- bulk performance
14064    --
14065    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14066                                       p_header_num   => 0); -- 4262811
14067    --
14068    -- set accounting line options
14069    --
14070    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14071            p_natural_side_code          => 'C'
14072          , p_gain_or_loss_flag          => 'N'
14073          , p_gl_transfer_mode_code      => 'S'
14074          , p_acct_entry_type_code       => 'A'
14075          , p_switch_side_flag           => 'Y'
14076          , p_merge_duplicate_code       => 'A'
14077          );
14078    --
14079    l_acc_rev_natural_side_code := 'D';  -- 4262811
14080    -- 
14081    --
14082    -- set accounting line type info
14083    --
14084    xla_ae_lines_pkg.SetAcctLineType
14085       (p_component_type             => l_component_type
14086       ,p_event_type_code            => l_event_type_code
14087       ,p_line_definition_owner_code => l_line_definition_owner_code
14088       ,p_line_definition_code       => l_line_definition_code
14089       ,p_accounting_line_code       => l_component_code
14090       ,p_accounting_line_type_code  => l_component_type_code
14091       ,p_accounting_line_appl_id    => l_component_appl_id
14092       ,p_amb_context_code           => l_amb_context_code
14093       ,p_entity_code                => l_entity_code
14094       ,p_event_class_code           => l_event_class_code);
14095    --
14096    -- set accounting class
14097    --
14098    xla_ae_lines_pkg.SetAcctClass(
14099            p_accounting_class_code  => 'REFUND'
14100          , p_ae_header_id           => l_ae_header_id
14101          );
14102 
14103    --
14104    -- set rounding class
14105    --
14106    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14107                       'REFUND';
14108 
14109    --
14110    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14111    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14112    --
14113    -- bulk performance
14114    --
14115    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14116 
14117    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14118       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14119 
14120    -- 4955764
14121    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14122       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14123 
14124    -- 4458381 Public Sector Enh
14125    
14126    --
14127    -- set accounting attributes for the line type
14128    --
14129    l_entered_amt_idx := 3;
14130    l_accted_amt_idx  := 9;
14131    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14132    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14133    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_52);
14134    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
14135    l_rec_acct_attrs.array_char_value(2)  := p_source_53;
14136    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
14137    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
14138    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
14139    l_rec_acct_attrs.array_char_value(4)  := p_source_54;
14140    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
14141    l_rec_acct_attrs.array_date_value(5)  := p_source_55;
14142    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
14143    l_rec_acct_attrs.array_num_value(6)  := p_source_56;
14144    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
14145    l_rec_acct_attrs.array_char_value(7)  := p_source_57;
14146    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
14147    l_rec_acct_attrs.array_char_value(8)  := p_source_58;
14148    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
14149    l_rec_acct_attrs.array_num_value(9)  := p_source_59;
14150    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
14151    l_rec_acct_attrs.array_num_value(10)  := p_source_60;
14152    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
14153    l_rec_acct_attrs.array_num_value(11)  := p_source_61;
14154    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
14155    l_rec_acct_attrs.array_char_value(12)  := p_source_39;
14156    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
14157    l_rec_acct_attrs.array_num_value(13)  := p_source_62;
14158 
14159    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14160    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14161 
14162    ---------------------------------------------------------------------------------------------------------------
14163    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14164    ---------------------------------------------------------------------------------------------------------------
14168    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14165    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14166 
14167    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14169 
14170    IF xla_accounting_cache_pkg.GetValueChar
14171          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14172          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14173    AND l_bflow_method_code = 'PRIOR_ENTRY'
14174 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14175    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14176          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14177        )
14178    THEN
14179          xla_ae_lines_pkg.BflowUpgEntry
14180            (p_business_method_code    => l_bflow_method_code
14181            ,p_business_class_code     => l_bflow_class_code
14182            ,p_balance_type            => l_balance_type_code);
14183    ELSE
14184       NULL;
14185 -- No business flow processing for business flow method of NONE.
14186    END IF;
14187 
14188    --
14189    -- call analytical criteria
14190    --
14191    
14192    --
14193    -- call description
14194    --
14195    -- No description or it is inherited.
14196    --
14197    -- call ADRs
14198    -- Bug 4922099
14199    --
14200    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14201         (NVL(l_actual_upg_option, 'N') = 'O') OR
14202         (NVL(l_enc_upg_option, 'N') = 'O')
14203       )
14204    THEN
14205    NULL;
14206    --
14207    --
14208    
14209   l_ccid := AcctDerRule_20(
14210            p_application_id           => p_application_id
14211          , p_ae_header_id             => l_ae_header_id 
14212 , p_source_22 => p_source_22
14213          , x_transaction_coa_id       => l_adr_transaction_coa_id
14214          , x_accounting_coa_id        => l_adr_accounting_coa_id
14215          , x_value_type_code          => l_adr_value_type_code
14216          , p_side                     => 'NA'
14217    );
14218 
14219    xla_ae_lines_pkg.set_ccid(
14220     p_code_combination_id          => l_ccid
14221   , p_value_type_code              => l_adr_value_type_code
14222   , p_transaction_coa_id           => l_adr_transaction_coa_id
14223   , p_accounting_coa_id            => l_adr_accounting_coa_id
14224   , p_adr_code                     => 'DIST_CCID'
14225   , p_adr_type_code                => 'S'
14226   , p_component_type               => l_component_type
14227   , p_component_code               => l_component_code
14228   , p_component_type_code          => l_component_type_code
14229   , p_component_appl_id            => l_component_appl_id
14230   , p_amb_context_code             => l_amb_context_code
14231   , p_side                         => 'NA'
14232   );
14233 
14234 
14235    --
14236    --
14237    END IF;
14238    --
14239    -- Bug 4922099
14240    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14241           (NVL(l_enc_upg_option, 'N') = 'O')
14242         ) AND
14243         (l_bflow_method_code = 'PRIOR_ENTRY')
14244       )
14245    THEN
14246       IF
14247       --
14248       1 = 2
14249       --
14250       THEN
14251       xla_accounting_err_pkg.build_message
14252                                     (p_appli_s_name            => 'XLA'
14253                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14254                                     ,p_token_1                 => 'LINE_NUMBER'
14255                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14256                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14257                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14258                                                                              l_component_type
14259                                                                             ,l_component_code
14260                                                                             ,l_component_type_code
14261                                                                             ,l_component_appl_id
14262                                                                             ,l_amb_context_code
14263                                                                             ,l_entity_code
14264                                                                             ,l_event_class_code
14265                                                                            )
14266                                     ,p_token_3                 => 'OWNER'
14267                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14268                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14269                                                                           ,p_lookup_code    => l_component_type_code
14270                                                                          )
14271                                     ,p_token_4                 => 'PRODUCT_NAME'
14272                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14276                                     ,p_ae_header_id            =>  NULL
14273                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14274                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14275                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14277                                        );
14278 
14279         IF (C_LEVEL_ERROR>= g_log_level) THEN
14280                  trace
14281                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14282                       ,p_level    => C_LEVEL_ERROR
14283                       ,p_module   => l_log_module);
14284         END IF;
14285       END IF;
14286    END IF;
14287    --
14288    --
14289    ------------------------------------------------------------------------------------------------
14290    -- 4219869 Business Flow
14291    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14292    -- Prior Entry.  Currently, the following code is always generated.
14293    ------------------------------------------------------------------------------------------------
14294    XLA_AE_LINES_PKG.ValidateCurrentLine;
14295 
14296    ------------------------------------------------------------------------------------
14297    -- 4219869 Business Flow
14298    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14299    ------------------------------------------------------------------------------------
14300    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14301 
14302    ----------------------------------------------------------------------------------
14303    -- 4219869 Business Flow
14304    -- Update journal entry status -- Need to generate this within IF <condition>
14305    ----------------------------------------------------------------------------------
14306    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14307          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14308          ,p_balance_type_code => l_balance_type_code
14309          );
14310 
14311    -------------------------------------------------------------------------------------------
14312    -- 4262811 - Generate the Accrual Reversal lines
14313    -------------------------------------------------------------------------------------------
14314    BEGIN
14315       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14316                               (g_array_event(p_event_id).array_value_num('header_index'));
14317       IF l_acc_rev_flag IS NULL THEN
14318          l_acc_rev_flag := 'N';
14319       END IF;
14320    EXCEPTION
14321       WHEN OTHERS THEN
14322          l_acc_rev_flag := 'N';
14323    END;
14324    --
14325    IF (l_acc_rev_flag = 'Y') THEN
14326 
14327        -- 4645092  ------------------------------------------------------------------------------
14328        -- To allow MPA report to determine if it should generate report process
14329        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14330        ------------------------------------------------------------------------------------------
14331 
14332        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14333        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14334    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
14335    -- call ADRs
14336    -- Bug 4922099
14337    --
14338    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14339         (NVL(l_actual_upg_option, 'N') = 'O') OR
14340         (NVL(l_enc_upg_option, 'N') = 'O')
14341       )
14342    THEN
14343    NULL;
14344    --
14345    --
14346    
14347   l_ccid := AcctDerRule_20(
14348            p_application_id           => p_application_id
14349          , p_ae_header_id             => l_ae_header_id 
14350 , p_source_22 => p_source_22
14351          , x_transaction_coa_id       => l_adr_transaction_coa_id
14352          , x_accounting_coa_id        => l_adr_accounting_coa_id
14353          , x_value_type_code          => l_adr_value_type_code
14354          , p_side                     => 'NA'
14355    );
14356 
14357    xla_ae_lines_pkg.set_ccid(
14358     p_code_combination_id          => l_ccid
14359   , p_value_type_code              => l_adr_value_type_code
14360   , p_transaction_coa_id           => l_adr_transaction_coa_id
14361   , p_accounting_coa_id            => l_adr_accounting_coa_id
14362   , p_adr_code                     => 'DIST_CCID'
14363   , p_adr_type_code                => 'S'
14364   , p_component_type               => l_component_type
14365   , p_component_code               => l_component_code
14366   , p_component_type_code          => l_component_type_code
14367   , p_component_appl_id            => l_component_appl_id
14368   , p_amb_context_code             => l_amb_context_code
14369   , p_side                         => 'NA'
14370   );
14371 
14372 
14373    --
14374    --
14375    END IF;
14376 
14377        --
14378        -- Update the line information that should be overwritten
14379        --
14380        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14381                                          p_header_num   => 1);
14382        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14383 
14387           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14384        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14385 
14386        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14388        END IF;
14389 
14390       --
14391       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14392       --
14393       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14394           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14395       ELSE
14396           ---------------------------------------------------------------------------------------------------
14397           -- 4262811a Switch Sign
14398           ---------------------------------------------------------------------------------------------------
14399           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14400           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14401                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14402           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14403                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14404           -- 5132302
14405           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14406                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14407 
14408       END IF;
14409 
14410       -- 4955764
14411       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14412       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14413 
14414 
14415       XLA_AE_LINES_PKG.ValidateCurrentLine;
14416       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14417 
14418       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14419                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14420                ,p_balance_type_code => l_balance_type_code);
14421 
14422    END IF;
14423 
14424    -----------------------------------------------------------------------------------------
14425    -- 4262811 Multiperiod Accounting
14426    -----------------------------------------------------------------------------------------
14427      -- No MPA option is assigned.
14428 
14429 
14430 END IF;
14431 END IF;
14432 --
14433 
14434 --
14435 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14436    trace
14437       (p_msg      => 'END of AcctLineType_44'
14438       ,p_level    => C_LEVEL_PROCEDURE
14439       ,p_module   => l_log_module);
14440 END IF;
14441 --
14442 EXCEPTION
14443   WHEN xla_exceptions_pkg.application_exception THEN
14444       RAISE;
14445   WHEN OTHERS THEN
14446        xla_exceptions_pkg.raise_message
14447            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_44');
14448 END AcctLineType_44;
14449 --
14450 
14451 ---------------------------------------
14452 --
14453 -- PRIVATE FUNCTION
14454 --         AcctLineType_45
14455 --
14456 ---------------------------------------
14457 PROCEDURE AcctLineType_45 (
14458   p_application_id        IN NUMBER
14459  ,p_event_id              IN NUMBER
14460  ,p_calculate_acctd_flag  IN VARCHAR2
14461  ,p_calculate_g_l_flag    IN VARCHAR2
14462  ,p_actual_flag           IN OUT VARCHAR2
14463  ,p_balance_type_code     OUT VARCHAR2
14464  ,p_gain_or_loss_ref      OUT VARCHAR2
14465  
14466 --Credit Memo Distribution GL Account
14467  , p_source_14            IN NUMBER
14468 --SLA Party Type
14469  , p_source_39            IN VARCHAR2
14470 --Credit Memo Distribution Identifier
14471  , p_source_52            IN NUMBER
14472 --Credit memo distributions type
14473  , p_source_53            IN VARCHAR2
14474 --Credit Memo Currency Code
14475  , p_source_54            IN VARCHAR2
14476 --Credit Memo Exchange Date
14477  , p_source_55            IN DATE
14478 --Credit Memo Exchange Rate
14479  , p_source_56            IN NUMBER
14480 --Credit Memo Exchange Rate Type
14481  , p_source_57            IN VARCHAR2
14482 --Gain Loss Reference
14483  , p_source_58            IN VARCHAR2
14484 --Credit Memo Accounting Amount
14485  , p_source_59            IN NUMBER
14486 --Credit Memo Bill To Customer Account Identifier
14487  , p_source_60            IN NUMBER
14488 --Credit Memo Bill To Customer Site Use Identifier
14489  , p_source_61            IN NUMBER
14490 --Credit Memo Tax Line Identifier
14491  , p_source_62            IN NUMBER
14492 --Credit Memo Distribution Account Class
14493  , p_source_63            IN VARCHAR2
14494 --Credit Memo Distribution Entered Amount
14495  , p_source_64            IN NUMBER
14496 )
14497 IS
14498 
14499 l_component_type              VARCHAR2(80);
14500 l_component_code              VARCHAR2(30);
14501 l_component_type_code         VARCHAR2(1);
14502 l_component_appl_id           INTEGER;
14503 l_amb_context_code            VARCHAR2(30);
14504 l_entity_code                 VARCHAR2(30);
14505 l_event_class_code            VARCHAR2(30);
14509 l_line_definition_owner_code  VARCHAR2(1);
14506 l_ae_header_id                NUMBER;
14507 l_event_type_code             VARCHAR2(30);
14508 l_line_definition_code        VARCHAR2(30);
14510 --
14511 -- adr variables
14512 l_segment                     VARCHAR2(30);
14513 l_ccid                        NUMBER;
14514 l_adr_transaction_coa_id      NUMBER;
14515 l_adr_accounting_coa_id       NUMBER;
14516 l_adr_flexfield_segment_code  VARCHAR2(30);
14517 l_adr_flex_value_set_id       NUMBER;
14518 l_adr_value_type_code         VARCHAR2(30);
14519 l_adr_value_combination_id    NUMBER;
14520 l_adr_value_segment_code      VARCHAR2(30);
14521 
14522 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14523 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14524 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14525 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14526 
14527 -- 4262811 Variables ------------------------------------------------------------------------------------------
14528 l_entered_amt_idx             NUMBER;
14529 l_accted_amt_idx              NUMBER;
14530 l_acc_rev_flag                VARCHAR2(1);
14531 l_accrual_line_num            NUMBER;
14532 l_tmp_amt                     NUMBER;
14533 l_acc_rev_natural_side_code   VARCHAR2(1);
14534 
14535 l_num_entries                 NUMBER;
14536 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14537 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14538 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14539 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14540 l_recog_line_1                NUMBER;
14541 l_recog_line_2                NUMBER;
14542 
14543 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14544 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14545 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14546 
14547 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14548 
14549 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14550 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14551 
14552 ---------------------------------------------------------------------------------------------------------------
14553 
14554 
14555 --
14556 -- bulk performance
14557 --
14558 l_balance_type_code           VARCHAR2(1);
14559 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14560 l_log_module                  VARCHAR2(240);
14561 
14562 --
14563 -- Upgrade strategy
14564 --
14565 l_actual_upg_option           VARCHAR2(1);
14566 l_enc_upg_option           VARCHAR2(1);
14567 
14568 --
14569 BEGIN
14570 --
14571 IF g_log_enabled THEN
14572       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_45';
14573 END IF;
14574 --
14575 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14576 
14577       trace
14578          (p_msg      => 'BEGIN of AcctLineType_45'
14579          ,p_level    => C_LEVEL_PROCEDURE
14580          ,p_module   => l_log_module);
14581 
14582 END IF;
14583 --
14584 l_component_type             := 'AMB_JLT';
14585 l_component_code             := 'CM_CHARGES';
14586 l_component_type_code        := 'S';
14587 l_component_appl_id          :=  222;
14588 l_amb_context_code           := 'DEFAULT';
14589 l_entity_code                := 'TRANSACTIONS';
14590 l_event_class_code           := 'CREDIT_MEMO';
14591 l_event_type_code            := 'CREDIT_MEMO_ALL';
14592 l_line_definition_owner_code := 'S';
14593 l_line_definition_code       := 'JA_CN_AR_CM_DEFAULT_ACCRUAL';
14594 --
14595 l_balance_type_code          := 'A';
14596 l_segment                     := NULL;
14597 l_ccid                        := NULL;
14598 l_adr_transaction_coa_id      := NULL;
14599 l_adr_accounting_coa_id       := NULL;
14600 l_adr_flexfield_segment_code  := NULL;
14601 l_adr_flex_value_set_id       := NULL;
14602 l_adr_value_type_code         := NULL;
14603 l_adr_value_combination_id    := NULL;
14604 l_adr_value_segment_code      := NULL;
14605 
14606 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14607 l_bflow_class_code           := '';    -- 4219869 Business Flow
14608 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14609 l_budgetary_control_flag     := 'N';
14610 
14611 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14612 l_bflow_applied_to_amt       := NULL; -- 5132302
14613 l_entered_amt_idx            := NULL;          -- 4262811
14614 l_accted_amt_idx             := NULL;          -- 4262811
14615 l_acc_rev_flag               := NULL;          -- 4262811
14616 l_accrual_line_num           := NULL;          -- 4262811
14617 l_tmp_amt                    := NULL;          -- 4262811
14618 --
14619  
14620 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14621     l_balance_type_code <> 'B' THEN
14622 IF NVL(p_source_63,'
14623 ') =  'CHARGES'
14624  THEN 
14625 
14626    --
14627    XLA_AE_LINES_PKG.SetNewLine;
14628 
14629    p_balance_type_code          := l_balance_type_code;
14630    -- set the flag so later we will know whether the gain loss line needs to be created
14631    
14632    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14636    --
14633      p_actual_flag :='A';
14634    END IF;
14635 
14637    -- bulk performance
14638    --
14639    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14640                                       p_header_num   => 0); -- 4262811
14641    --
14642    -- set accounting line options
14643    --
14644    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14645            p_natural_side_code          => 'C'
14646          , p_gain_or_loss_flag          => 'N'
14647          , p_gl_transfer_mode_code      => 'S'
14648          , p_acct_entry_type_code       => 'A'
14649          , p_switch_side_flag           => 'Y'
14650          , p_merge_duplicate_code       => 'A'
14651          );
14652    --
14653    l_acc_rev_natural_side_code := 'D';  -- 4262811
14654    -- 
14655    --
14656    -- set accounting line type info
14657    --
14658    xla_ae_lines_pkg.SetAcctLineType
14659       (p_component_type             => l_component_type
14660       ,p_event_type_code            => l_event_type_code
14661       ,p_line_definition_owner_code => l_line_definition_owner_code
14662       ,p_line_definition_code       => l_line_definition_code
14663       ,p_accounting_line_code       => l_component_code
14664       ,p_accounting_line_type_code  => l_component_type_code
14665       ,p_accounting_line_appl_id    => l_component_appl_id
14666       ,p_amb_context_code           => l_amb_context_code
14667       ,p_entity_code                => l_entity_code
14668       ,p_event_class_code           => l_event_class_code);
14669    --
14670    -- set accounting class
14671    --
14672    xla_ae_lines_pkg.SetAcctClass(
14673            p_accounting_class_code  => 'CHARGES'
14674          , p_ae_header_id           => l_ae_header_id
14675          );
14676 
14677    --
14678    -- set rounding class
14679    --
14680    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14681                       'RECEIVABLE';
14682 
14683    --
14684    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14685    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14686    --
14687    -- bulk performance
14688    --
14689    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14690 
14691    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14692       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14693 
14694    -- 4955764
14695    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14696       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14697 
14698    -- 4458381 Public Sector Enh
14699    
14700    --
14701    -- set accounting attributes for the line type
14702    --
14703    l_entered_amt_idx := 3;
14704    l_accted_amt_idx  := 9;
14705    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14706    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14707    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_52);
14708    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
14709    l_rec_acct_attrs.array_char_value(2)  := p_source_53;
14710    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
14711    l_rec_acct_attrs.array_num_value(3)  := p_source_64;
14712    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
14713    l_rec_acct_attrs.array_char_value(4)  := p_source_54;
14714    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
14715    l_rec_acct_attrs.array_date_value(5)  := p_source_55;
14716    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
14717    l_rec_acct_attrs.array_num_value(6)  := p_source_56;
14718    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
14719    l_rec_acct_attrs.array_char_value(7)  := p_source_57;
14720    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
14721    l_rec_acct_attrs.array_char_value(8)  := p_source_58;
14722    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
14723    l_rec_acct_attrs.array_num_value(9)  := p_source_59;
14724    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
14725    l_rec_acct_attrs.array_num_value(10)  := p_source_60;
14726    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
14727    l_rec_acct_attrs.array_num_value(11)  := p_source_61;
14728    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
14729    l_rec_acct_attrs.array_char_value(12)  := p_source_39;
14730    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
14731    l_rec_acct_attrs.array_num_value(13)  := p_source_62;
14732 
14733    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14734    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14735 
14736    ---------------------------------------------------------------------------------------------------------------
14737    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14738    ---------------------------------------------------------------------------------------------------------------
14739    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14740 
14741    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14745          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14742    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14743 
14744    IF xla_accounting_cache_pkg.GetValueChar
14746          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14747    AND l_bflow_method_code = 'PRIOR_ENTRY'
14748 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14749    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14750          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14751        )
14752    THEN
14753          xla_ae_lines_pkg.BflowUpgEntry
14754            (p_business_method_code    => l_bflow_method_code
14755            ,p_business_class_code     => l_bflow_class_code
14756            ,p_balance_type            => l_balance_type_code);
14757    ELSE
14758       NULL;
14759 -- No business flow processing for business flow method of NONE.
14760    END IF;
14761 
14762    --
14763    -- call analytical criteria
14764    --
14765    
14766    --
14767    -- call description
14768    --
14769    -- No description or it is inherited.
14770    --
14771    -- call ADRs
14772    -- Bug 4922099
14773    --
14774    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14775         (NVL(l_actual_upg_option, 'N') = 'O') OR
14776         (NVL(l_enc_upg_option, 'N') = 'O')
14777       )
14778    THEN
14779    NULL;
14780    --
14781    --
14782    
14783   l_ccid := AcctDerRule_12(
14784            p_application_id           => p_application_id
14785          , p_ae_header_id             => l_ae_header_id 
14786 , p_source_14 => p_source_14
14787          , x_transaction_coa_id       => l_adr_transaction_coa_id
14788          , x_accounting_coa_id        => l_adr_accounting_coa_id
14789          , x_value_type_code          => l_adr_value_type_code
14790          , p_side                     => 'NA'
14791    );
14792 
14793    xla_ae_lines_pkg.set_ccid(
14794     p_code_combination_id          => l_ccid
14795   , p_value_type_code              => l_adr_value_type_code
14796   , p_transaction_coa_id           => l_adr_transaction_coa_id
14797   , p_accounting_coa_id            => l_adr_accounting_coa_id
14798   , p_adr_code                     => 'CM_DIST_CCID'
14799   , p_adr_type_code                => 'S'
14800   , p_component_type               => l_component_type
14801   , p_component_code               => l_component_code
14802   , p_component_type_code          => l_component_type_code
14803   , p_component_appl_id            => l_component_appl_id
14804   , p_amb_context_code             => l_amb_context_code
14805   , p_side                         => 'NA'
14806   );
14807 
14808 
14809    --
14810    --
14811    END IF;
14812    --
14813    -- Bug 4922099
14814    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14815           (NVL(l_enc_upg_option, 'N') = 'O')
14816         ) AND
14817         (l_bflow_method_code = 'PRIOR_ENTRY')
14818       )
14819    THEN
14820       IF
14821       --
14822       1 = 2
14823       --
14824       THEN
14825       xla_accounting_err_pkg.build_message
14826                                     (p_appli_s_name            => 'XLA'
14827                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14828                                     ,p_token_1                 => 'LINE_NUMBER'
14829                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14830                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14831                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14832                                                                              l_component_type
14833                                                                             ,l_component_code
14834                                                                             ,l_component_type_code
14835                                                                             ,l_component_appl_id
14836                                                                             ,l_amb_context_code
14837                                                                             ,l_entity_code
14838                                                                             ,l_event_class_code
14839                                                                            )
14840                                     ,p_token_3                 => 'OWNER'
14841                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14842                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14843                                                                           ,p_lookup_code    => l_component_type_code
14844                                                                          )
14845                                     ,p_token_4                 => 'PRODUCT_NAME'
14846                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14847                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14848                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14849                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14853         IF (C_LEVEL_ERROR>= g_log_level) THEN
14850                                     ,p_ae_header_id            =>  NULL
14851                                        );
14852 
14854                  trace
14855                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14856                       ,p_level    => C_LEVEL_ERROR
14857                       ,p_module   => l_log_module);
14858         END IF;
14859       END IF;
14860    END IF;
14861    --
14862    --
14863    ------------------------------------------------------------------------------------------------
14864    -- 4219869 Business Flow
14865    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14866    -- Prior Entry.  Currently, the following code is always generated.
14867    ------------------------------------------------------------------------------------------------
14868    XLA_AE_LINES_PKG.ValidateCurrentLine;
14869 
14870    ------------------------------------------------------------------------------------
14871    -- 4219869 Business Flow
14872    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14873    ------------------------------------------------------------------------------------
14874    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14875 
14876    ----------------------------------------------------------------------------------
14877    -- 4219869 Business Flow
14878    -- Update journal entry status -- Need to generate this within IF <condition>
14879    ----------------------------------------------------------------------------------
14880    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14881          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14882          ,p_balance_type_code => l_balance_type_code
14883          );
14884 
14885    -------------------------------------------------------------------------------------------
14886    -- 4262811 - Generate the Accrual Reversal lines
14887    -------------------------------------------------------------------------------------------
14888    BEGIN
14889       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14890                               (g_array_event(p_event_id).array_value_num('header_index'));
14891       IF l_acc_rev_flag IS NULL THEN
14892          l_acc_rev_flag := 'N';
14893       END IF;
14894    EXCEPTION
14895       WHEN OTHERS THEN
14896          l_acc_rev_flag := 'N';
14897    END;
14898    --
14899    IF (l_acc_rev_flag = 'Y') THEN
14900 
14901        -- 4645092  ------------------------------------------------------------------------------
14902        -- To allow MPA report to determine if it should generate report process
14903        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14904        ------------------------------------------------------------------------------------------
14905 
14906        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14907        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14908    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
14909    -- call ADRs
14910    -- Bug 4922099
14911    --
14912    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14913         (NVL(l_actual_upg_option, 'N') = 'O') OR
14914         (NVL(l_enc_upg_option, 'N') = 'O')
14915       )
14916    THEN
14917    NULL;
14918    --
14919    --
14920    
14921   l_ccid := AcctDerRule_12(
14922            p_application_id           => p_application_id
14923          , p_ae_header_id             => l_ae_header_id 
14924 , p_source_14 => p_source_14
14925          , x_transaction_coa_id       => l_adr_transaction_coa_id
14926          , x_accounting_coa_id        => l_adr_accounting_coa_id
14927          , x_value_type_code          => l_adr_value_type_code
14928          , p_side                     => 'NA'
14929    );
14930 
14931    xla_ae_lines_pkg.set_ccid(
14932     p_code_combination_id          => l_ccid
14933   , p_value_type_code              => l_adr_value_type_code
14934   , p_transaction_coa_id           => l_adr_transaction_coa_id
14935   , p_accounting_coa_id            => l_adr_accounting_coa_id
14936   , p_adr_code                     => 'CM_DIST_CCID'
14937   , p_adr_type_code                => 'S'
14938   , p_component_type               => l_component_type
14939   , p_component_code               => l_component_code
14940   , p_component_type_code          => l_component_type_code
14941   , p_component_appl_id            => l_component_appl_id
14942   , p_amb_context_code             => l_amb_context_code
14943   , p_side                         => 'NA'
14944   );
14945 
14946 
14947    --
14948    --
14949    END IF;
14950 
14951        --
14952        -- Update the line information that should be overwritten
14953        --
14954        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14955                                          p_header_num   => 1);
14956        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14957 
14958        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14959 
14960        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14961           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14962        END IF;
14963 
14964       --
14968           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14965       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14966       --
14967       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14969       ELSE
14970           ---------------------------------------------------------------------------------------------------
14971           -- 4262811a Switch Sign
14972           ---------------------------------------------------------------------------------------------------
14973           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14974           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14975                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14976           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14977                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14978           -- 5132302
14979           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14980                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14981 
14982       END IF;
14983 
14984       -- 4955764
14985       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14986       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14987 
14988 
14989       XLA_AE_LINES_PKG.ValidateCurrentLine;
14990       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14991 
14992       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14993                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14994                ,p_balance_type_code => l_balance_type_code);
14995 
14996    END IF;
14997 
14998    -----------------------------------------------------------------------------------------
14999    -- 4262811 Multiperiod Accounting
15000    -----------------------------------------------------------------------------------------
15001      -- No MPA option is assigned.
15002 
15003 
15004 END IF;
15005 END IF;
15006 --
15007 
15008 --
15009 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15010    trace
15011       (p_msg      => 'END of AcctLineType_45'
15012       ,p_level    => C_LEVEL_PROCEDURE
15013       ,p_module   => l_log_module);
15014 END IF;
15015 --
15016 EXCEPTION
15017   WHEN xla_exceptions_pkg.application_exception THEN
15018       RAISE;
15019   WHEN OTHERS THEN
15020        xla_exceptions_pkg.raise_message
15021            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_45');
15022 END AcctLineType_45;
15023 --
15024 
15025 ---------------------------------------
15026 --
15027 -- PRIVATE FUNCTION
15028 --         AcctLineType_46
15029 --
15030 ---------------------------------------
15031 PROCEDURE AcctLineType_46 (
15032   p_application_id        IN NUMBER
15033  ,p_event_id              IN NUMBER
15034  ,p_calculate_acctd_flag  IN VARCHAR2
15035  ,p_calculate_g_l_flag    IN VARCHAR2
15036  ,p_actual_flag           IN OUT VARCHAR2
15037  ,p_balance_type_code     OUT VARCHAR2
15038  ,p_gain_or_loss_ref      OUT VARCHAR2
15039  
15040 --Distribution GL Account
15041  , p_source_22            IN NUMBER
15042 --SLA Party Type
15043  , p_source_39            IN VARCHAR2
15044 --Credit Memo Distribution Identifier
15045  , p_source_52            IN NUMBER
15046 --Credit memo distributions type
15047  , p_source_53            IN VARCHAR2
15048 --Credit Memo Currency Code
15049  , p_source_54            IN VARCHAR2
15050 --Credit Memo Exchange Date
15051  , p_source_55            IN DATE
15052 --Credit Memo Exchange Rate
15053  , p_source_56            IN NUMBER
15054 --Credit Memo Exchange Rate Type
15055  , p_source_57            IN VARCHAR2
15056 --Gain Loss Reference
15057  , p_source_58            IN VARCHAR2
15058 --Credit Memo Accounting Amount
15059  , p_source_59            IN NUMBER
15060 --Credit Memo Bill To Customer Account Identifier
15061  , p_source_60            IN NUMBER
15062 --Credit Memo Bill To Customer Site Use Identifier
15063  , p_source_61            IN NUMBER
15064 --Credit Memo Tax Line Identifier
15065  , p_source_62            IN NUMBER
15066 --Credit Memo Distribution Account Class
15067  , p_source_63            IN VARCHAR2
15068 --Credit Memo Distribution Entered Amount
15069  , p_source_64            IN NUMBER
15070 )
15071 IS
15072 
15073 l_component_type              VARCHAR2(80);
15074 l_component_code              VARCHAR2(30);
15075 l_component_type_code         VARCHAR2(1);
15076 l_component_appl_id           INTEGER;
15077 l_amb_context_code            VARCHAR2(30);
15078 l_entity_code                 VARCHAR2(30);
15079 l_event_class_code            VARCHAR2(30);
15080 l_ae_header_id                NUMBER;
15081 l_event_type_code             VARCHAR2(30);
15082 l_line_definition_code        VARCHAR2(30);
15083 l_line_definition_owner_code  VARCHAR2(1);
15084 --
15085 -- adr variables
15086 l_segment                     VARCHAR2(30);
15087 l_ccid                        NUMBER;
15088 l_adr_transaction_coa_id      NUMBER;
15089 l_adr_accounting_coa_id       NUMBER;
15090 l_adr_flexfield_segment_code  VARCHAR2(30);
15094 l_adr_value_segment_code      VARCHAR2(30);
15091 l_adr_flex_value_set_id       NUMBER;
15092 l_adr_value_type_code         VARCHAR2(30);
15093 l_adr_value_combination_id    NUMBER;
15095 
15096 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15097 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15098 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15099 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15100 
15101 -- 4262811 Variables ------------------------------------------------------------------------------------------
15102 l_entered_amt_idx             NUMBER;
15103 l_accted_amt_idx              NUMBER;
15104 l_acc_rev_flag                VARCHAR2(1);
15105 l_accrual_line_num            NUMBER;
15106 l_tmp_amt                     NUMBER;
15107 l_acc_rev_natural_side_code   VARCHAR2(1);
15108 
15109 l_num_entries                 NUMBER;
15110 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15111 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15112 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15113 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15114 l_recog_line_1                NUMBER;
15115 l_recog_line_2                NUMBER;
15116 
15117 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15118 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15119 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15120 
15121 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15122 
15123 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15124 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15125 
15126 ---------------------------------------------------------------------------------------------------------------
15127 
15128 
15129 --
15130 -- bulk performance
15131 --
15132 l_balance_type_code           VARCHAR2(1);
15133 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15134 l_log_module                  VARCHAR2(240);
15135 
15136 --
15137 -- Upgrade strategy
15138 --
15139 l_actual_upg_option           VARCHAR2(1);
15140 l_enc_upg_option           VARCHAR2(1);
15141 
15142 --
15143 BEGIN
15144 --
15145 IF g_log_enabled THEN
15146       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_46';
15147 END IF;
15148 --
15149 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15150 
15151       trace
15152          (p_msg      => 'BEGIN of AcctLineType_46'
15153          ,p_level    => C_LEVEL_PROCEDURE
15154          ,p_module   => l_log_module);
15155 
15156 END IF;
15157 --
15158 l_component_type             := 'AMB_JLT';
15159 l_component_code             := 'CM_DEFAULT_FREIGHT';
15160 l_component_type_code        := 'S';
15161 l_component_appl_id          :=  222;
15162 l_amb_context_code           := 'DEFAULT';
15163 l_entity_code                := 'TRANSACTIONS';
15164 l_event_class_code           := 'CREDIT_MEMO';
15165 l_event_type_code            := 'CREDIT_MEMO_ALL';
15166 l_line_definition_owner_code := 'S';
15167 l_line_definition_code       := 'JA_CN_AR_CM_DEFAULT_ACCRUAL';
15168 --
15169 l_balance_type_code          := 'A';
15170 l_segment                     := NULL;
15171 l_ccid                        := NULL;
15172 l_adr_transaction_coa_id      := NULL;
15173 l_adr_accounting_coa_id       := NULL;
15174 l_adr_flexfield_segment_code  := NULL;
15175 l_adr_flex_value_set_id       := NULL;
15176 l_adr_value_type_code         := NULL;
15177 l_adr_value_combination_id    := NULL;
15178 l_adr_value_segment_code      := NULL;
15179 
15180 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
15181 l_bflow_class_code           := '';    -- 4219869 Business Flow
15182 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
15183 l_budgetary_control_flag     := 'N';
15184 
15185 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15186 l_bflow_applied_to_amt       := NULL; -- 5132302
15187 l_entered_amt_idx            := NULL;          -- 4262811
15188 l_accted_amt_idx             := NULL;          -- 4262811
15189 l_acc_rev_flag               := NULL;          -- 4262811
15190 l_accrual_line_num           := NULL;          -- 4262811
15191 l_tmp_amt                    := NULL;          -- 4262811
15192 --
15193  
15194 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15195     l_balance_type_code <> 'B' THEN
15196 IF NVL(p_source_63,'
15197 ') =  'FREIGHT'
15198  THEN 
15199 
15200    --
15201    XLA_AE_LINES_PKG.SetNewLine;
15202 
15203    p_balance_type_code          := l_balance_type_code;
15204    -- set the flag so later we will know whether the gain loss line needs to be created
15205    
15206    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15207      p_actual_flag :='A';
15208    END IF;
15209 
15210    --
15211    -- bulk performance
15212    --
15213    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15214                                       p_header_num   => 0); -- 4262811
15215    --
15216    -- set accounting line options
15217    --
15218    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15222          , p_acct_entry_type_code       => 'A'
15219            p_natural_side_code          => 'C'
15220          , p_gain_or_loss_flag          => 'N'
15221          , p_gl_transfer_mode_code      => 'S'
15223          , p_switch_side_flag           => 'Y'
15224          , p_merge_duplicate_code       => 'A'
15225          );
15226    --
15227    l_acc_rev_natural_side_code := 'D';  -- 4262811
15228    -- 
15229    --
15230    -- set accounting line type info
15231    --
15232    xla_ae_lines_pkg.SetAcctLineType
15233       (p_component_type             => l_component_type
15234       ,p_event_type_code            => l_event_type_code
15235       ,p_line_definition_owner_code => l_line_definition_owner_code
15236       ,p_line_definition_code       => l_line_definition_code
15237       ,p_accounting_line_code       => l_component_code
15238       ,p_accounting_line_type_code  => l_component_type_code
15239       ,p_accounting_line_appl_id    => l_component_appl_id
15240       ,p_amb_context_code           => l_amb_context_code
15241       ,p_entity_code                => l_entity_code
15242       ,p_event_class_code           => l_event_class_code);
15243    --
15244    -- set accounting class
15245    --
15246    xla_ae_lines_pkg.SetAcctClass(
15247            p_accounting_class_code  => 'FREIGHT'
15248          , p_ae_header_id           => l_ae_header_id
15249          );
15250 
15251    --
15252    -- set rounding class
15253    --
15254    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15255                       'RECEIVABLE';
15256 
15257    --
15258    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15259    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15260    --
15261    -- bulk performance
15262    --
15263    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15264 
15265    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15266       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15267 
15268    -- 4955764
15269    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15270       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15271 
15272    -- 4458381 Public Sector Enh
15273    
15274    --
15275    -- set accounting attributes for the line type
15276    --
15277    l_entered_amt_idx := 3;
15278    l_accted_amt_idx  := 9;
15279    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15280    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
15281    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_52);
15282    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
15283    l_rec_acct_attrs.array_char_value(2)  := p_source_53;
15284    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
15285    l_rec_acct_attrs.array_num_value(3)  := p_source_64;
15286    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
15287    l_rec_acct_attrs.array_char_value(4)  := p_source_54;
15288    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
15289    l_rec_acct_attrs.array_date_value(5)  := p_source_55;
15290    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
15291    l_rec_acct_attrs.array_num_value(6)  := p_source_56;
15292    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
15293    l_rec_acct_attrs.array_char_value(7)  := p_source_57;
15294    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
15295    l_rec_acct_attrs.array_char_value(8)  := p_source_58;
15296    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
15297    l_rec_acct_attrs.array_num_value(9)  := p_source_59;
15298    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
15299    l_rec_acct_attrs.array_num_value(10)  := p_source_60;
15300    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
15301    l_rec_acct_attrs.array_num_value(11)  := p_source_61;
15302    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
15303    l_rec_acct_attrs.array_char_value(12)  := p_source_39;
15304    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
15305    l_rec_acct_attrs.array_num_value(13)  := p_source_62;
15306 
15307    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15308    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15309 
15310    ---------------------------------------------------------------------------------------------------------------
15311    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15312    ---------------------------------------------------------------------------------------------------------------
15313    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15314 
15315    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15316    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15317 
15318    IF xla_accounting_cache_pkg.GetValueChar
15319          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15320          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15324          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15321    AND l_bflow_method_code = 'PRIOR_ENTRY'
15322 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15323    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15325        )
15326    THEN
15327          xla_ae_lines_pkg.BflowUpgEntry
15328            (p_business_method_code    => l_bflow_method_code
15329            ,p_business_class_code     => l_bflow_class_code
15330            ,p_balance_type            => l_balance_type_code);
15331    ELSE
15332       NULL;
15333 -- No business flow processing for business flow method of NONE.
15334    END IF;
15335 
15336    --
15337    -- call analytical criteria
15338    --
15339    
15340    --
15341    -- call description
15342    --
15343    -- No description or it is inherited.
15344    --
15345    -- call ADRs
15346    -- Bug 4922099
15347    --
15348    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15349         (NVL(l_actual_upg_option, 'N') = 'O') OR
15350         (NVL(l_enc_upg_option, 'N') = 'O')
15351       )
15352    THEN
15353    NULL;
15354    --
15355    --
15356    
15357   l_ccid := AcctDerRule_20(
15358            p_application_id           => p_application_id
15359          , p_ae_header_id             => l_ae_header_id 
15360 , p_source_22 => p_source_22
15361          , x_transaction_coa_id       => l_adr_transaction_coa_id
15362          , x_accounting_coa_id        => l_adr_accounting_coa_id
15363          , x_value_type_code          => l_adr_value_type_code
15364          , p_side                     => 'NA'
15365    );
15366 
15367    xla_ae_lines_pkg.set_ccid(
15368     p_code_combination_id          => l_ccid
15369   , p_value_type_code              => l_adr_value_type_code
15370   , p_transaction_coa_id           => l_adr_transaction_coa_id
15371   , p_accounting_coa_id            => l_adr_accounting_coa_id
15372   , p_adr_code                     => 'DIST_CCID'
15373   , p_adr_type_code                => 'S'
15374   , p_component_type               => l_component_type
15375   , p_component_code               => l_component_code
15376   , p_component_type_code          => l_component_type_code
15377   , p_component_appl_id            => l_component_appl_id
15378   , p_amb_context_code             => l_amb_context_code
15379   , p_side                         => 'NA'
15380   );
15381 
15382 
15383    --
15384    --
15385    END IF;
15386    --
15387    -- Bug 4922099
15388    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15389           (NVL(l_enc_upg_option, 'N') = 'O')
15390         ) AND
15391         (l_bflow_method_code = 'PRIOR_ENTRY')
15392       )
15393    THEN
15394       IF
15395       --
15396       1 = 2
15397       --
15398       THEN
15399       xla_accounting_err_pkg.build_message
15400                                     (p_appli_s_name            => 'XLA'
15401                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15402                                     ,p_token_1                 => 'LINE_NUMBER'
15403                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15404                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15405                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15406                                                                              l_component_type
15407                                                                             ,l_component_code
15408                                                                             ,l_component_type_code
15409                                                                             ,l_component_appl_id
15410                                                                             ,l_amb_context_code
15411                                                                             ,l_entity_code
15412                                                                             ,l_event_class_code
15413                                                                            )
15414                                     ,p_token_3                 => 'OWNER'
15415                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15416                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15417                                                                           ,p_lookup_code    => l_component_type_code
15418                                                                          )
15419                                     ,p_token_4                 => 'PRODUCT_NAME'
15420                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15421                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15422                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15423                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15424                                     ,p_ae_header_id            =>  NULL
15425                                        );
15426 
15427         IF (C_LEVEL_ERROR>= g_log_level) THEN
15428                  trace
15429                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15433       END IF;
15430                       ,p_level    => C_LEVEL_ERROR
15431                       ,p_module   => l_log_module);
15432         END IF;
15434    END IF;
15435    --
15436    --
15437    ------------------------------------------------------------------------------------------------
15438    -- 4219869 Business Flow
15439    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15440    -- Prior Entry.  Currently, the following code is always generated.
15441    ------------------------------------------------------------------------------------------------
15442    XLA_AE_LINES_PKG.ValidateCurrentLine;
15443 
15444    ------------------------------------------------------------------------------------
15445    -- 4219869 Business Flow
15446    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15447    ------------------------------------------------------------------------------------
15448    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15449 
15450    ----------------------------------------------------------------------------------
15451    -- 4219869 Business Flow
15452    -- Update journal entry status -- Need to generate this within IF <condition>
15453    ----------------------------------------------------------------------------------
15454    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15455          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15456          ,p_balance_type_code => l_balance_type_code
15457          );
15458 
15459    -------------------------------------------------------------------------------------------
15460    -- 4262811 - Generate the Accrual Reversal lines
15461    -------------------------------------------------------------------------------------------
15462    BEGIN
15463       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15464                               (g_array_event(p_event_id).array_value_num('header_index'));
15465       IF l_acc_rev_flag IS NULL THEN
15466          l_acc_rev_flag := 'N';
15467       END IF;
15468    EXCEPTION
15469       WHEN OTHERS THEN
15470          l_acc_rev_flag := 'N';
15471    END;
15472    --
15473    IF (l_acc_rev_flag = 'Y') THEN
15474 
15475        -- 4645092  ------------------------------------------------------------------------------
15476        -- To allow MPA report to determine if it should generate report process
15477        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15478        ------------------------------------------------------------------------------------------
15479 
15480        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15481        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15482    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
15483    -- call ADRs
15484    -- Bug 4922099
15485    --
15486    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15487         (NVL(l_actual_upg_option, 'N') = 'O') OR
15488         (NVL(l_enc_upg_option, 'N') = 'O')
15489       )
15490    THEN
15491    NULL;
15492    --
15493    --
15494    
15495   l_ccid := AcctDerRule_20(
15496            p_application_id           => p_application_id
15497          , p_ae_header_id             => l_ae_header_id 
15498 , p_source_22 => p_source_22
15499          , x_transaction_coa_id       => l_adr_transaction_coa_id
15500          , x_accounting_coa_id        => l_adr_accounting_coa_id
15501          , x_value_type_code          => l_adr_value_type_code
15502          , p_side                     => 'NA'
15503    );
15504 
15505    xla_ae_lines_pkg.set_ccid(
15506     p_code_combination_id          => l_ccid
15507   , p_value_type_code              => l_adr_value_type_code
15508   , p_transaction_coa_id           => l_adr_transaction_coa_id
15509   , p_accounting_coa_id            => l_adr_accounting_coa_id
15510   , p_adr_code                     => 'DIST_CCID'
15511   , p_adr_type_code                => 'S'
15512   , p_component_type               => l_component_type
15513   , p_component_code               => l_component_code
15514   , p_component_type_code          => l_component_type_code
15515   , p_component_appl_id            => l_component_appl_id
15516   , p_amb_context_code             => l_amb_context_code
15517   , p_side                         => 'NA'
15518   );
15519 
15520 
15521    --
15522    --
15523    END IF;
15524 
15525        --
15526        -- Update the line information that should be overwritten
15527        --
15528        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15529                                          p_header_num   => 1);
15530        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15531 
15532        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15533 
15534        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15535           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15536        END IF;
15537 
15538       --
15539       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15540       --
15541       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15545           -- 4262811a Switch Sign
15542           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15543       ELSE
15544           ---------------------------------------------------------------------------------------------------
15546           ---------------------------------------------------------------------------------------------------
15547           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15548           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15549                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15550           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15551                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15552           -- 5132302
15553           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15554                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15555 
15556       END IF;
15557 
15558       -- 4955764
15559       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15560       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15561 
15562 
15563       XLA_AE_LINES_PKG.ValidateCurrentLine;
15564       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15565 
15566       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15567                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15568                ,p_balance_type_code => l_balance_type_code);
15569 
15570    END IF;
15571 
15572    -----------------------------------------------------------------------------------------
15573    -- 4262811 Multiperiod Accounting
15574    -----------------------------------------------------------------------------------------
15575      -- No MPA option is assigned.
15576 
15577 
15578 END IF;
15579 END IF;
15580 --
15581 
15582 --
15583 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15584    trace
15585       (p_msg      => 'END of AcctLineType_46'
15586       ,p_level    => C_LEVEL_PROCEDURE
15587       ,p_module   => l_log_module);
15588 END IF;
15589 --
15590 EXCEPTION
15591   WHEN xla_exceptions_pkg.application_exception THEN
15592       RAISE;
15593   WHEN OTHERS THEN
15594        xla_exceptions_pkg.raise_message
15595            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_46');
15596 END AcctLineType_46;
15597 --
15598 
15599 ---------------------------------------
15600 --
15601 -- PRIVATE FUNCTION
15602 --         AcctLineType_47
15603 --
15604 ---------------------------------------
15605 PROCEDURE AcctLineType_47 (
15606   p_application_id        IN NUMBER
15607  ,p_event_id              IN NUMBER
15608  ,p_calculate_acctd_flag  IN VARCHAR2
15609  ,p_calculate_g_l_flag    IN VARCHAR2
15610  ,p_actual_flag           IN OUT VARCHAR2
15611  ,p_balance_type_code     OUT VARCHAR2
15612  ,p_gain_or_loss_ref      OUT VARCHAR2
15613  
15614 --Credit Memo Distribution GL Account
15615  , p_source_14            IN NUMBER
15616 --SLA Party Type
15617  , p_source_39            IN VARCHAR2
15618 --Credit Memo Distribution Identifier
15619  , p_source_52            IN NUMBER
15620 --Credit memo distributions type
15621  , p_source_53            IN VARCHAR2
15622 --Credit Memo Currency Code
15623  , p_source_54            IN VARCHAR2
15624 --Credit Memo Exchange Date
15625  , p_source_55            IN DATE
15626 --Credit Memo Exchange Rate
15627  , p_source_56            IN NUMBER
15628 --Credit Memo Exchange Rate Type
15629  , p_source_57            IN VARCHAR2
15630 --Gain Loss Reference
15631  , p_source_58            IN VARCHAR2
15632 --Credit Memo Accounting Amount
15633  , p_source_59            IN NUMBER
15634 --Credit Memo Bill To Customer Account Identifier
15635  , p_source_60            IN NUMBER
15636 --Credit Memo Bill To Customer Site Use Identifier
15637  , p_source_61            IN NUMBER
15638 --Credit Memo Tax Line Identifier
15639  , p_source_62            IN NUMBER
15640 --Credit Memo Distribution Account Class
15641  , p_source_63            IN VARCHAR2
15642 --Credit Memo Distribution Entered Amount
15643  , p_source_64            IN NUMBER
15644 )
15645 IS
15646 
15647 l_component_type              VARCHAR2(80);
15648 l_component_code              VARCHAR2(30);
15649 l_component_type_code         VARCHAR2(1);
15650 l_component_appl_id           INTEGER;
15651 l_amb_context_code            VARCHAR2(30);
15652 l_entity_code                 VARCHAR2(30);
15653 l_event_class_code            VARCHAR2(30);
15654 l_ae_header_id                NUMBER;
15655 l_event_type_code             VARCHAR2(30);
15656 l_line_definition_code        VARCHAR2(30);
15657 l_line_definition_owner_code  VARCHAR2(1);
15658 --
15659 -- adr variables
15660 l_segment                     VARCHAR2(30);
15661 l_ccid                        NUMBER;
15662 l_adr_transaction_coa_id      NUMBER;
15663 l_adr_accounting_coa_id       NUMBER;
15664 l_adr_flexfield_segment_code  VARCHAR2(30);
15665 l_adr_flex_value_set_id       NUMBER;
15666 l_adr_value_type_code         VARCHAR2(30);
15667 l_adr_value_combination_id    NUMBER;
15671 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15668 l_adr_value_segment_code      VARCHAR2(30);
15669 
15670 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15672 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15673 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15674 
15675 -- 4262811 Variables ------------------------------------------------------------------------------------------
15676 l_entered_amt_idx             NUMBER;
15677 l_accted_amt_idx              NUMBER;
15678 l_acc_rev_flag                VARCHAR2(1);
15679 l_accrual_line_num            NUMBER;
15680 l_tmp_amt                     NUMBER;
15681 l_acc_rev_natural_side_code   VARCHAR2(1);
15682 
15683 l_num_entries                 NUMBER;
15684 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15685 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15686 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15687 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15688 l_recog_line_1                NUMBER;
15689 l_recog_line_2                NUMBER;
15690 
15691 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15692 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15693 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15694 
15695 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15696 
15697 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15698 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15699 
15700 ---------------------------------------------------------------------------------------------------------------
15701 
15702 
15703 --
15704 -- bulk performance
15705 --
15706 l_balance_type_code           VARCHAR2(1);
15707 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15708 l_log_module                  VARCHAR2(240);
15709 
15710 --
15711 -- Upgrade strategy
15712 --
15713 l_actual_upg_option           VARCHAR2(1);
15714 l_enc_upg_option           VARCHAR2(1);
15715 
15716 --
15717 BEGIN
15718 --
15719 IF g_log_enabled THEN
15720       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_47';
15721 END IF;
15722 --
15723 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15724 
15725       trace
15726          (p_msg      => 'BEGIN of AcctLineType_47'
15727          ,p_level    => C_LEVEL_PROCEDURE
15728          ,p_module   => l_log_module);
15729 
15730 END IF;
15731 --
15732 l_component_type             := 'AMB_JLT';
15733 l_component_code             := 'CM_DEFAULT_REC';
15734 l_component_type_code        := 'S';
15735 l_component_appl_id          :=  222;
15736 l_amb_context_code           := 'DEFAULT';
15737 l_entity_code                := 'TRANSACTIONS';
15738 l_event_class_code           := 'CREDIT_MEMO';
15739 l_event_type_code            := 'CREDIT_MEMO_ALL';
15740 l_line_definition_owner_code := 'S';
15741 l_line_definition_code       := 'JA_CN_AR_CM_DEFAULT_ACCRUAL';
15742 --
15743 l_balance_type_code          := 'A';
15744 l_segment                     := NULL;
15745 l_ccid                        := NULL;
15746 l_adr_transaction_coa_id      := NULL;
15747 l_adr_accounting_coa_id       := NULL;
15748 l_adr_flexfield_segment_code  := NULL;
15749 l_adr_flex_value_set_id       := NULL;
15750 l_adr_value_type_code         := NULL;
15751 l_adr_value_combination_id    := NULL;
15752 l_adr_value_segment_code      := NULL;
15753 
15754 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
15755 l_bflow_class_code           := 'RECEIVABLE';    -- 4219869 Business Flow
15756 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
15757 l_budgetary_control_flag     := 'N';
15758 
15759 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15760 l_bflow_applied_to_amt       := NULL; -- 5132302
15761 l_entered_amt_idx            := NULL;          -- 4262811
15762 l_accted_amt_idx             := NULL;          -- 4262811
15763 l_acc_rev_flag               := NULL;          -- 4262811
15764 l_accrual_line_num           := NULL;          -- 4262811
15765 l_tmp_amt                    := NULL;          -- 4262811
15766 --
15767  
15768 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15769     l_balance_type_code <> 'B' THEN
15770 IF NVL(p_source_63,'
15771 ') =  'REC'
15772  THEN 
15773 
15774    --
15775    XLA_AE_LINES_PKG.SetNewLine;
15776 
15777    p_balance_type_code          := l_balance_type_code;
15778    -- set the flag so later we will know whether the gain loss line needs to be created
15779    
15780    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15781      p_actual_flag :='A';
15782    END IF;
15783 
15784    --
15785    -- bulk performance
15786    --
15787    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15788                                       p_header_num   => 0); -- 4262811
15789    --
15790    -- set accounting line options
15791    --
15792    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15793            p_natural_side_code          => 'D'
15794          , p_gain_or_loss_flag          => 'N'
15798          , p_merge_duplicate_code       => 'N'
15795          , p_gl_transfer_mode_code      => 'S'
15796          , p_acct_entry_type_code       => 'A'
15797          , p_switch_side_flag           => 'Y'
15799          );
15800    --
15801    l_acc_rev_natural_side_code := 'C';  -- 4262811
15802    -- 
15803    --
15804    -- set accounting line type info
15805    --
15806    xla_ae_lines_pkg.SetAcctLineType
15807       (p_component_type             => l_component_type
15808       ,p_event_type_code            => l_event_type_code
15809       ,p_line_definition_owner_code => l_line_definition_owner_code
15810       ,p_line_definition_code       => l_line_definition_code
15811       ,p_accounting_line_code       => l_component_code
15812       ,p_accounting_line_type_code  => l_component_type_code
15813       ,p_accounting_line_appl_id    => l_component_appl_id
15814       ,p_amb_context_code           => l_amb_context_code
15815       ,p_entity_code                => l_entity_code
15816       ,p_event_class_code           => l_event_class_code);
15817    --
15818    -- set accounting class
15819    --
15820    xla_ae_lines_pkg.SetAcctClass(
15821            p_accounting_class_code  => 'RECEIVABLE'
15822          , p_ae_header_id           => l_ae_header_id
15823          );
15824 
15825    --
15826    -- set rounding class
15827    --
15828    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15829                       'RECEIVABLE';
15830 
15831    --
15832    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15833    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15834    --
15835    -- bulk performance
15836    --
15837    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15838 
15839    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15840       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15841 
15842    -- 4955764
15843    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15844       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15845 
15846    -- 4458381 Public Sector Enh
15847    
15848    --
15849    -- set accounting attributes for the line type
15850    --
15851    l_entered_amt_idx := 3;
15852    l_accted_amt_idx  := 9;
15853    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15854    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
15855    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_52);
15856    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
15857    l_rec_acct_attrs.array_char_value(2)  := p_source_53;
15858    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
15859    l_rec_acct_attrs.array_num_value(3)  := p_source_64;
15860    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
15861    l_rec_acct_attrs.array_char_value(4)  := p_source_54;
15862    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
15863    l_rec_acct_attrs.array_date_value(5)  := p_source_55;
15864    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
15865    l_rec_acct_attrs.array_num_value(6)  := p_source_56;
15866    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
15867    l_rec_acct_attrs.array_char_value(7)  := p_source_57;
15868    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
15869    l_rec_acct_attrs.array_char_value(8)  := p_source_58;
15870    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
15871    l_rec_acct_attrs.array_num_value(9)  := p_source_59;
15872    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
15873    l_rec_acct_attrs.array_num_value(10)  := p_source_60;
15874    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
15875    l_rec_acct_attrs.array_num_value(11)  := p_source_61;
15876    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
15877    l_rec_acct_attrs.array_char_value(12)  := p_source_39;
15878    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
15879    l_rec_acct_attrs.array_num_value(13)  := p_source_62;
15880 
15881    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15882    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15883 
15884    ---------------------------------------------------------------------------------------------------------------
15885    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15886    ---------------------------------------------------------------------------------------------------------------
15887    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15888 
15889    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15890    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15891 
15892    IF xla_accounting_cache_pkg.GetValueChar
15893          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15894          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15895    AND l_bflow_method_code = 'PRIOR_ENTRY'
15896 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15897    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15898          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15902            (p_business_method_code    => l_bflow_method_code
15899        )
15900    THEN
15901          xla_ae_lines_pkg.BflowUpgEntry
15903            ,p_business_class_code     => l_bflow_class_code
15904            ,p_balance_type            => l_balance_type_code);
15905    ELSE
15906       NULL;
15907 -- No business flow processing for business flow method of NONE.
15908    END IF;
15909 
15910    --
15911    -- call analytical criteria
15912    --
15913    
15914    --
15915    -- call description
15916    --
15917    -- No description or it is inherited.
15918    --
15919    -- call ADRs
15920    -- Bug 4922099
15921    --
15922    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15923         (NVL(l_actual_upg_option, 'N') = 'O') OR
15924         (NVL(l_enc_upg_option, 'N') = 'O')
15925       )
15926    THEN
15927    NULL;
15928    --
15929    --
15930    
15931   l_ccid := AcctDerRule_12(
15932            p_application_id           => p_application_id
15933          , p_ae_header_id             => l_ae_header_id 
15934 , p_source_14 => p_source_14
15935          , x_transaction_coa_id       => l_adr_transaction_coa_id
15936          , x_accounting_coa_id        => l_adr_accounting_coa_id
15937          , x_value_type_code          => l_adr_value_type_code
15938          , p_side                     => 'NA'
15939    );
15940 
15941    xla_ae_lines_pkg.set_ccid(
15942     p_code_combination_id          => l_ccid
15943   , p_value_type_code              => l_adr_value_type_code
15944   , p_transaction_coa_id           => l_adr_transaction_coa_id
15945   , p_accounting_coa_id            => l_adr_accounting_coa_id
15946   , p_adr_code                     => 'CM_DIST_CCID'
15947   , p_adr_type_code                => 'S'
15948   , p_component_type               => l_component_type
15949   , p_component_code               => l_component_code
15950   , p_component_type_code          => l_component_type_code
15951   , p_component_appl_id            => l_component_appl_id
15952   , p_amb_context_code             => l_amb_context_code
15953   , p_side                         => 'NA'
15954   );
15955 
15956 
15957    --
15958    --
15959    END IF;
15960    --
15961    -- Bug 4922099
15962    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15963           (NVL(l_enc_upg_option, 'N') = 'O')
15964         ) AND
15965         (l_bflow_method_code = 'PRIOR_ENTRY')
15966       )
15967    THEN
15968       IF
15969       --
15970       1 = 2
15971       --
15972       THEN
15973       xla_accounting_err_pkg.build_message
15974                                     (p_appli_s_name            => 'XLA'
15975                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15976                                     ,p_token_1                 => 'LINE_NUMBER'
15977                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15978                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15979                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15980                                                                              l_component_type
15981                                                                             ,l_component_code
15982                                                                             ,l_component_type_code
15983                                                                             ,l_component_appl_id
15984                                                                             ,l_amb_context_code
15985                                                                             ,l_entity_code
15986                                                                             ,l_event_class_code
15987                                                                            )
15988                                     ,p_token_3                 => 'OWNER'
15989                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15990                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15991                                                                           ,p_lookup_code    => l_component_type_code
15992                                                                          )
15993                                     ,p_token_4                 => 'PRODUCT_NAME'
15994                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15995                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15996                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15997                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15998                                     ,p_ae_header_id            =>  NULL
15999                                        );
16000 
16001         IF (C_LEVEL_ERROR>= g_log_level) THEN
16002                  trace
16003                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16004                       ,p_level    => C_LEVEL_ERROR
16005                       ,p_module   => l_log_module);
16006         END IF;
16007       END IF;
16008    END IF;
16009    --
16010    --
16014    -- Prior Entry.  Currently, the following code is always generated.
16011    ------------------------------------------------------------------------------------------------
16012    -- 4219869 Business Flow
16013    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16015    ------------------------------------------------------------------------------------------------
16016    XLA_AE_LINES_PKG.ValidateCurrentLine;
16017 
16018    ------------------------------------------------------------------------------------
16019    -- 4219869 Business Flow
16020    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16021    ------------------------------------------------------------------------------------
16022    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16023 
16024    ----------------------------------------------------------------------------------
16025    -- 4219869 Business Flow
16026    -- Update journal entry status -- Need to generate this within IF <condition>
16027    ----------------------------------------------------------------------------------
16028    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16029          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16030          ,p_balance_type_code => l_balance_type_code
16031          );
16032 
16033    -------------------------------------------------------------------------------------------
16034    -- 4262811 - Generate the Accrual Reversal lines
16035    -------------------------------------------------------------------------------------------
16036    BEGIN
16037       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16038                               (g_array_event(p_event_id).array_value_num('header_index'));
16039       IF l_acc_rev_flag IS NULL THEN
16040          l_acc_rev_flag := 'N';
16041       END IF;
16042    EXCEPTION
16043       WHEN OTHERS THEN
16044          l_acc_rev_flag := 'N';
16045    END;
16046    --
16047    IF (l_acc_rev_flag = 'Y') THEN
16048 
16049        -- 4645092  ------------------------------------------------------------------------------
16050        -- To allow MPA report to determine if it should generate report process
16051        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16052        ------------------------------------------------------------------------------------------
16053 
16054        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16055        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16056    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
16057    -- call ADRs
16058    -- Bug 4922099
16059    --
16060    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16061         (NVL(l_actual_upg_option, 'N') = 'O') OR
16062         (NVL(l_enc_upg_option, 'N') = 'O')
16063       )
16064    THEN
16065    NULL;
16066    --
16067    --
16068    
16069   l_ccid := AcctDerRule_12(
16070            p_application_id           => p_application_id
16071          , p_ae_header_id             => l_ae_header_id 
16072 , p_source_14 => p_source_14
16073          , x_transaction_coa_id       => l_adr_transaction_coa_id
16074          , x_accounting_coa_id        => l_adr_accounting_coa_id
16075          , x_value_type_code          => l_adr_value_type_code
16076          , p_side                     => 'NA'
16077    );
16078 
16079    xla_ae_lines_pkg.set_ccid(
16080     p_code_combination_id          => l_ccid
16081   , p_value_type_code              => l_adr_value_type_code
16082   , p_transaction_coa_id           => l_adr_transaction_coa_id
16083   , p_accounting_coa_id            => l_adr_accounting_coa_id
16084   , p_adr_code                     => 'CM_DIST_CCID'
16085   , p_adr_type_code                => 'S'
16086   , p_component_type               => l_component_type
16087   , p_component_code               => l_component_code
16088   , p_component_type_code          => l_component_type_code
16089   , p_component_appl_id            => l_component_appl_id
16090   , p_amb_context_code             => l_amb_context_code
16091   , p_side                         => 'NA'
16092   );
16093 
16094 
16095    --
16096    --
16097    END IF;
16098 
16099        --
16100        -- Update the line information that should be overwritten
16101        --
16102        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16103                                          p_header_num   => 1);
16104        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
16105 
16106        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16107 
16108        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
16109           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16110        END IF;
16111 
16112       --
16113       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16114       --
16115       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16116           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
16117       ELSE
16118           ---------------------------------------------------------------------------------------------------
16119           -- 4262811a Switch Sign
16123                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16120           ---------------------------------------------------------------------------------------------------
16121           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
16122           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16124           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16125                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16126           -- 5132302
16127           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16128                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16129 
16130       END IF;
16131 
16132       -- 4955764
16133       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16134       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16135 
16136 
16137       XLA_AE_LINES_PKG.ValidateCurrentLine;
16138       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16139 
16140       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16141                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16142                ,p_balance_type_code => l_balance_type_code);
16143 
16144    END IF;
16145 
16146    -----------------------------------------------------------------------------------------
16147    -- 4262811 Multiperiod Accounting
16148    -----------------------------------------------------------------------------------------
16149      -- No MPA option is assigned.
16150 
16151 
16152 END IF;
16153 END IF;
16154 --
16155 
16156 --
16157 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16158    trace
16159       (p_msg      => 'END of AcctLineType_47'
16160       ,p_level    => C_LEVEL_PROCEDURE
16161       ,p_module   => l_log_module);
16162 END IF;
16163 --
16164 EXCEPTION
16165   WHEN xla_exceptions_pkg.application_exception THEN
16166       RAISE;
16167   WHEN OTHERS THEN
16168        xla_exceptions_pkg.raise_message
16169            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_47');
16170 END AcctLineType_47;
16171 --
16172 
16173 ---------------------------------------
16174 --
16175 -- PRIVATE FUNCTION
16176 --         AcctLineType_48
16177 --
16178 ---------------------------------------
16179 PROCEDURE AcctLineType_48 (
16180   p_application_id        IN NUMBER
16181  ,p_event_id              IN NUMBER
16182  ,p_calculate_acctd_flag  IN VARCHAR2
16183  ,p_calculate_g_l_flag    IN VARCHAR2
16184  ,p_actual_flag           IN OUT VARCHAR2
16185  ,p_balance_type_code     OUT VARCHAR2
16186  ,p_gain_or_loss_ref      OUT VARCHAR2
16187  
16188 --Credit Memo Distribution GL Account
16189  , p_source_14            IN NUMBER
16190 --SLA Party Type
16191  , p_source_39            IN VARCHAR2
16192 --Credit Memo Distribution Identifier
16193  , p_source_52            IN NUMBER
16194 --Credit memo distributions type
16195  , p_source_53            IN VARCHAR2
16196 --Credit Memo Currency Code
16197  , p_source_54            IN VARCHAR2
16198 --Credit Memo Exchange Date
16199  , p_source_55            IN DATE
16200 --Credit Memo Exchange Rate
16201  , p_source_56            IN NUMBER
16202 --Credit Memo Exchange Rate Type
16203  , p_source_57            IN VARCHAR2
16204 --Gain Loss Reference
16205  , p_source_58            IN VARCHAR2
16206 --Credit Memo Accounting Amount
16207  , p_source_59            IN NUMBER
16208 --Credit Memo Bill To Customer Account Identifier
16209  , p_source_60            IN NUMBER
16210 --Credit Memo Bill To Customer Site Use Identifier
16211  , p_source_61            IN NUMBER
16212 --Credit Memo Tax Line Identifier
16213  , p_source_62            IN NUMBER
16214 --Credit Memo Distribution Account Class
16215  , p_source_63            IN VARCHAR2
16216 --Credit Memo Distribution Entered Amount
16217  , p_source_64            IN NUMBER
16218 --Transaction Line Flexfield Attribute 1
16219  , p_source_65            IN VARCHAR2
16220 )
16221 IS
16222 
16223 l_component_type              VARCHAR2(80);
16224 l_component_code              VARCHAR2(30);
16225 l_component_type_code         VARCHAR2(1);
16226 l_component_appl_id           INTEGER;
16227 l_amb_context_code            VARCHAR2(30);
16228 l_entity_code                 VARCHAR2(30);
16229 l_event_class_code            VARCHAR2(30);
16230 l_ae_header_id                NUMBER;
16231 l_event_type_code             VARCHAR2(30);
16232 l_line_definition_code        VARCHAR2(30);
16233 l_line_definition_owner_code  VARCHAR2(1);
16234 --
16235 -- adr variables
16236 l_segment                     VARCHAR2(30);
16237 l_ccid                        NUMBER;
16238 l_adr_transaction_coa_id      NUMBER;
16239 l_adr_accounting_coa_id       NUMBER;
16240 l_adr_flexfield_segment_code  VARCHAR2(30);
16241 l_adr_flex_value_set_id       NUMBER;
16242 l_adr_value_type_code         VARCHAR2(30);
16243 l_adr_value_combination_id    NUMBER;
16244 l_adr_value_segment_code      VARCHAR2(30);
16245 
16246 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16247 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16248 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16252 l_entered_amt_idx             NUMBER;
16249 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16250 
16251 -- 4262811 Variables ------------------------------------------------------------------------------------------
16253 l_accted_amt_idx              NUMBER;
16254 l_acc_rev_flag                VARCHAR2(1);
16255 l_accrual_line_num            NUMBER;
16256 l_tmp_amt                     NUMBER;
16257 l_acc_rev_natural_side_code   VARCHAR2(1);
16258 
16259 l_num_entries                 NUMBER;
16260 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16261 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16262 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16263 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16264 l_recog_line_1                NUMBER;
16265 l_recog_line_2                NUMBER;
16266 
16267 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16268 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16269 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16270 
16271 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16272 
16273 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16274 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16275 
16276 ---------------------------------------------------------------------------------------------------------------
16277 
16278 
16279 --
16280 -- bulk performance
16281 --
16282 l_balance_type_code           VARCHAR2(1);
16283 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16284 l_log_module                  VARCHAR2(240);
16285 
16286 --
16287 -- Upgrade strategy
16288 --
16289 l_actual_upg_option           VARCHAR2(1);
16290 l_enc_upg_option           VARCHAR2(1);
16291 
16292 --
16293 BEGIN
16294 --
16295 IF g_log_enabled THEN
16296       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
16297 END IF;
16298 --
16299 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16300 
16301       trace
16302          (p_msg      => 'BEGIN of AcctLineType_48'
16303          ,p_level    => C_LEVEL_PROCEDURE
16304          ,p_module   => l_log_module);
16305 
16306 END IF;
16307 --
16308 l_component_type             := 'AMB_JLT';
16309 l_component_code             := 'CM_DEFAULT_REV';
16310 l_component_type_code        := 'S';
16311 l_component_appl_id          :=  222;
16312 l_amb_context_code           := 'DEFAULT';
16313 l_entity_code                := 'TRANSACTIONS';
16314 l_event_class_code           := 'CREDIT_MEMO';
16315 l_event_type_code            := 'CREDIT_MEMO_ALL';
16316 l_line_definition_owner_code := 'S';
16317 l_line_definition_code       := 'JA_CN_AR_CM_DEFAULT_ACCRUAL';
16318 --
16319 l_balance_type_code          := 'A';
16320 l_segment                     := NULL;
16321 l_ccid                        := NULL;
16322 l_adr_transaction_coa_id      := NULL;
16323 l_adr_accounting_coa_id       := NULL;
16324 l_adr_flexfield_segment_code  := NULL;
16325 l_adr_flex_value_set_id       := NULL;
16326 l_adr_value_type_code         := NULL;
16327 l_adr_value_combination_id    := NULL;
16328 l_adr_value_segment_code      := NULL;
16329 
16330 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16331 l_bflow_class_code           := '';    -- 4219869 Business Flow
16332 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16333 l_budgetary_control_flag     := 'N';
16334 
16335 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16336 l_bflow_applied_to_amt       := NULL; -- 5132302
16337 l_entered_amt_idx            := NULL;          -- 4262811
16338 l_accted_amt_idx             := NULL;          -- 4262811
16339 l_acc_rev_flag               := NULL;          -- 4262811
16340 l_accrual_line_num           := NULL;          -- 4262811
16341 l_tmp_amt                    := NULL;          -- 4262811
16342 --
16343  
16344 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16345     l_balance_type_code <> 'B' THEN
16346 IF NVL(p_source_63,'
16347 ') =  'REV'
16348  THEN 
16349 
16350    --
16351    XLA_AE_LINES_PKG.SetNewLine;
16352 
16353    p_balance_type_code          := l_balance_type_code;
16354    -- set the flag so later we will know whether the gain loss line needs to be created
16355    
16356    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16357      p_actual_flag :='A';
16358    END IF;
16359 
16360    --
16361    -- bulk performance
16362    --
16363    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16364                                       p_header_num   => 0); -- 4262811
16365    --
16366    -- set accounting line options
16367    --
16368    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16369            p_natural_side_code          => 'C'
16370          , p_gain_or_loss_flag          => 'N'
16371          , p_gl_transfer_mode_code      => 'S'
16372          , p_acct_entry_type_code       => 'A'
16373          , p_switch_side_flag           => 'Y'
16374          , p_merge_duplicate_code       => 'A'
16375          );
16376    --
16377    l_acc_rev_natural_side_code := 'D';  -- 4262811
16378    -- 
16379    --
16383       (p_component_type             => l_component_type
16380    -- set accounting line type info
16381    --
16382    xla_ae_lines_pkg.SetAcctLineType
16384       ,p_event_type_code            => l_event_type_code
16385       ,p_line_definition_owner_code => l_line_definition_owner_code
16386       ,p_line_definition_code       => l_line_definition_code
16387       ,p_accounting_line_code       => l_component_code
16388       ,p_accounting_line_type_code  => l_component_type_code
16389       ,p_accounting_line_appl_id    => l_component_appl_id
16390       ,p_amb_context_code           => l_amb_context_code
16391       ,p_entity_code                => l_entity_code
16392       ,p_event_class_code           => l_event_class_code);
16393    --
16394    -- set accounting class
16395    --
16396    xla_ae_lines_pkg.SetAcctClass(
16397            p_accounting_class_code  => 'REVENUE'
16398          , p_ae_header_id           => l_ae_header_id
16399          );
16400 
16401    --
16402    -- set rounding class
16403    --
16404    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16405                       'RECEIVABLE';
16406 
16407    --
16408    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16409    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16410    --
16411    -- bulk performance
16412    --
16413    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16414 
16415    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16416       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16417 
16418    -- 4955764
16419    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16420       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16421 
16422    -- 4458381 Public Sector Enh
16423    
16424    --
16425    -- set accounting attributes for the line type
16426    --
16427    l_entered_amt_idx := 3;
16428    l_accted_amt_idx  := 9;
16429    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16430    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
16431    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_52);
16432    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
16433    l_rec_acct_attrs.array_char_value(2)  := p_source_53;
16434    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
16435    l_rec_acct_attrs.array_num_value(3)  := p_source_64;
16436    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
16437    l_rec_acct_attrs.array_char_value(4)  := p_source_54;
16438    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
16439    l_rec_acct_attrs.array_date_value(5)  := p_source_55;
16440    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
16441    l_rec_acct_attrs.array_num_value(6)  := p_source_56;
16442    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
16443    l_rec_acct_attrs.array_char_value(7)  := p_source_57;
16444    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
16445    l_rec_acct_attrs.array_char_value(8)  := p_source_58;
16446    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
16447    l_rec_acct_attrs.array_num_value(9)  := p_source_59;
16448    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
16449    l_rec_acct_attrs.array_num_value(10)  := p_source_60;
16450    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
16451    l_rec_acct_attrs.array_num_value(11)  := p_source_61;
16452    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
16453    l_rec_acct_attrs.array_char_value(12)  := p_source_39;
16454    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
16455    l_rec_acct_attrs.array_num_value(13)  := p_source_62;
16456 
16457    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16458    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16459 
16460    ---------------------------------------------------------------------------------------------------------------
16461    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16462    ---------------------------------------------------------------------------------------------------------------
16463    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16464 
16465    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16466    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16467 
16468    IF xla_accounting_cache_pkg.GetValueChar
16469          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16470          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16471    AND l_bflow_method_code = 'PRIOR_ENTRY'
16472 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16473    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16474          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16475        )
16476    THEN
16477          xla_ae_lines_pkg.BflowUpgEntry
16478            (p_business_method_code    => l_bflow_method_code
16479            ,p_business_class_code     => l_bflow_class_code
16483 -- No business flow processing for business flow method of NONE.
16480            ,p_balance_type            => l_balance_type_code);
16481    ELSE
16482       NULL;
16484    END IF;
16485 
16486    --
16487    -- call analytical criteria
16488    --
16489    
16490 
16491 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
16492 xla_ae_lines_pkg.SetAnalyticalCriteria(
16493    p_analytical_criterion_name    => 'Project Number'
16494  , p_analytical_criterion_owner   => 'S'
16495  , p_analytical_criterion_code    => 'PROJECT_NUMBER'
16496  , p_amb_context_code             => 'DEFAULT'
16497  , p_balancing_flag               => 'N'
16498  
16499  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_65)
16500  , p_analytical_detail_num_1     =>  NULL
16501  , p_analytical_detail_date_1    =>  NULL
16502 
16503  , p_ae_header_id                 => l_ae_header_id
16504 )
16505 ;
16506 --
16507 
16508    --
16509    -- call description
16510    --
16511    -- No description or it is inherited.
16512    --
16513    -- call ADRs
16514    -- Bug 4922099
16515    --
16516    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16517         (NVL(l_actual_upg_option, 'N') = 'O') OR
16518         (NVL(l_enc_upg_option, 'N') = 'O')
16519       )
16520    THEN
16521    NULL;
16522    --
16523    --
16524    
16525   l_ccid := AcctDerRule_12(
16526            p_application_id           => p_application_id
16527          , p_ae_header_id             => l_ae_header_id 
16528 , p_source_14 => p_source_14
16529          , x_transaction_coa_id       => l_adr_transaction_coa_id
16530          , x_accounting_coa_id        => l_adr_accounting_coa_id
16531          , x_value_type_code          => l_adr_value_type_code
16532          , p_side                     => 'NA'
16533    );
16534 
16535    xla_ae_lines_pkg.set_ccid(
16536     p_code_combination_id          => l_ccid
16537   , p_value_type_code              => l_adr_value_type_code
16538   , p_transaction_coa_id           => l_adr_transaction_coa_id
16539   , p_accounting_coa_id            => l_adr_accounting_coa_id
16540   , p_adr_code                     => 'CM_DIST_CCID'
16541   , p_adr_type_code                => 'S'
16542   , p_component_type               => l_component_type
16543   , p_component_code               => l_component_code
16544   , p_component_type_code          => l_component_type_code
16545   , p_component_appl_id            => l_component_appl_id
16546   , p_amb_context_code             => l_amb_context_code
16547   , p_side                         => 'NA'
16548   );
16549 
16550 
16551    --
16552    --
16553    END IF;
16554    --
16555    -- Bug 4922099
16556    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16557           (NVL(l_enc_upg_option, 'N') = 'O')
16558         ) AND
16559         (l_bflow_method_code = 'PRIOR_ENTRY')
16560       )
16561    THEN
16562       IF
16563       --
16564       1 = 2
16565       --
16566       THEN
16567       xla_accounting_err_pkg.build_message
16568                                     (p_appli_s_name            => 'XLA'
16569                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16570                                     ,p_token_1                 => 'LINE_NUMBER'
16571                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16572                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16573                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16574                                                                              l_component_type
16575                                                                             ,l_component_code
16576                                                                             ,l_component_type_code
16577                                                                             ,l_component_appl_id
16578                                                                             ,l_amb_context_code
16579                                                                             ,l_entity_code
16580                                                                             ,l_event_class_code
16581                                                                            )
16582                                     ,p_token_3                 => 'OWNER'
16583                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16584                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16585                                                                           ,p_lookup_code    => l_component_type_code
16586                                                                          )
16587                                     ,p_token_4                 => 'PRODUCT_NAME'
16588                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16589                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16590                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16591                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16592                                     ,p_ae_header_id            =>  NULL
16593                                        );
16594 
16598                       ,p_level    => C_LEVEL_ERROR
16595         IF (C_LEVEL_ERROR>= g_log_level) THEN
16596                  trace
16597                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16599                       ,p_module   => l_log_module);
16600         END IF;
16601       END IF;
16602    END IF;
16603    --
16604    --
16605    ------------------------------------------------------------------------------------------------
16606    -- 4219869 Business Flow
16607    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16608    -- Prior Entry.  Currently, the following code is always generated.
16609    ------------------------------------------------------------------------------------------------
16610    XLA_AE_LINES_PKG.ValidateCurrentLine;
16611 
16612    ------------------------------------------------------------------------------------
16613    -- 4219869 Business Flow
16614    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16615    ------------------------------------------------------------------------------------
16616    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16617 
16618    ----------------------------------------------------------------------------------
16619    -- 4219869 Business Flow
16620    -- Update journal entry status -- Need to generate this within IF <condition>
16621    ----------------------------------------------------------------------------------
16622    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16623          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16624          ,p_balance_type_code => l_balance_type_code
16625          );
16626 
16627    -------------------------------------------------------------------------------------------
16628    -- 4262811 - Generate the Accrual Reversal lines
16629    -------------------------------------------------------------------------------------------
16630    BEGIN
16631       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16632                               (g_array_event(p_event_id).array_value_num('header_index'));
16633       IF l_acc_rev_flag IS NULL THEN
16634          l_acc_rev_flag := 'N';
16635       END IF;
16636    EXCEPTION
16637       WHEN OTHERS THEN
16638          l_acc_rev_flag := 'N';
16639    END;
16640    --
16641    IF (l_acc_rev_flag = 'Y') THEN
16642 
16643        -- 4645092  ------------------------------------------------------------------------------
16644        -- To allow MPA report to determine if it should generate report process
16645        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16646        ------------------------------------------------------------------------------------------
16647 
16648        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16649        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16650    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
16651    -- call ADRs
16652    -- Bug 4922099
16653    --
16654    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16655         (NVL(l_actual_upg_option, 'N') = 'O') OR
16656         (NVL(l_enc_upg_option, 'N') = 'O')
16657       )
16658    THEN
16659    NULL;
16660    --
16661    --
16662    
16663   l_ccid := AcctDerRule_12(
16664            p_application_id           => p_application_id
16665          , p_ae_header_id             => l_ae_header_id 
16666 , p_source_14 => p_source_14
16667          , x_transaction_coa_id       => l_adr_transaction_coa_id
16668          , x_accounting_coa_id        => l_adr_accounting_coa_id
16669          , x_value_type_code          => l_adr_value_type_code
16670          , p_side                     => 'NA'
16671    );
16672 
16673    xla_ae_lines_pkg.set_ccid(
16674     p_code_combination_id          => l_ccid
16675   , p_value_type_code              => l_adr_value_type_code
16676   , p_transaction_coa_id           => l_adr_transaction_coa_id
16677   , p_accounting_coa_id            => l_adr_accounting_coa_id
16678   , p_adr_code                     => 'CM_DIST_CCID'
16679   , p_adr_type_code                => 'S'
16680   , p_component_type               => l_component_type
16681   , p_component_code               => l_component_code
16682   , p_component_type_code          => l_component_type_code
16683   , p_component_appl_id            => l_component_appl_id
16684   , p_amb_context_code             => l_amb_context_code
16685   , p_side                         => 'NA'
16686   );
16687 
16688 
16689    --
16690    --
16691    END IF;
16692 
16693        --
16694        -- Update the line information that should be overwritten
16695        --
16696        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16697                                          p_header_num   => 1);
16698        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
16699 
16700        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16701 
16702        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
16703           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16704        END IF;
16705 
16706       --
16707       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16708       --
16709       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16713           -- 4262811a Switch Sign
16710           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
16711       ELSE
16712           ---------------------------------------------------------------------------------------------------
16714           ---------------------------------------------------------------------------------------------------
16715           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
16716           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16717                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16718           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16719                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16720           -- 5132302
16721           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16722                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16723 
16724       END IF;
16725 
16726       -- 4955764
16727       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16728       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16729 
16730 
16731       XLA_AE_LINES_PKG.ValidateCurrentLine;
16732       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16733 
16734       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16735                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16736                ,p_balance_type_code => l_balance_type_code);
16737 
16738    END IF;
16739 
16740    -----------------------------------------------------------------------------------------
16741    -- 4262811 Multiperiod Accounting
16742    -----------------------------------------------------------------------------------------
16743      -- No MPA option is assigned.
16744 
16745 
16746 END IF;
16747 END IF;
16748 --
16749 
16750 --
16751 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16752    trace
16753       (p_msg      => 'END of AcctLineType_48'
16754       ,p_level    => C_LEVEL_PROCEDURE
16755       ,p_module   => l_log_module);
16756 END IF;
16757 --
16758 EXCEPTION
16759   WHEN xla_exceptions_pkg.application_exception THEN
16760       RAISE;
16761   WHEN OTHERS THEN
16762        xla_exceptions_pkg.raise_message
16763            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_48');
16764 END AcctLineType_48;
16765 --
16766 
16767 ---------------------------------------
16768 --
16769 -- PRIVATE FUNCTION
16770 --         AcctLineType_49
16771 --
16772 ---------------------------------------
16773 PROCEDURE AcctLineType_49 (
16774   p_application_id        IN NUMBER
16775  ,p_event_id              IN NUMBER
16776  ,p_calculate_acctd_flag  IN VARCHAR2
16777  ,p_calculate_g_l_flag    IN VARCHAR2
16778  ,p_actual_flag           IN OUT VARCHAR2
16779  ,p_balance_type_code     OUT VARCHAR2
16780  ,p_gain_or_loss_ref      OUT VARCHAR2
16781  
16782 --Credit Memo Distribution GL Account
16783  , p_source_14            IN NUMBER
16784 --SLA Party Type
16785  , p_source_39            IN VARCHAR2
16786 --Credit Memo Distribution Identifier
16787  , p_source_52            IN NUMBER
16788 --Credit memo distributions type
16789  , p_source_53            IN VARCHAR2
16790 --Credit Memo Currency Code
16791  , p_source_54            IN VARCHAR2
16792 --Credit Memo Exchange Date
16793  , p_source_55            IN DATE
16794 --Credit Memo Exchange Rate
16795  , p_source_56            IN NUMBER
16796 --Credit Memo Exchange Rate Type
16797  , p_source_57            IN VARCHAR2
16798 --Gain Loss Reference
16799  , p_source_58            IN VARCHAR2
16800 --Credit Memo Accounting Amount
16801  , p_source_59            IN NUMBER
16802 --Credit Memo Bill To Customer Account Identifier
16803  , p_source_60            IN NUMBER
16804 --Credit Memo Bill To Customer Site Use Identifier
16805  , p_source_61            IN NUMBER
16806 --Credit Memo Tax Line Identifier
16807  , p_source_62            IN NUMBER
16808 --Credit Memo Distribution Account Class
16809  , p_source_63            IN VARCHAR2
16810 --Credit Memo Distribution Entered Amount
16811  , p_source_64            IN NUMBER
16812 )
16813 IS
16814 
16815 l_component_type              VARCHAR2(80);
16816 l_component_code              VARCHAR2(30);
16817 l_component_type_code         VARCHAR2(1);
16818 l_component_appl_id           INTEGER;
16819 l_amb_context_code            VARCHAR2(30);
16820 l_entity_code                 VARCHAR2(30);
16821 l_event_class_code            VARCHAR2(30);
16822 l_ae_header_id                NUMBER;
16823 l_event_type_code             VARCHAR2(30);
16824 l_line_definition_code        VARCHAR2(30);
16825 l_line_definition_owner_code  VARCHAR2(1);
16826 --
16827 -- adr variables
16828 l_segment                     VARCHAR2(30);
16829 l_ccid                        NUMBER;
16830 l_adr_transaction_coa_id      NUMBER;
16831 l_adr_accounting_coa_id       NUMBER;
16832 l_adr_flexfield_segment_code  VARCHAR2(30);
16833 l_adr_flex_value_set_id       NUMBER;
16834 l_adr_value_type_code         VARCHAR2(30);
16835 l_adr_value_combination_id    NUMBER;
16839 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16836 l_adr_value_segment_code      VARCHAR2(30);
16837 
16838 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16840 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16841 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16842 
16843 -- 4262811 Variables ------------------------------------------------------------------------------------------
16844 l_entered_amt_idx             NUMBER;
16845 l_accted_amt_idx              NUMBER;
16846 l_acc_rev_flag                VARCHAR2(1);
16847 l_accrual_line_num            NUMBER;
16848 l_tmp_amt                     NUMBER;
16849 l_acc_rev_natural_side_code   VARCHAR2(1);
16850 
16851 l_num_entries                 NUMBER;
16852 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16853 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16854 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16855 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16856 l_recog_line_1                NUMBER;
16857 l_recog_line_2                NUMBER;
16858 
16859 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16860 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16861 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16862 
16863 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16864 
16865 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16866 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16867 
16868 ---------------------------------------------------------------------------------------------------------------
16869 
16870 
16871 --
16872 -- bulk performance
16873 --
16874 l_balance_type_code           VARCHAR2(1);
16875 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16876 l_log_module                  VARCHAR2(240);
16877 
16878 --
16879 -- Upgrade strategy
16880 --
16881 l_actual_upg_option           VARCHAR2(1);
16882 l_enc_upg_option           VARCHAR2(1);
16883 
16884 --
16885 BEGIN
16886 --
16887 IF g_log_enabled THEN
16888       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
16889 END IF;
16890 --
16891 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16892 
16893       trace
16894          (p_msg      => 'BEGIN of AcctLineType_49'
16895          ,p_level    => C_LEVEL_PROCEDURE
16896          ,p_module   => l_log_module);
16897 
16898 END IF;
16899 --
16900 l_component_type             := 'AMB_JLT';
16901 l_component_code             := 'CM_DEFAULT_TAX';
16902 l_component_type_code        := 'S';
16903 l_component_appl_id          :=  222;
16904 l_amb_context_code           := 'DEFAULT';
16905 l_entity_code                := 'TRANSACTIONS';
16906 l_event_class_code           := 'CREDIT_MEMO';
16907 l_event_type_code            := 'CREDIT_MEMO_ALL';
16908 l_line_definition_owner_code := 'S';
16909 l_line_definition_code       := 'JA_CN_AR_CM_DEFAULT_ACCRUAL';
16910 --
16911 l_balance_type_code          := 'A';
16912 l_segment                     := NULL;
16913 l_ccid                        := NULL;
16914 l_adr_transaction_coa_id      := NULL;
16915 l_adr_accounting_coa_id       := NULL;
16916 l_adr_flexfield_segment_code  := NULL;
16917 l_adr_flex_value_set_id       := NULL;
16918 l_adr_value_type_code         := NULL;
16919 l_adr_value_combination_id    := NULL;
16920 l_adr_value_segment_code      := NULL;
16921 
16922 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16923 l_bflow_class_code           := '';    -- 4219869 Business Flow
16924 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16925 l_budgetary_control_flag     := 'N';
16926 
16927 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16928 l_bflow_applied_to_amt       := NULL; -- 5132302
16929 l_entered_amt_idx            := NULL;          -- 4262811
16930 l_accted_amt_idx             := NULL;          -- 4262811
16931 l_acc_rev_flag               := NULL;          -- 4262811
16932 l_accrual_line_num           := NULL;          -- 4262811
16933 l_tmp_amt                    := NULL;          -- 4262811
16934 --
16935  
16936 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16937     l_balance_type_code <> 'B' THEN
16938 IF NVL(p_source_63,'
16939 ') =  'TAX'
16940  THEN 
16941 
16942    --
16943    XLA_AE_LINES_PKG.SetNewLine;
16944 
16945    p_balance_type_code          := l_balance_type_code;
16946    -- set the flag so later we will know whether the gain loss line needs to be created
16947    
16948    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16949      p_actual_flag :='A';
16950    END IF;
16951 
16952    --
16953    -- bulk performance
16954    --
16955    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16956                                       p_header_num   => 0); -- 4262811
16957    --
16958    -- set accounting line options
16959    --
16960    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16961            p_natural_side_code          => 'C'
16962          , p_gain_or_loss_flag          => 'N'
16963          , p_gl_transfer_mode_code      => 'S'
16967          );
16964          , p_acct_entry_type_code       => 'A'
16965          , p_switch_side_flag           => 'Y'
16966          , p_merge_duplicate_code       => 'A'
16968    --
16969    l_acc_rev_natural_side_code := 'D';  -- 4262811
16970    -- 
16971    --
16972    -- set accounting line type info
16973    --
16974    xla_ae_lines_pkg.SetAcctLineType
16975       (p_component_type             => l_component_type
16976       ,p_event_type_code            => l_event_type_code
16977       ,p_line_definition_owner_code => l_line_definition_owner_code
16978       ,p_line_definition_code       => l_line_definition_code
16979       ,p_accounting_line_code       => l_component_code
16980       ,p_accounting_line_type_code  => l_component_type_code
16981       ,p_accounting_line_appl_id    => l_component_appl_id
16982       ,p_amb_context_code           => l_amb_context_code
16983       ,p_entity_code                => l_entity_code
16984       ,p_event_class_code           => l_event_class_code);
16985    --
16986    -- set accounting class
16987    --
16988    xla_ae_lines_pkg.SetAcctClass(
16989            p_accounting_class_code  => 'TAX'
16990          , p_ae_header_id           => l_ae_header_id
16991          );
16992 
16993    --
16994    -- set rounding class
16995    --
16996    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16997                       'RECEIVABLE';
16998 
16999    --
17000    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17001    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17002    --
17003    -- bulk performance
17004    --
17005    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17006 
17007    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17008       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17009 
17010    -- 4955764
17011    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17012       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17013 
17014    -- 4458381 Public Sector Enh
17015    
17016    --
17017    -- set accounting attributes for the line type
17018    --
17019    l_entered_amt_idx := 3;
17020    l_accted_amt_idx  := 9;
17021    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17022    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17023    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_52);
17024    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17025    l_rec_acct_attrs.array_char_value(2)  := p_source_53;
17026    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17027    l_rec_acct_attrs.array_num_value(3)  := p_source_64;
17028    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17029    l_rec_acct_attrs.array_char_value(4)  := p_source_54;
17030    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17031    l_rec_acct_attrs.array_date_value(5)  := p_source_55;
17032    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17033    l_rec_acct_attrs.array_num_value(6)  := p_source_56;
17034    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17035    l_rec_acct_attrs.array_char_value(7)  := p_source_57;
17036    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
17037    l_rec_acct_attrs.array_char_value(8)  := p_source_58;
17038    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
17039    l_rec_acct_attrs.array_num_value(9)  := p_source_59;
17040    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
17041    l_rec_acct_attrs.array_num_value(10)  := p_source_60;
17042    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
17043    l_rec_acct_attrs.array_num_value(11)  := p_source_61;
17044    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
17045    l_rec_acct_attrs.array_char_value(12)  := p_source_39;
17046    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
17047    l_rec_acct_attrs.array_num_value(13)  := p_source_62;
17048 
17049    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17050    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17051 
17052    ---------------------------------------------------------------------------------------------------------------
17053    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17054    ---------------------------------------------------------------------------------------------------------------
17055    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17056 
17057    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17058    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17059 
17060    IF xla_accounting_cache_pkg.GetValueChar
17061          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17062          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17063    AND l_bflow_method_code = 'PRIOR_ENTRY'
17064 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17065    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17069          xla_ae_lines_pkg.BflowUpgEntry
17066          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17067        )
17068    THEN
17070            (p_business_method_code    => l_bflow_method_code
17071            ,p_business_class_code     => l_bflow_class_code
17072            ,p_balance_type            => l_balance_type_code);
17073    ELSE
17074       NULL;
17075 -- No business flow processing for business flow method of NONE.
17076    END IF;
17077 
17078    --
17079    -- call analytical criteria
17080    --
17081    
17082    --
17083    -- call description
17084    --
17085    -- No description or it is inherited.
17086    --
17087    -- call ADRs
17088    -- Bug 4922099
17089    --
17090    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17091         (NVL(l_actual_upg_option, 'N') = 'O') OR
17092         (NVL(l_enc_upg_option, 'N') = 'O')
17093       )
17094    THEN
17095    NULL;
17096    --
17097    --
17098    
17099   l_ccid := AcctDerRule_12(
17100            p_application_id           => p_application_id
17101          , p_ae_header_id             => l_ae_header_id 
17102 , p_source_14 => p_source_14
17103          , x_transaction_coa_id       => l_adr_transaction_coa_id
17104          , x_accounting_coa_id        => l_adr_accounting_coa_id
17105          , x_value_type_code          => l_adr_value_type_code
17106          , p_side                     => 'NA'
17107    );
17108 
17109    xla_ae_lines_pkg.set_ccid(
17110     p_code_combination_id          => l_ccid
17111   , p_value_type_code              => l_adr_value_type_code
17112   , p_transaction_coa_id           => l_adr_transaction_coa_id
17113   , p_accounting_coa_id            => l_adr_accounting_coa_id
17114   , p_adr_code                     => 'CM_DIST_CCID'
17115   , p_adr_type_code                => 'S'
17116   , p_component_type               => l_component_type
17117   , p_component_code               => l_component_code
17118   , p_component_type_code          => l_component_type_code
17119   , p_component_appl_id            => l_component_appl_id
17120   , p_amb_context_code             => l_amb_context_code
17121   , p_side                         => 'NA'
17122   );
17123 
17124 
17125    --
17126    --
17127    END IF;
17128    --
17129    -- Bug 4922099
17130    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17131           (NVL(l_enc_upg_option, 'N') = 'O')
17132         ) AND
17133         (l_bflow_method_code = 'PRIOR_ENTRY')
17134       )
17135    THEN
17136       IF
17137       --
17138       1 = 2
17139       --
17140       THEN
17141       xla_accounting_err_pkg.build_message
17142                                     (p_appli_s_name            => 'XLA'
17143                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17144                                     ,p_token_1                 => 'LINE_NUMBER'
17145                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17146                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17147                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17148                                                                              l_component_type
17149                                                                             ,l_component_code
17150                                                                             ,l_component_type_code
17151                                                                             ,l_component_appl_id
17152                                                                             ,l_amb_context_code
17153                                                                             ,l_entity_code
17154                                                                             ,l_event_class_code
17155                                                                            )
17156                                     ,p_token_3                 => 'OWNER'
17157                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17158                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17159                                                                           ,p_lookup_code    => l_component_type_code
17160                                                                          )
17161                                     ,p_token_4                 => 'PRODUCT_NAME'
17162                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17163                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17164                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17165                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17166                                     ,p_ae_header_id            =>  NULL
17167                                        );
17168 
17169         IF (C_LEVEL_ERROR>= g_log_level) THEN
17170                  trace
17171                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17172                       ,p_level    => C_LEVEL_ERROR
17173                       ,p_module   => l_log_module);
17174         END IF;
17175       END IF;
17176    END IF;
17177    --
17178    --
17182    -- Prior Entry.  Currently, the following code is always generated.
17179    ------------------------------------------------------------------------------------------------
17180    -- 4219869 Business Flow
17181    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17183    ------------------------------------------------------------------------------------------------
17184    XLA_AE_LINES_PKG.ValidateCurrentLine;
17185 
17186    ------------------------------------------------------------------------------------
17187    -- 4219869 Business Flow
17188    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17189    ------------------------------------------------------------------------------------
17190    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17191 
17192    ----------------------------------------------------------------------------------
17193    -- 4219869 Business Flow
17194    -- Update journal entry status -- Need to generate this within IF <condition>
17195    ----------------------------------------------------------------------------------
17196    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17197          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17198          ,p_balance_type_code => l_balance_type_code
17199          );
17200 
17201    -------------------------------------------------------------------------------------------
17202    -- 4262811 - Generate the Accrual Reversal lines
17203    -------------------------------------------------------------------------------------------
17204    BEGIN
17205       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17206                               (g_array_event(p_event_id).array_value_num('header_index'));
17207       IF l_acc_rev_flag IS NULL THEN
17208          l_acc_rev_flag := 'N';
17209       END IF;
17210    EXCEPTION
17211       WHEN OTHERS THEN
17212          l_acc_rev_flag := 'N';
17213    END;
17214    --
17215    IF (l_acc_rev_flag = 'Y') THEN
17216 
17217        -- 4645092  ------------------------------------------------------------------------------
17218        -- To allow MPA report to determine if it should generate report process
17219        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17220        ------------------------------------------------------------------------------------------
17221 
17222        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17223        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17224    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
17225    -- call ADRs
17226    -- Bug 4922099
17227    --
17228    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17229         (NVL(l_actual_upg_option, 'N') = 'O') OR
17230         (NVL(l_enc_upg_option, 'N') = 'O')
17231       )
17232    THEN
17233    NULL;
17234    --
17235    --
17236    
17237   l_ccid := AcctDerRule_12(
17238            p_application_id           => p_application_id
17239          , p_ae_header_id             => l_ae_header_id 
17240 , p_source_14 => p_source_14
17241          , x_transaction_coa_id       => l_adr_transaction_coa_id
17242          , x_accounting_coa_id        => l_adr_accounting_coa_id
17243          , x_value_type_code          => l_adr_value_type_code
17244          , p_side                     => 'NA'
17245    );
17246 
17247    xla_ae_lines_pkg.set_ccid(
17248     p_code_combination_id          => l_ccid
17249   , p_value_type_code              => l_adr_value_type_code
17250   , p_transaction_coa_id           => l_adr_transaction_coa_id
17251   , p_accounting_coa_id            => l_adr_accounting_coa_id
17252   , p_adr_code                     => 'CM_DIST_CCID'
17253   , p_adr_type_code                => 'S'
17254   , p_component_type               => l_component_type
17255   , p_component_code               => l_component_code
17256   , p_component_type_code          => l_component_type_code
17257   , p_component_appl_id            => l_component_appl_id
17258   , p_amb_context_code             => l_amb_context_code
17259   , p_side                         => 'NA'
17260   );
17261 
17262 
17263    --
17264    --
17265    END IF;
17266 
17267        --
17268        -- Update the line information that should be overwritten
17269        --
17270        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17271                                          p_header_num   => 1);
17272        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17273 
17274        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17275 
17276        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17277           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17278        END IF;
17279 
17280       --
17281       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17282       --
17283       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17284           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17285       ELSE
17286           ---------------------------------------------------------------------------------------------------
17287           -- 4262811a Switch Sign
17288           ---------------------------------------------------------------------------------------------------
17292           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17289           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17290           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17291                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17293                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17294           -- 5132302
17295           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17296                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17297 
17298       END IF;
17299 
17300       -- 4955764
17301       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17302       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17303 
17304 
17305       XLA_AE_LINES_PKG.ValidateCurrentLine;
17306       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17307 
17308       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17309                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17310                ,p_balance_type_code => l_balance_type_code);
17311 
17312    END IF;
17313 
17314    -----------------------------------------------------------------------------------------
17315    -- 4262811 Multiperiod Accounting
17316    -----------------------------------------------------------------------------------------
17317      -- No MPA option is assigned.
17318 
17319 
17320 END IF;
17321 END IF;
17322 --
17323 
17324 --
17325 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17326    trace
17327       (p_msg      => 'END of AcctLineType_49'
17328       ,p_level    => C_LEVEL_PROCEDURE
17329       ,p_module   => l_log_module);
17330 END IF;
17331 --
17332 EXCEPTION
17333   WHEN xla_exceptions_pkg.application_exception THEN
17334       RAISE;
17335   WHEN OTHERS THEN
17336        xla_exceptions_pkg.raise_message
17337            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_49');
17338 END AcctLineType_49;
17339 --
17340 
17341 ---------------------------------------
17342 --
17343 -- PRIVATE FUNCTION
17344 --         AcctLineType_50
17345 --
17346 ---------------------------------------
17347 PROCEDURE AcctLineType_50 (
17348   p_application_id        IN NUMBER
17349  ,p_event_id              IN NUMBER
17350  ,p_calculate_acctd_flag  IN VARCHAR2
17351  ,p_calculate_g_l_flag    IN VARCHAR2
17352  ,p_actual_flag           IN OUT VARCHAR2
17353  ,p_balance_type_code     OUT VARCHAR2
17354  ,p_gain_or_loss_ref      OUT VARCHAR2
17355  
17356 --System Gain Account
17357  , p_source_24            IN NUMBER
17358 --System Loss Account
17359  , p_source_25            IN NUMBER
17360 --SLA Party Type
17361  , p_source_39            IN VARCHAR2
17362 --Credit Memo Distribution Identifier
17363  , p_source_52            IN NUMBER
17364 --Credit memo distributions type
17365  , p_source_53            IN VARCHAR2
17366 --Gain Loss Reference
17367  , p_source_58            IN VARCHAR2
17368 --Credit Memo Accounting Amount
17369  , p_source_59            IN NUMBER
17370 --Credit Memo Bill To Customer Account Identifier
17371  , p_source_60            IN NUMBER
17372 --Credit Memo Bill To Customer Site Use Identifier
17373  , p_source_61            IN NUMBER
17374 --Credit Memo Tax Line Identifier
17375  , p_source_62            IN NUMBER
17376 )
17377 IS
17378 
17379 l_component_type              VARCHAR2(80);
17380 l_component_code              VARCHAR2(30);
17381 l_component_type_code         VARCHAR2(1);
17382 l_component_appl_id           INTEGER;
17383 l_amb_context_code            VARCHAR2(30);
17384 l_entity_code                 VARCHAR2(30);
17385 l_event_class_code            VARCHAR2(30);
17386 l_ae_header_id                NUMBER;
17387 l_event_type_code             VARCHAR2(30);
17388 l_line_definition_code        VARCHAR2(30);
17389 l_line_definition_owner_code  VARCHAR2(1);
17390 --
17391 -- adr variables
17392 l_segment                     VARCHAR2(30);
17393 l_ccid                        NUMBER;
17394 l_adr_transaction_coa_id      NUMBER;
17395 l_adr_accounting_coa_id       NUMBER;
17396 l_adr_flexfield_segment_code  VARCHAR2(30);
17397 l_adr_flex_value_set_id       NUMBER;
17398 l_adr_value_type_code         VARCHAR2(30);
17399 l_adr_value_combination_id    NUMBER;
17400 l_adr_value_segment_code      VARCHAR2(30);
17401 
17402 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17403 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17404 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17405 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17406 
17407 -- 4262811 Variables ------------------------------------------------------------------------------------------
17408 l_entered_amt_idx             NUMBER;
17409 l_accted_amt_idx              NUMBER;
17410 l_acc_rev_flag                VARCHAR2(1);
17411 l_accrual_line_num            NUMBER;
17412 l_tmp_amt                     NUMBER;
17413 l_acc_rev_natural_side_code   VARCHAR2(1);
17414 
17415 l_num_entries                 NUMBER;
17416 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17420 l_recog_line_1                NUMBER;
17417 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17418 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17419 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17421 l_recog_line_2                NUMBER;
17422 
17423 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17424 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17425 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17426 
17427 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17428 
17429 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17430 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17431 
17432 ---------------------------------------------------------------------------------------------------------------
17433 
17434 
17435 --
17436 -- bulk performance
17437 --
17438 l_balance_type_code           VARCHAR2(1);
17439 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17440 l_log_module                  VARCHAR2(240);
17441 
17442 --
17443 -- Upgrade strategy
17444 --
17445 l_actual_upg_option           VARCHAR2(1);
17446 l_enc_upg_option           VARCHAR2(1);
17447 
17448 --
17449 BEGIN
17450 --
17451 IF g_log_enabled THEN
17452       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
17453 END IF;
17454 --
17455 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17456 
17457       trace
17458          (p_msg      => 'BEGIN of AcctLineType_50'
17459          ,p_level    => C_LEVEL_PROCEDURE
17460          ,p_module   => l_log_module);
17461 
17462 END IF;
17463 --
17464 l_component_type             := 'AMB_JLT';
17465 l_component_code             := 'CM_EXCH_GAIN_LOSS';
17466 l_component_type_code        := 'S';
17467 l_component_appl_id          :=  222;
17468 l_amb_context_code           := 'DEFAULT';
17469 l_entity_code                := 'TRANSACTIONS';
17470 l_event_class_code           := 'CREDIT_MEMO';
17471 l_event_type_code            := 'CREDIT_MEMO_ALL';
17472 l_line_definition_owner_code := 'S';
17473 l_line_definition_code       := 'JA_CN_AR_CM_DEFAULT_ACCRUAL';
17474 --
17475 l_balance_type_code          := 'A';
17476 l_segment                     := NULL;
17477 l_ccid                        := NULL;
17478 l_adr_transaction_coa_id      := NULL;
17479 l_adr_accounting_coa_id       := NULL;
17480 l_adr_flexfield_segment_code  := NULL;
17481 l_adr_flex_value_set_id       := NULL;
17482 l_adr_value_type_code         := NULL;
17483 l_adr_value_combination_id    := NULL;
17484 l_adr_value_segment_code      := NULL;
17485 
17486 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17487 l_bflow_class_code           := '';    -- 4219869 Business Flow
17488 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17489 l_budgetary_control_flag     := 'N';
17490 
17491 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17492 l_bflow_applied_to_amt       := NULL; -- 5132302
17493 l_entered_amt_idx            := NULL;          -- 4262811
17494 l_accted_amt_idx             := NULL;          -- 4262811
17495 l_acc_rev_flag               := NULL;          -- 4262811
17496 l_accrual_line_num           := NULL;          -- 4262811
17497 l_tmp_amt                    := NULL;          -- 4262811
17498 --
17499 IF NOT ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
17500             (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')) THEN
17501                return;
17502   END IF;
17503   
17504 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17505     l_balance_type_code <> 'B' THEN
17506 
17507    --
17508    XLA_AE_LINES_PKG.SetNewLine;
17509 
17510    p_balance_type_code          := l_balance_type_code;
17511    -- set the flag so later we will know whether the gain loss line needs to be created
17512    
17513    IF(l_balance_type_code = 'A' ) THEN
17514      p_actual_flag :='G';
17515    END IF;
17516 
17517    --
17518    -- bulk performance
17519    --
17520    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17521                                       p_header_num   => 0); -- 4262811
17522    --
17523    -- set accounting line options
17524    --
17525    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17526            p_natural_side_code          => 'G'
17527          , p_gain_or_loss_flag          => 'N'
17528          , p_gl_transfer_mode_code      => 'S'
17529          , p_acct_entry_type_code       => 'A'
17530          , p_switch_side_flag           => ''
17531          , p_merge_duplicate_code       => 'A'
17532          );
17533    --
17534    l_acc_rev_natural_side_code := 'C';  -- 4262811
17535    -- 
17536    --
17537    -- set accounting line type info
17538    --
17539    xla_ae_lines_pkg.SetAcctLineType
17540       (p_component_type             => l_component_type
17541       ,p_event_type_code            => l_event_type_code
17542       ,p_line_definition_owner_code => l_line_definition_owner_code
17546       ,p_accounting_line_appl_id    => l_component_appl_id
17543       ,p_line_definition_code       => l_line_definition_code
17544       ,p_accounting_line_code       => l_component_code
17545       ,p_accounting_line_type_code  => l_component_type_code
17547       ,p_amb_context_code           => l_amb_context_code
17548       ,p_entity_code                => l_entity_code
17549       ,p_event_class_code           => l_event_class_code);
17550    --
17551    -- set accounting class
17552    --
17553    xla_ae_lines_pkg.SetAcctClass(
17554            p_accounting_class_code  => 'EXCHANGE_GAIN_LOSS'
17555          , p_ae_header_id           => l_ae_header_id
17556          );
17557 
17558    --
17559    -- set rounding class
17560    --
17561    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17562                       'EXCHANGE_GAIN_LOSS';
17563 
17564    --
17565    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17566    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17567    --
17568    -- bulk performance
17569    --
17570    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17571 
17572    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17573       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17574 
17575    -- 4955764
17576    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17577       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17578 
17579    -- 4458381 Public Sector Enh
17580    
17581    --
17582    -- set accounting attributes for the line type
17583    --
17584    l_entered_amt_idx := NULL;
17585    l_accted_amt_idx  := 4;
17586    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17587    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17588    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_52);
17589    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17590    l_rec_acct_attrs.array_char_value(2)  := p_source_53;
17591    l_rec_acct_attrs.array_acct_attr_code(3) := 'GAIN_LOSS_REFERENCE';
17592    l_rec_acct_attrs.array_char_value(3)  := p_source_58;
17593    l_rec_acct_attrs.array_acct_attr_code(4) := 'LEDGER_AMOUNT';
17594    l_rec_acct_attrs.array_num_value(4)  := p_source_59;
17595    l_rec_acct_attrs.array_acct_attr_code(5) := 'PARTY_ID';
17596    l_rec_acct_attrs.array_num_value(5)  := p_source_60;
17597    l_rec_acct_attrs.array_acct_attr_code(6) := 'PARTY_SITE_ID';
17598    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
17599    l_rec_acct_attrs.array_acct_attr_code(7) := 'PARTY_TYPE';
17600    l_rec_acct_attrs.array_char_value(7)  := p_source_39;
17601    l_rec_acct_attrs.array_acct_attr_code(8) := 'TAX_LINE_REF_ID';
17602    l_rec_acct_attrs.array_num_value(8)  := p_source_62;
17603 
17604    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17605    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17606 
17607    ---------------------------------------------------------------------------------------------------------------
17608    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17609    ---------------------------------------------------------------------------------------------------------------
17610    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17611 
17612    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17613    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17614 
17615    IF xla_accounting_cache_pkg.GetValueChar
17616          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17617          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17618    AND l_bflow_method_code = 'PRIOR_ENTRY'
17619 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17620    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17621          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17622        )
17623    THEN
17624          xla_ae_lines_pkg.BflowUpgEntry
17625            (p_business_method_code    => l_bflow_method_code
17626            ,p_business_class_code     => l_bflow_class_code
17627            ,p_balance_type            => l_balance_type_code);
17628    ELSE
17629       NULL;
17630 -- No business flow processing for business flow method of NONE.
17631    END IF;
17632 
17633    --
17634    -- call analytical criteria
17635    --
17636    
17637    --
17638    -- call description
17639    --
17640    -- No description or it is inherited.
17641    --
17642    -- call ADRs
17643    -- Bug 4922099
17644    --
17645    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17646         (NVL(l_actual_upg_option, 'N') = 'O') OR
17647         (NVL(l_enc_upg_option, 'N') = 'O')
17648       )
17649    THEN
17650    NULL;
17651    --
17652    --
17653    
17654   l_ccid := AcctDerRule_22(
17655            p_application_id           => p_application_id
17656          , p_ae_header_id             => l_ae_header_id 
17657 , p_source_24 => p_source_24
17661          , p_side                     => 'CREDIT'
17658          , x_transaction_coa_id       => l_adr_transaction_coa_id
17659          , x_accounting_coa_id        => l_adr_accounting_coa_id
17660          , x_value_type_code          => l_adr_value_type_code
17662    );
17663 
17664    xla_ae_lines_pkg.set_ccid(
17665     p_code_combination_id          => l_ccid
17666   , p_value_type_code              => l_adr_value_type_code
17667   , p_transaction_coa_id           => l_adr_transaction_coa_id
17668   , p_accounting_coa_id            => l_adr_accounting_coa_id
17669   , p_adr_code                     => 'SYS_GAIN_CCID'
17670   , p_adr_type_code                => 'S'
17671   , p_component_type               => l_component_type
17672   , p_component_code               => l_component_code
17673   , p_component_type_code          => l_component_type_code
17674   , p_component_appl_id            => l_component_appl_id
17675   , p_amb_context_code             => l_amb_context_code
17676   , p_side                         => 'CREDIT'
17677   );
17678 
17679 
17680   l_ccid := AcctDerRule_23(
17681            p_application_id           => p_application_id
17682          , p_ae_header_id             => l_ae_header_id 
17683 , p_source_25 => p_source_25
17684          , x_transaction_coa_id       => l_adr_transaction_coa_id
17685          , x_accounting_coa_id        => l_adr_accounting_coa_id
17686          , x_value_type_code          => l_adr_value_type_code
17687          , p_side                     => 'DEBIT'
17688    );
17689 
17690    xla_ae_lines_pkg.set_ccid(
17691     p_code_combination_id          => l_ccid
17692   , p_value_type_code              => l_adr_value_type_code
17693   , p_transaction_coa_id           => l_adr_transaction_coa_id
17694   , p_accounting_coa_id            => l_adr_accounting_coa_id
17695   , p_adr_code                     => 'SYS_LOSS_CCID'
17696   , p_adr_type_code                => 'S'
17697   , p_component_type               => l_component_type
17698   , p_component_code               => l_component_code
17699   , p_component_type_code          => l_component_type_code
17700   , p_component_appl_id            => l_component_appl_id
17701   , p_amb_context_code             => l_amb_context_code
17702   , p_side                         => 'DEBIT'
17703   );
17704 
17705 
17706    --
17707    --
17708    END IF;
17709    --
17710    -- Bug 4922099
17711    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17712           (NVL(l_enc_upg_option, 'N') = 'O')
17713         ) AND
17714         (l_bflow_method_code = 'PRIOR_ENTRY')
17715       )
17716    THEN
17717       IF
17718       --
17719       1 = 2
17720       --
17721       THEN
17722       xla_accounting_err_pkg.build_message
17723                                     (p_appli_s_name            => 'XLA'
17724                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17725                                     ,p_token_1                 => 'LINE_NUMBER'
17726                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17727                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17728                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17729                                                                              l_component_type
17730                                                                             ,l_component_code
17731                                                                             ,l_component_type_code
17732                                                                             ,l_component_appl_id
17733                                                                             ,l_amb_context_code
17734                                                                             ,l_entity_code
17735                                                                             ,l_event_class_code
17736                                                                            )
17737                                     ,p_token_3                 => 'OWNER'
17738                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17739                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17740                                                                           ,p_lookup_code    => l_component_type_code
17741                                                                          )
17742                                     ,p_token_4                 => 'PRODUCT_NAME'
17743                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17744                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17745                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17746                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17747                                     ,p_ae_header_id            =>  NULL
17748                                        );
17749 
17750         IF (C_LEVEL_ERROR>= g_log_level) THEN
17751                  trace
17752                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17753                       ,p_level    => C_LEVEL_ERROR
17754                       ,p_module   => l_log_module);
17755         END IF;
17756       END IF;
17757    END IF;
17758    --
17759    --
17760    ------------------------------------------------------------------------------------------------
17761    -- 4219869 Business Flow
17765    XLA_AE_LINES_PKG.ValidateCurrentLine;
17762    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17763    -- Prior Entry.  Currently, the following code is always generated.
17764    ------------------------------------------------------------------------------------------------
17766 
17767    ------------------------------------------------------------------------------------
17768    -- 4219869 Business Flow
17769    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17770    ------------------------------------------------------------------------------------
17771    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17772 
17773    ----------------------------------------------------------------------------------
17774    -- 4219869 Business Flow
17775    -- Update journal entry status -- Need to generate this within IF <condition>
17776    ----------------------------------------------------------------------------------
17777    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17778          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17779          ,p_balance_type_code => l_balance_type_code
17780          );
17781 
17782    -------------------------------------------------------------------------------------------
17783    -- 4262811 - Generate the Accrual Reversal lines
17784    -------------------------------------------------------------------------------------------
17785    BEGIN
17786       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17787                               (g_array_event(p_event_id).array_value_num('header_index'));
17788       IF l_acc_rev_flag IS NULL THEN
17789          l_acc_rev_flag := 'N';
17790       END IF;
17791    EXCEPTION
17792       WHEN OTHERS THEN
17793          l_acc_rev_flag := 'N';
17794    END;
17795    --
17796    IF (l_acc_rev_flag = 'Y') THEN
17797 
17798        -- 4645092  ------------------------------------------------------------------------------
17799        -- To allow MPA report to determine if it should generate report process
17800        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17801        ------------------------------------------------------------------------------------------
17802 
17803        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17804        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17805    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
17806    -- call ADRs
17807    -- Bug 4922099
17808    --
17809    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17810         (NVL(l_actual_upg_option, 'N') = 'O') OR
17811         (NVL(l_enc_upg_option, 'N') = 'O')
17812       )
17813    THEN
17814    NULL;
17815    --
17816    --
17817    
17818   l_ccid := AcctDerRule_22(
17819            p_application_id           => p_application_id
17820          , p_ae_header_id             => l_ae_header_id 
17821 , p_source_24 => p_source_24
17822          , x_transaction_coa_id       => l_adr_transaction_coa_id
17823          , x_accounting_coa_id        => l_adr_accounting_coa_id
17824          , x_value_type_code          => l_adr_value_type_code
17825          , p_side                     => 'CREDIT'
17826    );
17827 
17828    xla_ae_lines_pkg.set_ccid(
17829     p_code_combination_id          => l_ccid
17830   , p_value_type_code              => l_adr_value_type_code
17831   , p_transaction_coa_id           => l_adr_transaction_coa_id
17832   , p_accounting_coa_id            => l_adr_accounting_coa_id
17833   , p_adr_code                     => 'SYS_GAIN_CCID'
17834   , p_adr_type_code                => 'S'
17835   , p_component_type               => l_component_type
17836   , p_component_code               => l_component_code
17837   , p_component_type_code          => l_component_type_code
17838   , p_component_appl_id            => l_component_appl_id
17839   , p_amb_context_code             => l_amb_context_code
17840   , p_side                         => 'CREDIT'
17841   );
17842 
17843 
17844   l_ccid := AcctDerRule_23(
17845            p_application_id           => p_application_id
17846          , p_ae_header_id             => l_ae_header_id 
17847 , p_source_25 => p_source_25
17848          , x_transaction_coa_id       => l_adr_transaction_coa_id
17849          , x_accounting_coa_id        => l_adr_accounting_coa_id
17850          , x_value_type_code          => l_adr_value_type_code
17851          , p_side                     => 'DEBIT'
17852    );
17853 
17854    xla_ae_lines_pkg.set_ccid(
17855     p_code_combination_id          => l_ccid
17856   , p_value_type_code              => l_adr_value_type_code
17857   , p_transaction_coa_id           => l_adr_transaction_coa_id
17858   , p_accounting_coa_id            => l_adr_accounting_coa_id
17859   , p_adr_code                     => 'SYS_LOSS_CCID'
17860   , p_adr_type_code                => 'S'
17861   , p_component_type               => l_component_type
17862   , p_component_code               => l_component_code
17863   , p_component_type_code          => l_component_type_code
17864   , p_component_appl_id            => l_component_appl_id
17865   , p_amb_context_code             => l_amb_context_code
17866   , p_side                         => 'DEBIT'
17867   );
17868 
17869 
17870    --
17871    --
17872    END IF;
17873 
17874        --
17875        -- Update the line information that should be overwritten
17876        --
17880 
17877        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17878                                          p_header_num   => 1);
17879        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17881        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17882 
17883        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17884           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17885        END IF;
17886 
17887       --
17888       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17889       --
17890       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17891           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17892       ELSE
17893           ---------------------------------------------------------------------------------------------------
17894           -- 4262811a Switch Sign
17895           ---------------------------------------------------------------------------------------------------
17896           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17897           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17898                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17899           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17900                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17901           -- 5132302
17902           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17903                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17904 
17905       END IF;
17906 
17907       -- 4955764
17908       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17909       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17910 
17911 
17912       XLA_AE_LINES_PKG.ValidateCurrentLine;
17913       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17914 
17915       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17916                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17917                ,p_balance_type_code => l_balance_type_code);
17918 
17919    END IF;
17920 
17921    -----------------------------------------------------------------------------------------
17922    -- 4262811 Multiperiod Accounting
17923    -----------------------------------------------------------------------------------------
17924      -- No MPA option is assigned.
17925 
17926 
17927 END IF;
17928 --
17929 
17930 --
17931 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17932    trace
17933       (p_msg      => 'END of AcctLineType_50'
17934       ,p_level    => C_LEVEL_PROCEDURE
17935       ,p_module   => l_log_module);
17936 END IF;
17937 --
17938 EXCEPTION
17939   WHEN xla_exceptions_pkg.application_exception THEN
17940       RAISE;
17941   WHEN OTHERS THEN
17942        xla_exceptions_pkg.raise_message
17943            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_50');
17944 END AcctLineType_50;
17945 --
17946 
17947 ---------------------------------------
17948 --
17949 -- PRIVATE FUNCTION
17950 --         AcctLineType_51
17951 --
17952 ---------------------------------------
17953 PROCEDURE AcctLineType_51 (
17954   p_application_id        IN NUMBER
17955  ,p_event_id              IN NUMBER
17956  ,p_calculate_acctd_flag  IN VARCHAR2
17957  ,p_calculate_g_l_flag    IN VARCHAR2
17958  ,p_actual_flag           IN OUT VARCHAR2
17959  ,p_balance_type_code     OUT VARCHAR2
17960  ,p_gain_or_loss_ref      OUT VARCHAR2
17961  
17962 --Credit Memo Distribution GL Account
17963  , p_source_14            IN NUMBER
17964 --SLA Party Type
17965  , p_source_39            IN VARCHAR2
17966 --Credit Memo Distribution Identifier
17967  , p_source_52            IN NUMBER
17968 --Credit memo distributions type
17969  , p_source_53            IN VARCHAR2
17970 --Credit Memo Currency Code
17971  , p_source_54            IN VARCHAR2
17972 --Credit Memo Exchange Date
17973  , p_source_55            IN DATE
17974 --Credit Memo Exchange Rate
17975  , p_source_56            IN NUMBER
17976 --Credit Memo Exchange Rate Type
17977  , p_source_57            IN VARCHAR2
17978 --Gain Loss Reference
17979  , p_source_58            IN VARCHAR2
17980 --Credit Memo Accounting Amount
17981  , p_source_59            IN NUMBER
17982 --Credit Memo Bill To Customer Account Identifier
17983  , p_source_60            IN NUMBER
17984 --Credit Memo Bill To Customer Site Use Identifier
17985  , p_source_61            IN NUMBER
17986 --Credit Memo Tax Line Identifier
17987  , p_source_62            IN NUMBER
17988 --Credit Memo Distribution Account Class
17989  , p_source_63            IN VARCHAR2
17990 --Credit Memo Distribution Entered Amount
17991  , p_source_64            IN NUMBER
17992 )
17993 IS
17994 
17995 l_component_type              VARCHAR2(80);
17996 l_component_code              VARCHAR2(30);
17997 l_component_type_code         VARCHAR2(1);
17998 l_component_appl_id           INTEGER;
18002 l_ae_header_id                NUMBER;
17999 l_amb_context_code            VARCHAR2(30);
18000 l_entity_code                 VARCHAR2(30);
18001 l_event_class_code            VARCHAR2(30);
18003 l_event_type_code             VARCHAR2(30);
18004 l_line_definition_code        VARCHAR2(30);
18005 l_line_definition_owner_code  VARCHAR2(1);
18006 --
18007 -- adr variables
18008 l_segment                     VARCHAR2(30);
18009 l_ccid                        NUMBER;
18010 l_adr_transaction_coa_id      NUMBER;
18011 l_adr_accounting_coa_id       NUMBER;
18012 l_adr_flexfield_segment_code  VARCHAR2(30);
18013 l_adr_flex_value_set_id       NUMBER;
18014 l_adr_value_type_code         VARCHAR2(30);
18015 l_adr_value_combination_id    NUMBER;
18016 l_adr_value_segment_code      VARCHAR2(30);
18017 
18018 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18019 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18020 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18021 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18022 
18023 -- 4262811 Variables ------------------------------------------------------------------------------------------
18024 l_entered_amt_idx             NUMBER;
18025 l_accted_amt_idx              NUMBER;
18026 l_acc_rev_flag                VARCHAR2(1);
18027 l_accrual_line_num            NUMBER;
18028 l_tmp_amt                     NUMBER;
18029 l_acc_rev_natural_side_code   VARCHAR2(1);
18030 
18031 l_num_entries                 NUMBER;
18032 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18033 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18034 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18035 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18036 l_recog_line_1                NUMBER;
18037 l_recog_line_2                NUMBER;
18038 
18039 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18040 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18041 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18042 
18043 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18044 
18045 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18046 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18047 
18048 ---------------------------------------------------------------------------------------------------------------
18049 
18050 
18051 --
18052 -- bulk performance
18053 --
18054 l_balance_type_code           VARCHAR2(1);
18055 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18056 l_log_module                  VARCHAR2(240);
18057 
18058 --
18059 -- Upgrade strategy
18060 --
18061 l_actual_upg_option           VARCHAR2(1);
18062 l_enc_upg_option           VARCHAR2(1);
18063 
18064 --
18065 BEGIN
18066 --
18067 IF g_log_enabled THEN
18068       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
18069 END IF;
18070 --
18071 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18072 
18073       trace
18074          (p_msg      => 'BEGIN of AcctLineType_51'
18075          ,p_level    => C_LEVEL_PROCEDURE
18076          ,p_module   => l_log_module);
18077 
18078 END IF;
18079 --
18080 l_component_type             := 'AMB_JLT';
18081 l_component_code             := 'CM_ROUND';
18082 l_component_type_code        := 'S';
18083 l_component_appl_id          :=  222;
18084 l_amb_context_code           := 'DEFAULT';
18085 l_entity_code                := 'TRANSACTIONS';
18086 l_event_class_code           := 'CREDIT_MEMO';
18087 l_event_type_code            := 'CREDIT_MEMO_ALL';
18088 l_line_definition_owner_code := 'S';
18089 l_line_definition_code       := 'JA_CN_AR_CM_DEFAULT_ACCRUAL';
18090 --
18091 l_balance_type_code          := 'A';
18092 l_segment                     := NULL;
18093 l_ccid                        := NULL;
18094 l_adr_transaction_coa_id      := NULL;
18095 l_adr_accounting_coa_id       := NULL;
18096 l_adr_flexfield_segment_code  := NULL;
18097 l_adr_flex_value_set_id       := NULL;
18098 l_adr_value_type_code         := NULL;
18099 l_adr_value_combination_id    := NULL;
18100 l_adr_value_segment_code      := NULL;
18101 
18102 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18103 l_bflow_class_code           := '';    -- 4219869 Business Flow
18104 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18105 l_budgetary_control_flag     := 'N';
18106 
18107 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18108 l_bflow_applied_to_amt       := NULL; -- 5132302
18109 l_entered_amt_idx            := NULL;          -- 4262811
18110 l_accted_amt_idx             := NULL;          -- 4262811
18111 l_acc_rev_flag               := NULL;          -- 4262811
18112 l_accrual_line_num           := NULL;          -- 4262811
18113 l_tmp_amt                    := NULL;          -- 4262811
18114 --
18115  
18116 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18117     l_balance_type_code <> 'B' THEN
18118 IF NVL(p_source_63,'
18119 ') =  'ROUND'
18120  THEN 
18121 
18122    --
18123    XLA_AE_LINES_PKG.SetNewLine;
18124 
18125    p_balance_type_code          := l_balance_type_code;
18129      p_actual_flag :='A';
18126    -- set the flag so later we will know whether the gain loss line needs to be created
18127    
18128    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18130    END IF;
18131 
18132    --
18133    -- bulk performance
18134    --
18135    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18136                                       p_header_num   => 0); -- 4262811
18137    --
18138    -- set accounting line options
18139    --
18140    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18141            p_natural_side_code          => 'C'
18142          , p_gain_or_loss_flag          => 'N'
18143          , p_gl_transfer_mode_code      => 'S'
18144          , p_acct_entry_type_code       => 'A'
18145          , p_switch_side_flag           => 'Y'
18146          , p_merge_duplicate_code       => 'A'
18147          );
18148    --
18149    l_acc_rev_natural_side_code := 'D';  -- 4262811
18150    -- 
18151    --
18152    -- set accounting line type info
18153    --
18154    xla_ae_lines_pkg.SetAcctLineType
18155       (p_component_type             => l_component_type
18156       ,p_event_type_code            => l_event_type_code
18157       ,p_line_definition_owner_code => l_line_definition_owner_code
18158       ,p_line_definition_code       => l_line_definition_code
18159       ,p_accounting_line_code       => l_component_code
18160       ,p_accounting_line_type_code  => l_component_type_code
18161       ,p_accounting_line_appl_id    => l_component_appl_id
18162       ,p_amb_context_code           => l_amb_context_code
18163       ,p_entity_code                => l_entity_code
18164       ,p_event_class_code           => l_event_class_code);
18165    --
18166    -- set accounting class
18167    --
18168    xla_ae_lines_pkg.SetAcctClass(
18169            p_accounting_class_code  => 'ROUNDING'
18170          , p_ae_header_id           => l_ae_header_id
18171          );
18172 
18173    --
18174    -- set rounding class
18175    --
18176    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18177                       'RECEIVABLE';
18178 
18179    --
18180    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18181    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18182    --
18183    -- bulk performance
18184    --
18185    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18186 
18187    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18188       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18189 
18190    -- 4955764
18191    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18192       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18193 
18194    -- 4458381 Public Sector Enh
18195    
18196    --
18197    -- set accounting attributes for the line type
18198    --
18199    l_entered_amt_idx := 3;
18200    l_accted_amt_idx  := 9;
18201    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18202    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
18203    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_52);
18204    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
18205    l_rec_acct_attrs.array_char_value(2)  := p_source_53;
18206    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
18207    l_rec_acct_attrs.array_num_value(3)  := p_source_64;
18208    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
18209    l_rec_acct_attrs.array_char_value(4)  := p_source_54;
18210    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
18211    l_rec_acct_attrs.array_date_value(5)  := p_source_55;
18212    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
18213    l_rec_acct_attrs.array_num_value(6)  := p_source_56;
18214    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
18215    l_rec_acct_attrs.array_char_value(7)  := p_source_57;
18216    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
18217    l_rec_acct_attrs.array_char_value(8)  := p_source_58;
18218    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
18219    l_rec_acct_attrs.array_num_value(9)  := p_source_59;
18220    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
18221    l_rec_acct_attrs.array_num_value(10)  := p_source_60;
18222    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
18223    l_rec_acct_attrs.array_num_value(11)  := p_source_61;
18224    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
18225    l_rec_acct_attrs.array_char_value(12)  := p_source_39;
18226    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
18227    l_rec_acct_attrs.array_num_value(13)  := p_source_62;
18228 
18229    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18230    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18231 
18232    ---------------------------------------------------------------------------------------------------------------
18233    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18234    ---------------------------------------------------------------------------------------------------------------
18238    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18235    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18236 
18237    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18239 
18240    IF xla_accounting_cache_pkg.GetValueChar
18241          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18242          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18243    AND l_bflow_method_code = 'PRIOR_ENTRY'
18244 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18245    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18246          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18247        )
18248    THEN
18249          xla_ae_lines_pkg.BflowUpgEntry
18250            (p_business_method_code    => l_bflow_method_code
18251            ,p_business_class_code     => l_bflow_class_code
18252            ,p_balance_type            => l_balance_type_code);
18253    ELSE
18254       NULL;
18255 -- No business flow processing for business flow method of NONE.
18256    END IF;
18257 
18258    --
18259    -- call analytical criteria
18260    --
18261    
18262    --
18263    -- call description
18264    --
18265    -- No description or it is inherited.
18266    --
18267    -- call ADRs
18268    -- Bug 4922099
18269    --
18270    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18271         (NVL(l_actual_upg_option, 'N') = 'O') OR
18272         (NVL(l_enc_upg_option, 'N') = 'O')
18273       )
18274    THEN
18275    NULL;
18276    --
18277    --
18278    
18279   l_ccid := AcctDerRule_12(
18280            p_application_id           => p_application_id
18281          , p_ae_header_id             => l_ae_header_id 
18282 , p_source_14 => p_source_14
18283          , x_transaction_coa_id       => l_adr_transaction_coa_id
18284          , x_accounting_coa_id        => l_adr_accounting_coa_id
18285          , x_value_type_code          => l_adr_value_type_code
18286          , p_side                     => 'NA'
18287    );
18288 
18289    xla_ae_lines_pkg.set_ccid(
18290     p_code_combination_id          => l_ccid
18291   , p_value_type_code              => l_adr_value_type_code
18292   , p_transaction_coa_id           => l_adr_transaction_coa_id
18293   , p_accounting_coa_id            => l_adr_accounting_coa_id
18294   , p_adr_code                     => 'CM_DIST_CCID'
18295   , p_adr_type_code                => 'S'
18296   , p_component_type               => l_component_type
18297   , p_component_code               => l_component_code
18298   , p_component_type_code          => l_component_type_code
18299   , p_component_appl_id            => l_component_appl_id
18300   , p_amb_context_code             => l_amb_context_code
18301   , p_side                         => 'NA'
18302   );
18303 
18304 
18305    --
18306    --
18307    END IF;
18308    --
18309    -- Bug 4922099
18310    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18311           (NVL(l_enc_upg_option, 'N') = 'O')
18312         ) AND
18313         (l_bflow_method_code = 'PRIOR_ENTRY')
18314       )
18315    THEN
18316       IF
18317       --
18318       1 = 2
18319       --
18320       THEN
18321       xla_accounting_err_pkg.build_message
18322                                     (p_appli_s_name            => 'XLA'
18323                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18324                                     ,p_token_1                 => 'LINE_NUMBER'
18325                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18326                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18327                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18328                                                                              l_component_type
18329                                                                             ,l_component_code
18330                                                                             ,l_component_type_code
18331                                                                             ,l_component_appl_id
18332                                                                             ,l_amb_context_code
18333                                                                             ,l_entity_code
18334                                                                             ,l_event_class_code
18335                                                                            )
18336                                     ,p_token_3                 => 'OWNER'
18337                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18338                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18339                                                                           ,p_lookup_code    => l_component_type_code
18340                                                                          )
18341                                     ,p_token_4                 => 'PRODUCT_NAME'
18342                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18343                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18344                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18348 
18345                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18346                                     ,p_ae_header_id            =>  NULL
18347                                        );
18349         IF (C_LEVEL_ERROR>= g_log_level) THEN
18350                  trace
18351                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18352                       ,p_level    => C_LEVEL_ERROR
18353                       ,p_module   => l_log_module);
18354         END IF;
18355       END IF;
18356    END IF;
18357    --
18358    --
18359    ------------------------------------------------------------------------------------------------
18360    -- 4219869 Business Flow
18361    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18362    -- Prior Entry.  Currently, the following code is always generated.
18363    ------------------------------------------------------------------------------------------------
18364    XLA_AE_LINES_PKG.ValidateCurrentLine;
18365 
18366    ------------------------------------------------------------------------------------
18367    -- 4219869 Business Flow
18368    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18369    ------------------------------------------------------------------------------------
18370    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18371 
18372    ----------------------------------------------------------------------------------
18373    -- 4219869 Business Flow
18374    -- Update journal entry status -- Need to generate this within IF <condition>
18375    ----------------------------------------------------------------------------------
18376    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18377          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18378          ,p_balance_type_code => l_balance_type_code
18379          );
18380 
18381    -------------------------------------------------------------------------------------------
18382    -- 4262811 - Generate the Accrual Reversal lines
18383    -------------------------------------------------------------------------------------------
18384    BEGIN
18385       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18386                               (g_array_event(p_event_id).array_value_num('header_index'));
18387       IF l_acc_rev_flag IS NULL THEN
18388          l_acc_rev_flag := 'N';
18389       END IF;
18390    EXCEPTION
18391       WHEN OTHERS THEN
18392          l_acc_rev_flag := 'N';
18393    END;
18394    --
18395    IF (l_acc_rev_flag = 'Y') THEN
18396 
18397        -- 4645092  ------------------------------------------------------------------------------
18398        -- To allow MPA report to determine if it should generate report process
18399        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18400        ------------------------------------------------------------------------------------------
18401 
18402        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18403        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18404    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
18405    -- call ADRs
18406    -- Bug 4922099
18407    --
18408    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18409         (NVL(l_actual_upg_option, 'N') = 'O') OR
18410         (NVL(l_enc_upg_option, 'N') = 'O')
18411       )
18412    THEN
18413    NULL;
18414    --
18415    --
18416    
18417   l_ccid := AcctDerRule_12(
18418            p_application_id           => p_application_id
18419          , p_ae_header_id             => l_ae_header_id 
18420 , p_source_14 => p_source_14
18421          , x_transaction_coa_id       => l_adr_transaction_coa_id
18422          , x_accounting_coa_id        => l_adr_accounting_coa_id
18423          , x_value_type_code          => l_adr_value_type_code
18424          , p_side                     => 'NA'
18425    );
18426 
18427    xla_ae_lines_pkg.set_ccid(
18428     p_code_combination_id          => l_ccid
18429   , p_value_type_code              => l_adr_value_type_code
18430   , p_transaction_coa_id           => l_adr_transaction_coa_id
18431   , p_accounting_coa_id            => l_adr_accounting_coa_id
18432   , p_adr_code                     => 'CM_DIST_CCID'
18433   , p_adr_type_code                => 'S'
18434   , p_component_type               => l_component_type
18435   , p_component_code               => l_component_code
18436   , p_component_type_code          => l_component_type_code
18437   , p_component_appl_id            => l_component_appl_id
18438   , p_amb_context_code             => l_amb_context_code
18439   , p_side                         => 'NA'
18440   );
18441 
18442 
18443    --
18444    --
18445    END IF;
18446 
18447        --
18448        -- Update the line information that should be overwritten
18449        --
18450        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18451                                          p_header_num   => 1);
18452        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18453 
18454        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18455 
18456        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18457           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18458        END IF;
18459 
18463       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18460       --
18461       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18462       --
18464           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18465       ELSE
18466           ---------------------------------------------------------------------------------------------------
18467           -- 4262811a Switch Sign
18468           ---------------------------------------------------------------------------------------------------
18469           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18470           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18471                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18472           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18473                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18474           -- 5132302
18475           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18476                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18477 
18478       END IF;
18479 
18480       -- 4955764
18481       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18482       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18483 
18484 
18485       XLA_AE_LINES_PKG.ValidateCurrentLine;
18486       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18487 
18488       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18489                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18490                ,p_balance_type_code => l_balance_type_code);
18491 
18492    END IF;
18493 
18494    -----------------------------------------------------------------------------------------
18495    -- 4262811 Multiperiod Accounting
18496    -----------------------------------------------------------------------------------------
18497      -- No MPA option is assigned.
18498 
18499 
18500 END IF;
18501 END IF;
18502 --
18503 
18504 --
18505 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18506    trace
18507       (p_msg      => 'END of AcctLineType_51'
18508       ,p_level    => C_LEVEL_PROCEDURE
18509       ,p_module   => l_log_module);
18510 END IF;
18511 --
18512 EXCEPTION
18513   WHEN xla_exceptions_pkg.application_exception THEN
18514       RAISE;
18515   WHEN OTHERS THEN
18516        xla_exceptions_pkg.raise_message
18517            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_51');
18518 END AcctLineType_51;
18519 --
18520 
18521 ---------------------------------------
18522 --
18523 -- PRIVATE FUNCTION
18524 --         AcctLineType_52
18525 --
18526 ---------------------------------------
18527 PROCEDURE AcctLineType_52 (
18528   p_application_id        IN NUMBER
18529  ,p_event_id              IN NUMBER
18530  ,p_calculate_acctd_flag  IN VARCHAR2
18531  ,p_calculate_g_l_flag    IN VARCHAR2
18532  ,p_actual_flag           IN OUT VARCHAR2
18533  ,p_balance_type_code     OUT VARCHAR2
18534  ,p_gain_or_loss_ref      OUT VARCHAR2
18535  
18536 --Credit Memo Distribution GL Account
18537  , p_source_14            IN NUMBER
18538 --SLA Party Type
18539  , p_source_39            IN VARCHAR2
18540 --Credit Memo Distribution Identifier
18541  , p_source_52            IN NUMBER
18542 --Credit memo distributions type
18543  , p_source_53            IN VARCHAR2
18544 --Credit Memo Currency Code
18545  , p_source_54            IN VARCHAR2
18546 --Credit Memo Exchange Date
18547  , p_source_55            IN DATE
18548 --Credit Memo Exchange Rate
18549  , p_source_56            IN NUMBER
18550 --Credit Memo Exchange Rate Type
18551  , p_source_57            IN VARCHAR2
18552 --Gain Loss Reference
18553  , p_source_58            IN VARCHAR2
18554 --Credit Memo Accounting Amount
18555  , p_source_59            IN NUMBER
18556 --Credit Memo Bill To Customer Account Identifier
18557  , p_source_60            IN NUMBER
18558 --Credit Memo Bill To Customer Site Use Identifier
18559  , p_source_61            IN NUMBER
18560 --Credit Memo Tax Line Identifier
18561  , p_source_62            IN NUMBER
18562 --Credit Memo Distribution Account Class
18563  , p_source_63            IN VARCHAR2
18564 --Credit Memo Distribution Entered Amount
18565  , p_source_64            IN NUMBER
18566 )
18567 IS
18568 
18569 l_component_type              VARCHAR2(80);
18570 l_component_code              VARCHAR2(30);
18571 l_component_type_code         VARCHAR2(1);
18572 l_component_appl_id           INTEGER;
18573 l_amb_context_code            VARCHAR2(30);
18574 l_entity_code                 VARCHAR2(30);
18575 l_event_class_code            VARCHAR2(30);
18576 l_ae_header_id                NUMBER;
18577 l_event_type_code             VARCHAR2(30);
18578 l_line_definition_code        VARCHAR2(30);
18579 l_line_definition_owner_code  VARCHAR2(1);
18580 --
18581 -- adr variables
18582 l_segment                     VARCHAR2(30);
18583 l_ccid                        NUMBER;
18587 l_adr_flex_value_set_id       NUMBER;
18584 l_adr_transaction_coa_id      NUMBER;
18585 l_adr_accounting_coa_id       NUMBER;
18586 l_adr_flexfield_segment_code  VARCHAR2(30);
18588 l_adr_value_type_code         VARCHAR2(30);
18589 l_adr_value_combination_id    NUMBER;
18590 l_adr_value_segment_code      VARCHAR2(30);
18591 
18592 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18593 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18594 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18595 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18596 
18597 -- 4262811 Variables ------------------------------------------------------------------------------------------
18598 l_entered_amt_idx             NUMBER;
18599 l_accted_amt_idx              NUMBER;
18600 l_acc_rev_flag                VARCHAR2(1);
18601 l_accrual_line_num            NUMBER;
18602 l_tmp_amt                     NUMBER;
18603 l_acc_rev_natural_side_code   VARCHAR2(1);
18604 
18605 l_num_entries                 NUMBER;
18606 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18607 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18608 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18609 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18610 l_recog_line_1                NUMBER;
18611 l_recog_line_2                NUMBER;
18612 
18613 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18614 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18615 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18616 
18617 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18618 
18619 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18620 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18621 
18622 ---------------------------------------------------------------------------------------------------------------
18623 
18624 
18625 --
18626 -- bulk performance
18627 --
18628 l_balance_type_code           VARCHAR2(1);
18629 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18630 l_log_module                  VARCHAR2(240);
18631 
18632 --
18633 -- Upgrade strategy
18634 --
18635 l_actual_upg_option           VARCHAR2(1);
18636 l_enc_upg_option           VARCHAR2(1);
18637 
18638 --
18639 BEGIN
18640 --
18641 IF g_log_enabled THEN
18642       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
18643 END IF;
18644 --
18645 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18646 
18647       trace
18648          (p_msg      => 'BEGIN of AcctLineType_52'
18649          ,p_level    => C_LEVEL_PROCEDURE
18650          ,p_module   => l_log_module);
18651 
18652 END IF;
18653 --
18654 l_component_type             := 'AMB_JLT';
18655 l_component_code             := 'CM_UNBILL';
18656 l_component_type_code        := 'S';
18657 l_component_appl_id          :=  222;
18658 l_amb_context_code           := 'DEFAULT';
18659 l_entity_code                := 'TRANSACTIONS';
18660 l_event_class_code           := 'CREDIT_MEMO';
18661 l_event_type_code            := 'CREDIT_MEMO_ALL';
18662 l_line_definition_owner_code := 'S';
18663 l_line_definition_code       := 'JA_CN_AR_CM_DEFAULT_ACCRUAL';
18664 --
18665 l_balance_type_code          := 'A';
18666 l_segment                     := NULL;
18667 l_ccid                        := NULL;
18668 l_adr_transaction_coa_id      := NULL;
18669 l_adr_accounting_coa_id       := NULL;
18670 l_adr_flexfield_segment_code  := NULL;
18671 l_adr_flex_value_set_id       := NULL;
18672 l_adr_value_type_code         := NULL;
18673 l_adr_value_combination_id    := NULL;
18674 l_adr_value_segment_code      := NULL;
18675 
18676 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18677 l_bflow_class_code           := '';    -- 4219869 Business Flow
18678 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18679 l_budgetary_control_flag     := 'N';
18680 
18681 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18682 l_bflow_applied_to_amt       := NULL; -- 5132302
18683 l_entered_amt_idx            := NULL;          -- 4262811
18684 l_accted_amt_idx             := NULL;          -- 4262811
18685 l_acc_rev_flag               := NULL;          -- 4262811
18686 l_accrual_line_num           := NULL;          -- 4262811
18687 l_tmp_amt                    := NULL;          -- 4262811
18688 --
18689  
18690 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18691     l_balance_type_code <> 'B' THEN
18692 IF NVL(p_source_63,'
18693 ') =  'UNBILL'
18694  THEN 
18695 
18696    --
18697    XLA_AE_LINES_PKG.SetNewLine;
18698 
18699    p_balance_type_code          := l_balance_type_code;
18700    -- set the flag so later we will know whether the gain loss line needs to be created
18701    
18702    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18703      p_actual_flag :='A';
18704    END IF;
18705 
18706    --
18707    -- bulk performance
18708    --
18709    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18710                                       p_header_num   => 0); -- 4262811
18711    --
18715            p_natural_side_code          => 'C'
18712    -- set accounting line options
18713    --
18714    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18716          , p_gain_or_loss_flag          => 'N'
18717          , p_gl_transfer_mode_code      => 'S'
18718          , p_acct_entry_type_code       => 'A'
18719          , p_switch_side_flag           => 'Y'
18720          , p_merge_duplicate_code       => 'A'
18721          );
18722    --
18723    l_acc_rev_natural_side_code := 'D';  -- 4262811
18724    -- 
18725    --
18726    -- set accounting line type info
18727    --
18728    xla_ae_lines_pkg.SetAcctLineType
18729       (p_component_type             => l_component_type
18730       ,p_event_type_code            => l_event_type_code
18731       ,p_line_definition_owner_code => l_line_definition_owner_code
18732       ,p_line_definition_code       => l_line_definition_code
18733       ,p_accounting_line_code       => l_component_code
18734       ,p_accounting_line_type_code  => l_component_type_code
18735       ,p_accounting_line_appl_id    => l_component_appl_id
18736       ,p_amb_context_code           => l_amb_context_code
18737       ,p_entity_code                => l_entity_code
18738       ,p_event_class_code           => l_event_class_code);
18739    --
18740    -- set accounting class
18741    --
18742    xla_ae_lines_pkg.SetAcctClass(
18743            p_accounting_class_code  => 'UNBILL'
18744          , p_ae_header_id           => l_ae_header_id
18745          );
18746 
18747    --
18748    -- set rounding class
18749    --
18750    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18751                       'RECEIVABLE';
18752 
18753    --
18754    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18755    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18756    --
18757    -- bulk performance
18758    --
18759    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18760 
18761    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18762       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18763 
18764    -- 4955764
18765    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18766       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18767 
18768    -- 4458381 Public Sector Enh
18769    
18770    --
18771    -- set accounting attributes for the line type
18772    --
18773    l_entered_amt_idx := 3;
18774    l_accted_amt_idx  := 9;
18775    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18776    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
18777    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_52);
18778    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
18779    l_rec_acct_attrs.array_char_value(2)  := p_source_53;
18780    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
18781    l_rec_acct_attrs.array_num_value(3)  := p_source_64;
18782    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
18783    l_rec_acct_attrs.array_char_value(4)  := p_source_54;
18784    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
18785    l_rec_acct_attrs.array_date_value(5)  := p_source_55;
18786    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
18787    l_rec_acct_attrs.array_num_value(6)  := p_source_56;
18788    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
18789    l_rec_acct_attrs.array_char_value(7)  := p_source_57;
18790    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
18791    l_rec_acct_attrs.array_char_value(8)  := p_source_58;
18792    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
18793    l_rec_acct_attrs.array_num_value(9)  := p_source_59;
18794    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
18795    l_rec_acct_attrs.array_num_value(10)  := p_source_60;
18796    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
18797    l_rec_acct_attrs.array_num_value(11)  := p_source_61;
18798    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
18799    l_rec_acct_attrs.array_char_value(12)  := p_source_39;
18800    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
18801    l_rec_acct_attrs.array_num_value(13)  := p_source_62;
18802 
18803    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18804    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18805 
18806    ---------------------------------------------------------------------------------------------------------------
18807    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18808    ---------------------------------------------------------------------------------------------------------------
18809    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18810 
18811    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18812    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18813 
18814    IF xla_accounting_cache_pkg.GetValueChar
18815          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18816          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18817    AND l_bflow_method_code = 'PRIOR_ENTRY'
18821        )
18818 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18819    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18820          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18822    THEN
18823          xla_ae_lines_pkg.BflowUpgEntry
18824            (p_business_method_code    => l_bflow_method_code
18825            ,p_business_class_code     => l_bflow_class_code
18826            ,p_balance_type            => l_balance_type_code);
18827    ELSE
18828       NULL;
18829 -- No business flow processing for business flow method of NONE.
18830    END IF;
18831 
18832    --
18833    -- call analytical criteria
18834    --
18835    
18836    --
18837    -- call description
18838    --
18839    -- No description or it is inherited.
18840    --
18841    -- call ADRs
18842    -- Bug 4922099
18843    --
18844    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18845         (NVL(l_actual_upg_option, 'N') = 'O') OR
18846         (NVL(l_enc_upg_option, 'N') = 'O')
18847       )
18848    THEN
18849    NULL;
18850    --
18851    --
18852    
18853   l_ccid := AcctDerRule_12(
18854            p_application_id           => p_application_id
18855          , p_ae_header_id             => l_ae_header_id 
18856 , p_source_14 => p_source_14
18857          , x_transaction_coa_id       => l_adr_transaction_coa_id
18858          , x_accounting_coa_id        => l_adr_accounting_coa_id
18859          , x_value_type_code          => l_adr_value_type_code
18860          , p_side                     => 'NA'
18861    );
18862 
18863    xla_ae_lines_pkg.set_ccid(
18864     p_code_combination_id          => l_ccid
18865   , p_value_type_code              => l_adr_value_type_code
18866   , p_transaction_coa_id           => l_adr_transaction_coa_id
18867   , p_accounting_coa_id            => l_adr_accounting_coa_id
18868   , p_adr_code                     => 'CM_DIST_CCID'
18869   , p_adr_type_code                => 'S'
18870   , p_component_type               => l_component_type
18871   , p_component_code               => l_component_code
18872   , p_component_type_code          => l_component_type_code
18873   , p_component_appl_id            => l_component_appl_id
18874   , p_amb_context_code             => l_amb_context_code
18875   , p_side                         => 'NA'
18876   );
18877 
18878 
18879    --
18880    --
18881    END IF;
18882    --
18883    -- Bug 4922099
18884    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18885           (NVL(l_enc_upg_option, 'N') = 'O')
18886         ) AND
18887         (l_bflow_method_code = 'PRIOR_ENTRY')
18888       )
18889    THEN
18890       IF
18891       --
18892       1 = 2
18893       --
18894       THEN
18895       xla_accounting_err_pkg.build_message
18896                                     (p_appli_s_name            => 'XLA'
18897                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18898                                     ,p_token_1                 => 'LINE_NUMBER'
18899                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18900                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18901                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18902                                                                              l_component_type
18903                                                                             ,l_component_code
18904                                                                             ,l_component_type_code
18905                                                                             ,l_component_appl_id
18906                                                                             ,l_amb_context_code
18907                                                                             ,l_entity_code
18908                                                                             ,l_event_class_code
18909                                                                            )
18910                                     ,p_token_3                 => 'OWNER'
18911                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18912                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18913                                                                           ,p_lookup_code    => l_component_type_code
18914                                                                          )
18915                                     ,p_token_4                 => 'PRODUCT_NAME'
18916                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18917                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18918                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18919                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18920                                     ,p_ae_header_id            =>  NULL
18921                                        );
18922 
18923         IF (C_LEVEL_ERROR>= g_log_level) THEN
18924                  trace
18925                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18926                       ,p_level    => C_LEVEL_ERROR
18927                       ,p_module   => l_log_module);
18928         END IF;
18932    --
18929       END IF;
18930    END IF;
18931    --
18933    ------------------------------------------------------------------------------------------------
18934    -- 4219869 Business Flow
18935    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18936    -- Prior Entry.  Currently, the following code is always generated.
18937    ------------------------------------------------------------------------------------------------
18938    XLA_AE_LINES_PKG.ValidateCurrentLine;
18939 
18940    ------------------------------------------------------------------------------------
18941    -- 4219869 Business Flow
18942    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18943    ------------------------------------------------------------------------------------
18944    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18945 
18946    ----------------------------------------------------------------------------------
18947    -- 4219869 Business Flow
18948    -- Update journal entry status -- Need to generate this within IF <condition>
18949    ----------------------------------------------------------------------------------
18950    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18951          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18952          ,p_balance_type_code => l_balance_type_code
18953          );
18954 
18955    -------------------------------------------------------------------------------------------
18956    -- 4262811 - Generate the Accrual Reversal lines
18957    -------------------------------------------------------------------------------------------
18958    BEGIN
18959       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18960                               (g_array_event(p_event_id).array_value_num('header_index'));
18961       IF l_acc_rev_flag IS NULL THEN
18962          l_acc_rev_flag := 'N';
18963       END IF;
18964    EXCEPTION
18965       WHEN OTHERS THEN
18966          l_acc_rev_flag := 'N';
18967    END;
18968    --
18969    IF (l_acc_rev_flag = 'Y') THEN
18970 
18971        -- 4645092  ------------------------------------------------------------------------------
18972        -- To allow MPA report to determine if it should generate report process
18973        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18974        ------------------------------------------------------------------------------------------
18975 
18976        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18977        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18978    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
18979    -- call ADRs
18980    -- Bug 4922099
18981    --
18982    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18983         (NVL(l_actual_upg_option, 'N') = 'O') OR
18984         (NVL(l_enc_upg_option, 'N') = 'O')
18985       )
18986    THEN
18987    NULL;
18988    --
18989    --
18990    
18991   l_ccid := AcctDerRule_12(
18992            p_application_id           => p_application_id
18993          , p_ae_header_id             => l_ae_header_id 
18994 , p_source_14 => p_source_14
18995          , x_transaction_coa_id       => l_adr_transaction_coa_id
18996          , x_accounting_coa_id        => l_adr_accounting_coa_id
18997          , x_value_type_code          => l_adr_value_type_code
18998          , p_side                     => 'NA'
18999    );
19000 
19001    xla_ae_lines_pkg.set_ccid(
19002     p_code_combination_id          => l_ccid
19003   , p_value_type_code              => l_adr_value_type_code
19004   , p_transaction_coa_id           => l_adr_transaction_coa_id
19005   , p_accounting_coa_id            => l_adr_accounting_coa_id
19006   , p_adr_code                     => 'CM_DIST_CCID'
19007   , p_adr_type_code                => 'S'
19008   , p_component_type               => l_component_type
19009   , p_component_code               => l_component_code
19010   , p_component_type_code          => l_component_type_code
19011   , p_component_appl_id            => l_component_appl_id
19012   , p_amb_context_code             => l_amb_context_code
19013   , p_side                         => 'NA'
19014   );
19015 
19016 
19017    --
19018    --
19019    END IF;
19020 
19021        --
19022        -- Update the line information that should be overwritten
19023        --
19024        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19025                                          p_header_num   => 1);
19026        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19027 
19028        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19029 
19030        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19031           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19032        END IF;
19033 
19034       --
19035       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19036       --
19037       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19038           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19039       ELSE
19040           ---------------------------------------------------------------------------------------------------
19041           -- 4262811a Switch Sign
19045                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19042           ---------------------------------------------------------------------------------------------------
19043           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19044           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19046           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19047                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19048           -- 5132302
19049           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19050                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19051 
19052       END IF;
19053 
19054       -- 4955764
19055       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19056       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19057 
19058 
19059       XLA_AE_LINES_PKG.ValidateCurrentLine;
19060       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19061 
19062       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19063                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19064                ,p_balance_type_code => l_balance_type_code);
19065 
19066    END IF;
19067 
19068    -----------------------------------------------------------------------------------------
19069    -- 4262811 Multiperiod Accounting
19070    -----------------------------------------------------------------------------------------
19071      -- No MPA option is assigned.
19072 
19073 
19074 END IF;
19075 END IF;
19076 --
19077 
19078 --
19079 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19080    trace
19081       (p_msg      => 'END of AcctLineType_52'
19082       ,p_level    => C_LEVEL_PROCEDURE
19083       ,p_module   => l_log_module);
19084 END IF;
19085 --
19086 EXCEPTION
19087   WHEN xla_exceptions_pkg.application_exception THEN
19088       RAISE;
19089   WHEN OTHERS THEN
19090        xla_exceptions_pkg.raise_message
19091            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_52');
19092 END AcctLineType_52;
19093 --
19094 
19095 ---------------------------------------
19096 --
19097 -- PRIVATE FUNCTION
19098 --         AcctLineType_53
19099 --
19100 ---------------------------------------
19101 PROCEDURE AcctLineType_53 (
19102   p_application_id        IN NUMBER
19103  ,p_event_id              IN NUMBER
19104  ,p_calculate_acctd_flag  IN VARCHAR2
19105  ,p_calculate_g_l_flag    IN VARCHAR2
19106  ,p_actual_flag           IN OUT VARCHAR2
19107  ,p_balance_type_code     OUT VARCHAR2
19108  ,p_gain_or_loss_ref      OUT VARCHAR2
19109  
19110 --Credit Memo Distribution GL Account
19111  , p_source_14            IN NUMBER
19112 --SLA Party Type
19113  , p_source_39            IN VARCHAR2
19114 --Credit Memo Distribution Identifier
19115  , p_source_52            IN NUMBER
19116 --Credit memo distributions type
19117  , p_source_53            IN VARCHAR2
19118 --Credit Memo Currency Code
19119  , p_source_54            IN VARCHAR2
19120 --Credit Memo Exchange Date
19121  , p_source_55            IN DATE
19122 --Credit Memo Exchange Rate
19123  , p_source_56            IN NUMBER
19124 --Credit Memo Exchange Rate Type
19125  , p_source_57            IN VARCHAR2
19126 --Gain Loss Reference
19127  , p_source_58            IN VARCHAR2
19128 --Credit Memo Accounting Amount
19129  , p_source_59            IN NUMBER
19130 --Credit Memo Bill To Customer Account Identifier
19131  , p_source_60            IN NUMBER
19132 --Credit Memo Bill To Customer Site Use Identifier
19133  , p_source_61            IN NUMBER
19134 --Credit Memo Tax Line Identifier
19135  , p_source_62            IN NUMBER
19136 --Credit Memo Distribution Account Class
19137  , p_source_63            IN VARCHAR2
19138 --Credit Memo Distribution Entered Amount
19139  , p_source_64            IN NUMBER
19140 --Transaction Line Flexfield Attribute 1
19141  , p_source_65            IN VARCHAR2
19142 )
19143 IS
19144 
19145 l_component_type              VARCHAR2(80);
19146 l_component_code              VARCHAR2(30);
19147 l_component_type_code         VARCHAR2(1);
19148 l_component_appl_id           INTEGER;
19149 l_amb_context_code            VARCHAR2(30);
19150 l_entity_code                 VARCHAR2(30);
19151 l_event_class_code            VARCHAR2(30);
19152 l_ae_header_id                NUMBER;
19153 l_event_type_code             VARCHAR2(30);
19154 l_line_definition_code        VARCHAR2(30);
19155 l_line_definition_owner_code  VARCHAR2(1);
19156 --
19157 -- adr variables
19158 l_segment                     VARCHAR2(30);
19159 l_ccid                        NUMBER;
19160 l_adr_transaction_coa_id      NUMBER;
19161 l_adr_accounting_coa_id       NUMBER;
19162 l_adr_flexfield_segment_code  VARCHAR2(30);
19163 l_adr_flex_value_set_id       NUMBER;
19164 l_adr_value_type_code         VARCHAR2(30);
19165 l_adr_value_combination_id    NUMBER;
19166 l_adr_value_segment_code      VARCHAR2(30);
19167 
19171 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19168 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19169 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19170 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19172 
19173 -- 4262811 Variables ------------------------------------------------------------------------------------------
19174 l_entered_amt_idx             NUMBER;
19175 l_accted_amt_idx              NUMBER;
19176 l_acc_rev_flag                VARCHAR2(1);
19177 l_accrual_line_num            NUMBER;
19178 l_tmp_amt                     NUMBER;
19179 l_acc_rev_natural_side_code   VARCHAR2(1);
19180 
19181 l_num_entries                 NUMBER;
19182 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19183 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19184 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19185 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19186 l_recog_line_1                NUMBER;
19187 l_recog_line_2                NUMBER;
19188 
19189 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19190 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19191 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19192 
19193 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19194 
19195 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19196 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19197 
19198 ---------------------------------------------------------------------------------------------------------------
19199 
19200 
19201 --
19202 -- bulk performance
19203 --
19204 l_balance_type_code           VARCHAR2(1);
19205 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19206 l_log_module                  VARCHAR2(240);
19207 
19208 --
19209 -- Upgrade strategy
19210 --
19211 l_actual_upg_option           VARCHAR2(1);
19212 l_enc_upg_option           VARCHAR2(1);
19213 
19214 --
19215 BEGIN
19216 --
19217 IF g_log_enabled THEN
19218       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
19219 END IF;
19220 --
19221 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19222 
19223       trace
19224          (p_msg      => 'BEGIN of AcctLineType_53'
19225          ,p_level    => C_LEVEL_PROCEDURE
19226          ,p_module   => l_log_module);
19227 
19228 END IF;
19229 --
19230 l_component_type             := 'AMB_JLT';
19231 l_component_code             := 'CM_UNEARN';
19232 l_component_type_code        := 'S';
19233 l_component_appl_id          :=  222;
19234 l_amb_context_code           := 'DEFAULT';
19235 l_entity_code                := 'TRANSACTIONS';
19236 l_event_class_code           := 'CREDIT_MEMO';
19237 l_event_type_code            := 'CREDIT_MEMO_ALL';
19238 l_line_definition_owner_code := 'S';
19239 l_line_definition_code       := 'JA_CN_AR_CM_DEFAULT_ACCRUAL';
19240 --
19241 l_balance_type_code          := 'A';
19242 l_segment                     := NULL;
19243 l_ccid                        := NULL;
19244 l_adr_transaction_coa_id      := NULL;
19245 l_adr_accounting_coa_id       := NULL;
19246 l_adr_flexfield_segment_code  := NULL;
19247 l_adr_flex_value_set_id       := NULL;
19248 l_adr_value_type_code         := NULL;
19249 l_adr_value_combination_id    := NULL;
19250 l_adr_value_segment_code      := NULL;
19251 
19252 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19253 l_bflow_class_code           := '';    -- 4219869 Business Flow
19254 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19255 l_budgetary_control_flag     := 'N';
19256 
19257 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19258 l_bflow_applied_to_amt       := NULL; -- 5132302
19259 l_entered_amt_idx            := NULL;          -- 4262811
19260 l_accted_amt_idx             := NULL;          -- 4262811
19261 l_acc_rev_flag               := NULL;          -- 4262811
19262 l_accrual_line_num           := NULL;          -- 4262811
19263 l_tmp_amt                    := NULL;          -- 4262811
19264 --
19265  
19266 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19267     l_balance_type_code <> 'B' THEN
19268 IF NVL(p_source_63,'
19269 ') =  'UNEARN'
19270  THEN 
19271 
19272    --
19273    XLA_AE_LINES_PKG.SetNewLine;
19274 
19275    p_balance_type_code          := l_balance_type_code;
19276    -- set the flag so later we will know whether the gain loss line needs to be created
19277    
19278    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19279      p_actual_flag :='A';
19280    END IF;
19281 
19282    --
19283    -- bulk performance
19284    --
19285    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19286                                       p_header_num   => 0); -- 4262811
19287    --
19288    -- set accounting line options
19289    --
19290    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19291            p_natural_side_code          => 'C'
19292          , p_gain_or_loss_flag          => 'N'
19293          , p_gl_transfer_mode_code      => 'S'
19294          , p_acct_entry_type_code       => 'A'
19298    --
19295          , p_switch_side_flag           => 'Y'
19296          , p_merge_duplicate_code       => 'A'
19297          );
19299    l_acc_rev_natural_side_code := 'D';  -- 4262811
19300    -- 
19301    --
19302    -- set accounting line type info
19303    --
19304    xla_ae_lines_pkg.SetAcctLineType
19305       (p_component_type             => l_component_type
19306       ,p_event_type_code            => l_event_type_code
19307       ,p_line_definition_owner_code => l_line_definition_owner_code
19308       ,p_line_definition_code       => l_line_definition_code
19309       ,p_accounting_line_code       => l_component_code
19310       ,p_accounting_line_type_code  => l_component_type_code
19311       ,p_accounting_line_appl_id    => l_component_appl_id
19312       ,p_amb_context_code           => l_amb_context_code
19313       ,p_entity_code                => l_entity_code
19314       ,p_event_class_code           => l_event_class_code);
19315    --
19316    -- set accounting class
19317    --
19318    xla_ae_lines_pkg.SetAcctClass(
19319            p_accounting_class_code  => 'UNEARNED_REVENUE'
19320          , p_ae_header_id           => l_ae_header_id
19321          );
19322 
19323    --
19324    -- set rounding class
19325    --
19326    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19327                       'RECEIVABLE';
19328 
19329    --
19330    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19331    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19332    --
19333    -- bulk performance
19334    --
19335    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19336 
19337    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19338       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19339 
19340    -- 4955764
19341    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19342       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19343 
19344    -- 4458381 Public Sector Enh
19345    
19346    --
19347    -- set accounting attributes for the line type
19348    --
19349    l_entered_amt_idx := 3;
19350    l_accted_amt_idx  := 9;
19351    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19352    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
19353    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_52);
19354    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
19355    l_rec_acct_attrs.array_char_value(2)  := p_source_53;
19356    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
19357    l_rec_acct_attrs.array_num_value(3)  := p_source_64;
19358    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
19359    l_rec_acct_attrs.array_char_value(4)  := p_source_54;
19360    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
19361    l_rec_acct_attrs.array_date_value(5)  := p_source_55;
19362    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
19363    l_rec_acct_attrs.array_num_value(6)  := p_source_56;
19364    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
19365    l_rec_acct_attrs.array_char_value(7)  := p_source_57;
19366    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
19367    l_rec_acct_attrs.array_char_value(8)  := p_source_58;
19368    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
19369    l_rec_acct_attrs.array_num_value(9)  := p_source_59;
19370    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
19371    l_rec_acct_attrs.array_num_value(10)  := p_source_60;
19372    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
19373    l_rec_acct_attrs.array_num_value(11)  := p_source_61;
19374    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
19375    l_rec_acct_attrs.array_char_value(12)  := p_source_39;
19376    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
19377    l_rec_acct_attrs.array_num_value(13)  := p_source_62;
19378 
19379    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19380    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19381 
19382    ---------------------------------------------------------------------------------------------------------------
19383    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19384    ---------------------------------------------------------------------------------------------------------------
19385    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19386 
19387    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19388    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19389 
19390    IF xla_accounting_cache_pkg.GetValueChar
19391          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19392          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19393    AND l_bflow_method_code = 'PRIOR_ENTRY'
19394 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19395    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19396          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19397        )
19398    THEN
19399          xla_ae_lines_pkg.BflowUpgEntry
19400            (p_business_method_code    => l_bflow_method_code
19404       NULL;
19401            ,p_business_class_code     => l_bflow_class_code
19402            ,p_balance_type            => l_balance_type_code);
19403    ELSE
19405 -- No business flow processing for business flow method of NONE.
19406    END IF;
19407 
19408    --
19409    -- call analytical criteria
19410    --
19411    
19412 
19413 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
19414 xla_ae_lines_pkg.SetAnalyticalCriteria(
19415    p_analytical_criterion_name    => 'Project Number'
19416  , p_analytical_criterion_owner   => 'S'
19417  , p_analytical_criterion_code    => 'PROJECT_NUMBER'
19418  , p_amb_context_code             => 'DEFAULT'
19419  , p_balancing_flag               => 'N'
19420  
19421  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_65)
19422  , p_analytical_detail_num_1     =>  NULL
19423  , p_analytical_detail_date_1    =>  NULL
19424 
19425  , p_ae_header_id                 => l_ae_header_id
19426 )
19427 ;
19428 --
19429 
19430    --
19431    -- call description
19432    --
19433    -- No description or it is inherited.
19434    --
19435    -- call ADRs
19436    -- Bug 4922099
19437    --
19438    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19439         (NVL(l_actual_upg_option, 'N') = 'O') OR
19440         (NVL(l_enc_upg_option, 'N') = 'O')
19441       )
19442    THEN
19443    NULL;
19444    --
19445    --
19446    
19447   l_ccid := AcctDerRule_12(
19448            p_application_id           => p_application_id
19449          , p_ae_header_id             => l_ae_header_id 
19450 , p_source_14 => p_source_14
19451          , x_transaction_coa_id       => l_adr_transaction_coa_id
19452          , x_accounting_coa_id        => l_adr_accounting_coa_id
19453          , x_value_type_code          => l_adr_value_type_code
19454          , p_side                     => 'NA'
19455    );
19456 
19457    xla_ae_lines_pkg.set_ccid(
19458     p_code_combination_id          => l_ccid
19459   , p_value_type_code              => l_adr_value_type_code
19460   , p_transaction_coa_id           => l_adr_transaction_coa_id
19461   , p_accounting_coa_id            => l_adr_accounting_coa_id
19462   , p_adr_code                     => 'CM_DIST_CCID'
19463   , p_adr_type_code                => 'S'
19464   , p_component_type               => l_component_type
19465   , p_component_code               => l_component_code
19466   , p_component_type_code          => l_component_type_code
19467   , p_component_appl_id            => l_component_appl_id
19468   , p_amb_context_code             => l_amb_context_code
19469   , p_side                         => 'NA'
19470   );
19471 
19472 
19473    --
19474    --
19475    END IF;
19476    --
19477    -- Bug 4922099
19478    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19479           (NVL(l_enc_upg_option, 'N') = 'O')
19480         ) AND
19481         (l_bflow_method_code = 'PRIOR_ENTRY')
19482       )
19483    THEN
19484       IF
19485       --
19486       1 = 2
19487       --
19488       THEN
19489       xla_accounting_err_pkg.build_message
19490                                     (p_appli_s_name            => 'XLA'
19491                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19492                                     ,p_token_1                 => 'LINE_NUMBER'
19493                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19494                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19495                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19496                                                                              l_component_type
19497                                                                             ,l_component_code
19498                                                                             ,l_component_type_code
19499                                                                             ,l_component_appl_id
19500                                                                             ,l_amb_context_code
19501                                                                             ,l_entity_code
19502                                                                             ,l_event_class_code
19503                                                                            )
19504                                     ,p_token_3                 => 'OWNER'
19505                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19506                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19507                                                                           ,p_lookup_code    => l_component_type_code
19508                                                                          )
19509                                     ,p_token_4                 => 'PRODUCT_NAME'
19510                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19511                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19512                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19513                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19517         IF (C_LEVEL_ERROR>= g_log_level) THEN
19514                                     ,p_ae_header_id            =>  NULL
19515                                        );
19516 
19518                  trace
19519                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19520                       ,p_level    => C_LEVEL_ERROR
19521                       ,p_module   => l_log_module);
19522         END IF;
19523       END IF;
19524    END IF;
19525    --
19526    --
19527    ------------------------------------------------------------------------------------------------
19528    -- 4219869 Business Flow
19529    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19530    -- Prior Entry.  Currently, the following code is always generated.
19531    ------------------------------------------------------------------------------------------------
19532    XLA_AE_LINES_PKG.ValidateCurrentLine;
19533 
19534    ------------------------------------------------------------------------------------
19535    -- 4219869 Business Flow
19536    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19537    ------------------------------------------------------------------------------------
19538    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19539 
19540    ----------------------------------------------------------------------------------
19541    -- 4219869 Business Flow
19542    -- Update journal entry status -- Need to generate this within IF <condition>
19543    ----------------------------------------------------------------------------------
19544    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19545          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19546          ,p_balance_type_code => l_balance_type_code
19547          );
19548 
19549    -------------------------------------------------------------------------------------------
19550    -- 4262811 - Generate the Accrual Reversal lines
19551    -------------------------------------------------------------------------------------------
19552    BEGIN
19553       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19554                               (g_array_event(p_event_id).array_value_num('header_index'));
19555       IF l_acc_rev_flag IS NULL THEN
19556          l_acc_rev_flag := 'N';
19557       END IF;
19558    EXCEPTION
19559       WHEN OTHERS THEN
19560          l_acc_rev_flag := 'N';
19561    END;
19562    --
19563    IF (l_acc_rev_flag = 'Y') THEN
19564 
19565        -- 4645092  ------------------------------------------------------------------------------
19566        -- To allow MPA report to determine if it should generate report process
19567        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19568        ------------------------------------------------------------------------------------------
19569 
19570        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19571        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19572    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
19573    -- call ADRs
19574    -- Bug 4922099
19575    --
19576    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19577         (NVL(l_actual_upg_option, 'N') = 'O') OR
19578         (NVL(l_enc_upg_option, 'N') = 'O')
19579       )
19580    THEN
19581    NULL;
19582    --
19583    --
19584    
19585   l_ccid := AcctDerRule_12(
19586            p_application_id           => p_application_id
19587          , p_ae_header_id             => l_ae_header_id 
19588 , p_source_14 => p_source_14
19589          , x_transaction_coa_id       => l_adr_transaction_coa_id
19590          , x_accounting_coa_id        => l_adr_accounting_coa_id
19591          , x_value_type_code          => l_adr_value_type_code
19592          , p_side                     => 'NA'
19593    );
19594 
19595    xla_ae_lines_pkg.set_ccid(
19596     p_code_combination_id          => l_ccid
19597   , p_value_type_code              => l_adr_value_type_code
19598   , p_transaction_coa_id           => l_adr_transaction_coa_id
19599   , p_accounting_coa_id            => l_adr_accounting_coa_id
19600   , p_adr_code                     => 'CM_DIST_CCID'
19601   , p_adr_type_code                => 'S'
19602   , p_component_type               => l_component_type
19603   , p_component_code               => l_component_code
19604   , p_component_type_code          => l_component_type_code
19605   , p_component_appl_id            => l_component_appl_id
19606   , p_amb_context_code             => l_amb_context_code
19607   , p_side                         => 'NA'
19608   );
19609 
19610 
19611    --
19612    --
19613    END IF;
19614 
19615        --
19616        -- Update the line information that should be overwritten
19617        --
19618        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19619                                          p_header_num   => 1);
19620        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19621 
19622        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19623 
19624        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19625           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19626        END IF;
19627 
19628       --
19629       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19630       --
19634           ---------------------------------------------------------------------------------------------------
19631       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19632           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19633       ELSE
19635           -- 4262811a Switch Sign
19636           ---------------------------------------------------------------------------------------------------
19637           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19638           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19639                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19640           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19641                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19642           -- 5132302
19643           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19644                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19645 
19646       END IF;
19647 
19648       -- 4955764
19649       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19650       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19651 
19652 
19653       XLA_AE_LINES_PKG.ValidateCurrentLine;
19654       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19655 
19656       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19657                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19658                ,p_balance_type_code => l_balance_type_code);
19659 
19660    END IF;
19661 
19662    -----------------------------------------------------------------------------------------
19663    -- 4262811 Multiperiod Accounting
19664    -----------------------------------------------------------------------------------------
19665      -- No MPA option is assigned.
19666 
19667 
19668 END IF;
19669 END IF;
19670 --
19671 
19672 --
19673 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19674    trace
19675       (p_msg      => 'END of AcctLineType_53'
19676       ,p_level    => C_LEVEL_PROCEDURE
19677       ,p_module   => l_log_module);
19678 END IF;
19679 --
19680 EXCEPTION
19681   WHEN xla_exceptions_pkg.application_exception THEN
19682       RAISE;
19683   WHEN OTHERS THEN
19684        xla_exceptions_pkg.raise_message
19685            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_53');
19686 END AcctLineType_53;
19687 --
19688 
19689 ---------------------------------------
19690 --
19691 -- PRIVATE FUNCTION
19692 --         AcctLineType_54
19693 --
19694 ---------------------------------------
19695 PROCEDURE AcctLineType_54 (
19696   p_application_id        IN NUMBER
19697  ,p_event_id              IN NUMBER
19698  ,p_calculate_acctd_flag  IN VARCHAR2
19699  ,p_calculate_g_l_flag    IN VARCHAR2
19700  ,p_actual_flag           IN OUT VARCHAR2
19701  ,p_balance_type_code     OUT VARCHAR2
19702  ,p_gain_or_loss_ref      OUT VARCHAR2
19703  
19704 --Collection Document Bank Occurrence
19705  , p_source_4            IN VARCHAR2
19706 --Collection Document Number
19707  , p_source_5            IN NUMBER
19708 --Collection Document Trade Note Number
19709  , p_source_6            IN VARCHAR2
19710 --Bordero Type
19711  , p_source_7            IN VARCHAR2
19712  , p_source_7_meaning    IN VARCHAR2
19713 --Collection Document Bank Charges Account
19714  , p_source_15            IN NUMBER
19715 --Bill To Customer Account Identifier
19716  , p_source_37            IN NUMBER
19717 --Bill To Customer Site Use Identifier
19718  , p_source_38            IN NUMBER
19719 --SLA Party Type
19720  , p_source_39            IN VARCHAR2
19721 --Collection Document Distribution Line Type
19722  , p_source_66            IN VARCHAR2
19723  , p_source_66_meaning    IN VARCHAR2
19724 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
19725  , p_source_67            IN VARCHAR2
19726  , p_source_67_meaning    IN VARCHAR2
19727 --Applied To Distribution Link Type
19728  , p_source_69            IN VARCHAR2
19729 --Applied To Distribution Identifier
19730  , p_source_71            IN NUMBER
19731 --Applied To Distribution Document Identifier
19732  , p_source_72            IN NUMBER
19733 --Applied To Distribution Occurrence Identifier
19734  , p_source_73            IN NUMBER
19735 --Collection Document Distribution Identifier
19736  , p_source_74            IN NUMBER
19737 --Collection Document Distribution Link Type
19738  , p_source_75            IN VARCHAR2
19739 --Collection Document Distribution Entered Amount
19740  , p_source_76            IN NUMBER
19741 --Collection Document Distribution Entered Currency Code
19742  , p_source_77            IN VARCHAR2
19743 --Collection Document Distribution Conversion Date
19744  , p_source_78            IN DATE
19745 --Collection Document Distribution Conversion Rate
19746  , p_source_79            IN NUMBER
19747 --Collection Document Distribution Conversion Rate Type
19748  , p_source_80            IN VARCHAR2
19752  , p_source_82            IN NUMBER
19749 --Collection Document Distribution Accounted Amount
19750  , p_source_81            IN NUMBER
19751 --Collection Document Occurrence Identifier
19753 --Reversed Collection Document Distribution Identifier
19754  , p_source_83            IN NUMBER
19755 --Reversed Collection Document Distribution Link Type
19756  , p_source_84            IN VARCHAR2
19757 )
19758 IS
19759 
19760 l_component_type              VARCHAR2(80);
19761 l_component_code              VARCHAR2(30);
19762 l_component_type_code         VARCHAR2(1);
19763 l_component_appl_id           INTEGER;
19764 l_amb_context_code            VARCHAR2(30);
19765 l_entity_code                 VARCHAR2(30);
19766 l_event_class_code            VARCHAR2(30);
19767 l_ae_header_id                NUMBER;
19768 l_event_type_code             VARCHAR2(30);
19769 l_line_definition_code        VARCHAR2(30);
19770 l_line_definition_owner_code  VARCHAR2(1);
19771 --
19772 -- adr variables
19773 l_segment                     VARCHAR2(30);
19774 l_ccid                        NUMBER;
19775 l_adr_transaction_coa_id      NUMBER;
19776 l_adr_accounting_coa_id       NUMBER;
19777 l_adr_flexfield_segment_code  VARCHAR2(30);
19778 l_adr_flex_value_set_id       NUMBER;
19779 l_adr_value_type_code         VARCHAR2(30);
19780 l_adr_value_combination_id    NUMBER;
19781 l_adr_value_segment_code      VARCHAR2(30);
19782 
19783 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19784 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19785 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19786 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19787 
19788 -- 4262811 Variables ------------------------------------------------------------------------------------------
19789 l_entered_amt_idx             NUMBER;
19790 l_accted_amt_idx              NUMBER;
19791 l_acc_rev_flag                VARCHAR2(1);
19792 l_accrual_line_num            NUMBER;
19793 l_tmp_amt                     NUMBER;
19794 l_acc_rev_natural_side_code   VARCHAR2(1);
19795 
19796 l_num_entries                 NUMBER;
19797 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19798 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19799 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19800 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19801 l_recog_line_1                NUMBER;
19802 l_recog_line_2                NUMBER;
19803 
19804 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19805 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19806 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19807 
19808 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19809 
19810 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19811 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19812 
19813 ---------------------------------------------------------------------------------------------------------------
19814 
19815 
19816 --
19817 -- bulk performance
19818 --
19819 l_balance_type_code           VARCHAR2(1);
19820 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19821 l_log_module                  VARCHAR2(240);
19822 
19823 --
19824 -- Upgrade strategy
19825 --
19826 l_actual_upg_option           VARCHAR2(1);
19827 l_enc_upg_option           VARCHAR2(1);
19828 
19829 --
19830 BEGIN
19831 --
19832 IF g_log_enabled THEN
19833       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
19834 END IF;
19835 --
19836 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19837 
19838       trace
19839          (p_msg      => 'BEGIN of AcctLineType_54'
19840          ,p_level    => C_LEVEL_PROCEDURE
19841          ,p_module   => l_log_module);
19842 
19843 END IF;
19844 --
19845 l_component_type             := 'AMB_JLT';
19846 l_component_code             := 'COLL_DOC_BANK_CHARGES';
19847 l_component_type_code        := 'S';
19848 l_component_appl_id          :=  222;
19849 l_amb_context_code           := 'DEFAULT';
19850 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
19851 l_event_class_code           := 'COLLECTION_OCC_DOCUMENT';
19852 l_event_type_code            := 'COLLECTION_OCC_DOCUMENT_ALL';
19853 l_line_definition_owner_code := 'S';
19854 l_line_definition_code       := 'JLBR_AR_BANK_COLL_DOC_ACCRUAL';
19855 --
19856 l_balance_type_code          := 'A';
19857 l_segment                     := NULL;
19858 l_ccid                        := NULL;
19859 l_adr_transaction_coa_id      := NULL;
19860 l_adr_accounting_coa_id       := NULL;
19861 l_adr_flexfield_segment_code  := NULL;
19862 l_adr_flex_value_set_id       := NULL;
19863 l_adr_value_type_code         := NULL;
19864 l_adr_value_combination_id    := NULL;
19865 l_adr_value_segment_code      := NULL;
19866 
19867 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19868 l_bflow_class_code           := '';    -- 4219869 Business Flow
19869 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19870 l_budgetary_control_flag     := 'N';
19871 
19872 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19873 l_bflow_applied_to_amt       := NULL; -- 5132302
19877 l_accrual_line_num           := NULL;          -- 4262811
19874 l_entered_amt_idx            := NULL;          -- 4262811
19875 l_accted_amt_idx             := NULL;          -- 4262811
19876 l_acc_rev_flag               := NULL;          -- 4262811
19878 l_tmp_amt                    := NULL;          -- 4262811
19879 --
19880  
19881 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19882     l_balance_type_code <> 'B' THEN
19883 IF NVL(p_source_66,'
19884 ') =  'JLBR_AR_BANK_CHARGES' AND 
19885 NVL(p_source_7,'
19886 ') =  'COLLECTION'
19887  THEN 
19888 
19889    --
19890    XLA_AE_LINES_PKG.SetNewLine;
19891 
19892    p_balance_type_code          := l_balance_type_code;
19893    -- set the flag so later we will know whether the gain loss line needs to be created
19894    
19895    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19896      p_actual_flag :='A';
19897    END IF;
19898 
19899    --
19900    -- bulk performance
19901    --
19902    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19903                                       p_header_num   => 0); -- 4262811
19904    --
19905    -- set accounting line options
19906    --
19907    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19908            p_natural_side_code          => 'D'
19909          , p_gain_or_loss_flag          => 'N'
19910          , p_gl_transfer_mode_code      => 'S'
19911          , p_acct_entry_type_code       => 'A'
19912          , p_switch_side_flag           => 'Y'
19913          , p_merge_duplicate_code       => 'W'
19914          );
19915    --
19916    l_acc_rev_natural_side_code := 'C';  -- 4262811
19917    -- 
19918    --
19919    -- set accounting line type info
19920    --
19921    xla_ae_lines_pkg.SetAcctLineType
19922       (p_component_type             => l_component_type
19923       ,p_event_type_code            => l_event_type_code
19924       ,p_line_definition_owner_code => l_line_definition_owner_code
19925       ,p_line_definition_code       => l_line_definition_code
19926       ,p_accounting_line_code       => l_component_code
19927       ,p_accounting_line_type_code  => l_component_type_code
19928       ,p_accounting_line_appl_id    => l_component_appl_id
19929       ,p_amb_context_code           => l_amb_context_code
19930       ,p_entity_code                => l_entity_code
19931       ,p_event_class_code           => l_event_class_code);
19932    --
19933    -- set accounting class
19934    --
19935    xla_ae_lines_pkg.SetAcctClass(
19936            p_accounting_class_code  => 'BANK_CHG'
19937          , p_ae_header_id           => l_ae_header_id
19938          );
19939 
19940    --
19941    -- set rounding class
19942    --
19943    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19944                       'BANK_CHG';
19945 
19946    --
19947    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19948    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19949    --
19950    -- bulk performance
19951    --
19952    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19953 
19954    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19955       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19956 
19957    -- 4955764
19958    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19959       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19960 
19961    -- 4458381 Public Sector Enh
19962    
19963    --
19964    -- set accounting attributes for the line type
19965    --
19966    l_entered_amt_idx := 10;
19967    l_accted_amt_idx  := 15;
19968    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19969    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
19970    l_rec_acct_attrs.array_char_value(1)  := p_source_67;
19971    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
19972    l_rec_acct_attrs.array_num_value(2)  := 
19973 xla_ae_sources_pkg.GetSystemSourceNum(
19974    p_source_code           => 'XLA_EVENT_APPL_ID'
19975  , p_source_type_code      => 'Y'
19976  , p_source_application_id =>  602
19977 );
19978    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
19979    l_rec_acct_attrs.array_char_value(3)  := p_source_69;
19980    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
19981    l_rec_acct_attrs.array_char_value(4)  := 
19982 xla_ae_sources_pkg.GetSystemSourceChar(
19983    p_source_code           => 'XLA_ENTITY_CODE'
19984  , p_source_type_code      => 'Y'
19985  , p_source_application_id =>  602
19986 );
19987    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
19988    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_71);
19989    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
19990    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_72);
19991    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
19992    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_73);
19993    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
19994    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_74);
19995    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
19999    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
19996    l_rec_acct_attrs.array_char_value(9)  := p_source_75;
19997    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
19998    l_rec_acct_attrs.array_num_value(10)  := p_source_76;
20000    l_rec_acct_attrs.array_char_value(11)  := p_source_77;
20001    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
20002    l_rec_acct_attrs.array_date_value(12)  := p_source_78;
20003    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
20004    l_rec_acct_attrs.array_num_value(13)  := p_source_79;
20005    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
20006    l_rec_acct_attrs.array_char_value(14)  := p_source_80;
20007    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
20008    l_rec_acct_attrs.array_num_value(15)  := p_source_81;
20009    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
20010    l_rec_acct_attrs.array_num_value(16)  := p_source_37;
20011    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
20012    l_rec_acct_attrs.array_num_value(17)  := p_source_38;
20013    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
20014    l_rec_acct_attrs.array_char_value(18)  := p_source_39;
20015    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
20016    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_82);
20017    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
20018    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_83);
20019    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
20020    l_rec_acct_attrs.array_char_value(21)  := p_source_84;
20021    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
20022    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_82);
20023 
20024    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20025    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20026 
20027    ---------------------------------------------------------------------------------------------------------------
20028    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20029    ---------------------------------------------------------------------------------------------------------------
20030    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20031 
20032    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20033    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20034 
20035    IF xla_accounting_cache_pkg.GetValueChar
20036          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20037          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20038    AND l_bflow_method_code = 'PRIOR_ENTRY'
20039 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20040    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20041          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20042        )
20043    THEN
20044          xla_ae_lines_pkg.BflowUpgEntry
20045            (p_business_method_code    => l_bflow_method_code
20046            ,p_business_class_code     => l_bflow_class_code
20047            ,p_balance_type            => l_balance_type_code);
20048    ELSE
20049       NULL;
20050 -- No business flow processing for business flow method of NONE.
20051    END IF;
20052 
20053    --
20054    -- call analytical criteria
20055    --
20056    
20057    --
20058    -- call description
20059    --
20060    
20061 xla_ae_lines_pkg.SetLineDescription(
20062    p_ae_header_id => l_ae_header_id
20063   ,p_description  => Description_2 (
20064      p_application_id         => p_application_id
20065    , p_ae_header_id           => l_ae_header_id 
20066 , p_source_4 => p_source_4
20067 , p_source_5 => p_source_5
20068 , p_source_6 => p_source_6
20069 , p_source_7 => p_source_7
20070 , p_source_7_meaning => p_source_7_meaning
20071    )
20072 );
20073 
20074 
20075    --
20076    -- call ADRs
20077    -- Bug 4922099
20078    --
20079    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20080         (NVL(l_actual_upg_option, 'N') = 'O') OR
20081         (NVL(l_enc_upg_option, 'N') = 'O')
20082       )
20083    THEN
20084    NULL;
20085    --
20086    --
20087    
20088   l_ccid := AcctDerRule_13(
20089            p_application_id           => p_application_id
20090          , p_ae_header_id             => l_ae_header_id 
20091 , p_source_15 => p_source_15
20092          , x_transaction_coa_id       => l_adr_transaction_coa_id
20093          , x_accounting_coa_id        => l_adr_accounting_coa_id
20094          , x_value_type_code          => l_adr_value_type_code
20095          , p_side                     => 'NA'
20096    );
20097 
20098    xla_ae_lines_pkg.set_ccid(
20099     p_code_combination_id          => l_ccid
20100   , p_value_type_code              => l_adr_value_type_code
20101   , p_transaction_coa_id           => l_adr_transaction_coa_id
20102   , p_accounting_coa_id            => l_adr_accounting_coa_id
20103   , p_adr_code                     => 'COLL_DOC_BANK_CHARGES'
20104   , p_adr_type_code                => 'S'
20105   , p_component_type               => l_component_type
20106   , p_component_code               => l_component_code
20107   , p_component_type_code          => l_component_type_code
20111   );
20108   , p_component_appl_id            => l_component_appl_id
20109   , p_amb_context_code             => l_amb_context_code
20110   , p_side                         => 'NA'
20112 
20113 
20114    --
20115    --
20116    END IF;
20117    --
20118    -- Bug 4922099
20119    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20120           (NVL(l_enc_upg_option, 'N') = 'O')
20121         ) AND
20122         (l_bflow_method_code = 'PRIOR_ENTRY')
20123       )
20124    THEN
20125       IF
20126       --
20127       1 = 2
20128       --
20129       THEN
20130       xla_accounting_err_pkg.build_message
20131                                     (p_appli_s_name            => 'XLA'
20132                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20133                                     ,p_token_1                 => 'LINE_NUMBER'
20134                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20135                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20136                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20137                                                                              l_component_type
20138                                                                             ,l_component_code
20139                                                                             ,l_component_type_code
20140                                                                             ,l_component_appl_id
20141                                                                             ,l_amb_context_code
20142                                                                             ,l_entity_code
20143                                                                             ,l_event_class_code
20144                                                                            )
20145                                     ,p_token_3                 => 'OWNER'
20146                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20147                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20148                                                                           ,p_lookup_code    => l_component_type_code
20149                                                                          )
20150                                     ,p_token_4                 => 'PRODUCT_NAME'
20151                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20152                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20153                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20154                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20155                                     ,p_ae_header_id            =>  NULL
20156                                        );
20157 
20158         IF (C_LEVEL_ERROR>= g_log_level) THEN
20159                  trace
20160                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20161                       ,p_level    => C_LEVEL_ERROR
20162                       ,p_module   => l_log_module);
20163         END IF;
20164       END IF;
20165    END IF;
20166    --
20167    --
20168    ------------------------------------------------------------------------------------------------
20169    -- 4219869 Business Flow
20170    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20171    -- Prior Entry.  Currently, the following code is always generated.
20172    ------------------------------------------------------------------------------------------------
20173    XLA_AE_LINES_PKG.ValidateCurrentLine;
20174 
20175    ------------------------------------------------------------------------------------
20176    -- 4219869 Business Flow
20177    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20178    ------------------------------------------------------------------------------------
20179    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20180 
20181    ----------------------------------------------------------------------------------
20182    -- 4219869 Business Flow
20183    -- Update journal entry status -- Need to generate this within IF <condition>
20184    ----------------------------------------------------------------------------------
20185    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20186          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20187          ,p_balance_type_code => l_balance_type_code
20188          );
20189 
20190    -------------------------------------------------------------------------------------------
20191    -- 4262811 - Generate the Accrual Reversal lines
20192    -------------------------------------------------------------------------------------------
20193    BEGIN
20194       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20195                               (g_array_event(p_event_id).array_value_num('header_index'));
20196       IF l_acc_rev_flag IS NULL THEN
20197          l_acc_rev_flag := 'N';
20198       END IF;
20199    EXCEPTION
20200       WHEN OTHERS THEN
20201          l_acc_rev_flag := 'N';
20202    END;
20203    --
20204    IF (l_acc_rev_flag = 'Y') THEN
20205 
20206        -- 4645092  ------------------------------------------------------------------------------
20210 
20207        -- To allow MPA report to determine if it should generate report process
20208        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20209        ------------------------------------------------------------------------------------------
20211        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20212        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20213    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
20214    -- call ADRs
20215    -- Bug 4922099
20216    --
20217    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20218         (NVL(l_actual_upg_option, 'N') = 'O') OR
20219         (NVL(l_enc_upg_option, 'N') = 'O')
20220       )
20221    THEN
20222    NULL;
20223    --
20224    --
20225    
20226   l_ccid := AcctDerRule_13(
20227            p_application_id           => p_application_id
20228          , p_ae_header_id             => l_ae_header_id 
20229 , p_source_15 => p_source_15
20230          , x_transaction_coa_id       => l_adr_transaction_coa_id
20231          , x_accounting_coa_id        => l_adr_accounting_coa_id
20232          , x_value_type_code          => l_adr_value_type_code
20233          , p_side                     => 'NA'
20234    );
20235 
20236    xla_ae_lines_pkg.set_ccid(
20237     p_code_combination_id          => l_ccid
20238   , p_value_type_code              => l_adr_value_type_code
20239   , p_transaction_coa_id           => l_adr_transaction_coa_id
20240   , p_accounting_coa_id            => l_adr_accounting_coa_id
20241   , p_adr_code                     => 'COLL_DOC_BANK_CHARGES'
20242   , p_adr_type_code                => 'S'
20243   , p_component_type               => l_component_type
20244   , p_component_code               => l_component_code
20245   , p_component_type_code          => l_component_type_code
20246   , p_component_appl_id            => l_component_appl_id
20247   , p_amb_context_code             => l_amb_context_code
20248   , p_side                         => 'NA'
20249   );
20250 
20251 
20252    --
20253    --
20254    END IF;
20255 
20256        --
20257        -- Update the line information that should be overwritten
20258        --
20259        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20260                                          p_header_num   => 1);
20261        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20262 
20263        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20264 
20265        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20266           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20267        END IF;
20268 
20269       --
20270       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20271       --
20272       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20273           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20274       ELSE
20275           ---------------------------------------------------------------------------------------------------
20276           -- 4262811a Switch Sign
20277           ---------------------------------------------------------------------------------------------------
20278           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20279           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20280                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20281           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20282                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20283           -- 5132302
20284           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20285                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20286 
20287       END IF;
20288 
20289       -- 4955764
20290       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20291       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20292 
20293 
20294       XLA_AE_LINES_PKG.ValidateCurrentLine;
20295       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20296 
20297       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20298                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20299                ,p_balance_type_code => l_balance_type_code);
20300 
20301    END IF;
20302 
20303    -----------------------------------------------------------------------------------------
20304    -- 4262811 Multiperiod Accounting
20305    -----------------------------------------------------------------------------------------
20306      -- No MPA option is assigned.
20307 
20308 
20309 END IF;
20310 END IF;
20311 --
20312 
20313 --
20314 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20315    trace
20316       (p_msg      => 'END of AcctLineType_54'
20317       ,p_level    => C_LEVEL_PROCEDURE
20318       ,p_module   => l_log_module);
20319 END IF;
20320 --
20321 EXCEPTION
20325        xla_exceptions_pkg.raise_message
20322   WHEN xla_exceptions_pkg.application_exception THEN
20323       RAISE;
20324   WHEN OTHERS THEN
20326            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_54');
20327 END AcctLineType_54;
20328 --
20329 
20330 ---------------------------------------
20331 --
20332 -- PRIVATE FUNCTION
20333 --         AcctLineType_55
20334 --
20335 ---------------------------------------
20336 PROCEDURE AcctLineType_55 (
20337   p_application_id        IN NUMBER
20338  ,p_event_id              IN NUMBER
20339  ,p_calculate_acctd_flag  IN VARCHAR2
20340  ,p_calculate_g_l_flag    IN VARCHAR2
20341  ,p_actual_flag           IN OUT VARCHAR2
20342  ,p_balance_type_code     OUT VARCHAR2
20343  ,p_gain_or_loss_ref      OUT VARCHAR2
20344  
20345 --Bordero Type
20346  , p_source_7            IN VARCHAR2
20347  , p_source_7_meaning    IN VARCHAR2
20348 --SLA Party Type
20349  , p_source_39            IN VARCHAR2
20350 --Collection Document Distribution Line Type
20351  , p_source_66            IN VARCHAR2
20352  , p_source_66_meaning    IN VARCHAR2
20353 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
20354  , p_source_67            IN VARCHAR2
20355  , p_source_67_meaning    IN VARCHAR2
20356 --Applied To Distribution Link Type
20357  , p_source_69            IN VARCHAR2
20358 --Applied To Distribution Identifier
20359  , p_source_71            IN NUMBER
20360 --Applied To Distribution Document Identifier
20361  , p_source_72            IN NUMBER
20362 --Applied To Distribution Occurrence Identifier
20363  , p_source_73            IN NUMBER
20364 --Collection Document Distribution Identifier
20365  , p_source_74            IN NUMBER
20366 --Collection Document Distribution Link Type
20367  , p_source_75            IN VARCHAR2
20368 --Collection Document Distribution Entered Amount
20369  , p_source_76            IN NUMBER
20370 --Collection Document Distribution Entered Currency Code
20371  , p_source_77            IN VARCHAR2
20372 --Collection Document Distribution Accounted Amount
20373  , p_source_81            IN NUMBER
20374 --Collection Document Occurrence Identifier
20375  , p_source_82            IN NUMBER
20376 --Reversed Collection Document Distribution Identifier
20377  , p_source_83            IN NUMBER
20378 --Reversed Collection Document Distribution Link Type
20379  , p_source_84            IN VARCHAR2
20380 --Collection Document Occurrence Type
20381  , p_source_85            IN VARCHAR2
20382  , p_source_85_meaning    IN VARCHAR2
20383 )
20384 IS
20385 
20386 l_component_type              VARCHAR2(80);
20387 l_component_code              VARCHAR2(30);
20388 l_component_type_code         VARCHAR2(1);
20389 l_component_appl_id           INTEGER;
20390 l_amb_context_code            VARCHAR2(30);
20391 l_entity_code                 VARCHAR2(30);
20392 l_event_class_code            VARCHAR2(30);
20393 l_ae_header_id                NUMBER;
20394 l_event_type_code             VARCHAR2(30);
20395 l_line_definition_code        VARCHAR2(30);
20396 l_line_definition_owner_code  VARCHAR2(1);
20397 --
20398 -- adr variables
20399 l_segment                     VARCHAR2(30);
20400 l_ccid                        NUMBER;
20401 l_adr_transaction_coa_id      NUMBER;
20402 l_adr_accounting_coa_id       NUMBER;
20403 l_adr_flexfield_segment_code  VARCHAR2(30);
20404 l_adr_flex_value_set_id       NUMBER;
20405 l_adr_value_type_code         VARCHAR2(30);
20406 l_adr_value_combination_id    NUMBER;
20407 l_adr_value_segment_code      VARCHAR2(30);
20408 
20409 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20410 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20411 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20412 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20413 
20414 -- 4262811 Variables ------------------------------------------------------------------------------------------
20415 l_entered_amt_idx             NUMBER;
20416 l_accted_amt_idx              NUMBER;
20417 l_acc_rev_flag                VARCHAR2(1);
20418 l_accrual_line_num            NUMBER;
20419 l_tmp_amt                     NUMBER;
20420 l_acc_rev_natural_side_code   VARCHAR2(1);
20421 
20422 l_num_entries                 NUMBER;
20423 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20424 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20425 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20426 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20427 l_recog_line_1                NUMBER;
20428 l_recog_line_2                NUMBER;
20429 
20430 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20431 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20432 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20433 
20434 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20435 
20436 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20437 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20438 
20439 ---------------------------------------------------------------------------------------------------------------
20440 
20441 
20442 --
20443 -- bulk performance
20444 --
20445 l_balance_type_code           VARCHAR2(1);
20449 --
20446 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20447 l_log_module                  VARCHAR2(240);
20448 
20450 -- Upgrade strategy
20451 --
20452 l_actual_upg_option           VARCHAR2(1);
20453 l_enc_upg_option           VARCHAR2(1);
20454 
20455 --
20456 BEGIN
20457 --
20458 IF g_log_enabled THEN
20459       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
20460 END IF;
20461 --
20462 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20463 
20464       trace
20465          (p_msg      => 'BEGIN of AcctLineType_55'
20466          ,p_level    => C_LEVEL_PROCEDURE
20467          ,p_module   => l_log_module);
20468 
20469 END IF;
20470 --
20471 l_component_type             := 'AMB_JLT';
20472 l_component_code             := 'COLL_DOC_BILLS_UNDER_COLL_CR';
20473 l_component_type_code        := 'S';
20474 l_component_appl_id          :=  222;
20475 l_amb_context_code           := 'DEFAULT';
20476 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
20477 l_event_class_code           := 'COLLECTION_OCC_DOCUMENT';
20478 l_event_type_code            := 'COLLECTION_OCC_DOCUMENT_ALL';
20479 l_line_definition_owner_code := 'S';
20480 l_line_definition_code       := 'JLBR_AR_BANK_COLL_DOC_ACCRUAL';
20481 --
20482 l_balance_type_code          := 'A';
20483 l_segment                     := NULL;
20484 l_ccid                        := NULL;
20485 l_adr_transaction_coa_id      := NULL;
20486 l_adr_accounting_coa_id       := NULL;
20487 l_adr_flexfield_segment_code  := NULL;
20488 l_adr_flex_value_set_id       := NULL;
20489 l_adr_value_type_code         := NULL;
20490 l_adr_value_combination_id    := NULL;
20491 l_adr_value_segment_code      := NULL;
20492 
20493 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
20494 l_bflow_class_code           := 'JLBR_AR_BILLS_UNDER_COLLECTION';    -- 4219869 Business Flow
20495 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
20496 l_budgetary_control_flag     := 'N';
20497 
20498 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20499 l_bflow_applied_to_amt       := NULL; -- 5132302
20500 l_entered_amt_idx            := NULL;          -- 4262811
20501 l_accted_amt_idx             := NULL;          -- 4262811
20502 l_acc_rev_flag               := NULL;          -- 4262811
20503 l_accrual_line_num           := NULL;          -- 4262811
20504 l_tmp_amt                    := NULL;          -- 4262811
20505 --
20506  
20507 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20508     l_balance_type_code <> 'B' THEN
20509 IF NVL(p_source_66,'
20510 ') =  'JLBR_AR_ENDORSEMENT' AND 
20511 NVL(p_source_7,'
20512 ') =  'COLLECTION' AND 
20513 NVL(p_source_85,'
20514 ') =  'RETURN_OCCURRENCE'
20515  THEN 
20516 
20517    --
20518    XLA_AE_LINES_PKG.SetNewLine;
20519 
20520    p_balance_type_code          := l_balance_type_code;
20521    -- set the flag so later we will know whether the gain loss line needs to be created
20522    
20523    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20524      p_actual_flag :='A';
20525    END IF;
20526 
20527    --
20528    -- bulk performance
20529    --
20530    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20531                                       p_header_num   => 0); -- 4262811
20532    --
20533    -- set accounting line options
20534    --
20535    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20536            p_natural_side_code          => 'C'
20537          , p_gain_or_loss_flag          => 'N'
20538          , p_gl_transfer_mode_code      => 'S'
20539          , p_acct_entry_type_code       => 'A'
20540          , p_switch_side_flag           => 'Y'
20541          , p_merge_duplicate_code       => 'A'
20542          );
20543    --
20544    l_acc_rev_natural_side_code := 'D';  -- 4262811
20545    -- 
20546    --
20547    -- set accounting line type info
20548    --
20549    xla_ae_lines_pkg.SetAcctLineType
20550       (p_component_type             => l_component_type
20551       ,p_event_type_code            => l_event_type_code
20552       ,p_line_definition_owner_code => l_line_definition_owner_code
20553       ,p_line_definition_code       => l_line_definition_code
20554       ,p_accounting_line_code       => l_component_code
20555       ,p_accounting_line_type_code  => l_component_type_code
20556       ,p_accounting_line_appl_id    => l_component_appl_id
20557       ,p_amb_context_code           => l_amb_context_code
20558       ,p_entity_code                => l_entity_code
20559       ,p_event_class_code           => l_event_class_code);
20560    --
20561    -- set accounting class
20562    --
20563    xla_ae_lines_pkg.SetAcctClass(
20564            p_accounting_class_code  => 'REMITTANCE'
20565          , p_ae_header_id           => l_ae_header_id
20566          );
20567 
20568    --
20569    -- set rounding class
20570    --
20571    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20572                       'REMITTANCE';
20573 
20574    --
20575    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20576    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20577    --
20578    -- bulk performance
20579    --
20583       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20580    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20581 
20582    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20584 
20585    -- 4955764
20586    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20587       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20588 
20589    -- 4458381 Public Sector Enh
20590    
20591    --
20592    -- set accounting attributes for the line type
20593    --
20594    l_entered_amt_idx := 10;
20595    l_accted_amt_idx  := 12;
20596    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20597    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
20598    l_rec_acct_attrs.array_char_value(1)  := p_source_67;
20599    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
20600    l_rec_acct_attrs.array_num_value(2)  := 
20601 xla_ae_sources_pkg.GetSystemSourceNum(
20602    p_source_code           => 'XLA_EVENT_APPL_ID'
20603  , p_source_type_code      => 'Y'
20604  , p_source_application_id =>  602
20605 );
20606    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
20607    l_rec_acct_attrs.array_char_value(3)  := p_source_69;
20608    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
20609    l_rec_acct_attrs.array_char_value(4)  := 
20610 xla_ae_sources_pkg.GetSystemSourceChar(
20611    p_source_code           => 'XLA_ENTITY_CODE'
20612  , p_source_type_code      => 'Y'
20613  , p_source_application_id =>  602
20614 );
20615    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
20616    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_71);
20617    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
20618    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_72);
20619    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
20620    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_73);
20621    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
20622    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_74);
20623    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
20624    l_rec_acct_attrs.array_char_value(9)  := p_source_75;
20625    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
20626    l_rec_acct_attrs.array_num_value(10)  := p_source_76;
20627    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
20628    l_rec_acct_attrs.array_char_value(11)  := p_source_77;
20629    l_rec_acct_attrs.array_acct_attr_code(12) := 'LEDGER_AMOUNT';
20630    l_rec_acct_attrs.array_num_value(12)  := p_source_81;
20631    l_rec_acct_attrs.array_acct_attr_code(13) := 'PARTY_TYPE';
20632    l_rec_acct_attrs.array_char_value(13)  := p_source_39;
20633    l_rec_acct_attrs.array_acct_attr_code(14) := 'RECON_REF';
20634    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_82);
20635    l_rec_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_ID1';
20636    l_rec_acct_attrs.array_num_value(15)  :=  to_char(p_source_83);
20637    l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_TYPE';
20638    l_rec_acct_attrs.array_char_value(16)  := p_source_84;
20639    l_rec_acct_attrs.array_acct_attr_code(17) := 'TRX_ROUNDING_REF';
20640    l_rec_acct_attrs.array_num_value(17)  :=  to_char(p_source_82);
20641 
20642    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20643    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20644 
20645    ---------------------------------------------------------------------------------------------------------------
20646    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20647    ---------------------------------------------------------------------------------------------------------------
20648    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20649 
20650    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20651    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20652 
20653    IF xla_accounting_cache_pkg.GetValueChar
20654          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20655          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20656    AND l_bflow_method_code = 'PRIOR_ENTRY'
20657 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20658    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20659          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20660        )
20661    THEN
20662          xla_ae_lines_pkg.BflowUpgEntry
20663            (p_business_method_code    => l_bflow_method_code
20664            ,p_business_class_code     => l_bflow_class_code
20665            ,p_balance_type            => l_balance_type_code);
20666    ELSE
20667       NULL;
20668 XLA_AE_LINES_PKG.business_flow_validation(
20669                                 p_business_method_code     => l_bflow_method_code
20670                                ,p_business_class_code      => l_bflow_class_code
20671                                ,p_inherit_description_flag => l_inherit_desc_flag);
20672    END IF;
20673 
20674    --
20675    -- call analytical criteria
20676    --
20677    -- Inherited Analytical Criteria for business flow method of Prior Entry.
20678    --
20682    --
20679    -- call description
20680    --
20681    -- No description or it is inherited.
20683    -- call ADRs
20684    -- Bug 4922099
20685    --
20686    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20687         (NVL(l_actual_upg_option, 'N') = 'O') OR
20688         (NVL(l_enc_upg_option, 'N') = 'O')
20689       )
20690    THEN
20691    NULL;
20692    --
20693    --
20694    
20695    --
20696    --
20697    END IF;
20698    --
20699    -- Bug 4922099
20700    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20701           (NVL(l_enc_upg_option, 'N') = 'O')
20702         ) AND
20703         (l_bflow_method_code = 'PRIOR_ENTRY')
20704       )
20705    THEN
20706       IF
20707       --
20708       1 = 1
20709       --
20710       THEN
20711       xla_accounting_err_pkg.build_message
20712                                     (p_appli_s_name            => 'XLA'
20713                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20714                                     ,p_token_1                 => 'LINE_NUMBER'
20715                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20716                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20717                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20718                                                                              l_component_type
20719                                                                             ,l_component_code
20720                                                                             ,l_component_type_code
20721                                                                             ,l_component_appl_id
20722                                                                             ,l_amb_context_code
20723                                                                             ,l_entity_code
20724                                                                             ,l_event_class_code
20725                                                                            )
20726                                     ,p_token_3                 => 'OWNER'
20727                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20728                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20729                                                                           ,p_lookup_code    => l_component_type_code
20730                                                                          )
20731                                     ,p_token_4                 => 'PRODUCT_NAME'
20732                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20733                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20734                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20735                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20736                                     ,p_ae_header_id            =>  NULL
20737                                        );
20738 
20739         IF (C_LEVEL_ERROR>= g_log_level) THEN
20740                  trace
20741                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20742                       ,p_level    => C_LEVEL_ERROR
20743                       ,p_module   => l_log_module);
20744         END IF;
20745       END IF;
20746    END IF;
20747    --
20748    --
20749    ------------------------------------------------------------------------------------------------
20750    -- 4219869 Business Flow
20751    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20752    -- Prior Entry.  Currently, the following code is always generated.
20753    ------------------------------------------------------------------------------------------------
20754    -- No ValidateCurrentLine for business flow method of Prior Entry
20755 
20756    ------------------------------------------------------------------------------------
20757    -- 4219869 Business Flow
20758    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20759    ------------------------------------------------------------------------------------
20760    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20761 
20762    ----------------------------------------------------------------------------------
20763    -- 4219869 Business Flow
20764    -- Update journal entry status -- Need to generate this within IF <condition>
20765    ----------------------------------------------------------------------------------
20766    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20767          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20768          ,p_balance_type_code => l_balance_type_code
20769          );
20770 
20771    -------------------------------------------------------------------------------------------
20772    -- 4262811 - Generate the Accrual Reversal lines
20773    -------------------------------------------------------------------------------------------
20774    BEGIN
20775       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20776                               (g_array_event(p_event_id).array_value_num('header_index'));
20777       IF l_acc_rev_flag IS NULL THEN
20781       WHEN OTHERS THEN
20778          l_acc_rev_flag := 'N';
20779       END IF;
20780    EXCEPTION
20782          l_acc_rev_flag := 'N';
20783    END;
20784    --
20785    IF (l_acc_rev_flag = 'Y') THEN
20786 
20787        -- 4645092  ------------------------------------------------------------------------------
20788        -- To allow MPA report to determine if it should generate report process
20789        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20790        ------------------------------------------------------------------------------------------
20791 
20792        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20793        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20794    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
20795    -- call ADRs
20796    -- Bug 4922099
20797    --
20798    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20799         (NVL(l_actual_upg_option, 'N') = 'O') OR
20800         (NVL(l_enc_upg_option, 'N') = 'O')
20801       )
20802    THEN
20803    NULL;
20804    --
20805    --
20806    
20807    --
20808    --
20809    END IF;
20810 
20811        --
20812        -- Update the line information that should be overwritten
20813        --
20814        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20815                                          p_header_num   => 1);
20816        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20817 
20818        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20819 
20820        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20821           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20822        END IF;
20823 
20824       --
20825       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20826       --
20827       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20828           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20829       ELSE
20830           ---------------------------------------------------------------------------------------------------
20831           -- 4262811a Switch Sign
20832           ---------------------------------------------------------------------------------------------------
20833           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20834           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20835                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20836           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20837                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20838           -- 5132302
20839           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20840                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20841 
20842       END IF;
20843 
20844       -- 4955764
20845       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20846       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20847 
20848 
20849       XLA_AE_LINES_PKG.ValidateCurrentLine;
20850       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20851 
20852       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20853                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20854                ,p_balance_type_code => l_balance_type_code);
20855 
20856    END IF;
20857 
20858    -----------------------------------------------------------------------------------------
20859    -- 4262811 Multiperiod Accounting
20860    -----------------------------------------------------------------------------------------
20861      -- No MPA option is assigned.
20862 
20863 
20864 END IF;
20865 END IF;
20866 --
20867 
20868 --
20869 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20870    trace
20871       (p_msg      => 'END of AcctLineType_55'
20872       ,p_level    => C_LEVEL_PROCEDURE
20873       ,p_module   => l_log_module);
20874 END IF;
20875 --
20876 EXCEPTION
20877   WHEN xla_exceptions_pkg.application_exception THEN
20878       RAISE;
20879   WHEN OTHERS THEN
20880        xla_exceptions_pkg.raise_message
20881            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_55');
20882 END AcctLineType_55;
20883 --
20884 
20885 ---------------------------------------
20886 --
20887 -- PRIVATE FUNCTION
20888 --         AcctLineType_56
20889 --
20890 ---------------------------------------
20891 PROCEDURE AcctLineType_56 (
20892   p_application_id        IN NUMBER
20893  ,p_event_id              IN NUMBER
20894  ,p_calculate_acctd_flag  IN VARCHAR2
20895  ,p_calculate_g_l_flag    IN VARCHAR2
20896  ,p_actual_flag           IN OUT VARCHAR2
20897  ,p_balance_type_code     OUT VARCHAR2
20898  ,p_gain_or_loss_ref      OUT VARCHAR2
20899  
20900 --Collection Document Bank Occurrence
20901  , p_source_4            IN VARCHAR2
20905  , p_source_6            IN VARCHAR2
20902 --Collection Document Number
20903  , p_source_5            IN NUMBER
20904 --Collection Document Trade Note Number
20906 --Bordero Type
20907  , p_source_7            IN VARCHAR2
20908  , p_source_7_meaning    IN VARCHAR2
20909 --Collection Document Bills Under Collection Account
20910  , p_source_16            IN NUMBER
20911 --Bill To Customer Account Identifier
20912  , p_source_37            IN NUMBER
20913 --Bill To Customer Site Use Identifier
20914  , p_source_38            IN NUMBER
20915 --SLA Party Type
20916  , p_source_39            IN VARCHAR2
20917 --Collection Document Distribution Line Type
20918  , p_source_66            IN VARCHAR2
20919  , p_source_66_meaning    IN VARCHAR2
20920 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
20921  , p_source_67            IN VARCHAR2
20922  , p_source_67_meaning    IN VARCHAR2
20923 --Applied To Distribution Link Type
20924  , p_source_69            IN VARCHAR2
20925 --Applied To Distribution Identifier
20926  , p_source_71            IN NUMBER
20927 --Applied To Distribution Document Identifier
20928  , p_source_72            IN NUMBER
20929 --Applied To Distribution Occurrence Identifier
20930  , p_source_73            IN NUMBER
20931 --Collection Document Distribution Identifier
20932  , p_source_74            IN NUMBER
20933 --Collection Document Distribution Link Type
20934  , p_source_75            IN VARCHAR2
20935 --Collection Document Distribution Entered Amount
20936  , p_source_76            IN NUMBER
20937 --Collection Document Distribution Entered Currency Code
20938  , p_source_77            IN VARCHAR2
20939 --Collection Document Distribution Conversion Date
20940  , p_source_78            IN DATE
20941 --Collection Document Distribution Conversion Rate
20942  , p_source_79            IN NUMBER
20943 --Collection Document Distribution Conversion Rate Type
20944  , p_source_80            IN VARCHAR2
20945 --Collection Document Distribution Accounted Amount
20946  , p_source_81            IN NUMBER
20947 --Collection Document Occurrence Identifier
20948  , p_source_82            IN NUMBER
20949 --Reversed Collection Document Distribution Identifier
20950  , p_source_83            IN NUMBER
20951 --Reversed Collection Document Distribution Link Type
20952  , p_source_84            IN VARCHAR2
20953 --Collection Document Occurrence Type
20954  , p_source_85            IN VARCHAR2
20955  , p_source_85_meaning    IN VARCHAR2
20956 )
20957 IS
20958 
20959 l_component_type              VARCHAR2(80);
20960 l_component_code              VARCHAR2(30);
20961 l_component_type_code         VARCHAR2(1);
20962 l_component_appl_id           INTEGER;
20963 l_amb_context_code            VARCHAR2(30);
20964 l_entity_code                 VARCHAR2(30);
20965 l_event_class_code            VARCHAR2(30);
20966 l_ae_header_id                NUMBER;
20967 l_event_type_code             VARCHAR2(30);
20968 l_line_definition_code        VARCHAR2(30);
20969 l_line_definition_owner_code  VARCHAR2(1);
20970 --
20971 -- adr variables
20972 l_segment                     VARCHAR2(30);
20973 l_ccid                        NUMBER;
20974 l_adr_transaction_coa_id      NUMBER;
20975 l_adr_accounting_coa_id       NUMBER;
20976 l_adr_flexfield_segment_code  VARCHAR2(30);
20977 l_adr_flex_value_set_id       NUMBER;
20978 l_adr_value_type_code         VARCHAR2(30);
20979 l_adr_value_combination_id    NUMBER;
20980 l_adr_value_segment_code      VARCHAR2(30);
20981 
20982 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20983 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20984 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20985 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20986 
20987 -- 4262811 Variables ------------------------------------------------------------------------------------------
20988 l_entered_amt_idx             NUMBER;
20989 l_accted_amt_idx              NUMBER;
20990 l_acc_rev_flag                VARCHAR2(1);
20991 l_accrual_line_num            NUMBER;
20992 l_tmp_amt                     NUMBER;
20993 l_acc_rev_natural_side_code   VARCHAR2(1);
20994 
20995 l_num_entries                 NUMBER;
20996 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20997 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20998 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20999 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21000 l_recog_line_1                NUMBER;
21001 l_recog_line_2                NUMBER;
21002 
21003 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21004 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21005 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21006 
21007 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21008 
21009 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21010 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21011 
21012 ---------------------------------------------------------------------------------------------------------------
21013 
21014 
21015 --
21016 -- bulk performance
21017 --
21018 l_balance_type_code           VARCHAR2(1);
21019 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21020 l_log_module                  VARCHAR2(240);
21021 
21022 --
21023 -- Upgrade strategy
21024 --
21028 --
21025 l_actual_upg_option           VARCHAR2(1);
21026 l_enc_upg_option           VARCHAR2(1);
21027 
21029 BEGIN
21030 --
21031 IF g_log_enabled THEN
21032       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
21033 END IF;
21034 --
21035 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21036 
21037       trace
21038          (p_msg      => 'BEGIN of AcctLineType_56'
21039          ,p_level    => C_LEVEL_PROCEDURE
21040          ,p_module   => l_log_module);
21041 
21042 END IF;
21043 --
21044 l_component_type             := 'AMB_JLT';
21045 l_component_code             := 'COLL_DOC_BILLS_UNDER_COLL_DR';
21046 l_component_type_code        := 'S';
21047 l_component_appl_id          :=  222;
21048 l_amb_context_code           := 'DEFAULT';
21049 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
21050 l_event_class_code           := 'COLLECTION_OCC_DOCUMENT';
21051 l_event_type_code            := 'COLLECTION_OCC_DOCUMENT_ALL';
21052 l_line_definition_owner_code := 'S';
21053 l_line_definition_code       := 'JLBR_AR_BANK_COLL_DOC_ACCRUAL';
21054 --
21055 l_balance_type_code          := 'A';
21056 l_segment                     := NULL;
21057 l_ccid                        := NULL;
21058 l_adr_transaction_coa_id      := NULL;
21059 l_adr_accounting_coa_id       := NULL;
21060 l_adr_flexfield_segment_code  := NULL;
21061 l_adr_flex_value_set_id       := NULL;
21062 l_adr_value_type_code         := NULL;
21063 l_adr_value_combination_id    := NULL;
21064 l_adr_value_segment_code      := NULL;
21065 
21066 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21067 l_bflow_class_code           := 'JLBR_AR_BILLS_UNDER_COLLECTION';    -- 4219869 Business Flow
21068 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21069 l_budgetary_control_flag     := 'N';
21070 
21071 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21072 l_bflow_applied_to_amt       := NULL; -- 5132302
21073 l_entered_amt_idx            := NULL;          -- 4262811
21074 l_accted_amt_idx             := NULL;          -- 4262811
21075 l_acc_rev_flag               := NULL;          -- 4262811
21076 l_accrual_line_num           := NULL;          -- 4262811
21077 l_tmp_amt                    := NULL;          -- 4262811
21078 --
21079  
21080 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21081     l_balance_type_code <> 'B' THEN
21082 IF NVL(p_source_66,'
21083 ') =  'JLBR_AR_ENDORSEMENT' AND 
21084 NVL(p_source_7,'
21085 ') =  'COLLECTION' AND 
21086 NVL(p_source_85,'
21087 ') =  'REMITTANCE_OCCURRENCE'
21088  THEN 
21089 
21090    --
21091    XLA_AE_LINES_PKG.SetNewLine;
21092 
21093    p_balance_type_code          := l_balance_type_code;
21094    -- set the flag so later we will know whether the gain loss line needs to be created
21095    
21096    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21097      p_actual_flag :='A';
21098    END IF;
21099 
21100    --
21101    -- bulk performance
21102    --
21103    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21104                                       p_header_num   => 0); -- 4262811
21105    --
21106    -- set accounting line options
21107    --
21108    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21109            p_natural_side_code          => 'D'
21110          , p_gain_or_loss_flag          => 'N'
21111          , p_gl_transfer_mode_code      => 'S'
21112          , p_acct_entry_type_code       => 'A'
21113          , p_switch_side_flag           => 'Y'
21114          , p_merge_duplicate_code       => 'A'
21115          );
21116    --
21117    l_acc_rev_natural_side_code := 'C';  -- 4262811
21118    -- 
21119    --
21120    -- set accounting line type info
21121    --
21122    xla_ae_lines_pkg.SetAcctLineType
21123       (p_component_type             => l_component_type
21124       ,p_event_type_code            => l_event_type_code
21125       ,p_line_definition_owner_code => l_line_definition_owner_code
21126       ,p_line_definition_code       => l_line_definition_code
21127       ,p_accounting_line_code       => l_component_code
21128       ,p_accounting_line_type_code  => l_component_type_code
21129       ,p_accounting_line_appl_id    => l_component_appl_id
21130       ,p_amb_context_code           => l_amb_context_code
21131       ,p_entity_code                => l_entity_code
21132       ,p_event_class_code           => l_event_class_code);
21133    --
21134    -- set accounting class
21135    --
21136    xla_ae_lines_pkg.SetAcctClass(
21137            p_accounting_class_code  => 'REMITTANCE'
21138          , p_ae_header_id           => l_ae_header_id
21139          );
21140 
21141    --
21142    -- set rounding class
21143    --
21144    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21145                       'REMITTANCE';
21146 
21147    --
21148    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21149    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21150    --
21151    -- bulk performance
21152    --
21153    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21154 
21155    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21159    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21156       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21157 
21158    -- 4955764
21160       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21161 
21162    -- 4458381 Public Sector Enh
21163    
21164    --
21165    -- set accounting attributes for the line type
21166    --
21167    l_entered_amt_idx := 10;
21168    l_accted_amt_idx  := 15;
21169    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21170    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
21171    l_rec_acct_attrs.array_char_value(1)  := p_source_67;
21172    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
21173    l_rec_acct_attrs.array_num_value(2)  := 
21174 xla_ae_sources_pkg.GetSystemSourceNum(
21175    p_source_code           => 'XLA_EVENT_APPL_ID'
21176  , p_source_type_code      => 'Y'
21177  , p_source_application_id =>  602
21178 );
21179    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
21180    l_rec_acct_attrs.array_char_value(3)  := p_source_69;
21181    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
21182    l_rec_acct_attrs.array_char_value(4)  := 
21183 xla_ae_sources_pkg.GetSystemSourceChar(
21184    p_source_code           => 'XLA_ENTITY_CODE'
21185  , p_source_type_code      => 'Y'
21186  , p_source_application_id =>  602
21187 );
21188    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
21189    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_71);
21190    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
21191    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_72);
21192    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
21193    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_73);
21194    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
21195    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_74);
21196    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
21197    l_rec_acct_attrs.array_char_value(9)  := p_source_75;
21198    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
21199    l_rec_acct_attrs.array_num_value(10)  := p_source_76;
21200    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
21201    l_rec_acct_attrs.array_char_value(11)  := p_source_77;
21202    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
21203    l_rec_acct_attrs.array_date_value(12)  := p_source_78;
21204    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
21205    l_rec_acct_attrs.array_num_value(13)  := p_source_79;
21206    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
21207    l_rec_acct_attrs.array_char_value(14)  := p_source_80;
21208    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
21209    l_rec_acct_attrs.array_num_value(15)  := p_source_81;
21210    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
21211    l_rec_acct_attrs.array_num_value(16)  := p_source_37;
21212    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
21213    l_rec_acct_attrs.array_num_value(17)  := p_source_38;
21214    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
21215    l_rec_acct_attrs.array_char_value(18)  := p_source_39;
21216    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
21217    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_82);
21218    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
21219    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_83);
21220    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
21221    l_rec_acct_attrs.array_char_value(21)  := p_source_84;
21222    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
21223    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_82);
21224 
21225    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21226    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21227 
21228    ---------------------------------------------------------------------------------------------------------------
21229    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21230    ---------------------------------------------------------------------------------------------------------------
21231    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21232 
21233    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21234    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21235 
21236    IF xla_accounting_cache_pkg.GetValueChar
21237          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21238          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21239    AND l_bflow_method_code = 'PRIOR_ENTRY'
21240 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21241    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21242          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21243        )
21244    THEN
21245          xla_ae_lines_pkg.BflowUpgEntry
21246            (p_business_method_code    => l_bflow_method_code
21247            ,p_business_class_code     => l_bflow_class_code
21248            ,p_balance_type            => l_balance_type_code);
21249    ELSE
21250       NULL;
21254    --
21251 -- No business flow processing for business flow method of NONE.
21252    END IF;
21253 
21255    -- call analytical criteria
21256    --
21257    
21258    --
21259    -- call description
21260    --
21261    
21262 xla_ae_lines_pkg.SetLineDescription(
21263    p_ae_header_id => l_ae_header_id
21264   ,p_description  => Description_3 (
21265      p_application_id         => p_application_id
21266    , p_ae_header_id           => l_ae_header_id 
21267 , p_source_4 => p_source_4
21268 , p_source_5 => p_source_5
21269 , p_source_6 => p_source_6
21270    )
21271 );
21272 
21273 
21274    --
21275    -- call ADRs
21276    -- Bug 4922099
21277    --
21278    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21279         (NVL(l_actual_upg_option, 'N') = 'O') OR
21280         (NVL(l_enc_upg_option, 'N') = 'O')
21281       )
21282    THEN
21283    NULL;
21284    --
21285    --
21286    
21287   l_ccid := AcctDerRule_14(
21288            p_application_id           => p_application_id
21289          , p_ae_header_id             => l_ae_header_id 
21290 , p_source_16 => p_source_16
21291          , x_transaction_coa_id       => l_adr_transaction_coa_id
21292          , x_accounting_coa_id        => l_adr_accounting_coa_id
21293          , x_value_type_code          => l_adr_value_type_code
21294          , p_side                     => 'NA'
21295    );
21296 
21297    xla_ae_lines_pkg.set_ccid(
21298     p_code_combination_id          => l_ccid
21299   , p_value_type_code              => l_adr_value_type_code
21300   , p_transaction_coa_id           => l_adr_transaction_coa_id
21301   , p_accounting_coa_id            => l_adr_accounting_coa_id
21302   , p_adr_code                     => 'COLL_DOC_BILLS_UNDER_COLL'
21303   , p_adr_type_code                => 'S'
21304   , p_component_type               => l_component_type
21305   , p_component_code               => l_component_code
21306   , p_component_type_code          => l_component_type_code
21307   , p_component_appl_id            => l_component_appl_id
21308   , p_amb_context_code             => l_amb_context_code
21309   , p_side                         => 'NA'
21310   );
21311 
21312 
21313    --
21314    --
21315    END IF;
21316    --
21317    -- Bug 4922099
21318    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21319           (NVL(l_enc_upg_option, 'N') = 'O')
21320         ) AND
21321         (l_bflow_method_code = 'PRIOR_ENTRY')
21322       )
21323    THEN
21324       IF
21325       --
21326       1 = 2
21327       --
21328       THEN
21329       xla_accounting_err_pkg.build_message
21330                                     (p_appli_s_name            => 'XLA'
21331                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21332                                     ,p_token_1                 => 'LINE_NUMBER'
21333                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21334                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21335                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21336                                                                              l_component_type
21337                                                                             ,l_component_code
21338                                                                             ,l_component_type_code
21339                                                                             ,l_component_appl_id
21340                                                                             ,l_amb_context_code
21341                                                                             ,l_entity_code
21342                                                                             ,l_event_class_code
21343                                                                            )
21344                                     ,p_token_3                 => 'OWNER'
21345                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21346                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21347                                                                           ,p_lookup_code    => l_component_type_code
21348                                                                          )
21349                                     ,p_token_4                 => 'PRODUCT_NAME'
21350                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21351                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21352                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21353                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21354                                     ,p_ae_header_id            =>  NULL
21355                                        );
21356 
21357         IF (C_LEVEL_ERROR>= g_log_level) THEN
21358                  trace
21359                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21360                       ,p_level    => C_LEVEL_ERROR
21361                       ,p_module   => l_log_module);
21362         END IF;
21363       END IF;
21364    END IF;
21365    --
21366    --
21370    -- Prior Entry.  Currently, the following code is always generated.
21367    ------------------------------------------------------------------------------------------------
21368    -- 4219869 Business Flow
21369    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21371    ------------------------------------------------------------------------------------------------
21372    XLA_AE_LINES_PKG.ValidateCurrentLine;
21373 
21374    ------------------------------------------------------------------------------------
21375    -- 4219869 Business Flow
21376    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21377    ------------------------------------------------------------------------------------
21378    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21379 
21380    ----------------------------------------------------------------------------------
21381    -- 4219869 Business Flow
21382    -- Update journal entry status -- Need to generate this within IF <condition>
21383    ----------------------------------------------------------------------------------
21384    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21385          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21386          ,p_balance_type_code => l_balance_type_code
21387          );
21388 
21389    -------------------------------------------------------------------------------------------
21390    -- 4262811 - Generate the Accrual Reversal lines
21391    -------------------------------------------------------------------------------------------
21392    BEGIN
21393       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21394                               (g_array_event(p_event_id).array_value_num('header_index'));
21395       IF l_acc_rev_flag IS NULL THEN
21396          l_acc_rev_flag := 'N';
21397       END IF;
21398    EXCEPTION
21399       WHEN OTHERS THEN
21400          l_acc_rev_flag := 'N';
21401    END;
21402    --
21403    IF (l_acc_rev_flag = 'Y') THEN
21404 
21405        -- 4645092  ------------------------------------------------------------------------------
21406        -- To allow MPA report to determine if it should generate report process
21407        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21408        ------------------------------------------------------------------------------------------
21409 
21410        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21411        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21412    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
21413    -- call ADRs
21414    -- Bug 4922099
21415    --
21416    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21417         (NVL(l_actual_upg_option, 'N') = 'O') OR
21418         (NVL(l_enc_upg_option, 'N') = 'O')
21419       )
21420    THEN
21421    NULL;
21422    --
21423    --
21424    
21425   l_ccid := AcctDerRule_14(
21426            p_application_id           => p_application_id
21427          , p_ae_header_id             => l_ae_header_id 
21428 , p_source_16 => p_source_16
21429          , x_transaction_coa_id       => l_adr_transaction_coa_id
21430          , x_accounting_coa_id        => l_adr_accounting_coa_id
21431          , x_value_type_code          => l_adr_value_type_code
21432          , p_side                     => 'NA'
21433    );
21434 
21435    xla_ae_lines_pkg.set_ccid(
21436     p_code_combination_id          => l_ccid
21437   , p_value_type_code              => l_adr_value_type_code
21438   , p_transaction_coa_id           => l_adr_transaction_coa_id
21439   , p_accounting_coa_id            => l_adr_accounting_coa_id
21440   , p_adr_code                     => 'COLL_DOC_BILLS_UNDER_COLL'
21441   , p_adr_type_code                => 'S'
21442   , p_component_type               => l_component_type
21443   , p_component_code               => l_component_code
21444   , p_component_type_code          => l_component_type_code
21445   , p_component_appl_id            => l_component_appl_id
21446   , p_amb_context_code             => l_amb_context_code
21447   , p_side                         => 'NA'
21448   );
21449 
21450 
21451    --
21452    --
21453    END IF;
21454 
21455        --
21456        -- Update the line information that should be overwritten
21457        --
21458        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21459                                          p_header_num   => 1);
21460        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21461 
21462        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21463 
21464        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21465           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21466        END IF;
21467 
21468       --
21469       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21470       --
21471       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21472           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21473       ELSE
21474           ---------------------------------------------------------------------------------------------------
21475           -- 4262811a Switch Sign
21479                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21476           ---------------------------------------------------------------------------------------------------
21477           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21478           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21480           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21481                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21482           -- 5132302
21483           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21484                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21485 
21486       END IF;
21487 
21488       -- 4955764
21489       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21490       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21491 
21492 
21493       XLA_AE_LINES_PKG.ValidateCurrentLine;
21494       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21495 
21496       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21497                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21498                ,p_balance_type_code => l_balance_type_code);
21499 
21500    END IF;
21501 
21502    -----------------------------------------------------------------------------------------
21503    -- 4262811 Multiperiod Accounting
21504    -----------------------------------------------------------------------------------------
21505      -- No MPA option is assigned.
21506 
21507 
21508 END IF;
21509 END IF;
21510 --
21511 
21512 --
21513 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21514    trace
21515       (p_msg      => 'END of AcctLineType_56'
21516       ,p_level    => C_LEVEL_PROCEDURE
21517       ,p_module   => l_log_module);
21518 END IF;
21519 --
21520 EXCEPTION
21521   WHEN xla_exceptions_pkg.application_exception THEN
21522       RAISE;
21523   WHEN OTHERS THEN
21524        xla_exceptions_pkg.raise_message
21525            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_56');
21526 END AcctLineType_56;
21527 --
21528 
21529 ---------------------------------------
21530 --
21531 -- PRIVATE FUNCTION
21532 --         AcctLineType_57
21533 --
21534 ---------------------------------------
21535 PROCEDURE AcctLineType_57 (
21536   p_application_id        IN NUMBER
21537  ,p_event_id              IN NUMBER
21538  ,p_calculate_acctd_flag  IN VARCHAR2
21539  ,p_calculate_g_l_flag    IN VARCHAR2
21540  ,p_actual_flag           IN OUT VARCHAR2
21541  ,p_balance_type_code     OUT VARCHAR2
21542  ,p_gain_or_loss_ref      OUT VARCHAR2
21543  
21544 --Collection Document Bank Occurrence
21545  , p_source_4            IN VARCHAR2
21546 --Collection Document Number
21547  , p_source_5            IN NUMBER
21548 --Collection Document Trade Note Number
21549  , p_source_6            IN VARCHAR2
21550 --Bordero Type
21551  , p_source_7            IN VARCHAR2
21552  , p_source_7_meaning    IN VARCHAR2
21553 --Collection Document Cash Account
21554  , p_source_18            IN NUMBER
21555 --Bill To Customer Account Identifier
21556  , p_source_37            IN NUMBER
21557 --Bill To Customer Site Use Identifier
21558  , p_source_38            IN NUMBER
21559 --SLA Party Type
21560  , p_source_39            IN VARCHAR2
21561 --Collection Document Distribution Line Type
21562  , p_source_66            IN VARCHAR2
21563  , p_source_66_meaning    IN VARCHAR2
21564 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
21565  , p_source_67            IN VARCHAR2
21566  , p_source_67_meaning    IN VARCHAR2
21567 --Applied To Distribution Link Type
21568  , p_source_69            IN VARCHAR2
21569 --Applied To Distribution Identifier
21570  , p_source_71            IN NUMBER
21571 --Applied To Distribution Document Identifier
21572  , p_source_72            IN NUMBER
21573 --Applied To Distribution Occurrence Identifier
21574  , p_source_73            IN NUMBER
21575 --Collection Document Distribution Identifier
21576  , p_source_74            IN NUMBER
21577 --Collection Document Distribution Link Type
21578  , p_source_75            IN VARCHAR2
21579 --Collection Document Distribution Entered Amount
21580  , p_source_76            IN NUMBER
21581 --Collection Document Distribution Entered Currency Code
21582  , p_source_77            IN VARCHAR2
21583 --Collection Document Distribution Conversion Date
21584  , p_source_78            IN DATE
21585 --Collection Document Distribution Conversion Rate
21586  , p_source_79            IN NUMBER
21587 --Collection Document Distribution Conversion Rate Type
21588  , p_source_80            IN VARCHAR2
21589 --Collection Document Distribution Accounted Amount
21590  , p_source_81            IN NUMBER
21591 --Collection Document Occurrence Identifier
21592  , p_source_82            IN NUMBER
21593 --Reversed Collection Document Distribution Identifier
21594  , p_source_83            IN NUMBER
21595 --Reversed Collection Document Distribution Link Type
21596  , p_source_84            IN VARCHAR2
21597 )
21598 IS
21599 
21600 l_component_type              VARCHAR2(80);
21601 l_component_code              VARCHAR2(30);
21602 l_component_type_code         VARCHAR2(1);
21606 l_event_class_code            VARCHAR2(30);
21603 l_component_appl_id           INTEGER;
21604 l_amb_context_code            VARCHAR2(30);
21605 l_entity_code                 VARCHAR2(30);
21607 l_ae_header_id                NUMBER;
21608 l_event_type_code             VARCHAR2(30);
21609 l_line_definition_code        VARCHAR2(30);
21610 l_line_definition_owner_code  VARCHAR2(1);
21611 --
21612 -- adr variables
21613 l_segment                     VARCHAR2(30);
21614 l_ccid                        NUMBER;
21615 l_adr_transaction_coa_id      NUMBER;
21616 l_adr_accounting_coa_id       NUMBER;
21617 l_adr_flexfield_segment_code  VARCHAR2(30);
21618 l_adr_flex_value_set_id       NUMBER;
21619 l_adr_value_type_code         VARCHAR2(30);
21620 l_adr_value_combination_id    NUMBER;
21621 l_adr_value_segment_code      VARCHAR2(30);
21622 
21623 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21624 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21625 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21626 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21627 
21628 -- 4262811 Variables ------------------------------------------------------------------------------------------
21629 l_entered_amt_idx             NUMBER;
21630 l_accted_amt_idx              NUMBER;
21631 l_acc_rev_flag                VARCHAR2(1);
21632 l_accrual_line_num            NUMBER;
21633 l_tmp_amt                     NUMBER;
21634 l_acc_rev_natural_side_code   VARCHAR2(1);
21635 
21636 l_num_entries                 NUMBER;
21637 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21638 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21639 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21640 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21641 l_recog_line_1                NUMBER;
21642 l_recog_line_2                NUMBER;
21643 
21644 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21645 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21646 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21647 
21648 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21649 
21650 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21651 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21652 
21653 ---------------------------------------------------------------------------------------------------------------
21654 
21655 
21656 --
21657 -- bulk performance
21658 --
21659 l_balance_type_code           VARCHAR2(1);
21660 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21661 l_log_module                  VARCHAR2(240);
21662 
21663 --
21664 -- Upgrade strategy
21665 --
21666 l_actual_upg_option           VARCHAR2(1);
21667 l_enc_upg_option           VARCHAR2(1);
21668 
21669 --
21670 BEGIN
21671 --
21672 IF g_log_enabled THEN
21673       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
21674 END IF;
21675 --
21676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21677 
21678       trace
21679          (p_msg      => 'BEGIN of AcctLineType_57'
21680          ,p_level    => C_LEVEL_PROCEDURE
21681          ,p_module   => l_log_module);
21682 
21683 END IF;
21684 --
21685 l_component_type             := 'AMB_JLT';
21686 l_component_code             := 'COLL_DOC_CASH';
21687 l_component_type_code        := 'S';
21688 l_component_appl_id          :=  222;
21689 l_amb_context_code           := 'DEFAULT';
21690 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
21691 l_event_class_code           := 'COLLECTION_OCC_DOCUMENT';
21692 l_event_type_code            := 'COLLECTION_OCC_DOCUMENT_ALL';
21693 l_line_definition_owner_code := 'S';
21694 l_line_definition_code       := 'JLBR_AR_BANK_COLL_DOC_ACCRUAL';
21695 --
21696 l_balance_type_code          := 'A';
21697 l_segment                     := NULL;
21698 l_ccid                        := NULL;
21699 l_adr_transaction_coa_id      := NULL;
21700 l_adr_accounting_coa_id       := NULL;
21701 l_adr_flexfield_segment_code  := NULL;
21702 l_adr_flex_value_set_id       := NULL;
21703 l_adr_value_type_code         := NULL;
21704 l_adr_value_combination_id    := NULL;
21705 l_adr_value_segment_code      := NULL;
21706 
21707 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21708 l_bflow_class_code           := '';    -- 4219869 Business Flow
21709 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21710 l_budgetary_control_flag     := 'N';
21711 
21712 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21713 l_bflow_applied_to_amt       := NULL; -- 5132302
21714 l_entered_amt_idx            := NULL;          -- 4262811
21715 l_accted_amt_idx             := NULL;          -- 4262811
21716 l_acc_rev_flag               := NULL;          -- 4262811
21717 l_accrual_line_num           := NULL;          -- 4262811
21718 l_tmp_amt                    := NULL;          -- 4262811
21719 --
21720  
21721 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21722     l_balance_type_code <> 'B' THEN
21723 IF NVL(p_source_66,'
21724 ') =  'JLBR_AR_BANK_CHARGES' AND 
21725 NVL(p_source_7,'
21726 ') =  'COLLECTION'
21727  THEN 
21728 
21729    --
21733    -- set the flag so later we will know whether the gain loss line needs to be created
21730    XLA_AE_LINES_PKG.SetNewLine;
21731 
21732    p_balance_type_code          := l_balance_type_code;
21734    
21735    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21736      p_actual_flag :='A';
21737    END IF;
21738 
21739    --
21740    -- bulk performance
21741    --
21742    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21743                                       p_header_num   => 0); -- 4262811
21744    --
21745    -- set accounting line options
21746    --
21747    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21748            p_natural_side_code          => 'C'
21749          , p_gain_or_loss_flag          => 'N'
21750          , p_gl_transfer_mode_code      => 'S'
21751          , p_acct_entry_type_code       => 'A'
21752          , p_switch_side_flag           => 'Y'
21753          , p_merge_duplicate_code       => 'W'
21754          );
21755    --
21756    l_acc_rev_natural_side_code := 'D';  -- 4262811
21757    -- 
21758    --
21759    -- set accounting line type info
21760    --
21761    xla_ae_lines_pkg.SetAcctLineType
21762       (p_component_type             => l_component_type
21763       ,p_event_type_code            => l_event_type_code
21764       ,p_line_definition_owner_code => l_line_definition_owner_code
21765       ,p_line_definition_code       => l_line_definition_code
21766       ,p_accounting_line_code       => l_component_code
21767       ,p_accounting_line_type_code  => l_component_type_code
21768       ,p_accounting_line_appl_id    => l_component_appl_id
21769       ,p_amb_context_code           => l_amb_context_code
21770       ,p_entity_code                => l_entity_code
21771       ,p_event_class_code           => l_event_class_code);
21772    --
21773    -- set accounting class
21774    --
21775    xla_ae_lines_pkg.SetAcctClass(
21776            p_accounting_class_code  => 'CASH'
21777          , p_ae_header_id           => l_ae_header_id
21778          );
21779 
21780    --
21781    -- set rounding class
21782    --
21783    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21784                       'CASH';
21785 
21786    --
21787    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21788    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21789    --
21790    -- bulk performance
21791    --
21792    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21793 
21794    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21795       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21796 
21797    -- 4955764
21798    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21799       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21800 
21801    -- 4458381 Public Sector Enh
21802    
21803    --
21804    -- set accounting attributes for the line type
21805    --
21806    l_entered_amt_idx := 10;
21807    l_accted_amt_idx  := 15;
21808    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21809    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
21810    l_rec_acct_attrs.array_char_value(1)  := p_source_67;
21811    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
21812    l_rec_acct_attrs.array_num_value(2)  := 
21813 xla_ae_sources_pkg.GetSystemSourceNum(
21814    p_source_code           => 'XLA_EVENT_APPL_ID'
21815  , p_source_type_code      => 'Y'
21816  , p_source_application_id =>  602
21817 );
21818    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
21819    l_rec_acct_attrs.array_char_value(3)  := p_source_69;
21820    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
21821    l_rec_acct_attrs.array_char_value(4)  := 
21822 xla_ae_sources_pkg.GetSystemSourceChar(
21823    p_source_code           => 'XLA_ENTITY_CODE'
21824  , p_source_type_code      => 'Y'
21825  , p_source_application_id =>  602
21826 );
21827    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
21828    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_71);
21829    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
21830    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_72);
21831    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
21832    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_73);
21833    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
21834    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_74);
21835    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
21836    l_rec_acct_attrs.array_char_value(9)  := p_source_75;
21837    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
21838    l_rec_acct_attrs.array_num_value(10)  := p_source_76;
21839    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
21840    l_rec_acct_attrs.array_char_value(11)  := p_source_77;
21841    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
21842    l_rec_acct_attrs.array_date_value(12)  := p_source_78;
21843    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
21847    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
21844    l_rec_acct_attrs.array_num_value(13)  := p_source_79;
21845    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
21846    l_rec_acct_attrs.array_char_value(14)  := p_source_80;
21848    l_rec_acct_attrs.array_num_value(15)  := p_source_81;
21849    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
21850    l_rec_acct_attrs.array_num_value(16)  := p_source_37;
21851    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
21852    l_rec_acct_attrs.array_num_value(17)  := p_source_38;
21853    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
21854    l_rec_acct_attrs.array_char_value(18)  := p_source_39;
21855    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
21856    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_82);
21857    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
21858    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_83);
21859    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
21860    l_rec_acct_attrs.array_char_value(21)  := p_source_84;
21861    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
21862    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_82);
21863 
21864    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21865    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21866 
21867    ---------------------------------------------------------------------------------------------------------------
21868    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21869    ---------------------------------------------------------------------------------------------------------------
21870    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21871 
21872    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21873    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21874 
21875    IF xla_accounting_cache_pkg.GetValueChar
21876          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21877          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21878    AND l_bflow_method_code = 'PRIOR_ENTRY'
21879 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21880    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21881          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21882        )
21883    THEN
21884          xla_ae_lines_pkg.BflowUpgEntry
21885            (p_business_method_code    => l_bflow_method_code
21886            ,p_business_class_code     => l_bflow_class_code
21887            ,p_balance_type            => l_balance_type_code);
21888    ELSE
21889       NULL;
21890 -- No business flow processing for business flow method of NONE.
21891    END IF;
21892 
21893    --
21894    -- call analytical criteria
21895    --
21896    
21897    --
21898    -- call description
21899    --
21900    
21901 xla_ae_lines_pkg.SetLineDescription(
21902    p_ae_header_id => l_ae_header_id
21903   ,p_description  => Description_5 (
21904      p_application_id         => p_application_id
21905    , p_ae_header_id           => l_ae_header_id 
21906 , p_source_4 => p_source_4
21907 , p_source_5 => p_source_5
21908 , p_source_6 => p_source_6
21909 , p_source_7 => p_source_7
21910 , p_source_7_meaning => p_source_7_meaning
21911    )
21912 );
21913 
21914 
21915    --
21916    -- call ADRs
21917    -- Bug 4922099
21918    --
21919    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21920         (NVL(l_actual_upg_option, 'N') = 'O') OR
21921         (NVL(l_enc_upg_option, 'N') = 'O')
21922       )
21923    THEN
21924    NULL;
21925    --
21926    --
21927    
21928   l_ccid := AcctDerRule_16(
21929            p_application_id           => p_application_id
21930          , p_ae_header_id             => l_ae_header_id 
21931 , p_source_18 => p_source_18
21932          , x_transaction_coa_id       => l_adr_transaction_coa_id
21933          , x_accounting_coa_id        => l_adr_accounting_coa_id
21934          , x_value_type_code          => l_adr_value_type_code
21935          , p_side                     => 'NA'
21936    );
21937 
21938    xla_ae_lines_pkg.set_ccid(
21939     p_code_combination_id          => l_ccid
21940   , p_value_type_code              => l_adr_value_type_code
21941   , p_transaction_coa_id           => l_adr_transaction_coa_id
21942   , p_accounting_coa_id            => l_adr_accounting_coa_id
21943   , p_adr_code                     => 'COLL_DOC_CASH'
21944   , p_adr_type_code                => 'S'
21945   , p_component_type               => l_component_type
21946   , p_component_code               => l_component_code
21947   , p_component_type_code          => l_component_type_code
21948   , p_component_appl_id            => l_component_appl_id
21949   , p_amb_context_code             => l_amb_context_code
21950   , p_side                         => 'NA'
21951   );
21952 
21953 
21954    --
21955    --
21956    END IF;
21957    --
21958    -- Bug 4922099
21959    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21960           (NVL(l_enc_upg_option, 'N') = 'O')
21961         ) AND
21965       IF
21962         (l_bflow_method_code = 'PRIOR_ENTRY')
21963       )
21964    THEN
21966       --
21967       1 = 2
21968       --
21969       THEN
21970       xla_accounting_err_pkg.build_message
21971                                     (p_appli_s_name            => 'XLA'
21972                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21973                                     ,p_token_1                 => 'LINE_NUMBER'
21974                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21975                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21976                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21977                                                                              l_component_type
21978                                                                             ,l_component_code
21979                                                                             ,l_component_type_code
21980                                                                             ,l_component_appl_id
21981                                                                             ,l_amb_context_code
21982                                                                             ,l_entity_code
21983                                                                             ,l_event_class_code
21984                                                                            )
21985                                     ,p_token_3                 => 'OWNER'
21986                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21987                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21988                                                                           ,p_lookup_code    => l_component_type_code
21989                                                                          )
21990                                     ,p_token_4                 => 'PRODUCT_NAME'
21991                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21992                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21993                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21994                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21995                                     ,p_ae_header_id            =>  NULL
21996                                        );
21997 
21998         IF (C_LEVEL_ERROR>= g_log_level) THEN
21999                  trace
22000                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22001                       ,p_level    => C_LEVEL_ERROR
22002                       ,p_module   => l_log_module);
22003         END IF;
22004       END IF;
22005    END IF;
22006    --
22007    --
22008    ------------------------------------------------------------------------------------------------
22009    -- 4219869 Business Flow
22010    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22011    -- Prior Entry.  Currently, the following code is always generated.
22012    ------------------------------------------------------------------------------------------------
22013    XLA_AE_LINES_PKG.ValidateCurrentLine;
22014 
22015    ------------------------------------------------------------------------------------
22016    -- 4219869 Business Flow
22017    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22018    ------------------------------------------------------------------------------------
22019    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22020 
22021    ----------------------------------------------------------------------------------
22022    -- 4219869 Business Flow
22023    -- Update journal entry status -- Need to generate this within IF <condition>
22024    ----------------------------------------------------------------------------------
22025    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22026          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22027          ,p_balance_type_code => l_balance_type_code
22028          );
22029 
22030    -------------------------------------------------------------------------------------------
22031    -- 4262811 - Generate the Accrual Reversal lines
22032    -------------------------------------------------------------------------------------------
22033    BEGIN
22034       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22035                               (g_array_event(p_event_id).array_value_num('header_index'));
22036       IF l_acc_rev_flag IS NULL THEN
22037          l_acc_rev_flag := 'N';
22038       END IF;
22039    EXCEPTION
22040       WHEN OTHERS THEN
22041          l_acc_rev_flag := 'N';
22042    END;
22043    --
22044    IF (l_acc_rev_flag = 'Y') THEN
22045 
22046        -- 4645092  ------------------------------------------------------------------------------
22047        -- To allow MPA report to determine if it should generate report process
22048        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22049        ------------------------------------------------------------------------------------------
22050 
22051        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22052        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22053    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
22054    -- call ADRs
22058         (NVL(l_actual_upg_option, 'N') = 'O') OR
22055    -- Bug 4922099
22056    --
22057    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22059         (NVL(l_enc_upg_option, 'N') = 'O')
22060       )
22061    THEN
22062    NULL;
22063    --
22064    --
22065    
22066   l_ccid := AcctDerRule_16(
22067            p_application_id           => p_application_id
22068          , p_ae_header_id             => l_ae_header_id 
22069 , p_source_18 => p_source_18
22070          , x_transaction_coa_id       => l_adr_transaction_coa_id
22071          , x_accounting_coa_id        => l_adr_accounting_coa_id
22072          , x_value_type_code          => l_adr_value_type_code
22073          , p_side                     => 'NA'
22074    );
22075 
22076    xla_ae_lines_pkg.set_ccid(
22077     p_code_combination_id          => l_ccid
22078   , p_value_type_code              => l_adr_value_type_code
22079   , p_transaction_coa_id           => l_adr_transaction_coa_id
22080   , p_accounting_coa_id            => l_adr_accounting_coa_id
22081   , p_adr_code                     => 'COLL_DOC_CASH'
22082   , p_adr_type_code                => 'S'
22083   , p_component_type               => l_component_type
22084   , p_component_code               => l_component_code
22085   , p_component_type_code          => l_component_type_code
22086   , p_component_appl_id            => l_component_appl_id
22087   , p_amb_context_code             => l_amb_context_code
22088   , p_side                         => 'NA'
22089   );
22090 
22091 
22092    --
22093    --
22094    END IF;
22095 
22096        --
22097        -- Update the line information that should be overwritten
22098        --
22099        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22100                                          p_header_num   => 1);
22101        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22102 
22103        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22104 
22105        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22106           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22107        END IF;
22108 
22109       --
22110       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22111       --
22112       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22113           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22114       ELSE
22115           ---------------------------------------------------------------------------------------------------
22116           -- 4262811a Switch Sign
22117           ---------------------------------------------------------------------------------------------------
22118           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22119           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22120                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22121           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22122                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22123           -- 5132302
22124           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22125                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22126 
22127       END IF;
22128 
22129       -- 4955764
22130       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22131       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22132 
22133 
22134       XLA_AE_LINES_PKG.ValidateCurrentLine;
22135       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22136 
22137       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22138                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22139                ,p_balance_type_code => l_balance_type_code);
22140 
22141    END IF;
22142 
22143    -----------------------------------------------------------------------------------------
22144    -- 4262811 Multiperiod Accounting
22145    -----------------------------------------------------------------------------------------
22146      -- No MPA option is assigned.
22147 
22148 
22149 END IF;
22150 END IF;
22151 --
22152 
22153 --
22154 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22155    trace
22156       (p_msg      => 'END of AcctLineType_57'
22157       ,p_level    => C_LEVEL_PROCEDURE
22158       ,p_module   => l_log_module);
22159 END IF;
22160 --
22161 EXCEPTION
22162   WHEN xla_exceptions_pkg.application_exception THEN
22163       RAISE;
22164   WHEN OTHERS THEN
22165        xla_exceptions_pkg.raise_message
22166            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_57');
22167 END AcctLineType_57;
22168 --
22169 
22170 ---------------------------------------
22171 --
22172 -- PRIVATE FUNCTION
22173 --         AcctLineType_58
22174 --
22175 ---------------------------------------
22176 PROCEDURE AcctLineType_58 (
22177   p_application_id        IN NUMBER
22181  ,p_actual_flag           IN OUT VARCHAR2
22178  ,p_event_id              IN NUMBER
22179  ,p_calculate_acctd_flag  IN VARCHAR2
22180  ,p_calculate_g_l_flag    IN VARCHAR2
22182  ,p_balance_type_code     OUT VARCHAR2
22183  ,p_gain_or_loss_ref      OUT VARCHAR2
22184  
22185 --Collection Document Bank Occurrence
22186  , p_source_4            IN VARCHAR2
22187 --Collection Document Number
22188  , p_source_5            IN NUMBER
22189 --Collection Document Trade Note Number
22190  , p_source_6            IN VARCHAR2
22191 --Bordero Type
22192  , p_source_7            IN VARCHAR2
22193  , p_source_7_meaning    IN VARCHAR2
22194 --Collection Document Collection Endorsement Account
22195  , p_source_19            IN NUMBER
22196 --Bill To Customer Account Identifier
22197  , p_source_37            IN NUMBER
22198 --Bill To Customer Site Use Identifier
22199  , p_source_38            IN NUMBER
22200 --SLA Party Type
22201  , p_source_39            IN VARCHAR2
22202 --Collection Document Distribution Line Type
22203  , p_source_66            IN VARCHAR2
22204  , p_source_66_meaning    IN VARCHAR2
22205 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
22206  , p_source_67            IN VARCHAR2
22207  , p_source_67_meaning    IN VARCHAR2
22208 --Applied To Distribution Link Type
22209  , p_source_69            IN VARCHAR2
22210 --Applied To Distribution Identifier
22211  , p_source_71            IN NUMBER
22212 --Applied To Distribution Document Identifier
22213  , p_source_72            IN NUMBER
22214 --Applied To Distribution Occurrence Identifier
22215  , p_source_73            IN NUMBER
22216 --Collection Document Distribution Identifier
22217  , p_source_74            IN NUMBER
22218 --Collection Document Distribution Link Type
22219  , p_source_75            IN VARCHAR2
22220 --Collection Document Distribution Entered Amount
22221  , p_source_76            IN NUMBER
22222 --Collection Document Distribution Entered Currency Code
22223  , p_source_77            IN VARCHAR2
22224 --Collection Document Distribution Conversion Date
22225  , p_source_78            IN DATE
22226 --Collection Document Distribution Conversion Rate
22227  , p_source_79            IN NUMBER
22228 --Collection Document Distribution Conversion Rate Type
22229  , p_source_80            IN VARCHAR2
22230 --Collection Document Distribution Accounted Amount
22231  , p_source_81            IN NUMBER
22232 --Collection Document Occurrence Identifier
22233  , p_source_82            IN NUMBER
22234 --Reversed Collection Document Distribution Identifier
22235  , p_source_83            IN NUMBER
22236 --Reversed Collection Document Distribution Link Type
22237  , p_source_84            IN VARCHAR2
22238 --Collection Document Occurrence Type
22239  , p_source_85            IN VARCHAR2
22240  , p_source_85_meaning    IN VARCHAR2
22241 )
22242 IS
22243 
22244 l_component_type              VARCHAR2(80);
22245 l_component_code              VARCHAR2(30);
22246 l_component_type_code         VARCHAR2(1);
22247 l_component_appl_id           INTEGER;
22248 l_amb_context_code            VARCHAR2(30);
22249 l_entity_code                 VARCHAR2(30);
22250 l_event_class_code            VARCHAR2(30);
22251 l_ae_header_id                NUMBER;
22252 l_event_type_code             VARCHAR2(30);
22253 l_line_definition_code        VARCHAR2(30);
22254 l_line_definition_owner_code  VARCHAR2(1);
22255 --
22256 -- adr variables
22257 l_segment                     VARCHAR2(30);
22258 l_ccid                        NUMBER;
22259 l_adr_transaction_coa_id      NUMBER;
22260 l_adr_accounting_coa_id       NUMBER;
22261 l_adr_flexfield_segment_code  VARCHAR2(30);
22262 l_adr_flex_value_set_id       NUMBER;
22263 l_adr_value_type_code         VARCHAR2(30);
22264 l_adr_value_combination_id    NUMBER;
22265 l_adr_value_segment_code      VARCHAR2(30);
22266 
22267 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22268 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22269 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22270 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22271 
22272 -- 4262811 Variables ------------------------------------------------------------------------------------------
22273 l_entered_amt_idx             NUMBER;
22274 l_accted_amt_idx              NUMBER;
22275 l_acc_rev_flag                VARCHAR2(1);
22276 l_accrual_line_num            NUMBER;
22277 l_tmp_amt                     NUMBER;
22278 l_acc_rev_natural_side_code   VARCHAR2(1);
22279 
22280 l_num_entries                 NUMBER;
22281 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22282 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22283 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22284 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22285 l_recog_line_1                NUMBER;
22286 l_recog_line_2                NUMBER;
22287 
22288 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22289 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22290 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22291 
22292 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22293 
22294 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22295 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22296 
22300 --
22297 ---------------------------------------------------------------------------------------------------------------
22298 
22299 
22301 -- bulk performance
22302 --
22303 l_balance_type_code           VARCHAR2(1);
22304 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22305 l_log_module                  VARCHAR2(240);
22306 
22307 --
22308 -- Upgrade strategy
22309 --
22310 l_actual_upg_option           VARCHAR2(1);
22311 l_enc_upg_option           VARCHAR2(1);
22312 
22313 --
22314 BEGIN
22315 --
22316 IF g_log_enabled THEN
22317       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
22318 END IF;
22319 --
22320 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22321 
22322       trace
22323          (p_msg      => 'BEGIN of AcctLineType_58'
22324          ,p_level    => C_LEVEL_PROCEDURE
22325          ,p_module   => l_log_module);
22326 
22327 END IF;
22328 --
22329 l_component_type             := 'AMB_JLT';
22330 l_component_code             := 'COLL_DOC_COLL_ENDRSMNT_CR';
22331 l_component_type_code        := 'S';
22332 l_component_appl_id          :=  222;
22333 l_amb_context_code           := 'DEFAULT';
22334 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
22335 l_event_class_code           := 'COLLECTION_OCC_DOCUMENT';
22336 l_event_type_code            := 'COLLECTION_OCC_DOCUMENT_ALL';
22337 l_line_definition_owner_code := 'S';
22338 l_line_definition_code       := 'JLBR_AR_BANK_COLL_DOC_ACCRUAL';
22339 --
22340 l_balance_type_code          := 'A';
22341 l_segment                     := NULL;
22342 l_ccid                        := NULL;
22343 l_adr_transaction_coa_id      := NULL;
22344 l_adr_accounting_coa_id       := NULL;
22345 l_adr_flexfield_segment_code  := NULL;
22346 l_adr_flex_value_set_id       := NULL;
22347 l_adr_value_type_code         := NULL;
22348 l_adr_value_combination_id    := NULL;
22349 l_adr_value_segment_code      := NULL;
22350 
22351 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
22352 l_bflow_class_code           := 'JLBR_AR_COLLECTION_ENDORSEMENT';    -- 4219869 Business Flow
22353 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
22354 l_budgetary_control_flag     := 'N';
22355 
22356 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22357 l_bflow_applied_to_amt       := NULL; -- 5132302
22358 l_entered_amt_idx            := NULL;          -- 4262811
22359 l_accted_amt_idx             := NULL;          -- 4262811
22360 l_acc_rev_flag               := NULL;          -- 4262811
22361 l_accrual_line_num           := NULL;          -- 4262811
22362 l_tmp_amt                    := NULL;          -- 4262811
22363 --
22364  
22365 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22366     l_balance_type_code <> 'B' THEN
22367 IF NVL(p_source_66,'
22368 ') =  'JLBR_AR_ENDORSEMENT' AND 
22369 NVL(p_source_7,'
22370 ') =  'COLLECTION' AND 
22371 NVL(p_source_85,'
22372 ') =  'REMITTANCE_OCCURRENCE'
22373  THEN 
22374 
22375    --
22376    XLA_AE_LINES_PKG.SetNewLine;
22377 
22378    p_balance_type_code          := l_balance_type_code;
22379    -- set the flag so later we will know whether the gain loss line needs to be created
22380    
22381    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22382      p_actual_flag :='A';
22383    END IF;
22384 
22385    --
22386    -- bulk performance
22387    --
22388    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22389                                       p_header_num   => 0); -- 4262811
22390    --
22391    -- set accounting line options
22392    --
22393    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22394            p_natural_side_code          => 'C'
22395          , p_gain_or_loss_flag          => 'N'
22396          , p_gl_transfer_mode_code      => 'S'
22397          , p_acct_entry_type_code       => 'A'
22398          , p_switch_side_flag           => 'Y'
22399          , p_merge_duplicate_code       => 'A'
22400          );
22401    --
22402    l_acc_rev_natural_side_code := 'D';  -- 4262811
22403    -- 
22404    --
22405    -- set accounting line type info
22406    --
22407    xla_ae_lines_pkg.SetAcctLineType
22408       (p_component_type             => l_component_type
22409       ,p_event_type_code            => l_event_type_code
22410       ,p_line_definition_owner_code => l_line_definition_owner_code
22411       ,p_line_definition_code       => l_line_definition_code
22412       ,p_accounting_line_code       => l_component_code
22413       ,p_accounting_line_type_code  => l_component_type_code
22414       ,p_accounting_line_appl_id    => l_component_appl_id
22415       ,p_amb_context_code           => l_amb_context_code
22416       ,p_entity_code                => l_entity_code
22417       ,p_event_class_code           => l_event_class_code);
22418    --
22419    -- set accounting class
22420    --
22421    xla_ae_lines_pkg.SetAcctClass(
22422            p_accounting_class_code  => 'REMITTANCE'
22423          , p_ae_header_id           => l_ae_header_id
22424          );
22425 
22426    --
22427    -- set rounding class
22428    --
22429    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22430                       'REMITTANCE';
22431 
22432    --
22436    -- bulk performance
22433    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22434    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22435    --
22437    --
22438    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22439 
22440    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22441       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22442 
22443    -- 4955764
22444    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22445       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22446 
22447    -- 4458381 Public Sector Enh
22448    
22449    --
22450    -- set accounting attributes for the line type
22451    --
22452    l_entered_amt_idx := 10;
22453    l_accted_amt_idx  := 15;
22454    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22455    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
22456    l_rec_acct_attrs.array_char_value(1)  := p_source_67;
22457    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
22458    l_rec_acct_attrs.array_num_value(2)  := 
22459 xla_ae_sources_pkg.GetSystemSourceNum(
22460    p_source_code           => 'XLA_EVENT_APPL_ID'
22461  , p_source_type_code      => 'Y'
22462  , p_source_application_id =>  602
22463 );
22464    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
22465    l_rec_acct_attrs.array_char_value(3)  := p_source_69;
22466    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
22467    l_rec_acct_attrs.array_char_value(4)  := 
22468 xla_ae_sources_pkg.GetSystemSourceChar(
22469    p_source_code           => 'XLA_ENTITY_CODE'
22470  , p_source_type_code      => 'Y'
22471  , p_source_application_id =>  602
22472 );
22473    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
22474    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_71);
22475    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
22476    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_72);
22477    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
22478    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_73);
22479    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
22480    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_74);
22481    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
22482    l_rec_acct_attrs.array_char_value(9)  := p_source_75;
22483    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
22484    l_rec_acct_attrs.array_num_value(10)  := p_source_76;
22485    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
22486    l_rec_acct_attrs.array_char_value(11)  := p_source_77;
22487    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
22488    l_rec_acct_attrs.array_date_value(12)  := p_source_78;
22489    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
22490    l_rec_acct_attrs.array_num_value(13)  := p_source_79;
22491    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
22492    l_rec_acct_attrs.array_char_value(14)  := p_source_80;
22493    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
22494    l_rec_acct_attrs.array_num_value(15)  := p_source_81;
22495    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
22496    l_rec_acct_attrs.array_num_value(16)  := p_source_37;
22497    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
22498    l_rec_acct_attrs.array_num_value(17)  := p_source_38;
22499    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
22500    l_rec_acct_attrs.array_char_value(18)  := p_source_39;
22501    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
22502    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_82);
22503    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
22504    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_83);
22505    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
22506    l_rec_acct_attrs.array_char_value(21)  := p_source_84;
22507    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
22508    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_82);
22509 
22510    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22511    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22512 
22513    ---------------------------------------------------------------------------------------------------------------
22514    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22515    ---------------------------------------------------------------------------------------------------------------
22516    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22517 
22518    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22519    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22520 
22521    IF xla_accounting_cache_pkg.GetValueChar
22522          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22523          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22524    AND l_bflow_method_code = 'PRIOR_ENTRY'
22528        )
22525 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22526    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22527          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22529    THEN
22530          xla_ae_lines_pkg.BflowUpgEntry
22531            (p_business_method_code    => l_bflow_method_code
22532            ,p_business_class_code     => l_bflow_class_code
22533            ,p_balance_type            => l_balance_type_code);
22534    ELSE
22535       NULL;
22536 -- No business flow processing for business flow method of NONE.
22537    END IF;
22538 
22539    --
22540    -- call analytical criteria
22541    --
22542    
22543    --
22544    -- call description
22545    --
22546    
22547 xla_ae_lines_pkg.SetLineDescription(
22548    p_ae_header_id => l_ae_header_id
22549   ,p_description  => Description_6 (
22550      p_application_id         => p_application_id
22551    , p_ae_header_id           => l_ae_header_id 
22552 , p_source_4 => p_source_4
22553 , p_source_5 => p_source_5
22554 , p_source_6 => p_source_6
22555    )
22556 );
22557 
22558 
22559    --
22560    -- call ADRs
22561    -- Bug 4922099
22562    --
22563    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22564         (NVL(l_actual_upg_option, 'N') = 'O') OR
22565         (NVL(l_enc_upg_option, 'N') = 'O')
22566       )
22567    THEN
22568    NULL;
22569    --
22570    --
22571    
22572   l_ccid := AcctDerRule_17(
22573            p_application_id           => p_application_id
22574          , p_ae_header_id             => l_ae_header_id 
22575 , p_source_19 => p_source_19
22576          , x_transaction_coa_id       => l_adr_transaction_coa_id
22577          , x_accounting_coa_id        => l_adr_accounting_coa_id
22578          , x_value_type_code          => l_adr_value_type_code
22579          , p_side                     => 'NA'
22580    );
22581 
22582    xla_ae_lines_pkg.set_ccid(
22583     p_code_combination_id          => l_ccid
22584   , p_value_type_code              => l_adr_value_type_code
22585   , p_transaction_coa_id           => l_adr_transaction_coa_id
22586   , p_accounting_coa_id            => l_adr_accounting_coa_id
22587   , p_adr_code                     => 'COLL_DOC_COLL_ENDRSMNT'
22588   , p_adr_type_code                => 'S'
22589   , p_component_type               => l_component_type
22590   , p_component_code               => l_component_code
22591   , p_component_type_code          => l_component_type_code
22592   , p_component_appl_id            => l_component_appl_id
22593   , p_amb_context_code             => l_amb_context_code
22594   , p_side                         => 'NA'
22595   );
22596 
22597 
22598    --
22599    --
22600    END IF;
22601    --
22602    -- Bug 4922099
22603    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22604           (NVL(l_enc_upg_option, 'N') = 'O')
22605         ) AND
22606         (l_bflow_method_code = 'PRIOR_ENTRY')
22607       )
22608    THEN
22609       IF
22610       --
22611       1 = 2
22612       --
22613       THEN
22614       xla_accounting_err_pkg.build_message
22615                                     (p_appli_s_name            => 'XLA'
22616                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22617                                     ,p_token_1                 => 'LINE_NUMBER'
22618                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22619                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22620                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22621                                                                              l_component_type
22622                                                                             ,l_component_code
22623                                                                             ,l_component_type_code
22624                                                                             ,l_component_appl_id
22625                                                                             ,l_amb_context_code
22626                                                                             ,l_entity_code
22627                                                                             ,l_event_class_code
22628                                                                            )
22629                                     ,p_token_3                 => 'OWNER'
22630                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22631                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22632                                                                           ,p_lookup_code    => l_component_type_code
22633                                                                          )
22634                                     ,p_token_4                 => 'PRODUCT_NAME'
22635                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22636                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22637                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22638                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22639                                     ,p_ae_header_id            =>  NULL
22640                                        );
22641 
22645                       ,p_level    => C_LEVEL_ERROR
22642         IF (C_LEVEL_ERROR>= g_log_level) THEN
22643                  trace
22644                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22646                       ,p_module   => l_log_module);
22647         END IF;
22648       END IF;
22649    END IF;
22650    --
22651    --
22652    ------------------------------------------------------------------------------------------------
22653    -- 4219869 Business Flow
22654    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22655    -- Prior Entry.  Currently, the following code is always generated.
22656    ------------------------------------------------------------------------------------------------
22657    XLA_AE_LINES_PKG.ValidateCurrentLine;
22658 
22659    ------------------------------------------------------------------------------------
22660    -- 4219869 Business Flow
22661    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22662    ------------------------------------------------------------------------------------
22663    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22664 
22665    ----------------------------------------------------------------------------------
22666    -- 4219869 Business Flow
22667    -- Update journal entry status -- Need to generate this within IF <condition>
22668    ----------------------------------------------------------------------------------
22669    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22670          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22671          ,p_balance_type_code => l_balance_type_code
22672          );
22673 
22674    -------------------------------------------------------------------------------------------
22675    -- 4262811 - Generate the Accrual Reversal lines
22676    -------------------------------------------------------------------------------------------
22677    BEGIN
22678       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22679                               (g_array_event(p_event_id).array_value_num('header_index'));
22680       IF l_acc_rev_flag IS NULL THEN
22681          l_acc_rev_flag := 'N';
22682       END IF;
22683    EXCEPTION
22684       WHEN OTHERS THEN
22685          l_acc_rev_flag := 'N';
22686    END;
22687    --
22688    IF (l_acc_rev_flag = 'Y') THEN
22689 
22690        -- 4645092  ------------------------------------------------------------------------------
22691        -- To allow MPA report to determine if it should generate report process
22692        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22693        ------------------------------------------------------------------------------------------
22694 
22695        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22696        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22697    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
22698    -- call ADRs
22699    -- Bug 4922099
22700    --
22701    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22702         (NVL(l_actual_upg_option, 'N') = 'O') OR
22703         (NVL(l_enc_upg_option, 'N') = 'O')
22704       )
22705    THEN
22706    NULL;
22707    --
22708    --
22709    
22710   l_ccid := AcctDerRule_17(
22711            p_application_id           => p_application_id
22712          , p_ae_header_id             => l_ae_header_id 
22713 , p_source_19 => p_source_19
22714          , x_transaction_coa_id       => l_adr_transaction_coa_id
22715          , x_accounting_coa_id        => l_adr_accounting_coa_id
22716          , x_value_type_code          => l_adr_value_type_code
22717          , p_side                     => 'NA'
22718    );
22719 
22720    xla_ae_lines_pkg.set_ccid(
22721     p_code_combination_id          => l_ccid
22722   , p_value_type_code              => l_adr_value_type_code
22723   , p_transaction_coa_id           => l_adr_transaction_coa_id
22724   , p_accounting_coa_id            => l_adr_accounting_coa_id
22725   , p_adr_code                     => 'COLL_DOC_COLL_ENDRSMNT'
22726   , p_adr_type_code                => 'S'
22727   , p_component_type               => l_component_type
22728   , p_component_code               => l_component_code
22729   , p_component_type_code          => l_component_type_code
22730   , p_component_appl_id            => l_component_appl_id
22731   , p_amb_context_code             => l_amb_context_code
22732   , p_side                         => 'NA'
22733   );
22734 
22735 
22736    --
22737    --
22738    END IF;
22739 
22740        --
22741        -- Update the line information that should be overwritten
22742        --
22743        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22744                                          p_header_num   => 1);
22745        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22746 
22747        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22748 
22749        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22750           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22751        END IF;
22752 
22753       --
22754       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22755       --
22759           ---------------------------------------------------------------------------------------------------
22756       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22757           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22758       ELSE
22760           -- 4262811a Switch Sign
22761           ---------------------------------------------------------------------------------------------------
22762           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22763           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22764                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22765           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22766                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22767           -- 5132302
22768           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22769                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22770 
22771       END IF;
22772 
22773       -- 4955764
22774       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22775       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22776 
22777 
22778       XLA_AE_LINES_PKG.ValidateCurrentLine;
22779       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22780 
22781       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22782                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22783                ,p_balance_type_code => l_balance_type_code);
22784 
22785    END IF;
22786 
22787    -----------------------------------------------------------------------------------------
22788    -- 4262811 Multiperiod Accounting
22789    -----------------------------------------------------------------------------------------
22790      -- No MPA option is assigned.
22791 
22792 
22793 END IF;
22794 END IF;
22795 --
22796 
22797 --
22798 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22799    trace
22800       (p_msg      => 'END of AcctLineType_58'
22801       ,p_level    => C_LEVEL_PROCEDURE
22802       ,p_module   => l_log_module);
22803 END IF;
22804 --
22805 EXCEPTION
22806   WHEN xla_exceptions_pkg.application_exception THEN
22807       RAISE;
22808   WHEN OTHERS THEN
22809        xla_exceptions_pkg.raise_message
22810            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_58');
22811 END AcctLineType_58;
22812 --
22813 
22814 ---------------------------------------
22815 --
22816 -- PRIVATE FUNCTION
22817 --         AcctLineType_59
22818 --
22819 ---------------------------------------
22820 PROCEDURE AcctLineType_59 (
22821   p_application_id        IN NUMBER
22822  ,p_event_id              IN NUMBER
22823  ,p_calculate_acctd_flag  IN VARCHAR2
22824  ,p_calculate_g_l_flag    IN VARCHAR2
22825  ,p_actual_flag           IN OUT VARCHAR2
22826  ,p_balance_type_code     OUT VARCHAR2
22827  ,p_gain_or_loss_ref      OUT VARCHAR2
22828  
22829 --Bordero Type
22830  , p_source_7            IN VARCHAR2
22831  , p_source_7_meaning    IN VARCHAR2
22832 --SLA Party Type
22833  , p_source_39            IN VARCHAR2
22834 --Collection Document Distribution Line Type
22835  , p_source_66            IN VARCHAR2
22836  , p_source_66_meaning    IN VARCHAR2
22837 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
22838  , p_source_67            IN VARCHAR2
22839  , p_source_67_meaning    IN VARCHAR2
22840 --Applied To Distribution Link Type
22841  , p_source_69            IN VARCHAR2
22842 --Applied To Distribution Identifier
22843  , p_source_71            IN NUMBER
22844 --Applied To Distribution Document Identifier
22845  , p_source_72            IN NUMBER
22846 --Applied To Distribution Occurrence Identifier
22847  , p_source_73            IN NUMBER
22848 --Collection Document Distribution Identifier
22849  , p_source_74            IN NUMBER
22850 --Collection Document Distribution Link Type
22851  , p_source_75            IN VARCHAR2
22852 --Collection Document Distribution Entered Amount
22853  , p_source_76            IN NUMBER
22854 --Collection Document Distribution Entered Currency Code
22855  , p_source_77            IN VARCHAR2
22856 --Collection Document Distribution Accounted Amount
22857  , p_source_81            IN NUMBER
22858 --Collection Document Occurrence Identifier
22859  , p_source_82            IN NUMBER
22860 --Reversed Collection Document Distribution Identifier
22861  , p_source_83            IN NUMBER
22862 --Reversed Collection Document Distribution Link Type
22863  , p_source_84            IN VARCHAR2
22864 --Collection Document Occurrence Type
22865  , p_source_85            IN VARCHAR2
22866  , p_source_85_meaning    IN VARCHAR2
22867 )
22868 IS
22869 
22870 l_component_type              VARCHAR2(80);
22871 l_component_code              VARCHAR2(30);
22872 l_component_type_code         VARCHAR2(1);
22873 l_component_appl_id           INTEGER;
22874 l_amb_context_code            VARCHAR2(30);
22875 l_entity_code                 VARCHAR2(30);
22876 l_event_class_code            VARCHAR2(30);
22880 l_line_definition_owner_code  VARCHAR2(1);
22877 l_ae_header_id                NUMBER;
22878 l_event_type_code             VARCHAR2(30);
22879 l_line_definition_code        VARCHAR2(30);
22881 --
22882 -- adr variables
22883 l_segment                     VARCHAR2(30);
22884 l_ccid                        NUMBER;
22885 l_adr_transaction_coa_id      NUMBER;
22886 l_adr_accounting_coa_id       NUMBER;
22887 l_adr_flexfield_segment_code  VARCHAR2(30);
22888 l_adr_flex_value_set_id       NUMBER;
22889 l_adr_value_type_code         VARCHAR2(30);
22890 l_adr_value_combination_id    NUMBER;
22891 l_adr_value_segment_code      VARCHAR2(30);
22892 
22893 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22894 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22895 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22896 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22897 
22898 -- 4262811 Variables ------------------------------------------------------------------------------------------
22899 l_entered_amt_idx             NUMBER;
22900 l_accted_amt_idx              NUMBER;
22901 l_acc_rev_flag                VARCHAR2(1);
22902 l_accrual_line_num            NUMBER;
22903 l_tmp_amt                     NUMBER;
22904 l_acc_rev_natural_side_code   VARCHAR2(1);
22905 
22906 l_num_entries                 NUMBER;
22907 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22908 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22909 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22910 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22911 l_recog_line_1                NUMBER;
22912 l_recog_line_2                NUMBER;
22913 
22914 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22915 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22916 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22917 
22918 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22919 
22920 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22921 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22922 
22923 ---------------------------------------------------------------------------------------------------------------
22924 
22925 
22926 --
22927 -- bulk performance
22928 --
22929 l_balance_type_code           VARCHAR2(1);
22930 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22931 l_log_module                  VARCHAR2(240);
22932 
22933 --
22934 -- Upgrade strategy
22935 --
22936 l_actual_upg_option           VARCHAR2(1);
22937 l_enc_upg_option           VARCHAR2(1);
22938 
22939 --
22940 BEGIN
22941 --
22942 IF g_log_enabled THEN
22943       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
22944 END IF;
22945 --
22946 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22947 
22948       trace
22949          (p_msg      => 'BEGIN of AcctLineType_59'
22950          ,p_level    => C_LEVEL_PROCEDURE
22951          ,p_module   => l_log_module);
22952 
22953 END IF;
22954 --
22955 l_component_type             := 'AMB_JLT';
22956 l_component_code             := 'COLL_DOC_COLL_ENDRSMNT_DR';
22957 l_component_type_code        := 'S';
22958 l_component_appl_id          :=  222;
22959 l_amb_context_code           := 'DEFAULT';
22960 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
22961 l_event_class_code           := 'COLLECTION_OCC_DOCUMENT';
22962 l_event_type_code            := 'COLLECTION_OCC_DOCUMENT_ALL';
22963 l_line_definition_owner_code := 'S';
22964 l_line_definition_code       := 'JLBR_AR_BANK_COLL_DOC_ACCRUAL';
22965 --
22966 l_balance_type_code          := 'A';
22967 l_segment                     := NULL;
22968 l_ccid                        := NULL;
22969 l_adr_transaction_coa_id      := NULL;
22970 l_adr_accounting_coa_id       := NULL;
22971 l_adr_flexfield_segment_code  := NULL;
22972 l_adr_flex_value_set_id       := NULL;
22973 l_adr_value_type_code         := NULL;
22974 l_adr_value_combination_id    := NULL;
22975 l_adr_value_segment_code      := NULL;
22976 
22977 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
22978 l_bflow_class_code           := 'JLBR_AR_COLLECTION_ENDORSEMENT';    -- 4219869 Business Flow
22979 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
22980 l_budgetary_control_flag     := 'N';
22981 
22982 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22983 l_bflow_applied_to_amt       := NULL; -- 5132302
22984 l_entered_amt_idx            := NULL;          -- 4262811
22985 l_accted_amt_idx             := NULL;          -- 4262811
22986 l_acc_rev_flag               := NULL;          -- 4262811
22987 l_accrual_line_num           := NULL;          -- 4262811
22988 l_tmp_amt                    := NULL;          -- 4262811
22989 --
22990  
22991 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22992     l_balance_type_code <> 'B' THEN
22993 IF NVL(p_source_66,'
22994 ') =  'JLBR_AR_ENDORSEMENT' AND 
22995 NVL(p_source_7,'
22996 ') =  'COLLECTION' AND 
22997 NVL(p_source_85,'
22998 ') =  'RETURN_OCCURRENCE'
22999  THEN 
23000 
23001    --
23002    XLA_AE_LINES_PKG.SetNewLine;
23006    
23003 
23004    p_balance_type_code          := l_balance_type_code;
23005    -- set the flag so later we will know whether the gain loss line needs to be created
23007    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23008      p_actual_flag :='A';
23009    END IF;
23010 
23011    --
23012    -- bulk performance
23013    --
23014    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23015                                       p_header_num   => 0); -- 4262811
23016    --
23017    -- set accounting line options
23018    --
23019    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23020            p_natural_side_code          => 'D'
23021          , p_gain_or_loss_flag          => 'N'
23022          , p_gl_transfer_mode_code      => 'S'
23023          , p_acct_entry_type_code       => 'A'
23024          , p_switch_side_flag           => 'Y'
23025          , p_merge_duplicate_code       => 'A'
23026          );
23027    --
23028    l_acc_rev_natural_side_code := 'C';  -- 4262811
23029    -- 
23030    --
23031    -- set accounting line type info
23032    --
23033    xla_ae_lines_pkg.SetAcctLineType
23034       (p_component_type             => l_component_type
23035       ,p_event_type_code            => l_event_type_code
23036       ,p_line_definition_owner_code => l_line_definition_owner_code
23037       ,p_line_definition_code       => l_line_definition_code
23038       ,p_accounting_line_code       => l_component_code
23039       ,p_accounting_line_type_code  => l_component_type_code
23040       ,p_accounting_line_appl_id    => l_component_appl_id
23041       ,p_amb_context_code           => l_amb_context_code
23042       ,p_entity_code                => l_entity_code
23043       ,p_event_class_code           => l_event_class_code);
23044    --
23045    -- set accounting class
23046    --
23047    xla_ae_lines_pkg.SetAcctClass(
23048            p_accounting_class_code  => 'REMITTANCE'
23049          , p_ae_header_id           => l_ae_header_id
23050          );
23051 
23052    --
23053    -- set rounding class
23054    --
23055    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23056                       'REMITTANCE';
23057 
23058    --
23059    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23060    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23061    --
23062    -- bulk performance
23063    --
23064    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23065 
23066    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23067       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23068 
23069    -- 4955764
23070    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23071       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23072 
23073    -- 4458381 Public Sector Enh
23074    
23075    --
23076    -- set accounting attributes for the line type
23077    --
23078    l_entered_amt_idx := 10;
23079    l_accted_amt_idx  := 12;
23080    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23081    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
23082    l_rec_acct_attrs.array_char_value(1)  := p_source_67;
23083    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
23084    l_rec_acct_attrs.array_num_value(2)  := 
23085 xla_ae_sources_pkg.GetSystemSourceNum(
23086    p_source_code           => 'XLA_EVENT_APPL_ID'
23087  , p_source_type_code      => 'Y'
23088  , p_source_application_id =>  602
23089 );
23090    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
23091    l_rec_acct_attrs.array_char_value(3)  := p_source_69;
23092    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
23093    l_rec_acct_attrs.array_char_value(4)  := 
23094 xla_ae_sources_pkg.GetSystemSourceChar(
23095    p_source_code           => 'XLA_ENTITY_CODE'
23096  , p_source_type_code      => 'Y'
23097  , p_source_application_id =>  602
23098 );
23099    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
23100    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_71);
23101    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
23102    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_72);
23103    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
23104    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_73);
23105    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
23106    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_74);
23107    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
23108    l_rec_acct_attrs.array_char_value(9)  := p_source_75;
23109    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
23110    l_rec_acct_attrs.array_num_value(10)  := p_source_76;
23111    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
23112    l_rec_acct_attrs.array_char_value(11)  := p_source_77;
23113    l_rec_acct_attrs.array_acct_attr_code(12) := 'LEDGER_AMOUNT';
23114    l_rec_acct_attrs.array_num_value(12)  := p_source_81;
23115    l_rec_acct_attrs.array_acct_attr_code(13) := 'PARTY_TYPE';
23116    l_rec_acct_attrs.array_char_value(13)  := p_source_39;
23117    l_rec_acct_attrs.array_acct_attr_code(14) := 'RECON_REF';
23121    l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_TYPE';
23118    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_82);
23119    l_rec_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_ID1';
23120    l_rec_acct_attrs.array_num_value(15)  :=  to_char(p_source_83);
23122    l_rec_acct_attrs.array_char_value(16)  := p_source_84;
23123    l_rec_acct_attrs.array_acct_attr_code(17) := 'TRX_ROUNDING_REF';
23124    l_rec_acct_attrs.array_num_value(17)  :=  to_char(p_source_82);
23125 
23126    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23127    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23128 
23129    ---------------------------------------------------------------------------------------------------------------
23130    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23131    ---------------------------------------------------------------------------------------------------------------
23132    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23133 
23134    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23135    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23136 
23137    IF xla_accounting_cache_pkg.GetValueChar
23138          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23139          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23140    AND l_bflow_method_code = 'PRIOR_ENTRY'
23141 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23142    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23143          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23144        )
23145    THEN
23146          xla_ae_lines_pkg.BflowUpgEntry
23147            (p_business_method_code    => l_bflow_method_code
23148            ,p_business_class_code     => l_bflow_class_code
23149            ,p_balance_type            => l_balance_type_code);
23150    ELSE
23151       NULL;
23152 XLA_AE_LINES_PKG.business_flow_validation(
23153                                 p_business_method_code     => l_bflow_method_code
23154                                ,p_business_class_code      => l_bflow_class_code
23155                                ,p_inherit_description_flag => l_inherit_desc_flag);
23156    END IF;
23157 
23158    --
23159    -- call analytical criteria
23160    --
23161    -- Inherited Analytical Criteria for business flow method of Prior Entry.
23162    --
23163    -- call description
23164    --
23165    -- No description or it is inherited.
23166    --
23167    -- call ADRs
23168    -- Bug 4922099
23169    --
23170    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23171         (NVL(l_actual_upg_option, 'N') = 'O') OR
23172         (NVL(l_enc_upg_option, 'N') = 'O')
23173       )
23174    THEN
23175    NULL;
23176    --
23177    --
23178    
23179    --
23180    --
23181    END IF;
23182    --
23183    -- Bug 4922099
23184    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23185           (NVL(l_enc_upg_option, 'N') = 'O')
23186         ) AND
23187         (l_bflow_method_code = 'PRIOR_ENTRY')
23188       )
23189    THEN
23190       IF
23191       --
23192       1 = 1
23193       --
23194       THEN
23195       xla_accounting_err_pkg.build_message
23196                                     (p_appli_s_name            => 'XLA'
23197                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23198                                     ,p_token_1                 => 'LINE_NUMBER'
23199                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23200                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23201                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23202                                                                              l_component_type
23203                                                                             ,l_component_code
23204                                                                             ,l_component_type_code
23205                                                                             ,l_component_appl_id
23206                                                                             ,l_amb_context_code
23207                                                                             ,l_entity_code
23208                                                                             ,l_event_class_code
23209                                                                            )
23210                                     ,p_token_3                 => 'OWNER'
23211                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23212                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23213                                                                           ,p_lookup_code    => l_component_type_code
23214                                                                          )
23215                                     ,p_token_4                 => 'PRODUCT_NAME'
23216                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23217                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23221                                        );
23218                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23219                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23220                                     ,p_ae_header_id            =>  NULL
23222 
23223         IF (C_LEVEL_ERROR>= g_log_level) THEN
23224                  trace
23225                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23226                       ,p_level    => C_LEVEL_ERROR
23227                       ,p_module   => l_log_module);
23228         END IF;
23229       END IF;
23230    END IF;
23231    --
23232    --
23233    ------------------------------------------------------------------------------------------------
23234    -- 4219869 Business Flow
23235    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23236    -- Prior Entry.  Currently, the following code is always generated.
23237    ------------------------------------------------------------------------------------------------
23238    -- No ValidateCurrentLine for business flow method of Prior Entry
23239 
23240    ------------------------------------------------------------------------------------
23241    -- 4219869 Business Flow
23242    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23243    ------------------------------------------------------------------------------------
23244    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23245 
23246    ----------------------------------------------------------------------------------
23247    -- 4219869 Business Flow
23248    -- Update journal entry status -- Need to generate this within IF <condition>
23249    ----------------------------------------------------------------------------------
23250    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23251          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23252          ,p_balance_type_code => l_balance_type_code
23253          );
23254 
23255    -------------------------------------------------------------------------------------------
23256    -- 4262811 - Generate the Accrual Reversal lines
23257    -------------------------------------------------------------------------------------------
23258    BEGIN
23259       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23260                               (g_array_event(p_event_id).array_value_num('header_index'));
23261       IF l_acc_rev_flag IS NULL THEN
23262          l_acc_rev_flag := 'N';
23263       END IF;
23264    EXCEPTION
23265       WHEN OTHERS THEN
23266          l_acc_rev_flag := 'N';
23267    END;
23268    --
23269    IF (l_acc_rev_flag = 'Y') THEN
23270 
23271        -- 4645092  ------------------------------------------------------------------------------
23272        -- To allow MPA report to determine if it should generate report process
23273        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23274        ------------------------------------------------------------------------------------------
23275 
23276        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23277        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23278    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
23279    -- call ADRs
23280    -- Bug 4922099
23281    --
23282    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23283         (NVL(l_actual_upg_option, 'N') = 'O') OR
23284         (NVL(l_enc_upg_option, 'N') = 'O')
23285       )
23286    THEN
23287    NULL;
23288    --
23289    --
23290    
23291    --
23292    --
23293    END IF;
23294 
23295        --
23296        -- Update the line information that should be overwritten
23297        --
23298        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23299                                          p_header_num   => 1);
23300        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23301 
23302        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23303 
23304        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23305           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23306        END IF;
23307 
23308       --
23309       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23310       --
23311       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23312           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23313       ELSE
23314           ---------------------------------------------------------------------------------------------------
23315           -- 4262811a Switch Sign
23316           ---------------------------------------------------------------------------------------------------
23317           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23318           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23319                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23320           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23321                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23322           -- 5132302
23326       END IF;
23323           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23324                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23325 
23327 
23328       -- 4955764
23329       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23330       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23331 
23332 
23333       XLA_AE_LINES_PKG.ValidateCurrentLine;
23334       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23335 
23336       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23337                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23338                ,p_balance_type_code => l_balance_type_code);
23339 
23340    END IF;
23341 
23342    -----------------------------------------------------------------------------------------
23343    -- 4262811 Multiperiod Accounting
23344    -----------------------------------------------------------------------------------------
23345      -- No MPA option is assigned.
23346 
23347 
23348 END IF;
23349 END IF;
23350 --
23351 
23352 --
23353 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23354    trace
23355       (p_msg      => 'END of AcctLineType_59'
23356       ,p_level    => C_LEVEL_PROCEDURE
23357       ,p_module   => l_log_module);
23358 END IF;
23359 --
23360 EXCEPTION
23361   WHEN xla_exceptions_pkg.application_exception THEN
23362       RAISE;
23363   WHEN OTHERS THEN
23364        xla_exceptions_pkg.raise_message
23365            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_59');
23366 END AcctLineType_59;
23367 --
23368 
23369 ---------------------------------------
23370 --
23371 -- PRIVATE FUNCTION
23372 --         AcctLineType_60
23373 --
23374 ---------------------------------------
23375 PROCEDURE AcctLineType_60 (
23376   p_application_id        IN NUMBER
23377  ,p_event_id              IN NUMBER
23378  ,p_calculate_acctd_flag  IN VARCHAR2
23379  ,p_calculate_g_l_flag    IN VARCHAR2
23380  ,p_actual_flag           IN OUT VARCHAR2
23381  ,p_balance_type_code     OUT VARCHAR2
23382  ,p_gain_or_loss_ref      OUT VARCHAR2
23383  
23384 --Transaction Distribution GL Account
23385  , p_source_26            IN NUMBER
23386 --Bill To Customer Account Identifier
23387  , p_source_37            IN NUMBER
23388 --Bill To Customer Site Use Identifier
23389  , p_source_38            IN NUMBER
23390 --SLA Party Type
23391  , p_source_39            IN VARCHAR2
23392 --Transaction Distribution Account Class
23393  , p_source_43            IN VARCHAR2
23394 --Transaction Distribution Identifier
23395  , p_source_44            IN NUMBER
23396 --Transaction Distribution Type
23397  , p_source_45            IN VARCHAR2
23398 --Transaction Distribution Entered Amount
23399  , p_source_46            IN NUMBER
23400 --Transaction Currency Code
23401  , p_source_47            IN VARCHAR2
23402 --Transaction Exchange Date
23403  , p_source_48            IN DATE
23404 --Transaction Exchange Rate
23405  , p_source_49            IN NUMBER
23406 --Transaction Exchange Rate Type
23407  , p_source_50            IN VARCHAR2
23408 --Transaction Accounting Amount
23409  , p_source_51            IN NUMBER
23410 )
23411 IS
23412 
23413 l_component_type              VARCHAR2(80);
23414 l_component_code              VARCHAR2(30);
23415 l_component_type_code         VARCHAR2(1);
23416 l_component_appl_id           INTEGER;
23417 l_amb_context_code            VARCHAR2(30);
23418 l_entity_code                 VARCHAR2(30);
23419 l_event_class_code            VARCHAR2(30);
23420 l_ae_header_id                NUMBER;
23421 l_event_type_code             VARCHAR2(30);
23422 l_line_definition_code        VARCHAR2(30);
23423 l_line_definition_owner_code  VARCHAR2(1);
23424 --
23425 -- adr variables
23426 l_segment                     VARCHAR2(30);
23427 l_ccid                        NUMBER;
23428 l_adr_transaction_coa_id      NUMBER;
23429 l_adr_accounting_coa_id       NUMBER;
23430 l_adr_flexfield_segment_code  VARCHAR2(30);
23431 l_adr_flex_value_set_id       NUMBER;
23432 l_adr_value_type_code         VARCHAR2(30);
23433 l_adr_value_combination_id    NUMBER;
23434 l_adr_value_segment_code      VARCHAR2(30);
23435 
23436 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23437 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23438 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23439 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23440 
23441 -- 4262811 Variables ------------------------------------------------------------------------------------------
23442 l_entered_amt_idx             NUMBER;
23443 l_accted_amt_idx              NUMBER;
23444 l_acc_rev_flag                VARCHAR2(1);
23445 l_accrual_line_num            NUMBER;
23446 l_tmp_amt                     NUMBER;
23447 l_acc_rev_natural_side_code   VARCHAR2(1);
23448 
23449 l_num_entries                 NUMBER;
23450 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23451 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23452 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23456 
23453 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23454 l_recog_line_1                NUMBER;
23455 l_recog_line_2                NUMBER;
23457 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23458 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23459 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23460 
23461 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23462 
23463 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23464 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23465 
23466 ---------------------------------------------------------------------------------------------------------------
23467 
23468 
23469 --
23470 -- bulk performance
23471 --
23472 l_balance_type_code           VARCHAR2(1);
23473 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23474 l_log_module                  VARCHAR2(240);
23475 
23476 --
23477 -- Upgrade strategy
23478 --
23479 l_actual_upg_option           VARCHAR2(1);
23480 l_enc_upg_option           VARCHAR2(1);
23481 
23482 --
23483 BEGIN
23484 --
23485 IF g_log_enabled THEN
23486       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_60';
23487 END IF;
23488 --
23489 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23490 
23491       trace
23492          (p_msg      => 'BEGIN of AcctLineType_60'
23493          ,p_level    => C_LEVEL_PROCEDURE
23494          ,p_module   => l_log_module);
23495 
23496 END IF;
23497 --
23498 l_component_type             := 'AMB_JLT';
23499 l_component_code             := 'DEP_DEFAULT_REC';
23500 l_component_type_code        := 'S';
23501 l_component_appl_id          :=  222;
23502 l_amb_context_code           := 'DEFAULT';
23503 l_entity_code                := 'TRANSACTIONS';
23504 l_event_class_code           := 'DEPOSIT';
23505 l_event_type_code            := 'DEPOSIT_ALL';
23506 l_line_definition_owner_code := 'S';
23507 l_line_definition_code       := 'AR_DEP_DEFAULT_ACCRUAL';
23508 --
23509 l_balance_type_code          := 'A';
23510 l_segment                     := NULL;
23511 l_ccid                        := NULL;
23512 l_adr_transaction_coa_id      := NULL;
23513 l_adr_accounting_coa_id       := NULL;
23514 l_adr_flexfield_segment_code  := NULL;
23515 l_adr_flex_value_set_id       := NULL;
23516 l_adr_value_type_code         := NULL;
23517 l_adr_value_combination_id    := NULL;
23518 l_adr_value_segment_code      := NULL;
23519 
23520 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23521 l_bflow_class_code           := '';    -- 4219869 Business Flow
23522 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23523 l_budgetary_control_flag     := 'N';
23524 
23525 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23526 l_bflow_applied_to_amt       := NULL; -- 5132302
23527 l_entered_amt_idx            := NULL;          -- 4262811
23528 l_accted_amt_idx             := NULL;          -- 4262811
23529 l_acc_rev_flag               := NULL;          -- 4262811
23530 l_accrual_line_num           := NULL;          -- 4262811
23531 l_tmp_amt                    := NULL;          -- 4262811
23532 --
23533  
23534 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23535     l_balance_type_code <> 'B' THEN
23536 IF NVL(p_source_43,'
23537 ') =  'REC'
23538  THEN 
23539 
23540    --
23541    XLA_AE_LINES_PKG.SetNewLine;
23542 
23543    p_balance_type_code          := l_balance_type_code;
23544    -- set the flag so later we will know whether the gain loss line needs to be created
23545    
23546    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23547      p_actual_flag :='A';
23548    END IF;
23549 
23550    --
23551    -- bulk performance
23552    --
23553    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23554                                       p_header_num   => 0); -- 4262811
23555    --
23556    -- set accounting line options
23557    --
23558    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23559            p_natural_side_code          => 'D'
23560          , p_gain_or_loss_flag          => 'N'
23561          , p_gl_transfer_mode_code      => 'S'
23562          , p_acct_entry_type_code       => 'A'
23563          , p_switch_side_flag           => 'Y'
23564          , p_merge_duplicate_code       => 'A'
23565          );
23566    --
23567    l_acc_rev_natural_side_code := 'C';  -- 4262811
23568    -- 
23569    --
23570    -- set accounting line type info
23571    --
23572    xla_ae_lines_pkg.SetAcctLineType
23573       (p_component_type             => l_component_type
23574       ,p_event_type_code            => l_event_type_code
23575       ,p_line_definition_owner_code => l_line_definition_owner_code
23576       ,p_line_definition_code       => l_line_definition_code
23577       ,p_accounting_line_code       => l_component_code
23578       ,p_accounting_line_type_code  => l_component_type_code
23579       ,p_accounting_line_appl_id    => l_component_appl_id
23580       ,p_amb_context_code           => l_amb_context_code
23581       ,p_entity_code                => l_entity_code
23582       ,p_event_class_code           => l_event_class_code);
23583    --
23587            p_accounting_class_code  => 'RECEIVABLE'
23584    -- set accounting class
23585    --
23586    xla_ae_lines_pkg.SetAcctClass(
23588          , p_ae_header_id           => l_ae_header_id
23589          );
23590 
23591    --
23592    -- set rounding class
23593    --
23594    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23595                       'RECEIVABLE';
23596 
23597    --
23598    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23599    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23600    --
23601    -- bulk performance
23602    --
23603    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23604 
23605    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23606       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23607 
23608    -- 4955764
23609    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23610       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23611 
23612    -- 4458381 Public Sector Enh
23613    
23614    --
23615    -- set accounting attributes for the line type
23616    --
23617    l_entered_amt_idx := 3;
23618    l_accted_amt_idx  := 8;
23619    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23620    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
23621    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
23622    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
23623    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
23624    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
23625    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
23626    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
23627    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
23628    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
23629    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
23630    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
23631    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
23632    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
23633    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
23634    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
23635    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
23636    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
23637    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
23638    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
23639    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
23640    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
23641    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
23642 
23643    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23644    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23645 
23646    ---------------------------------------------------------------------------------------------------------------
23647    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23648    ---------------------------------------------------------------------------------------------------------------
23649    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23650 
23651    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23652    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23653 
23654    IF xla_accounting_cache_pkg.GetValueChar
23655          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23656          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23657    AND l_bflow_method_code = 'PRIOR_ENTRY'
23658 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23659    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23660          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23661        )
23662    THEN
23663          xla_ae_lines_pkg.BflowUpgEntry
23664            (p_business_method_code    => l_bflow_method_code
23665            ,p_business_class_code     => l_bflow_class_code
23666            ,p_balance_type            => l_balance_type_code);
23667    ELSE
23668       NULL;
23669 -- No business flow processing for business flow method of NONE.
23670    END IF;
23671 
23672    --
23673    -- call analytical criteria
23674    --
23675    
23676    --
23677    -- call description
23678    --
23679    -- No description or it is inherited.
23680    --
23681    -- call ADRs
23682    -- Bug 4922099
23683    --
23684    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23685         (NVL(l_actual_upg_option, 'N') = 'O') OR
23686         (NVL(l_enc_upg_option, 'N') = 'O')
23687       )
23688    THEN
23689    NULL;
23690    --
23691    --
23692    
23693   l_ccid := AcctDerRule_24(
23694            p_application_id           => p_application_id
23695          , p_ae_header_id             => l_ae_header_id 
23696 , p_source_26 => p_source_26
23697          , x_transaction_coa_id       => l_adr_transaction_coa_id
23698          , x_accounting_coa_id        => l_adr_accounting_coa_id
23699          , x_value_type_code          => l_adr_value_type_code
23703    xla_ae_lines_pkg.set_ccid(
23700          , p_side                     => 'NA'
23701    );
23702 
23704     p_code_combination_id          => l_ccid
23705   , p_value_type_code              => l_adr_value_type_code
23706   , p_transaction_coa_id           => l_adr_transaction_coa_id
23707   , p_accounting_coa_id            => l_adr_accounting_coa_id
23708   , p_adr_code                     => 'TRX_DIST_CCID'
23709   , p_adr_type_code                => 'S'
23710   , p_component_type               => l_component_type
23711   , p_component_code               => l_component_code
23712   , p_component_type_code          => l_component_type_code
23713   , p_component_appl_id            => l_component_appl_id
23714   , p_amb_context_code             => l_amb_context_code
23715   , p_side                         => 'NA'
23716   );
23717 
23718 
23719    --
23720    --
23721    END IF;
23722    --
23723    -- Bug 4922099
23724    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23725           (NVL(l_enc_upg_option, 'N') = 'O')
23726         ) AND
23727         (l_bflow_method_code = 'PRIOR_ENTRY')
23728       )
23729    THEN
23730       IF
23731       --
23732       1 = 2
23733       --
23734       THEN
23735       xla_accounting_err_pkg.build_message
23736                                     (p_appli_s_name            => 'XLA'
23737                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23738                                     ,p_token_1                 => 'LINE_NUMBER'
23739                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23740                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23741                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23742                                                                              l_component_type
23743                                                                             ,l_component_code
23744                                                                             ,l_component_type_code
23745                                                                             ,l_component_appl_id
23746                                                                             ,l_amb_context_code
23747                                                                             ,l_entity_code
23748                                                                             ,l_event_class_code
23749                                                                            )
23750                                     ,p_token_3                 => 'OWNER'
23751                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23752                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23753                                                                           ,p_lookup_code    => l_component_type_code
23754                                                                          )
23755                                     ,p_token_4                 => 'PRODUCT_NAME'
23756                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23757                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23758                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23759                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23760                                     ,p_ae_header_id            =>  NULL
23761                                        );
23762 
23763         IF (C_LEVEL_ERROR>= g_log_level) THEN
23764                  trace
23765                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23766                       ,p_level    => C_LEVEL_ERROR
23767                       ,p_module   => l_log_module);
23768         END IF;
23769       END IF;
23770    END IF;
23771    --
23772    --
23773    ------------------------------------------------------------------------------------------------
23774    -- 4219869 Business Flow
23775    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23776    -- Prior Entry.  Currently, the following code is always generated.
23777    ------------------------------------------------------------------------------------------------
23778    XLA_AE_LINES_PKG.ValidateCurrentLine;
23779 
23780    ------------------------------------------------------------------------------------
23781    -- 4219869 Business Flow
23782    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23783    ------------------------------------------------------------------------------------
23784    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23785 
23786    ----------------------------------------------------------------------------------
23787    -- 4219869 Business Flow
23788    -- Update journal entry status -- Need to generate this within IF <condition>
23789    ----------------------------------------------------------------------------------
23790    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23791          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23792          ,p_balance_type_code => l_balance_type_code
23793          );
23794 
23795    -------------------------------------------------------------------------------------------
23796    -- 4262811 - Generate the Accrual Reversal lines
23800                               (g_array_event(p_event_id).array_value_num('header_index'));
23797    -------------------------------------------------------------------------------------------
23798    BEGIN
23799       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23801       IF l_acc_rev_flag IS NULL THEN
23802          l_acc_rev_flag := 'N';
23803       END IF;
23804    EXCEPTION
23805       WHEN OTHERS THEN
23806          l_acc_rev_flag := 'N';
23807    END;
23808    --
23809    IF (l_acc_rev_flag = 'Y') THEN
23810 
23811        -- 4645092  ------------------------------------------------------------------------------
23812        -- To allow MPA report to determine if it should generate report process
23813        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23814        ------------------------------------------------------------------------------------------
23815 
23816        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23817        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23818    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
23819    -- call ADRs
23820    -- Bug 4922099
23821    --
23822    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23823         (NVL(l_actual_upg_option, 'N') = 'O') OR
23824         (NVL(l_enc_upg_option, 'N') = 'O')
23825       )
23826    THEN
23827    NULL;
23828    --
23829    --
23830    
23831   l_ccid := AcctDerRule_24(
23832            p_application_id           => p_application_id
23833          , p_ae_header_id             => l_ae_header_id 
23834 , p_source_26 => p_source_26
23835          , x_transaction_coa_id       => l_adr_transaction_coa_id
23836          , x_accounting_coa_id        => l_adr_accounting_coa_id
23837          , x_value_type_code          => l_adr_value_type_code
23838          , p_side                     => 'NA'
23839    );
23840 
23841    xla_ae_lines_pkg.set_ccid(
23842     p_code_combination_id          => l_ccid
23843   , p_value_type_code              => l_adr_value_type_code
23844   , p_transaction_coa_id           => l_adr_transaction_coa_id
23845   , p_accounting_coa_id            => l_adr_accounting_coa_id
23846   , p_adr_code                     => 'TRX_DIST_CCID'
23847   , p_adr_type_code                => 'S'
23848   , p_component_type               => l_component_type
23849   , p_component_code               => l_component_code
23850   , p_component_type_code          => l_component_type_code
23851   , p_component_appl_id            => l_component_appl_id
23852   , p_amb_context_code             => l_amb_context_code
23853   , p_side                         => 'NA'
23854   );
23855 
23856 
23857    --
23858    --
23859    END IF;
23860 
23861        --
23862        -- Update the line information that should be overwritten
23863        --
23864        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23865                                          p_header_num   => 1);
23866        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23867 
23868        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23869 
23870        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23871           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23872        END IF;
23873 
23874       --
23875       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23876       --
23877       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23878           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23879       ELSE
23880           ---------------------------------------------------------------------------------------------------
23881           -- 4262811a Switch Sign
23882           ---------------------------------------------------------------------------------------------------
23883           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23884           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23885                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23886           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23887                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23888           -- 5132302
23889           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23890                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23891 
23892       END IF;
23893 
23894       -- 4955764
23895       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23896       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23897 
23898 
23899       XLA_AE_LINES_PKG.ValidateCurrentLine;
23900       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23901 
23902       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23903                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23904                ,p_balance_type_code => l_balance_type_code);
23905 
23906    END IF;
23907 
23911      -- No MPA option is assigned.
23908    -----------------------------------------------------------------------------------------
23909    -- 4262811 Multiperiod Accounting
23910    -----------------------------------------------------------------------------------------
23912 
23913 
23914 END IF;
23915 END IF;
23916 --
23917 
23918 --
23919 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23920    trace
23921       (p_msg      => 'END of AcctLineType_60'
23922       ,p_level    => C_LEVEL_PROCEDURE
23923       ,p_module   => l_log_module);
23924 END IF;
23925 --
23926 EXCEPTION
23927   WHEN xla_exceptions_pkg.application_exception THEN
23928       RAISE;
23929   WHEN OTHERS THEN
23930        xla_exceptions_pkg.raise_message
23931            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_60');
23932 END AcctLineType_60;
23933 --
23934 
23935 ---------------------------------------
23936 --
23937 -- PRIVATE FUNCTION
23938 --         AcctLineType_61
23939 --
23940 ---------------------------------------
23941 PROCEDURE AcctLineType_61 (
23942   p_application_id        IN NUMBER
23943  ,p_event_id              IN NUMBER
23944  ,p_calculate_acctd_flag  IN VARCHAR2
23945  ,p_calculate_g_l_flag    IN VARCHAR2
23946  ,p_actual_flag           IN OUT VARCHAR2
23947  ,p_balance_type_code     OUT VARCHAR2
23948  ,p_gain_or_loss_ref      OUT VARCHAR2
23949  
23950 --Transaction Distribution GL Account
23951  , p_source_26            IN NUMBER
23952 --Bill To Customer Account Identifier
23953  , p_source_37            IN NUMBER
23954 --Bill To Customer Site Use Identifier
23955  , p_source_38            IN NUMBER
23956 --SLA Party Type
23957  , p_source_39            IN VARCHAR2
23958 --Transaction Distribution Account Class
23959  , p_source_43            IN VARCHAR2
23960 --Transaction Distribution Identifier
23961  , p_source_44            IN NUMBER
23962 --Transaction Distribution Type
23963  , p_source_45            IN VARCHAR2
23964 --Transaction Distribution Entered Amount
23965  , p_source_46            IN NUMBER
23966 --Transaction Currency Code
23967  , p_source_47            IN VARCHAR2
23968 --Transaction Exchange Date
23969  , p_source_48            IN DATE
23970 --Transaction Exchange Rate
23971  , p_source_49            IN NUMBER
23972 --Transaction Exchange Rate Type
23973  , p_source_50            IN VARCHAR2
23974 --Transaction Accounting Amount
23975  , p_source_51            IN NUMBER
23976 )
23977 IS
23978 
23979 l_component_type              VARCHAR2(80);
23980 l_component_code              VARCHAR2(30);
23981 l_component_type_code         VARCHAR2(1);
23982 l_component_appl_id           INTEGER;
23983 l_amb_context_code            VARCHAR2(30);
23984 l_entity_code                 VARCHAR2(30);
23985 l_event_class_code            VARCHAR2(30);
23986 l_ae_header_id                NUMBER;
23987 l_event_type_code             VARCHAR2(30);
23988 l_line_definition_code        VARCHAR2(30);
23989 l_line_definition_owner_code  VARCHAR2(1);
23990 --
23991 -- adr variables
23992 l_segment                     VARCHAR2(30);
23993 l_ccid                        NUMBER;
23994 l_adr_transaction_coa_id      NUMBER;
23995 l_adr_accounting_coa_id       NUMBER;
23996 l_adr_flexfield_segment_code  VARCHAR2(30);
23997 l_adr_flex_value_set_id       NUMBER;
23998 l_adr_value_type_code         VARCHAR2(30);
23999 l_adr_value_combination_id    NUMBER;
24000 l_adr_value_segment_code      VARCHAR2(30);
24001 
24002 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24003 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24004 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24005 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24006 
24007 -- 4262811 Variables ------------------------------------------------------------------------------------------
24008 l_entered_amt_idx             NUMBER;
24009 l_accted_amt_idx              NUMBER;
24010 l_acc_rev_flag                VARCHAR2(1);
24011 l_accrual_line_num            NUMBER;
24012 l_tmp_amt                     NUMBER;
24013 l_acc_rev_natural_side_code   VARCHAR2(1);
24014 
24015 l_num_entries                 NUMBER;
24016 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24017 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24018 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24019 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24020 l_recog_line_1                NUMBER;
24021 l_recog_line_2                NUMBER;
24022 
24023 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24024 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24025 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24026 
24027 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24028 
24029 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24030 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24031 
24032 ---------------------------------------------------------------------------------------------------------------
24033 
24034 
24035 --
24036 -- bulk performance
24037 --
24038 l_balance_type_code           VARCHAR2(1);
24042 --
24039 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24040 l_log_module                  VARCHAR2(240);
24041 
24043 -- Upgrade strategy
24044 --
24045 l_actual_upg_option           VARCHAR2(1);
24046 l_enc_upg_option           VARCHAR2(1);
24047 
24048 --
24049 BEGIN
24050 --
24051 IF g_log_enabled THEN
24052       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_61';
24053 END IF;
24054 --
24055 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24056 
24057       trace
24058          (p_msg      => 'BEGIN of AcctLineType_61'
24059          ,p_level    => C_LEVEL_PROCEDURE
24060          ,p_module   => l_log_module);
24061 
24062 END IF;
24063 --
24064 l_component_type             := 'AMB_JLT';
24065 l_component_code             := 'DEP_OFFSET';
24066 l_component_type_code        := 'S';
24067 l_component_appl_id          :=  222;
24068 l_amb_context_code           := 'DEFAULT';
24069 l_entity_code                := 'TRANSACTIONS';
24070 l_event_class_code           := 'DEPOSIT';
24071 l_event_type_code            := 'DEPOSIT_ALL';
24072 l_line_definition_owner_code := 'S';
24073 l_line_definition_code       := 'AR_DEP_DEFAULT_ACCRUAL';
24074 --
24075 l_balance_type_code          := 'A';
24076 l_segment                     := NULL;
24077 l_ccid                        := NULL;
24078 l_adr_transaction_coa_id      := NULL;
24079 l_adr_accounting_coa_id       := NULL;
24080 l_adr_flexfield_segment_code  := NULL;
24081 l_adr_flex_value_set_id       := NULL;
24082 l_adr_value_type_code         := NULL;
24083 l_adr_value_combination_id    := NULL;
24084 l_adr_value_segment_code      := NULL;
24085 
24086 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
24087 l_bflow_class_code           := '';    -- 4219869 Business Flow
24088 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24089 l_budgetary_control_flag     := 'N';
24090 
24091 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24092 l_bflow_applied_to_amt       := NULL; -- 5132302
24093 l_entered_amt_idx            := NULL;          -- 4262811
24094 l_accted_amt_idx             := NULL;          -- 4262811
24095 l_acc_rev_flag               := NULL;          -- 4262811
24096 l_accrual_line_num           := NULL;          -- 4262811
24097 l_tmp_amt                    := NULL;          -- 4262811
24098 --
24099  
24100 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24101     l_balance_type_code <> 'B' THEN
24102 IF NVL(p_source_43,'
24103 ') =  'REV'
24104  THEN 
24105 
24106    --
24107    XLA_AE_LINES_PKG.SetNewLine;
24108 
24109    p_balance_type_code          := l_balance_type_code;
24110    -- set the flag so later we will know whether the gain loss line needs to be created
24111    
24112    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24113      p_actual_flag :='A';
24114    END IF;
24115 
24116    --
24117    -- bulk performance
24118    --
24119    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24120                                       p_header_num   => 0); -- 4262811
24121    --
24122    -- set accounting line options
24123    --
24124    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24125            p_natural_side_code          => 'C'
24126          , p_gain_or_loss_flag          => 'N'
24127          , p_gl_transfer_mode_code      => 'S'
24128          , p_acct_entry_type_code       => 'A'
24129          , p_switch_side_flag           => 'Y'
24130          , p_merge_duplicate_code       => 'A'
24131          );
24132    --
24133    l_acc_rev_natural_side_code := 'D';  -- 4262811
24134    -- 
24135    --
24136    -- set accounting line type info
24137    --
24138    xla_ae_lines_pkg.SetAcctLineType
24139       (p_component_type             => l_component_type
24140       ,p_event_type_code            => l_event_type_code
24141       ,p_line_definition_owner_code => l_line_definition_owner_code
24142       ,p_line_definition_code       => l_line_definition_code
24143       ,p_accounting_line_code       => l_component_code
24144       ,p_accounting_line_type_code  => l_component_type_code
24145       ,p_accounting_line_appl_id    => l_component_appl_id
24146       ,p_amb_context_code           => l_amb_context_code
24147       ,p_entity_code                => l_entity_code
24148       ,p_event_class_code           => l_event_class_code);
24149    --
24150    -- set accounting class
24151    --
24152    xla_ae_lines_pkg.SetAcctClass(
24153            p_accounting_class_code  => 'ACCRUAL'
24154          , p_ae_header_id           => l_ae_header_id
24155          );
24156 
24157    --
24158    -- set rounding class
24159    --
24160    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24161                       'RECEIVABLE';
24162 
24163    --
24164    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24165    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24166    --
24167    -- bulk performance
24168    --
24169    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24170 
24171    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24175    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24172       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24173 
24174    -- 4955764
24176       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24177 
24178    -- 4458381 Public Sector Enh
24179    
24180    --
24181    -- set accounting attributes for the line type
24182    --
24183    l_entered_amt_idx := 3;
24184    l_accted_amt_idx  := 8;
24185    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24186    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
24187    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
24188    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
24189    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
24190    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
24191    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
24192    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
24193    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
24194    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
24195    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
24196    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
24197    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
24198    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
24199    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
24200    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
24201    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
24202    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
24203    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
24204    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
24205    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
24206    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
24207    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
24208 
24209    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24210    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24211 
24212    ---------------------------------------------------------------------------------------------------------------
24213    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24214    ---------------------------------------------------------------------------------------------------------------
24215    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24216 
24217    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24218    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24219 
24220    IF xla_accounting_cache_pkg.GetValueChar
24221          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24222          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24223    AND l_bflow_method_code = 'PRIOR_ENTRY'
24224 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24225    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24226          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24227        )
24228    THEN
24229          xla_ae_lines_pkg.BflowUpgEntry
24230            (p_business_method_code    => l_bflow_method_code
24231            ,p_business_class_code     => l_bflow_class_code
24232            ,p_balance_type            => l_balance_type_code);
24233    ELSE
24234       NULL;
24235 -- No business flow processing for business flow method of NONE.
24236    END IF;
24237 
24238    --
24239    -- call analytical criteria
24240    --
24241    
24242    --
24243    -- call description
24244    --
24245    -- No description or it is inherited.
24246    --
24247    -- call ADRs
24248    -- Bug 4922099
24249    --
24250    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24251         (NVL(l_actual_upg_option, 'N') = 'O') OR
24252         (NVL(l_enc_upg_option, 'N') = 'O')
24253       )
24254    THEN
24255    NULL;
24256    --
24257    --
24258    
24259   l_ccid := AcctDerRule_24(
24260            p_application_id           => p_application_id
24261          , p_ae_header_id             => l_ae_header_id 
24262 , p_source_26 => p_source_26
24263          , x_transaction_coa_id       => l_adr_transaction_coa_id
24264          , x_accounting_coa_id        => l_adr_accounting_coa_id
24265          , x_value_type_code          => l_adr_value_type_code
24266          , p_side                     => 'NA'
24267    );
24268 
24269    xla_ae_lines_pkg.set_ccid(
24270     p_code_combination_id          => l_ccid
24271   , p_value_type_code              => l_adr_value_type_code
24272   , p_transaction_coa_id           => l_adr_transaction_coa_id
24273   , p_accounting_coa_id            => l_adr_accounting_coa_id
24274   , p_adr_code                     => 'TRX_DIST_CCID'
24275   , p_adr_type_code                => 'S'
24276   , p_component_type               => l_component_type
24277   , p_component_code               => l_component_code
24278   , p_component_type_code          => l_component_type_code
24279   , p_component_appl_id            => l_component_appl_id
24280   , p_amb_context_code             => l_amb_context_code
24281   , p_side                         => 'NA'
24282   );
24283 
24284 
24285    --
24286    --
24287    END IF;
24288    --
24289    -- Bug 4922099
24293         (l_bflow_method_code = 'PRIOR_ENTRY')
24290    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24291           (NVL(l_enc_upg_option, 'N') = 'O')
24292         ) AND
24294       )
24295    THEN
24296       IF
24297       --
24298       1 = 2
24299       --
24300       THEN
24301       xla_accounting_err_pkg.build_message
24302                                     (p_appli_s_name            => 'XLA'
24303                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24304                                     ,p_token_1                 => 'LINE_NUMBER'
24305                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24306                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24307                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24308                                                                              l_component_type
24309                                                                             ,l_component_code
24310                                                                             ,l_component_type_code
24311                                                                             ,l_component_appl_id
24312                                                                             ,l_amb_context_code
24313                                                                             ,l_entity_code
24314                                                                             ,l_event_class_code
24315                                                                            )
24316                                     ,p_token_3                 => 'OWNER'
24317                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24318                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24319                                                                           ,p_lookup_code    => l_component_type_code
24320                                                                          )
24321                                     ,p_token_4                 => 'PRODUCT_NAME'
24322                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24323                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24324                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24325                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24326                                     ,p_ae_header_id            =>  NULL
24327                                        );
24328 
24329         IF (C_LEVEL_ERROR>= g_log_level) THEN
24330                  trace
24331                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24332                       ,p_level    => C_LEVEL_ERROR
24333                       ,p_module   => l_log_module);
24334         END IF;
24335       END IF;
24336    END IF;
24337    --
24338    --
24339    ------------------------------------------------------------------------------------------------
24340    -- 4219869 Business Flow
24341    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24342    -- Prior Entry.  Currently, the following code is always generated.
24343    ------------------------------------------------------------------------------------------------
24344    XLA_AE_LINES_PKG.ValidateCurrentLine;
24345 
24346    ------------------------------------------------------------------------------------
24347    -- 4219869 Business Flow
24348    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24349    ------------------------------------------------------------------------------------
24350    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24351 
24352    ----------------------------------------------------------------------------------
24353    -- 4219869 Business Flow
24354    -- Update journal entry status -- Need to generate this within IF <condition>
24355    ----------------------------------------------------------------------------------
24356    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24357          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24358          ,p_balance_type_code => l_balance_type_code
24359          );
24360 
24361    -------------------------------------------------------------------------------------------
24362    -- 4262811 - Generate the Accrual Reversal lines
24363    -------------------------------------------------------------------------------------------
24364    BEGIN
24365       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24366                               (g_array_event(p_event_id).array_value_num('header_index'));
24367       IF l_acc_rev_flag IS NULL THEN
24368          l_acc_rev_flag := 'N';
24369       END IF;
24370    EXCEPTION
24371       WHEN OTHERS THEN
24372          l_acc_rev_flag := 'N';
24373    END;
24374    --
24375    IF (l_acc_rev_flag = 'Y') THEN
24376 
24377        -- 4645092  ------------------------------------------------------------------------------
24378        -- To allow MPA report to determine if it should generate report process
24379        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24380        ------------------------------------------------------------------------------------------
24381 
24382        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24386    -- Bug 4922099
24383        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24384    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
24385    -- call ADRs
24387    --
24388    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24389         (NVL(l_actual_upg_option, 'N') = 'O') OR
24390         (NVL(l_enc_upg_option, 'N') = 'O')
24391       )
24392    THEN
24393    NULL;
24394    --
24395    --
24396    
24397   l_ccid := AcctDerRule_24(
24398            p_application_id           => p_application_id
24399          , p_ae_header_id             => l_ae_header_id 
24400 , p_source_26 => p_source_26
24401          , x_transaction_coa_id       => l_adr_transaction_coa_id
24402          , x_accounting_coa_id        => l_adr_accounting_coa_id
24403          , x_value_type_code          => l_adr_value_type_code
24404          , p_side                     => 'NA'
24405    );
24406 
24407    xla_ae_lines_pkg.set_ccid(
24408     p_code_combination_id          => l_ccid
24409   , p_value_type_code              => l_adr_value_type_code
24410   , p_transaction_coa_id           => l_adr_transaction_coa_id
24411   , p_accounting_coa_id            => l_adr_accounting_coa_id
24412   , p_adr_code                     => 'TRX_DIST_CCID'
24413   , p_adr_type_code                => 'S'
24414   , p_component_type               => l_component_type
24415   , p_component_code               => l_component_code
24416   , p_component_type_code          => l_component_type_code
24417   , p_component_appl_id            => l_component_appl_id
24418   , p_amb_context_code             => l_amb_context_code
24419   , p_side                         => 'NA'
24420   );
24421 
24422 
24423    --
24424    --
24425    END IF;
24426 
24427        --
24428        -- Update the line information that should be overwritten
24429        --
24430        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24431                                          p_header_num   => 1);
24432        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24433 
24434        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24435 
24436        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24437           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24438        END IF;
24439 
24440       --
24441       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24442       --
24443       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24444           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24445       ELSE
24446           ---------------------------------------------------------------------------------------------------
24447           -- 4262811a Switch Sign
24448           ---------------------------------------------------------------------------------------------------
24449           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24450           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24451                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24452           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24453                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24454           -- 5132302
24455           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24456                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24457 
24458       END IF;
24459 
24460       -- 4955764
24461       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24462       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24463 
24464 
24465       XLA_AE_LINES_PKG.ValidateCurrentLine;
24466       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24467 
24468       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24469                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24470                ,p_balance_type_code => l_balance_type_code);
24471 
24472    END IF;
24473 
24474    -----------------------------------------------------------------------------------------
24475    -- 4262811 Multiperiod Accounting
24476    -----------------------------------------------------------------------------------------
24477      -- No MPA option is assigned.
24478 
24479 
24480 END IF;
24481 END IF;
24482 --
24483 
24484 --
24485 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24486    trace
24487       (p_msg      => 'END of AcctLineType_61'
24488       ,p_level    => C_LEVEL_PROCEDURE
24489       ,p_module   => l_log_module);
24490 END IF;
24491 --
24492 EXCEPTION
24493   WHEN xla_exceptions_pkg.application_exception THEN
24494       RAISE;
24495   WHEN OTHERS THEN
24496        xla_exceptions_pkg.raise_message
24497            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_61');
24498 END AcctLineType_61;
24499 --
24500 
24501 ---------------------------------------
24502 --
24506 ---------------------------------------
24503 -- PRIVATE FUNCTION
24504 --         AcctLineType_62
24505 --
24507 PROCEDURE AcctLineType_62 (
24508   p_application_id        IN NUMBER
24509  ,p_event_id              IN NUMBER
24510  ,p_calculate_acctd_flag  IN VARCHAR2
24511  ,p_calculate_g_l_flag    IN VARCHAR2
24512  ,p_actual_flag           IN OUT VARCHAR2
24513  ,p_balance_type_code     OUT VARCHAR2
24514  ,p_gain_or_loss_ref      OUT VARCHAR2
24515  
24516 --Transaction Distribution GL Account
24517  , p_source_26            IN NUMBER
24518 --Bill To Customer Account Identifier
24519  , p_source_37            IN NUMBER
24520 --Bill To Customer Site Use Identifier
24521  , p_source_38            IN NUMBER
24522 --SLA Party Type
24523  , p_source_39            IN VARCHAR2
24524 --Transaction Distribution Account Class
24525  , p_source_43            IN VARCHAR2
24526 --Transaction Distribution Identifier
24527  , p_source_44            IN NUMBER
24528 --Transaction Distribution Type
24529  , p_source_45            IN VARCHAR2
24530 --Transaction Distribution Entered Amount
24531  , p_source_46            IN NUMBER
24532 --Transaction Currency Code
24533  , p_source_47            IN VARCHAR2
24534 --Transaction Exchange Date
24535  , p_source_48            IN DATE
24536 --Transaction Exchange Rate
24537  , p_source_49            IN NUMBER
24538 --Transaction Exchange Rate Type
24539  , p_source_50            IN VARCHAR2
24540 --Transaction Accounting Amount
24541  , p_source_51            IN NUMBER
24542 --Transaction Tax Line Identifier
24543  , p_source_86            IN NUMBER
24544 )
24545 IS
24546 
24547 l_component_type              VARCHAR2(80);
24548 l_component_code              VARCHAR2(30);
24549 l_component_type_code         VARCHAR2(1);
24550 l_component_appl_id           INTEGER;
24551 l_amb_context_code            VARCHAR2(30);
24552 l_entity_code                 VARCHAR2(30);
24553 l_event_class_code            VARCHAR2(30);
24554 l_ae_header_id                NUMBER;
24555 l_event_type_code             VARCHAR2(30);
24556 l_line_definition_code        VARCHAR2(30);
24557 l_line_definition_owner_code  VARCHAR2(1);
24558 --
24559 -- adr variables
24560 l_segment                     VARCHAR2(30);
24561 l_ccid                        NUMBER;
24562 l_adr_transaction_coa_id      NUMBER;
24563 l_adr_accounting_coa_id       NUMBER;
24564 l_adr_flexfield_segment_code  VARCHAR2(30);
24565 l_adr_flex_value_set_id       NUMBER;
24566 l_adr_value_type_code         VARCHAR2(30);
24567 l_adr_value_combination_id    NUMBER;
24568 l_adr_value_segment_code      VARCHAR2(30);
24569 
24570 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24571 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24572 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24573 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24574 
24575 -- 4262811 Variables ------------------------------------------------------------------------------------------
24576 l_entered_amt_idx             NUMBER;
24577 l_accted_amt_idx              NUMBER;
24578 l_acc_rev_flag                VARCHAR2(1);
24579 l_accrual_line_num            NUMBER;
24580 l_tmp_amt                     NUMBER;
24581 l_acc_rev_natural_side_code   VARCHAR2(1);
24582 
24583 l_num_entries                 NUMBER;
24584 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24585 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24586 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24587 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24588 l_recog_line_1                NUMBER;
24589 l_recog_line_2                NUMBER;
24590 
24591 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24592 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24593 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24594 
24595 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24596 
24597 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24598 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24599 
24600 ---------------------------------------------------------------------------------------------------------------
24601 
24602 
24603 --
24604 -- bulk performance
24605 --
24606 l_balance_type_code           VARCHAR2(1);
24607 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24608 l_log_module                  VARCHAR2(240);
24609 
24610 --
24611 -- Upgrade strategy
24612 --
24613 l_actual_upg_option           VARCHAR2(1);
24614 l_enc_upg_option           VARCHAR2(1);
24615 
24616 --
24617 BEGIN
24618 --
24619 IF g_log_enabled THEN
24620       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_62';
24621 END IF;
24622 --
24623 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24624 
24625       trace
24626          (p_msg      => 'BEGIN of AcctLineType_62'
24627          ,p_level    => C_LEVEL_PROCEDURE
24628          ,p_module   => l_log_module);
24629 
24630 END IF;
24631 --
24632 l_component_type             := 'AMB_JLT';
24633 l_component_code             := 'DM_CHARGES';
24634 l_component_type_code        := 'S';
24638 l_event_class_code           := 'DEBIT_MEMO';
24635 l_component_appl_id          :=  222;
24636 l_amb_context_code           := 'DEFAULT';
24637 l_entity_code                := 'TRANSACTIONS';
24639 l_event_type_code            := 'DEBIT_MEMO_ALL';
24640 l_line_definition_owner_code := 'S';
24641 l_line_definition_code       := 'JA_CN_AR_DM_DEFAULT_ACCRUAL';
24642 --
24643 l_balance_type_code          := 'A';
24644 l_segment                     := NULL;
24645 l_ccid                        := NULL;
24646 l_adr_transaction_coa_id      := NULL;
24647 l_adr_accounting_coa_id       := NULL;
24648 l_adr_flexfield_segment_code  := NULL;
24649 l_adr_flex_value_set_id       := NULL;
24650 l_adr_value_type_code         := NULL;
24651 l_adr_value_combination_id    := NULL;
24652 l_adr_value_segment_code      := NULL;
24653 
24654 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
24655 l_bflow_class_code           := '';    -- 4219869 Business Flow
24656 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24657 l_budgetary_control_flag     := 'N';
24658 
24659 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24660 l_bflow_applied_to_amt       := NULL; -- 5132302
24661 l_entered_amt_idx            := NULL;          -- 4262811
24662 l_accted_amt_idx             := NULL;          -- 4262811
24663 l_acc_rev_flag               := NULL;          -- 4262811
24664 l_accrual_line_num           := NULL;          -- 4262811
24665 l_tmp_amt                    := NULL;          -- 4262811
24666 --
24667  
24668 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24669     l_balance_type_code <> 'B' THEN
24670 IF NVL(p_source_43,'
24671 ') =  'CHARGES'
24672  THEN 
24673 
24674    --
24675    XLA_AE_LINES_PKG.SetNewLine;
24676 
24677    p_balance_type_code          := l_balance_type_code;
24678    -- set the flag so later we will know whether the gain loss line needs to be created
24679    
24680    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24681      p_actual_flag :='A';
24682    END IF;
24683 
24684    --
24685    -- bulk performance
24686    --
24687    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24688                                       p_header_num   => 0); -- 4262811
24689    --
24690    -- set accounting line options
24691    --
24692    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24693            p_natural_side_code          => 'C'
24694          , p_gain_or_loss_flag          => 'N'
24695          , p_gl_transfer_mode_code      => 'S'
24696          , p_acct_entry_type_code       => 'A'
24697          , p_switch_side_flag           => 'Y'
24698          , p_merge_duplicate_code       => 'A'
24699          );
24700    --
24701    l_acc_rev_natural_side_code := 'D';  -- 4262811
24702    -- 
24703    --
24704    -- set accounting line type info
24705    --
24706    xla_ae_lines_pkg.SetAcctLineType
24707       (p_component_type             => l_component_type
24708       ,p_event_type_code            => l_event_type_code
24709       ,p_line_definition_owner_code => l_line_definition_owner_code
24710       ,p_line_definition_code       => l_line_definition_code
24711       ,p_accounting_line_code       => l_component_code
24712       ,p_accounting_line_type_code  => l_component_type_code
24713       ,p_accounting_line_appl_id    => l_component_appl_id
24714       ,p_amb_context_code           => l_amb_context_code
24715       ,p_entity_code                => l_entity_code
24716       ,p_event_class_code           => l_event_class_code);
24717    --
24718    -- set accounting class
24719    --
24720    xla_ae_lines_pkg.SetAcctClass(
24721            p_accounting_class_code  => 'CHARGES'
24722          , p_ae_header_id           => l_ae_header_id
24723          );
24724 
24725    --
24726    -- set rounding class
24727    --
24728    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24729                       'RECEIVABLE';
24730 
24731    --
24732    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24733    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24734    --
24735    -- bulk performance
24736    --
24737    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24738 
24739    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24740       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24741 
24742    -- 4955764
24743    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24744       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24745 
24746    -- 4458381 Public Sector Enh
24747    
24748    --
24749    -- set accounting attributes for the line type
24750    --
24751    l_entered_amt_idx := 3;
24752    l_accted_amt_idx  := 8;
24753    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24754    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
24755    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
24756    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
24757    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
24758    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
24759    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
24763    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
24760    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
24761    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
24762    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
24764    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
24765    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
24766    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
24767    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
24768    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
24769    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
24770    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
24771    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
24772    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
24773    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
24774    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
24775    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
24776    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
24777    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
24778 
24779    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24780    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24781 
24782    ---------------------------------------------------------------------------------------------------------------
24783    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24784    ---------------------------------------------------------------------------------------------------------------
24785    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24786 
24787    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24788    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24789 
24790    IF xla_accounting_cache_pkg.GetValueChar
24791          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24792          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24793    AND l_bflow_method_code = 'PRIOR_ENTRY'
24794 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24795    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24796          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24797        )
24798    THEN
24799          xla_ae_lines_pkg.BflowUpgEntry
24800            (p_business_method_code    => l_bflow_method_code
24801            ,p_business_class_code     => l_bflow_class_code
24802            ,p_balance_type            => l_balance_type_code);
24803    ELSE
24804       NULL;
24805 -- No business flow processing for business flow method of NONE.
24806    END IF;
24807 
24808    --
24809    -- call analytical criteria
24810    --
24811    
24812    --
24813    -- call description
24814    --
24815    -- No description or it is inherited.
24816    --
24817    -- call ADRs
24818    -- Bug 4922099
24819    --
24820    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24821         (NVL(l_actual_upg_option, 'N') = 'O') OR
24822         (NVL(l_enc_upg_option, 'N') = 'O')
24823       )
24824    THEN
24825    NULL;
24826    --
24827    --
24828    
24829   l_ccid := AcctDerRule_24(
24830            p_application_id           => p_application_id
24831          , p_ae_header_id             => l_ae_header_id 
24832 , p_source_26 => p_source_26
24833          , x_transaction_coa_id       => l_adr_transaction_coa_id
24834          , x_accounting_coa_id        => l_adr_accounting_coa_id
24835          , x_value_type_code          => l_adr_value_type_code
24836          , p_side                     => 'NA'
24837    );
24838 
24839    xla_ae_lines_pkg.set_ccid(
24840     p_code_combination_id          => l_ccid
24841   , p_value_type_code              => l_adr_value_type_code
24842   , p_transaction_coa_id           => l_adr_transaction_coa_id
24843   , p_accounting_coa_id            => l_adr_accounting_coa_id
24844   , p_adr_code                     => 'TRX_DIST_CCID'
24845   , p_adr_type_code                => 'S'
24846   , p_component_type               => l_component_type
24847   , p_component_code               => l_component_code
24848   , p_component_type_code          => l_component_type_code
24849   , p_component_appl_id            => l_component_appl_id
24850   , p_amb_context_code             => l_amb_context_code
24851   , p_side                         => 'NA'
24852   );
24853 
24854 
24855    --
24856    --
24857    END IF;
24858    --
24859    -- Bug 4922099
24860    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24861           (NVL(l_enc_upg_option, 'N') = 'O')
24862         ) AND
24863         (l_bflow_method_code = 'PRIOR_ENTRY')
24864       )
24865    THEN
24866       IF
24867       --
24868       1 = 2
24869       --
24870       THEN
24871       xla_accounting_err_pkg.build_message
24872                                     (p_appli_s_name            => 'XLA'
24873                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24874                                     ,p_token_1                 => 'LINE_NUMBER'
24875                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24879                                                                             ,l_component_code
24876                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24877                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24878                                                                              l_component_type
24880                                                                             ,l_component_type_code
24881                                                                             ,l_component_appl_id
24882                                                                             ,l_amb_context_code
24883                                                                             ,l_entity_code
24884                                                                             ,l_event_class_code
24885                                                                            )
24886                                     ,p_token_3                 => 'OWNER'
24887                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24888                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24889                                                                           ,p_lookup_code    => l_component_type_code
24890                                                                          )
24891                                     ,p_token_4                 => 'PRODUCT_NAME'
24892                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24893                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24894                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24895                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24896                                     ,p_ae_header_id            =>  NULL
24897                                        );
24898 
24899         IF (C_LEVEL_ERROR>= g_log_level) THEN
24900                  trace
24901                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24902                       ,p_level    => C_LEVEL_ERROR
24903                       ,p_module   => l_log_module);
24904         END IF;
24905       END IF;
24906    END IF;
24907    --
24908    --
24909    ------------------------------------------------------------------------------------------------
24910    -- 4219869 Business Flow
24911    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24912    -- Prior Entry.  Currently, the following code is always generated.
24913    ------------------------------------------------------------------------------------------------
24914    XLA_AE_LINES_PKG.ValidateCurrentLine;
24915 
24916    ------------------------------------------------------------------------------------
24917    -- 4219869 Business Flow
24918    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24919    ------------------------------------------------------------------------------------
24920    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24921 
24922    ----------------------------------------------------------------------------------
24923    -- 4219869 Business Flow
24924    -- Update journal entry status -- Need to generate this within IF <condition>
24925    ----------------------------------------------------------------------------------
24926    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24927          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24928          ,p_balance_type_code => l_balance_type_code
24929          );
24930 
24931    -------------------------------------------------------------------------------------------
24932    -- 4262811 - Generate the Accrual Reversal lines
24933    -------------------------------------------------------------------------------------------
24934    BEGIN
24935       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24936                               (g_array_event(p_event_id).array_value_num('header_index'));
24937       IF l_acc_rev_flag IS NULL THEN
24938          l_acc_rev_flag := 'N';
24939       END IF;
24940    EXCEPTION
24941       WHEN OTHERS THEN
24942          l_acc_rev_flag := 'N';
24943    END;
24944    --
24945    IF (l_acc_rev_flag = 'Y') THEN
24946 
24947        -- 4645092  ------------------------------------------------------------------------------
24948        -- To allow MPA report to determine if it should generate report process
24949        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24950        ------------------------------------------------------------------------------------------
24951 
24952        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24953        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24954    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
24955    -- call ADRs
24956    -- Bug 4922099
24957    --
24958    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24959         (NVL(l_actual_upg_option, 'N') = 'O') OR
24960         (NVL(l_enc_upg_option, 'N') = 'O')
24961       )
24962    THEN
24963    NULL;
24964    --
24965    --
24966    
24967   l_ccid := AcctDerRule_24(
24968            p_application_id           => p_application_id
24969          , p_ae_header_id             => l_ae_header_id 
24970 , p_source_26 => p_source_26
24974          , p_side                     => 'NA'
24971          , x_transaction_coa_id       => l_adr_transaction_coa_id
24972          , x_accounting_coa_id        => l_adr_accounting_coa_id
24973          , x_value_type_code          => l_adr_value_type_code
24975    );
24976 
24977    xla_ae_lines_pkg.set_ccid(
24978     p_code_combination_id          => l_ccid
24979   , p_value_type_code              => l_adr_value_type_code
24980   , p_transaction_coa_id           => l_adr_transaction_coa_id
24981   , p_accounting_coa_id            => l_adr_accounting_coa_id
24982   , p_adr_code                     => 'TRX_DIST_CCID'
24983   , p_adr_type_code                => 'S'
24984   , p_component_type               => l_component_type
24985   , p_component_code               => l_component_code
24986   , p_component_type_code          => l_component_type_code
24987   , p_component_appl_id            => l_component_appl_id
24988   , p_amb_context_code             => l_amb_context_code
24989   , p_side                         => 'NA'
24990   );
24991 
24992 
24993    --
24994    --
24995    END IF;
24996 
24997        --
24998        -- Update the line information that should be overwritten
24999        --
25000        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25001                                          p_header_num   => 1);
25002        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25003 
25004        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25005 
25006        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25007           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25008        END IF;
25009 
25010       --
25011       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25012       --
25013       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25014           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25015       ELSE
25016           ---------------------------------------------------------------------------------------------------
25017           -- 4262811a Switch Sign
25018           ---------------------------------------------------------------------------------------------------
25019           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25020           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25021                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25022           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25023                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25024           -- 5132302
25025           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25026                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25027 
25028       END IF;
25029 
25030       -- 4955764
25031       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25032       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25033 
25034 
25035       XLA_AE_LINES_PKG.ValidateCurrentLine;
25036       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25037 
25038       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25039                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25040                ,p_balance_type_code => l_balance_type_code);
25041 
25042    END IF;
25043 
25044    -----------------------------------------------------------------------------------------
25045    -- 4262811 Multiperiod Accounting
25046    -----------------------------------------------------------------------------------------
25047      -- No MPA option is assigned.
25048 
25049 
25050 END IF;
25051 END IF;
25052 --
25053 
25054 --
25055 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25056    trace
25057       (p_msg      => 'END of AcctLineType_62'
25058       ,p_level    => C_LEVEL_PROCEDURE
25059       ,p_module   => l_log_module);
25060 END IF;
25061 --
25062 EXCEPTION
25063   WHEN xla_exceptions_pkg.application_exception THEN
25064       RAISE;
25065   WHEN OTHERS THEN
25066        xla_exceptions_pkg.raise_message
25067            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_62');
25068 END AcctLineType_62;
25069 --
25070 
25071 ---------------------------------------
25072 --
25073 -- PRIVATE FUNCTION
25074 --         AcctLineType_63
25075 --
25076 ---------------------------------------
25077 PROCEDURE AcctLineType_63 (
25078   p_application_id        IN NUMBER
25079  ,p_event_id              IN NUMBER
25080  ,p_calculate_acctd_flag  IN VARCHAR2
25081  ,p_calculate_g_l_flag    IN VARCHAR2
25082  ,p_actual_flag           IN OUT VARCHAR2
25083  ,p_balance_type_code     OUT VARCHAR2
25084  ,p_gain_or_loss_ref      OUT VARCHAR2
25085  
25086 --Transaction Distribution GL Account
25087  , p_source_26            IN NUMBER
25088 --Bill To Customer Account Identifier
25089  , p_source_37            IN NUMBER
25093  , p_source_39            IN VARCHAR2
25090 --Bill To Customer Site Use Identifier
25091  , p_source_38            IN NUMBER
25092 --SLA Party Type
25094 --Transaction Distribution Account Class
25095  , p_source_43            IN VARCHAR2
25096 --Transaction Distribution Identifier
25097  , p_source_44            IN NUMBER
25098 --Transaction Distribution Type
25099  , p_source_45            IN VARCHAR2
25100 --Transaction Distribution Entered Amount
25101  , p_source_46            IN NUMBER
25102 --Transaction Currency Code
25103  , p_source_47            IN VARCHAR2
25104 --Transaction Exchange Date
25105  , p_source_48            IN DATE
25106 --Transaction Exchange Rate
25107  , p_source_49            IN NUMBER
25108 --Transaction Exchange Rate Type
25109  , p_source_50            IN VARCHAR2
25110 --Transaction Accounting Amount
25111  , p_source_51            IN NUMBER
25112 --Transaction Tax Line Identifier
25113  , p_source_86            IN NUMBER
25114 )
25115 IS
25116 
25117 l_component_type              VARCHAR2(80);
25118 l_component_code              VARCHAR2(30);
25119 l_component_type_code         VARCHAR2(1);
25120 l_component_appl_id           INTEGER;
25121 l_amb_context_code            VARCHAR2(30);
25122 l_entity_code                 VARCHAR2(30);
25123 l_event_class_code            VARCHAR2(30);
25124 l_ae_header_id                NUMBER;
25125 l_event_type_code             VARCHAR2(30);
25126 l_line_definition_code        VARCHAR2(30);
25127 l_line_definition_owner_code  VARCHAR2(1);
25128 --
25129 -- adr variables
25130 l_segment                     VARCHAR2(30);
25131 l_ccid                        NUMBER;
25132 l_adr_transaction_coa_id      NUMBER;
25133 l_adr_accounting_coa_id       NUMBER;
25134 l_adr_flexfield_segment_code  VARCHAR2(30);
25135 l_adr_flex_value_set_id       NUMBER;
25136 l_adr_value_type_code         VARCHAR2(30);
25137 l_adr_value_combination_id    NUMBER;
25138 l_adr_value_segment_code      VARCHAR2(30);
25139 
25140 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25141 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25142 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25143 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25144 
25145 -- 4262811 Variables ------------------------------------------------------------------------------------------
25146 l_entered_amt_idx             NUMBER;
25147 l_accted_amt_idx              NUMBER;
25148 l_acc_rev_flag                VARCHAR2(1);
25149 l_accrual_line_num            NUMBER;
25150 l_tmp_amt                     NUMBER;
25151 l_acc_rev_natural_side_code   VARCHAR2(1);
25152 
25153 l_num_entries                 NUMBER;
25154 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25155 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25156 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25157 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25158 l_recog_line_1                NUMBER;
25159 l_recog_line_2                NUMBER;
25160 
25161 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25162 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25163 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25164 
25165 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25166 
25167 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25168 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25169 
25170 ---------------------------------------------------------------------------------------------------------------
25171 
25172 
25173 --
25174 -- bulk performance
25175 --
25176 l_balance_type_code           VARCHAR2(1);
25177 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25178 l_log_module                  VARCHAR2(240);
25179 
25180 --
25181 -- Upgrade strategy
25182 --
25183 l_actual_upg_option           VARCHAR2(1);
25184 l_enc_upg_option           VARCHAR2(1);
25185 
25186 --
25187 BEGIN
25188 --
25189 IF g_log_enabled THEN
25190       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_63';
25191 END IF;
25192 --
25193 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25194 
25195       trace
25196          (p_msg      => 'BEGIN of AcctLineType_63'
25197          ,p_level    => C_LEVEL_PROCEDURE
25198          ,p_module   => l_log_module);
25199 
25200 END IF;
25201 --
25202 l_component_type             := 'AMB_JLT';
25203 l_component_code             := 'DM_DEFAULT_REC';
25204 l_component_type_code        := 'S';
25205 l_component_appl_id          :=  222;
25206 l_amb_context_code           := 'DEFAULT';
25207 l_entity_code                := 'TRANSACTIONS';
25208 l_event_class_code           := 'DEBIT_MEMO';
25209 l_event_type_code            := 'DEBIT_MEMO_ALL';
25210 l_line_definition_owner_code := 'S';
25211 l_line_definition_code       := 'JA_CN_AR_DM_DEFAULT_ACCRUAL';
25212 --
25213 l_balance_type_code          := 'A';
25214 l_segment                     := NULL;
25215 l_ccid                        := NULL;
25216 l_adr_transaction_coa_id      := NULL;
25217 l_adr_accounting_coa_id       := NULL;
25218 l_adr_flexfield_segment_code  := NULL;
25219 l_adr_flex_value_set_id       := NULL;
25223 
25220 l_adr_value_type_code         := NULL;
25221 l_adr_value_combination_id    := NULL;
25222 l_adr_value_segment_code      := NULL;
25224 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25225 l_bflow_class_code           := '';    -- 4219869 Business Flow
25226 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25227 l_budgetary_control_flag     := 'N';
25228 
25229 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25230 l_bflow_applied_to_amt       := NULL; -- 5132302
25231 l_entered_amt_idx            := NULL;          -- 4262811
25232 l_accted_amt_idx             := NULL;          -- 4262811
25233 l_acc_rev_flag               := NULL;          -- 4262811
25234 l_accrual_line_num           := NULL;          -- 4262811
25235 l_tmp_amt                    := NULL;          -- 4262811
25236 --
25237  
25238 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25239     l_balance_type_code <> 'B' THEN
25240 IF NVL(p_source_43,'
25241 ') =  'REC'
25242  THEN 
25243 
25244    --
25245    XLA_AE_LINES_PKG.SetNewLine;
25246 
25247    p_balance_type_code          := l_balance_type_code;
25248    -- set the flag so later we will know whether the gain loss line needs to be created
25249    
25250    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25251      p_actual_flag :='A';
25252    END IF;
25253 
25254    --
25255    -- bulk performance
25256    --
25257    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25258                                       p_header_num   => 0); -- 4262811
25259    --
25260    -- set accounting line options
25261    --
25262    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25263            p_natural_side_code          => 'D'
25264          , p_gain_or_loss_flag          => 'N'
25265          , p_gl_transfer_mode_code      => 'S'
25266          , p_acct_entry_type_code       => 'A'
25267          , p_switch_side_flag           => 'Y'
25268          , p_merge_duplicate_code       => 'A'
25269          );
25270    --
25271    l_acc_rev_natural_side_code := 'C';  -- 4262811
25272    -- 
25273    --
25274    -- set accounting line type info
25275    --
25276    xla_ae_lines_pkg.SetAcctLineType
25277       (p_component_type             => l_component_type
25278       ,p_event_type_code            => l_event_type_code
25279       ,p_line_definition_owner_code => l_line_definition_owner_code
25280       ,p_line_definition_code       => l_line_definition_code
25281       ,p_accounting_line_code       => l_component_code
25282       ,p_accounting_line_type_code  => l_component_type_code
25283       ,p_accounting_line_appl_id    => l_component_appl_id
25284       ,p_amb_context_code           => l_amb_context_code
25285       ,p_entity_code                => l_entity_code
25286       ,p_event_class_code           => l_event_class_code);
25287    --
25288    -- set accounting class
25289    --
25290    xla_ae_lines_pkg.SetAcctClass(
25291            p_accounting_class_code  => 'RECEIVABLE'
25292          , p_ae_header_id           => l_ae_header_id
25293          );
25294 
25295    --
25296    -- set rounding class
25297    --
25298    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25299                       'RECEIVABLE';
25300 
25301    --
25302    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25303    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25304    --
25305    -- bulk performance
25306    --
25307    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25308 
25309    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25310       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25311 
25312    -- 4955764
25313    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25314       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25315 
25316    -- 4458381 Public Sector Enh
25317    
25318    --
25319    -- set accounting attributes for the line type
25320    --
25321    l_entered_amt_idx := 3;
25322    l_accted_amt_idx  := 8;
25323    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25324    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25325    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
25326    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25327    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
25328    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25329    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
25330    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25331    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
25332    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25333    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
25334    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25335    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
25336    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
25337    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
25338    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
25339    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
25343    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
25340    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
25341    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
25342    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
25344    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
25345    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
25346    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
25347    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
25348 
25349    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25350    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25351 
25352    ---------------------------------------------------------------------------------------------------------------
25353    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25354    ---------------------------------------------------------------------------------------------------------------
25355    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25356 
25357    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25358    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25359 
25360    IF xla_accounting_cache_pkg.GetValueChar
25361          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25362          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25363    AND l_bflow_method_code = 'PRIOR_ENTRY'
25364 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25365    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25366          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25367        )
25368    THEN
25369          xla_ae_lines_pkg.BflowUpgEntry
25370            (p_business_method_code    => l_bflow_method_code
25371            ,p_business_class_code     => l_bflow_class_code
25372            ,p_balance_type            => l_balance_type_code);
25373    ELSE
25374       NULL;
25375 -- No business flow processing for business flow method of NONE.
25376    END IF;
25377 
25378    --
25379    -- call analytical criteria
25380    --
25381    
25382    --
25383    -- call description
25384    --
25385    -- No description or it is inherited.
25386    --
25387    -- call ADRs
25388    -- Bug 4922099
25389    --
25390    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25391         (NVL(l_actual_upg_option, 'N') = 'O') OR
25392         (NVL(l_enc_upg_option, 'N') = 'O')
25393       )
25394    THEN
25395    NULL;
25396    --
25397    --
25398    
25399   l_ccid := AcctDerRule_24(
25400            p_application_id           => p_application_id
25401          , p_ae_header_id             => l_ae_header_id 
25402 , p_source_26 => p_source_26
25403          , x_transaction_coa_id       => l_adr_transaction_coa_id
25404          , x_accounting_coa_id        => l_adr_accounting_coa_id
25405          , x_value_type_code          => l_adr_value_type_code
25406          , p_side                     => 'NA'
25407    );
25408 
25409    xla_ae_lines_pkg.set_ccid(
25410     p_code_combination_id          => l_ccid
25411   , p_value_type_code              => l_adr_value_type_code
25412   , p_transaction_coa_id           => l_adr_transaction_coa_id
25413   , p_accounting_coa_id            => l_adr_accounting_coa_id
25414   , p_adr_code                     => 'TRX_DIST_CCID'
25415   , p_adr_type_code                => 'S'
25416   , p_component_type               => l_component_type
25417   , p_component_code               => l_component_code
25418   , p_component_type_code          => l_component_type_code
25419   , p_component_appl_id            => l_component_appl_id
25420   , p_amb_context_code             => l_amb_context_code
25421   , p_side                         => 'NA'
25422   );
25423 
25424 
25425    --
25426    --
25427    END IF;
25428    --
25429    -- Bug 4922099
25430    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25431           (NVL(l_enc_upg_option, 'N') = 'O')
25432         ) AND
25433         (l_bflow_method_code = 'PRIOR_ENTRY')
25434       )
25435    THEN
25436       IF
25437       --
25438       1 = 2
25439       --
25440       THEN
25441       xla_accounting_err_pkg.build_message
25442                                     (p_appli_s_name            => 'XLA'
25443                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25444                                     ,p_token_1                 => 'LINE_NUMBER'
25445                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25446                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25447                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25448                                                                              l_component_type
25449                                                                             ,l_component_code
25450                                                                             ,l_component_type_code
25451                                                                             ,l_component_appl_id
25452                                                                             ,l_amb_context_code
25453                                                                             ,l_entity_code
25457                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25454                                                                             ,l_event_class_code
25455                                                                            )
25456                                     ,p_token_3                 => 'OWNER'
25458                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25459                                                                           ,p_lookup_code    => l_component_type_code
25460                                                                          )
25461                                     ,p_token_4                 => 'PRODUCT_NAME'
25462                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25463                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25464                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25465                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25466                                     ,p_ae_header_id            =>  NULL
25467                                        );
25468 
25469         IF (C_LEVEL_ERROR>= g_log_level) THEN
25470                  trace
25471                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25472                       ,p_level    => C_LEVEL_ERROR
25473                       ,p_module   => l_log_module);
25474         END IF;
25475       END IF;
25476    END IF;
25477    --
25478    --
25479    ------------------------------------------------------------------------------------------------
25480    -- 4219869 Business Flow
25481    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25482    -- Prior Entry.  Currently, the following code is always generated.
25483    ------------------------------------------------------------------------------------------------
25484    XLA_AE_LINES_PKG.ValidateCurrentLine;
25485 
25486    ------------------------------------------------------------------------------------
25487    -- 4219869 Business Flow
25488    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25489    ------------------------------------------------------------------------------------
25490    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25491 
25492    ----------------------------------------------------------------------------------
25493    -- 4219869 Business Flow
25494    -- Update journal entry status -- Need to generate this within IF <condition>
25495    ----------------------------------------------------------------------------------
25496    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25497          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25498          ,p_balance_type_code => l_balance_type_code
25499          );
25500 
25501    -------------------------------------------------------------------------------------------
25502    -- 4262811 - Generate the Accrual Reversal lines
25503    -------------------------------------------------------------------------------------------
25504    BEGIN
25505       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25506                               (g_array_event(p_event_id).array_value_num('header_index'));
25507       IF l_acc_rev_flag IS NULL THEN
25508          l_acc_rev_flag := 'N';
25509       END IF;
25510    EXCEPTION
25511       WHEN OTHERS THEN
25512          l_acc_rev_flag := 'N';
25513    END;
25514    --
25515    IF (l_acc_rev_flag = 'Y') THEN
25516 
25517        -- 4645092  ------------------------------------------------------------------------------
25518        -- To allow MPA report to determine if it should generate report process
25519        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25520        ------------------------------------------------------------------------------------------
25521 
25522        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25523        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25524    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
25525    -- call ADRs
25526    -- Bug 4922099
25527    --
25528    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25529         (NVL(l_actual_upg_option, 'N') = 'O') OR
25530         (NVL(l_enc_upg_option, 'N') = 'O')
25531       )
25532    THEN
25533    NULL;
25534    --
25535    --
25536    
25537   l_ccid := AcctDerRule_24(
25538            p_application_id           => p_application_id
25539          , p_ae_header_id             => l_ae_header_id 
25540 , p_source_26 => p_source_26
25541          , x_transaction_coa_id       => l_adr_transaction_coa_id
25542          , x_accounting_coa_id        => l_adr_accounting_coa_id
25543          , x_value_type_code          => l_adr_value_type_code
25544          , p_side                     => 'NA'
25545    );
25546 
25547    xla_ae_lines_pkg.set_ccid(
25548     p_code_combination_id          => l_ccid
25549   , p_value_type_code              => l_adr_value_type_code
25550   , p_transaction_coa_id           => l_adr_transaction_coa_id
25551   , p_accounting_coa_id            => l_adr_accounting_coa_id
25552   , p_adr_code                     => 'TRX_DIST_CCID'
25553   , p_adr_type_code                => 'S'
25554   , p_component_type               => l_component_type
25558   , p_amb_context_code             => l_amb_context_code
25555   , p_component_code               => l_component_code
25556   , p_component_type_code          => l_component_type_code
25557   , p_component_appl_id            => l_component_appl_id
25559   , p_side                         => 'NA'
25560   );
25561 
25562 
25563    --
25564    --
25565    END IF;
25566 
25567        --
25568        -- Update the line information that should be overwritten
25569        --
25570        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25571                                          p_header_num   => 1);
25572        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25573 
25574        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25575 
25576        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25577           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25578        END IF;
25579 
25580       --
25581       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25582       --
25583       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25584           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25585       ELSE
25586           ---------------------------------------------------------------------------------------------------
25587           -- 4262811a Switch Sign
25588           ---------------------------------------------------------------------------------------------------
25589           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25590           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25591                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25592           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25593                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25594           -- 5132302
25595           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25596                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25597 
25598       END IF;
25599 
25600       -- 4955764
25601       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25602       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25603 
25604 
25605       XLA_AE_LINES_PKG.ValidateCurrentLine;
25606       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25607 
25608       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25609                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25610                ,p_balance_type_code => l_balance_type_code);
25611 
25612    END IF;
25613 
25614    -----------------------------------------------------------------------------------------
25615    -- 4262811 Multiperiod Accounting
25616    -----------------------------------------------------------------------------------------
25617      -- No MPA option is assigned.
25618 
25619 
25620 END IF;
25621 END IF;
25622 --
25623 
25624 --
25625 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25626    trace
25627       (p_msg      => 'END of AcctLineType_63'
25628       ,p_level    => C_LEVEL_PROCEDURE
25629       ,p_module   => l_log_module);
25630 END IF;
25631 --
25632 EXCEPTION
25633   WHEN xla_exceptions_pkg.application_exception THEN
25634       RAISE;
25635   WHEN OTHERS THEN
25636        xla_exceptions_pkg.raise_message
25637            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_63');
25638 END AcctLineType_63;
25639 --
25640 
25641 ---------------------------------------
25642 --
25643 -- PRIVATE FUNCTION
25644 --         AcctLineType_64
25645 --
25646 ---------------------------------------
25647 PROCEDURE AcctLineType_64 (
25648   p_application_id        IN NUMBER
25649  ,p_event_id              IN NUMBER
25650  ,p_calculate_acctd_flag  IN VARCHAR2
25651  ,p_calculate_g_l_flag    IN VARCHAR2
25652  ,p_actual_flag           IN OUT VARCHAR2
25653  ,p_balance_type_code     OUT VARCHAR2
25654  ,p_gain_or_loss_ref      OUT VARCHAR2
25655  
25656 --Transaction Distribution GL Account
25657  , p_source_26            IN NUMBER
25658 --Bill To Customer Account Identifier
25659  , p_source_37            IN NUMBER
25660 --Bill To Customer Site Use Identifier
25661  , p_source_38            IN NUMBER
25662 --SLA Party Type
25663  , p_source_39            IN VARCHAR2
25664 --Transaction Distribution Account Class
25665  , p_source_43            IN VARCHAR2
25666 --Transaction Distribution Identifier
25667  , p_source_44            IN NUMBER
25668 --Transaction Distribution Type
25669  , p_source_45            IN VARCHAR2
25670 --Transaction Distribution Entered Amount
25671  , p_source_46            IN NUMBER
25672 --Transaction Currency Code
25673  , p_source_47            IN VARCHAR2
25674 --Transaction Exchange Date
25675  , p_source_48            IN DATE
25676 --Transaction Exchange Rate
25677  , p_source_49            IN NUMBER
25681  , p_source_51            IN NUMBER
25678 --Transaction Exchange Rate Type
25679  , p_source_50            IN VARCHAR2
25680 --Transaction Accounting Amount
25682 --Transaction Tax Line Identifier
25683  , p_source_86            IN NUMBER
25684 )
25685 IS
25686 
25687 l_component_type              VARCHAR2(80);
25688 l_component_code              VARCHAR2(30);
25689 l_component_type_code         VARCHAR2(1);
25690 l_component_appl_id           INTEGER;
25691 l_amb_context_code            VARCHAR2(30);
25692 l_entity_code                 VARCHAR2(30);
25693 l_event_class_code            VARCHAR2(30);
25694 l_ae_header_id                NUMBER;
25695 l_event_type_code             VARCHAR2(30);
25696 l_line_definition_code        VARCHAR2(30);
25697 l_line_definition_owner_code  VARCHAR2(1);
25698 --
25699 -- adr variables
25700 l_segment                     VARCHAR2(30);
25701 l_ccid                        NUMBER;
25702 l_adr_transaction_coa_id      NUMBER;
25703 l_adr_accounting_coa_id       NUMBER;
25704 l_adr_flexfield_segment_code  VARCHAR2(30);
25705 l_adr_flex_value_set_id       NUMBER;
25706 l_adr_value_type_code         VARCHAR2(30);
25707 l_adr_value_combination_id    NUMBER;
25708 l_adr_value_segment_code      VARCHAR2(30);
25709 
25710 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25711 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25712 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25713 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25714 
25715 -- 4262811 Variables ------------------------------------------------------------------------------------------
25716 l_entered_amt_idx             NUMBER;
25717 l_accted_amt_idx              NUMBER;
25718 l_acc_rev_flag                VARCHAR2(1);
25719 l_accrual_line_num            NUMBER;
25720 l_tmp_amt                     NUMBER;
25721 l_acc_rev_natural_side_code   VARCHAR2(1);
25722 
25723 l_num_entries                 NUMBER;
25724 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25725 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25726 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25727 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25728 l_recog_line_1                NUMBER;
25729 l_recog_line_2                NUMBER;
25730 
25731 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25732 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25733 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25734 
25735 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25736 
25737 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25738 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25739 
25740 ---------------------------------------------------------------------------------------------------------------
25741 
25742 
25743 --
25744 -- bulk performance
25745 --
25746 l_balance_type_code           VARCHAR2(1);
25747 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25748 l_log_module                  VARCHAR2(240);
25749 
25750 --
25751 -- Upgrade strategy
25752 --
25753 l_actual_upg_option           VARCHAR2(1);
25754 l_enc_upg_option           VARCHAR2(1);
25755 
25756 --
25757 BEGIN
25758 --
25759 IF g_log_enabled THEN
25760       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_64';
25761 END IF;
25762 --
25763 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25764 
25765       trace
25766          (p_msg      => 'BEGIN of AcctLineType_64'
25767          ,p_level    => C_LEVEL_PROCEDURE
25768          ,p_module   => l_log_module);
25769 
25770 END IF;
25771 --
25772 l_component_type             := 'AMB_JLT';
25773 l_component_code             := 'DM_FREIGHT';
25774 l_component_type_code        := 'S';
25775 l_component_appl_id          :=  222;
25776 l_amb_context_code           := 'DEFAULT';
25777 l_entity_code                := 'TRANSACTIONS';
25778 l_event_class_code           := 'DEBIT_MEMO';
25779 l_event_type_code            := 'DEBIT_MEMO_ALL';
25780 l_line_definition_owner_code := 'S';
25781 l_line_definition_code       := 'JA_CN_AR_DM_DEFAULT_ACCRUAL';
25782 --
25783 l_balance_type_code          := 'A';
25784 l_segment                     := NULL;
25785 l_ccid                        := NULL;
25786 l_adr_transaction_coa_id      := NULL;
25787 l_adr_accounting_coa_id       := NULL;
25788 l_adr_flexfield_segment_code  := NULL;
25789 l_adr_flex_value_set_id       := NULL;
25790 l_adr_value_type_code         := NULL;
25791 l_adr_value_combination_id    := NULL;
25792 l_adr_value_segment_code      := NULL;
25793 
25794 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25795 l_bflow_class_code           := '';    -- 4219869 Business Flow
25796 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25797 l_budgetary_control_flag     := 'N';
25798 
25799 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25800 l_bflow_applied_to_amt       := NULL; -- 5132302
25801 l_entered_amt_idx            := NULL;          -- 4262811
25802 l_accted_amt_idx             := NULL;          -- 4262811
25803 l_acc_rev_flag               := NULL;          -- 4262811
25804 l_accrual_line_num           := NULL;          -- 4262811
25805 l_tmp_amt                    := NULL;          -- 4262811
25806 --
25807  
25811 ') =  'FREIGHT'
25808 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25809     l_balance_type_code <> 'B' THEN
25810 IF NVL(p_source_43,'
25812  THEN 
25813 
25814    --
25815    XLA_AE_LINES_PKG.SetNewLine;
25816 
25817    p_balance_type_code          := l_balance_type_code;
25818    -- set the flag so later we will know whether the gain loss line needs to be created
25819    
25820    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25821      p_actual_flag :='A';
25822    END IF;
25823 
25824    --
25825    -- bulk performance
25826    --
25827    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25828                                       p_header_num   => 0); -- 4262811
25829    --
25830    -- set accounting line options
25831    --
25832    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25833            p_natural_side_code          => 'C'
25834          , p_gain_or_loss_flag          => 'N'
25835          , p_gl_transfer_mode_code      => 'S'
25836          , p_acct_entry_type_code       => 'A'
25837          , p_switch_side_flag           => 'Y'
25838          , p_merge_duplicate_code       => 'A'
25839          );
25840    --
25841    l_acc_rev_natural_side_code := 'D';  -- 4262811
25842    -- 
25843    --
25844    -- set accounting line type info
25845    --
25846    xla_ae_lines_pkg.SetAcctLineType
25847       (p_component_type             => l_component_type
25848       ,p_event_type_code            => l_event_type_code
25849       ,p_line_definition_owner_code => l_line_definition_owner_code
25850       ,p_line_definition_code       => l_line_definition_code
25851       ,p_accounting_line_code       => l_component_code
25852       ,p_accounting_line_type_code  => l_component_type_code
25853       ,p_accounting_line_appl_id    => l_component_appl_id
25854       ,p_amb_context_code           => l_amb_context_code
25855       ,p_entity_code                => l_entity_code
25856       ,p_event_class_code           => l_event_class_code);
25857    --
25858    -- set accounting class
25859    --
25860    xla_ae_lines_pkg.SetAcctClass(
25861            p_accounting_class_code  => 'FREIGHT'
25862          , p_ae_header_id           => l_ae_header_id
25863          );
25864 
25865    --
25866    -- set rounding class
25867    --
25868    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25869                       'RECEIVABLE';
25870 
25871    --
25872    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25873    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25874    --
25875    -- bulk performance
25876    --
25877    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25878 
25879    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25880       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25881 
25882    -- 4955764
25883    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25884       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25885 
25886    -- 4458381 Public Sector Enh
25887    
25888    --
25889    -- set accounting attributes for the line type
25890    --
25891    l_entered_amt_idx := 3;
25892    l_accted_amt_idx  := 8;
25893    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25894    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25895    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
25896    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25897    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
25898    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25899    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
25900    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25901    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
25902    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25903    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
25904    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25905    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
25906    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
25907    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
25908    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
25909    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
25910    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
25911    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
25912    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
25913    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
25914    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
25915    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
25916    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
25917    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
25918 
25919    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25920    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25921 
25922    ---------------------------------------------------------------------------------------------------------------
25926 
25923    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25924    ---------------------------------------------------------------------------------------------------------------
25925    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25927    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25928    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25929 
25930    IF xla_accounting_cache_pkg.GetValueChar
25931          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25932          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25933    AND l_bflow_method_code = 'PRIOR_ENTRY'
25934 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25935    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25936          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25937        )
25938    THEN
25939          xla_ae_lines_pkg.BflowUpgEntry
25940            (p_business_method_code    => l_bflow_method_code
25941            ,p_business_class_code     => l_bflow_class_code
25942            ,p_balance_type            => l_balance_type_code);
25943    ELSE
25944       NULL;
25945 -- No business flow processing for business flow method of NONE.
25946    END IF;
25947 
25948    --
25949    -- call analytical criteria
25950    --
25951    
25952    --
25953    -- call description
25954    --
25955    -- No description or it is inherited.
25956    --
25957    -- call ADRs
25958    -- Bug 4922099
25959    --
25960    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25961         (NVL(l_actual_upg_option, 'N') = 'O') OR
25962         (NVL(l_enc_upg_option, 'N') = 'O')
25963       )
25964    THEN
25965    NULL;
25966    --
25967    --
25968    
25969   l_ccid := AcctDerRule_24(
25970            p_application_id           => p_application_id
25971          , p_ae_header_id             => l_ae_header_id 
25972 , p_source_26 => p_source_26
25973          , x_transaction_coa_id       => l_adr_transaction_coa_id
25974          , x_accounting_coa_id        => l_adr_accounting_coa_id
25975          , x_value_type_code          => l_adr_value_type_code
25976          , p_side                     => 'NA'
25977    );
25978 
25979    xla_ae_lines_pkg.set_ccid(
25980     p_code_combination_id          => l_ccid
25981   , p_value_type_code              => l_adr_value_type_code
25982   , p_transaction_coa_id           => l_adr_transaction_coa_id
25983   , p_accounting_coa_id            => l_adr_accounting_coa_id
25984   , p_adr_code                     => 'TRX_DIST_CCID'
25985   , p_adr_type_code                => 'S'
25986   , p_component_type               => l_component_type
25987   , p_component_code               => l_component_code
25988   , p_component_type_code          => l_component_type_code
25989   , p_component_appl_id            => l_component_appl_id
25990   , p_amb_context_code             => l_amb_context_code
25991   , p_side                         => 'NA'
25992   );
25993 
25994 
25995    --
25996    --
25997    END IF;
25998    --
25999    -- Bug 4922099
26000    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26001           (NVL(l_enc_upg_option, 'N') = 'O')
26002         ) AND
26003         (l_bflow_method_code = 'PRIOR_ENTRY')
26004       )
26005    THEN
26006       IF
26007       --
26008       1 = 2
26009       --
26010       THEN
26011       xla_accounting_err_pkg.build_message
26012                                     (p_appli_s_name            => 'XLA'
26013                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26014                                     ,p_token_1                 => 'LINE_NUMBER'
26015                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26016                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26017                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26018                                                                              l_component_type
26019                                                                             ,l_component_code
26020                                                                             ,l_component_type_code
26021                                                                             ,l_component_appl_id
26022                                                                             ,l_amb_context_code
26023                                                                             ,l_entity_code
26024                                                                             ,l_event_class_code
26025                                                                            )
26026                                     ,p_token_3                 => 'OWNER'
26027                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26028                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26029                                                                           ,p_lookup_code    => l_component_type_code
26030                                                                          )
26031                                     ,p_token_4                 => 'PRODUCT_NAME'
26035                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26032                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26033                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26034                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26036                                     ,p_ae_header_id            =>  NULL
26037                                        );
26038 
26039         IF (C_LEVEL_ERROR>= g_log_level) THEN
26040                  trace
26041                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26042                       ,p_level    => C_LEVEL_ERROR
26043                       ,p_module   => l_log_module);
26044         END IF;
26045       END IF;
26046    END IF;
26047    --
26048    --
26049    ------------------------------------------------------------------------------------------------
26050    -- 4219869 Business Flow
26051    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26052    -- Prior Entry.  Currently, the following code is always generated.
26053    ------------------------------------------------------------------------------------------------
26054    XLA_AE_LINES_PKG.ValidateCurrentLine;
26055 
26056    ------------------------------------------------------------------------------------
26057    -- 4219869 Business Flow
26058    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26059    ------------------------------------------------------------------------------------
26060    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26061 
26062    ----------------------------------------------------------------------------------
26063    -- 4219869 Business Flow
26064    -- Update journal entry status -- Need to generate this within IF <condition>
26065    ----------------------------------------------------------------------------------
26066    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26067          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26068          ,p_balance_type_code => l_balance_type_code
26069          );
26070 
26071    -------------------------------------------------------------------------------------------
26072    -- 4262811 - Generate the Accrual Reversal lines
26073    -------------------------------------------------------------------------------------------
26074    BEGIN
26075       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26076                               (g_array_event(p_event_id).array_value_num('header_index'));
26077       IF l_acc_rev_flag IS NULL THEN
26078          l_acc_rev_flag := 'N';
26079       END IF;
26080    EXCEPTION
26081       WHEN OTHERS THEN
26082          l_acc_rev_flag := 'N';
26083    END;
26084    --
26085    IF (l_acc_rev_flag = 'Y') THEN
26086 
26087        -- 4645092  ------------------------------------------------------------------------------
26088        -- To allow MPA report to determine if it should generate report process
26089        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26090        ------------------------------------------------------------------------------------------
26091 
26092        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26093        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26094    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
26095    -- call ADRs
26096    -- Bug 4922099
26097    --
26098    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26099         (NVL(l_actual_upg_option, 'N') = 'O') OR
26100         (NVL(l_enc_upg_option, 'N') = 'O')
26101       )
26102    THEN
26103    NULL;
26104    --
26105    --
26106    
26107   l_ccid := AcctDerRule_24(
26108            p_application_id           => p_application_id
26109          , p_ae_header_id             => l_ae_header_id 
26110 , p_source_26 => p_source_26
26111          , x_transaction_coa_id       => l_adr_transaction_coa_id
26112          , x_accounting_coa_id        => l_adr_accounting_coa_id
26113          , x_value_type_code          => l_adr_value_type_code
26114          , p_side                     => 'NA'
26115    );
26116 
26117    xla_ae_lines_pkg.set_ccid(
26118     p_code_combination_id          => l_ccid
26119   , p_value_type_code              => l_adr_value_type_code
26120   , p_transaction_coa_id           => l_adr_transaction_coa_id
26121   , p_accounting_coa_id            => l_adr_accounting_coa_id
26122   , p_adr_code                     => 'TRX_DIST_CCID'
26123   , p_adr_type_code                => 'S'
26124   , p_component_type               => l_component_type
26125   , p_component_code               => l_component_code
26126   , p_component_type_code          => l_component_type_code
26127   , p_component_appl_id            => l_component_appl_id
26128   , p_amb_context_code             => l_amb_context_code
26129   , p_side                         => 'NA'
26130   );
26131 
26132 
26133    --
26134    --
26135    END IF;
26136 
26137        --
26138        -- Update the line information that should be overwritten
26139        --
26140        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26141                                          p_header_num   => 1);
26145 
26142        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26143 
26144        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26146        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26147           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26148        END IF;
26149 
26150       --
26151       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26152       --
26153       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26154           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26155       ELSE
26156           ---------------------------------------------------------------------------------------------------
26157           -- 4262811a Switch Sign
26158           ---------------------------------------------------------------------------------------------------
26159           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26160           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26161                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26162           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26163                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26164           -- 5132302
26165           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26166                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26167 
26168       END IF;
26169 
26170       -- 4955764
26171       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26172       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26173 
26174 
26175       XLA_AE_LINES_PKG.ValidateCurrentLine;
26176       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26177 
26178       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26179                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26180                ,p_balance_type_code => l_balance_type_code);
26181 
26182    END IF;
26183 
26184    -----------------------------------------------------------------------------------------
26185    -- 4262811 Multiperiod Accounting
26186    -----------------------------------------------------------------------------------------
26187      -- No MPA option is assigned.
26188 
26189 
26190 END IF;
26191 END IF;
26192 --
26193 
26194 --
26195 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26196    trace
26197       (p_msg      => 'END of AcctLineType_64'
26198       ,p_level    => C_LEVEL_PROCEDURE
26199       ,p_module   => l_log_module);
26200 END IF;
26201 --
26202 EXCEPTION
26203   WHEN xla_exceptions_pkg.application_exception THEN
26204       RAISE;
26205   WHEN OTHERS THEN
26206        xla_exceptions_pkg.raise_message
26207            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_64');
26208 END AcctLineType_64;
26209 --
26210 
26211 ---------------------------------------
26212 --
26213 -- PRIVATE FUNCTION
26214 --         AcctLineType_65
26215 --
26216 ---------------------------------------
26217 PROCEDURE AcctLineType_65 (
26218   p_application_id        IN NUMBER
26219  ,p_event_id              IN NUMBER
26220  ,p_calculate_acctd_flag  IN VARCHAR2
26221  ,p_calculate_g_l_flag    IN VARCHAR2
26222  ,p_actual_flag           IN OUT VARCHAR2
26223  ,p_balance_type_code     OUT VARCHAR2
26224  ,p_gain_or_loss_ref      OUT VARCHAR2
26225  
26226 --Transaction Distribution GL Account
26227  , p_source_26            IN NUMBER
26228 --Bill To Customer Account Identifier
26229  , p_source_37            IN NUMBER
26230 --Bill To Customer Site Use Identifier
26231  , p_source_38            IN NUMBER
26232 --SLA Party Type
26233  , p_source_39            IN VARCHAR2
26234 --Transaction Distribution Account Class
26235  , p_source_43            IN VARCHAR2
26236 --Transaction Distribution Identifier
26237  , p_source_44            IN NUMBER
26238 --Transaction Distribution Type
26239  , p_source_45            IN VARCHAR2
26240 --Transaction Distribution Entered Amount
26241  , p_source_46            IN NUMBER
26242 --Transaction Currency Code
26243  , p_source_47            IN VARCHAR2
26244 --Transaction Exchange Date
26245  , p_source_48            IN DATE
26246 --Transaction Exchange Rate
26247  , p_source_49            IN NUMBER
26248 --Transaction Exchange Rate Type
26249  , p_source_50            IN VARCHAR2
26250 --Transaction Accounting Amount
26251  , p_source_51            IN NUMBER
26252 --Transaction Line Flexfield Attribute 1
26253  , p_source_65            IN VARCHAR2
26254 --Transaction Tax Line Identifier
26255  , p_source_86            IN NUMBER
26256 )
26257 IS
26258 
26259 l_component_type              VARCHAR2(80);
26260 l_component_code              VARCHAR2(30);
26261 l_component_type_code         VARCHAR2(1);
26262 l_component_appl_id           INTEGER;
26263 l_amb_context_code            VARCHAR2(30);
26264 l_entity_code                 VARCHAR2(30);
26268 l_line_definition_code        VARCHAR2(30);
26265 l_event_class_code            VARCHAR2(30);
26266 l_ae_header_id                NUMBER;
26267 l_event_type_code             VARCHAR2(30);
26269 l_line_definition_owner_code  VARCHAR2(1);
26270 --
26271 -- adr variables
26272 l_segment                     VARCHAR2(30);
26273 l_ccid                        NUMBER;
26274 l_adr_transaction_coa_id      NUMBER;
26275 l_adr_accounting_coa_id       NUMBER;
26276 l_adr_flexfield_segment_code  VARCHAR2(30);
26277 l_adr_flex_value_set_id       NUMBER;
26278 l_adr_value_type_code         VARCHAR2(30);
26279 l_adr_value_combination_id    NUMBER;
26280 l_adr_value_segment_code      VARCHAR2(30);
26281 
26282 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26283 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26284 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26285 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26286 
26287 -- 4262811 Variables ------------------------------------------------------------------------------------------
26288 l_entered_amt_idx             NUMBER;
26289 l_accted_amt_idx              NUMBER;
26290 l_acc_rev_flag                VARCHAR2(1);
26291 l_accrual_line_num            NUMBER;
26292 l_tmp_amt                     NUMBER;
26293 l_acc_rev_natural_side_code   VARCHAR2(1);
26294 
26295 l_num_entries                 NUMBER;
26296 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26297 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26298 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26299 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26300 l_recog_line_1                NUMBER;
26301 l_recog_line_2                NUMBER;
26302 
26303 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26304 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26305 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26306 
26307 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26308 
26309 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26310 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26311 
26312 ---------------------------------------------------------------------------------------------------------------
26313 
26314 
26315 --
26316 -- bulk performance
26317 --
26318 l_balance_type_code           VARCHAR2(1);
26319 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26320 l_log_module                  VARCHAR2(240);
26321 
26322 --
26323 -- Upgrade strategy
26324 --
26325 l_actual_upg_option           VARCHAR2(1);
26326 l_enc_upg_option           VARCHAR2(1);
26327 
26328 --
26329 BEGIN
26330 --
26331 IF g_log_enabled THEN
26332       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_65';
26333 END IF;
26334 --
26335 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26336 
26337       trace
26338          (p_msg      => 'BEGIN of AcctLineType_65'
26339          ,p_level    => C_LEVEL_PROCEDURE
26340          ,p_module   => l_log_module);
26341 
26342 END IF;
26343 --
26344 l_component_type             := 'AMB_JLT';
26345 l_component_code             := 'DM_REV';
26346 l_component_type_code        := 'S';
26347 l_component_appl_id          :=  222;
26348 l_amb_context_code           := 'DEFAULT';
26349 l_entity_code                := 'TRANSACTIONS';
26350 l_event_class_code           := 'DEBIT_MEMO';
26351 l_event_type_code            := 'DEBIT_MEMO_ALL';
26352 l_line_definition_owner_code := 'S';
26353 l_line_definition_code       := 'JA_CN_AR_DM_DEFAULT_ACCRUAL';
26354 --
26355 l_balance_type_code          := 'A';
26356 l_segment                     := NULL;
26357 l_ccid                        := NULL;
26358 l_adr_transaction_coa_id      := NULL;
26359 l_adr_accounting_coa_id       := NULL;
26360 l_adr_flexfield_segment_code  := NULL;
26361 l_adr_flex_value_set_id       := NULL;
26362 l_adr_value_type_code         := NULL;
26363 l_adr_value_combination_id    := NULL;
26364 l_adr_value_segment_code      := NULL;
26365 
26366 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26367 l_bflow_class_code           := '';    -- 4219869 Business Flow
26368 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26369 l_budgetary_control_flag     := 'N';
26370 
26371 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26372 l_bflow_applied_to_amt       := NULL; -- 5132302
26373 l_entered_amt_idx            := NULL;          -- 4262811
26374 l_accted_amt_idx             := NULL;          -- 4262811
26375 l_acc_rev_flag               := NULL;          -- 4262811
26376 l_accrual_line_num           := NULL;          -- 4262811
26377 l_tmp_amt                    := NULL;          -- 4262811
26378 --
26379  
26380 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26381     l_balance_type_code <> 'B' THEN
26382 IF NVL(p_source_43,'
26383 ') =  'REV'
26384  THEN 
26385 
26386    --
26387    XLA_AE_LINES_PKG.SetNewLine;
26388 
26389    p_balance_type_code          := l_balance_type_code;
26390    -- set the flag so later we will know whether the gain loss line needs to be created
26391    
26392    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26396    --
26393      p_actual_flag :='A';
26394    END IF;
26395 
26397    -- bulk performance
26398    --
26399    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26400                                       p_header_num   => 0); -- 4262811
26401    --
26402    -- set accounting line options
26403    --
26404    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26405            p_natural_side_code          => 'C'
26406          , p_gain_or_loss_flag          => 'N'
26407          , p_gl_transfer_mode_code      => 'S'
26408          , p_acct_entry_type_code       => 'A'
26409          , p_switch_side_flag           => 'Y'
26410          , p_merge_duplicate_code       => 'A'
26411          );
26412    --
26413    l_acc_rev_natural_side_code := 'D';  -- 4262811
26414    -- 
26415    --
26416    -- set accounting line type info
26417    --
26418    xla_ae_lines_pkg.SetAcctLineType
26419       (p_component_type             => l_component_type
26420       ,p_event_type_code            => l_event_type_code
26421       ,p_line_definition_owner_code => l_line_definition_owner_code
26422       ,p_line_definition_code       => l_line_definition_code
26423       ,p_accounting_line_code       => l_component_code
26424       ,p_accounting_line_type_code  => l_component_type_code
26425       ,p_accounting_line_appl_id    => l_component_appl_id
26426       ,p_amb_context_code           => l_amb_context_code
26427       ,p_entity_code                => l_entity_code
26428       ,p_event_class_code           => l_event_class_code);
26429    --
26430    -- set accounting class
26431    --
26432    xla_ae_lines_pkg.SetAcctClass(
26433            p_accounting_class_code  => 'REVENUE'
26434          , p_ae_header_id           => l_ae_header_id
26435          );
26436 
26437    --
26438    -- set rounding class
26439    --
26440    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26441                       'RECEIVABLE';
26442 
26443    --
26444    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26445    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26446    --
26447    -- bulk performance
26448    --
26449    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26450 
26451    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26452       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26453 
26454    -- 4955764
26455    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26456       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26457 
26458    -- 4458381 Public Sector Enh
26459    
26460    --
26461    -- set accounting attributes for the line type
26462    --
26463    l_entered_amt_idx := 3;
26464    l_accted_amt_idx  := 8;
26465    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26466    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26467    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
26468    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26469    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
26470    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26471    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
26472    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26473    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
26474    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26475    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
26476    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26477    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
26478    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26479    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
26480    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26481    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
26482    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
26483    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
26484    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
26485    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
26486    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
26487    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
26488    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
26489    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
26490 
26491    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26492    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26493 
26494    ---------------------------------------------------------------------------------------------------------------
26495    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26496    ---------------------------------------------------------------------------------------------------------------
26497    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26498 
26499    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26500    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26501 
26502    IF xla_accounting_cache_pkg.GetValueChar
26506 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26503          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26504          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26505    AND l_bflow_method_code = 'PRIOR_ENTRY'
26507    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26508          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26509        )
26510    THEN
26511          xla_ae_lines_pkg.BflowUpgEntry
26512            (p_business_method_code    => l_bflow_method_code
26513            ,p_business_class_code     => l_bflow_class_code
26514            ,p_balance_type            => l_balance_type_code);
26515    ELSE
26516       NULL;
26517 -- No business flow processing for business flow method of NONE.
26518    END IF;
26519 
26520    --
26521    -- call analytical criteria
26522    --
26523    
26524 
26525 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
26526 xla_ae_lines_pkg.SetAnalyticalCriteria(
26527    p_analytical_criterion_name    => 'Project Number'
26528  , p_analytical_criterion_owner   => 'S'
26529  , p_analytical_criterion_code    => 'PROJECT_NUMBER'
26530  , p_amb_context_code             => 'DEFAULT'
26531  , p_balancing_flag               => 'N'
26532  
26533  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_65)
26534  , p_analytical_detail_num_1     =>  NULL
26535  , p_analytical_detail_date_1    =>  NULL
26536 
26537  , p_ae_header_id                 => l_ae_header_id
26538 )
26539 ;
26540 --
26541 
26542    --
26543    -- call description
26544    --
26545    -- No description or it is inherited.
26546    --
26547    -- call ADRs
26548    -- Bug 4922099
26549    --
26550    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26551         (NVL(l_actual_upg_option, 'N') = 'O') OR
26552         (NVL(l_enc_upg_option, 'N') = 'O')
26553       )
26554    THEN
26555    NULL;
26556    --
26557    --
26558    
26559   l_ccid := AcctDerRule_24(
26560            p_application_id           => p_application_id
26561          , p_ae_header_id             => l_ae_header_id 
26562 , p_source_26 => p_source_26
26563          , x_transaction_coa_id       => l_adr_transaction_coa_id
26564          , x_accounting_coa_id        => l_adr_accounting_coa_id
26565          , x_value_type_code          => l_adr_value_type_code
26566          , p_side                     => 'NA'
26567    );
26568 
26569    xla_ae_lines_pkg.set_ccid(
26570     p_code_combination_id          => l_ccid
26571   , p_value_type_code              => l_adr_value_type_code
26572   , p_transaction_coa_id           => l_adr_transaction_coa_id
26573   , p_accounting_coa_id            => l_adr_accounting_coa_id
26574   , p_adr_code                     => 'TRX_DIST_CCID'
26575   , p_adr_type_code                => 'S'
26576   , p_component_type               => l_component_type
26577   , p_component_code               => l_component_code
26578   , p_component_type_code          => l_component_type_code
26579   , p_component_appl_id            => l_component_appl_id
26580   , p_amb_context_code             => l_amb_context_code
26581   , p_side                         => 'NA'
26582   );
26583 
26584 
26585    --
26586    --
26587    END IF;
26588    --
26589    -- Bug 4922099
26590    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26591           (NVL(l_enc_upg_option, 'N') = 'O')
26592         ) AND
26593         (l_bflow_method_code = 'PRIOR_ENTRY')
26594       )
26595    THEN
26596       IF
26597       --
26598       1 = 2
26599       --
26600       THEN
26601       xla_accounting_err_pkg.build_message
26602                                     (p_appli_s_name            => 'XLA'
26603                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26604                                     ,p_token_1                 => 'LINE_NUMBER'
26605                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26606                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26607                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26608                                                                              l_component_type
26609                                                                             ,l_component_code
26610                                                                             ,l_component_type_code
26611                                                                             ,l_component_appl_id
26612                                                                             ,l_amb_context_code
26613                                                                             ,l_entity_code
26614                                                                             ,l_event_class_code
26615                                                                            )
26616                                     ,p_token_3                 => 'OWNER'
26617                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26618                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26619                                                                           ,p_lookup_code    => l_component_type_code
26620                                                                          )
26624                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26621                                     ,p_token_4                 => 'PRODUCT_NAME'
26622                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26623                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26625                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26626                                     ,p_ae_header_id            =>  NULL
26627                                        );
26628 
26629         IF (C_LEVEL_ERROR>= g_log_level) THEN
26630                  trace
26631                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26632                       ,p_level    => C_LEVEL_ERROR
26633                       ,p_module   => l_log_module);
26634         END IF;
26635       END IF;
26636    END IF;
26637    --
26638    --
26639    ------------------------------------------------------------------------------------------------
26640    -- 4219869 Business Flow
26641    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26642    -- Prior Entry.  Currently, the following code is always generated.
26643    ------------------------------------------------------------------------------------------------
26644    XLA_AE_LINES_PKG.ValidateCurrentLine;
26645 
26646    ------------------------------------------------------------------------------------
26647    -- 4219869 Business Flow
26648    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26649    ------------------------------------------------------------------------------------
26650    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26651 
26652    ----------------------------------------------------------------------------------
26653    -- 4219869 Business Flow
26654    -- Update journal entry status -- Need to generate this within IF <condition>
26655    ----------------------------------------------------------------------------------
26656    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26657          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26658          ,p_balance_type_code => l_balance_type_code
26659          );
26660 
26661    -------------------------------------------------------------------------------------------
26662    -- 4262811 - Generate the Accrual Reversal lines
26663    -------------------------------------------------------------------------------------------
26664    BEGIN
26665       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26666                               (g_array_event(p_event_id).array_value_num('header_index'));
26667       IF l_acc_rev_flag IS NULL THEN
26668          l_acc_rev_flag := 'N';
26669       END IF;
26670    EXCEPTION
26671       WHEN OTHERS THEN
26672          l_acc_rev_flag := 'N';
26673    END;
26674    --
26675    IF (l_acc_rev_flag = 'Y') THEN
26676 
26677        -- 4645092  ------------------------------------------------------------------------------
26678        -- To allow MPA report to determine if it should generate report process
26679        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26680        ------------------------------------------------------------------------------------------
26681 
26682        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26683        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26684    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
26685    -- call ADRs
26686    -- Bug 4922099
26687    --
26688    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26689         (NVL(l_actual_upg_option, 'N') = 'O') OR
26690         (NVL(l_enc_upg_option, 'N') = 'O')
26691       )
26692    THEN
26693    NULL;
26694    --
26695    --
26696    
26697   l_ccid := AcctDerRule_24(
26698            p_application_id           => p_application_id
26699          , p_ae_header_id             => l_ae_header_id 
26700 , p_source_26 => p_source_26
26701          , x_transaction_coa_id       => l_adr_transaction_coa_id
26702          , x_accounting_coa_id        => l_adr_accounting_coa_id
26703          , x_value_type_code          => l_adr_value_type_code
26704          , p_side                     => 'NA'
26705    );
26706 
26707    xla_ae_lines_pkg.set_ccid(
26708     p_code_combination_id          => l_ccid
26709   , p_value_type_code              => l_adr_value_type_code
26710   , p_transaction_coa_id           => l_adr_transaction_coa_id
26711   , p_accounting_coa_id            => l_adr_accounting_coa_id
26712   , p_adr_code                     => 'TRX_DIST_CCID'
26713   , p_adr_type_code                => 'S'
26714   , p_component_type               => l_component_type
26715   , p_component_code               => l_component_code
26716   , p_component_type_code          => l_component_type_code
26717   , p_component_appl_id            => l_component_appl_id
26718   , p_amb_context_code             => l_amb_context_code
26719   , p_side                         => 'NA'
26720   );
26721 
26722 
26723    --
26724    --
26725    END IF;
26726 
26727        --
26728        -- Update the line information that should be overwritten
26729        --
26730        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26734        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26731                                          p_header_num   => 1);
26732        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26733 
26735 
26736        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26737           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26738        END IF;
26739 
26740       --
26741       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26742       --
26743       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26744           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26745       ELSE
26746           ---------------------------------------------------------------------------------------------------
26747           -- 4262811a Switch Sign
26748           ---------------------------------------------------------------------------------------------------
26749           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26750           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26751                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26752           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26753                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26754           -- 5132302
26755           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26756                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26757 
26758       END IF;
26759 
26760       -- 4955764
26761       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26762       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26763 
26764 
26765       XLA_AE_LINES_PKG.ValidateCurrentLine;
26766       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26767 
26768       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26769                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26770                ,p_balance_type_code => l_balance_type_code);
26771 
26772    END IF;
26773 
26774    -----------------------------------------------------------------------------------------
26775    -- 4262811 Multiperiod Accounting
26776    -----------------------------------------------------------------------------------------
26777      -- No MPA option is assigned.
26778 
26779 
26780 END IF;
26781 END IF;
26782 --
26783 
26784 --
26785 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26786    trace
26787       (p_msg      => 'END of AcctLineType_65'
26788       ,p_level    => C_LEVEL_PROCEDURE
26789       ,p_module   => l_log_module);
26790 END IF;
26791 --
26792 EXCEPTION
26793   WHEN xla_exceptions_pkg.application_exception THEN
26794       RAISE;
26795   WHEN OTHERS THEN
26796        xla_exceptions_pkg.raise_message
26797            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_65');
26798 END AcctLineType_65;
26799 --
26800 
26801 ---------------------------------------
26802 --
26803 -- PRIVATE FUNCTION
26804 --         AcctLineType_66
26805 --
26806 ---------------------------------------
26807 PROCEDURE AcctLineType_66 (
26808   p_application_id        IN NUMBER
26809  ,p_event_id              IN NUMBER
26810  ,p_calculate_acctd_flag  IN VARCHAR2
26811  ,p_calculate_g_l_flag    IN VARCHAR2
26812  ,p_actual_flag           IN OUT VARCHAR2
26813  ,p_balance_type_code     OUT VARCHAR2
26814  ,p_gain_or_loss_ref      OUT VARCHAR2
26815  
26816 --Transaction Distribution GL Account
26817  , p_source_26            IN NUMBER
26818 --Bill To Customer Account Identifier
26819  , p_source_37            IN NUMBER
26820 --Bill To Customer Site Use Identifier
26821  , p_source_38            IN NUMBER
26822 --SLA Party Type
26823  , p_source_39            IN VARCHAR2
26824 --Transaction Distribution Account Class
26825  , p_source_43            IN VARCHAR2
26826 --Transaction Distribution Identifier
26827  , p_source_44            IN NUMBER
26828 --Transaction Distribution Type
26829  , p_source_45            IN VARCHAR2
26830 --Transaction Distribution Entered Amount
26831  , p_source_46            IN NUMBER
26832 --Transaction Currency Code
26833  , p_source_47            IN VARCHAR2
26834 --Transaction Exchange Date
26835  , p_source_48            IN DATE
26836 --Transaction Exchange Rate
26837  , p_source_49            IN NUMBER
26838 --Transaction Exchange Rate Type
26839  , p_source_50            IN VARCHAR2
26840 --Transaction Accounting Amount
26841  , p_source_51            IN NUMBER
26842 --Transaction Tax Line Identifier
26843  , p_source_86            IN NUMBER
26844 )
26845 IS
26846 
26847 l_component_type              VARCHAR2(80);
26848 l_component_code              VARCHAR2(30);
26849 l_component_type_code         VARCHAR2(1);
26850 l_component_appl_id           INTEGER;
26851 l_amb_context_code            VARCHAR2(30);
26852 l_entity_code                 VARCHAR2(30);
26853 l_event_class_code            VARCHAR2(30);
26854 l_ae_header_id                NUMBER;
26858 --
26855 l_event_type_code             VARCHAR2(30);
26856 l_line_definition_code        VARCHAR2(30);
26857 l_line_definition_owner_code  VARCHAR2(1);
26859 -- adr variables
26860 l_segment                     VARCHAR2(30);
26861 l_ccid                        NUMBER;
26862 l_adr_transaction_coa_id      NUMBER;
26863 l_adr_accounting_coa_id       NUMBER;
26864 l_adr_flexfield_segment_code  VARCHAR2(30);
26865 l_adr_flex_value_set_id       NUMBER;
26866 l_adr_value_type_code         VARCHAR2(30);
26867 l_adr_value_combination_id    NUMBER;
26868 l_adr_value_segment_code      VARCHAR2(30);
26869 
26870 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26871 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26872 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26873 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26874 
26875 -- 4262811 Variables ------------------------------------------------------------------------------------------
26876 l_entered_amt_idx             NUMBER;
26877 l_accted_amt_idx              NUMBER;
26878 l_acc_rev_flag                VARCHAR2(1);
26879 l_accrual_line_num            NUMBER;
26880 l_tmp_amt                     NUMBER;
26881 l_acc_rev_natural_side_code   VARCHAR2(1);
26882 
26883 l_num_entries                 NUMBER;
26884 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26885 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26886 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26887 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26888 l_recog_line_1                NUMBER;
26889 l_recog_line_2                NUMBER;
26890 
26891 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26892 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26893 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26894 
26895 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26896 
26897 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26898 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26899 
26900 ---------------------------------------------------------------------------------------------------------------
26901 
26902 
26903 --
26904 -- bulk performance
26905 --
26906 l_balance_type_code           VARCHAR2(1);
26907 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26908 l_log_module                  VARCHAR2(240);
26909 
26910 --
26911 -- Upgrade strategy
26912 --
26913 l_actual_upg_option           VARCHAR2(1);
26914 l_enc_upg_option           VARCHAR2(1);
26915 
26916 --
26917 BEGIN
26918 --
26919 IF g_log_enabled THEN
26920       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_66';
26921 END IF;
26922 --
26923 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26924 
26925       trace
26926          (p_msg      => 'BEGIN of AcctLineType_66'
26927          ,p_level    => C_LEVEL_PROCEDURE
26928          ,p_module   => l_log_module);
26929 
26930 END IF;
26931 --
26932 l_component_type             := 'AMB_JLT';
26933 l_component_code             := 'DM_ROUND';
26934 l_component_type_code        := 'S';
26935 l_component_appl_id          :=  222;
26936 l_amb_context_code           := 'DEFAULT';
26937 l_entity_code                := 'TRANSACTIONS';
26938 l_event_class_code           := 'DEBIT_MEMO';
26939 l_event_type_code            := 'DEBIT_MEMO_ALL';
26940 l_line_definition_owner_code := 'S';
26941 l_line_definition_code       := 'JA_CN_AR_DM_DEFAULT_ACCRUAL';
26942 --
26943 l_balance_type_code          := 'A';
26944 l_segment                     := NULL;
26945 l_ccid                        := NULL;
26946 l_adr_transaction_coa_id      := NULL;
26947 l_adr_accounting_coa_id       := NULL;
26948 l_adr_flexfield_segment_code  := NULL;
26949 l_adr_flex_value_set_id       := NULL;
26950 l_adr_value_type_code         := NULL;
26951 l_adr_value_combination_id    := NULL;
26952 l_adr_value_segment_code      := NULL;
26953 
26954 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26955 l_bflow_class_code           := '';    -- 4219869 Business Flow
26956 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26957 l_budgetary_control_flag     := 'N';
26958 
26959 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26960 l_bflow_applied_to_amt       := NULL; -- 5132302
26961 l_entered_amt_idx            := NULL;          -- 4262811
26962 l_accted_amt_idx             := NULL;          -- 4262811
26963 l_acc_rev_flag               := NULL;          -- 4262811
26964 l_accrual_line_num           := NULL;          -- 4262811
26965 l_tmp_amt                    := NULL;          -- 4262811
26966 --
26967  
26968 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26969     l_balance_type_code <> 'B' THEN
26970 IF NVL(p_source_43,'
26971 ') =  'ROUND'
26972  THEN 
26973 
26974    --
26975    XLA_AE_LINES_PKG.SetNewLine;
26976 
26977    p_balance_type_code          := l_balance_type_code;
26978    -- set the flag so later we will know whether the gain loss line needs to be created
26979    
26980    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26981      p_actual_flag :='A';
26982    END IF;
26983 
26984    --
26988                                       p_header_num   => 0); -- 4262811
26985    -- bulk performance
26986    --
26987    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26989    --
26990    -- set accounting line options
26991    --
26992    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26993            p_natural_side_code          => 'C'
26994          , p_gain_or_loss_flag          => 'N'
26995          , p_gl_transfer_mode_code      => 'S'
26996          , p_acct_entry_type_code       => 'A'
26997          , p_switch_side_flag           => 'Y'
26998          , p_merge_duplicate_code       => 'A'
26999          );
27000    --
27001    l_acc_rev_natural_side_code := 'D';  -- 4262811
27002    -- 
27003    --
27004    -- set accounting line type info
27005    --
27006    xla_ae_lines_pkg.SetAcctLineType
27007       (p_component_type             => l_component_type
27008       ,p_event_type_code            => l_event_type_code
27009       ,p_line_definition_owner_code => l_line_definition_owner_code
27010       ,p_line_definition_code       => l_line_definition_code
27011       ,p_accounting_line_code       => l_component_code
27012       ,p_accounting_line_type_code  => l_component_type_code
27013       ,p_accounting_line_appl_id    => l_component_appl_id
27014       ,p_amb_context_code           => l_amb_context_code
27015       ,p_entity_code                => l_entity_code
27016       ,p_event_class_code           => l_event_class_code);
27017    --
27018    -- set accounting class
27019    --
27020    xla_ae_lines_pkg.SetAcctClass(
27021            p_accounting_class_code  => 'ROUNDING'
27022          , p_ae_header_id           => l_ae_header_id
27023          );
27024 
27025    --
27026    -- set rounding class
27027    --
27028    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27029                       'RECEIVABLE';
27030 
27031    --
27032    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27033    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27034    --
27035    -- bulk performance
27036    --
27037    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27038 
27039    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27040       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27041 
27042    -- 4955764
27043    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27044       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27045 
27046    -- 4458381 Public Sector Enh
27047    
27048    --
27049    -- set accounting attributes for the line type
27050    --
27051    l_entered_amt_idx := 3;
27052    l_accted_amt_idx  := 8;
27053    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27054    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27055    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
27056    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27057    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
27058    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27059    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
27060    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27061    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
27062    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27063    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
27064    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27065    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
27066    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27067    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
27068    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27069    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
27070    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
27071    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
27072    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
27073    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
27074    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
27075    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
27076    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
27077    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
27078 
27079    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27080    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27081 
27082    ---------------------------------------------------------------------------------------------------------------
27083    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27084    ---------------------------------------------------------------------------------------------------------------
27085    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27086 
27087    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27088    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27089 
27090    IF xla_accounting_cache_pkg.GetValueChar
27091          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27095    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27092          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27093    AND l_bflow_method_code = 'PRIOR_ENTRY'
27094 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27096          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27097        )
27098    THEN
27099          xla_ae_lines_pkg.BflowUpgEntry
27100            (p_business_method_code    => l_bflow_method_code
27101            ,p_business_class_code     => l_bflow_class_code
27102            ,p_balance_type            => l_balance_type_code);
27103    ELSE
27104       NULL;
27105 -- No business flow processing for business flow method of NONE.
27106    END IF;
27107 
27108    --
27109    -- call analytical criteria
27110    --
27111    
27112    --
27113    -- call description
27114    --
27115    -- No description or it is inherited.
27116    --
27117    -- call ADRs
27118    -- Bug 4922099
27119    --
27120    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27121         (NVL(l_actual_upg_option, 'N') = 'O') OR
27122         (NVL(l_enc_upg_option, 'N') = 'O')
27123       )
27124    THEN
27125    NULL;
27126    --
27127    --
27128    
27129   l_ccid := AcctDerRule_24(
27130            p_application_id           => p_application_id
27131          , p_ae_header_id             => l_ae_header_id 
27132 , p_source_26 => p_source_26
27133          , x_transaction_coa_id       => l_adr_transaction_coa_id
27134          , x_accounting_coa_id        => l_adr_accounting_coa_id
27135          , x_value_type_code          => l_adr_value_type_code
27136          , p_side                     => 'NA'
27137    );
27138 
27139    xla_ae_lines_pkg.set_ccid(
27140     p_code_combination_id          => l_ccid
27141   , p_value_type_code              => l_adr_value_type_code
27142   , p_transaction_coa_id           => l_adr_transaction_coa_id
27143   , p_accounting_coa_id            => l_adr_accounting_coa_id
27144   , p_adr_code                     => 'TRX_DIST_CCID'
27145   , p_adr_type_code                => 'S'
27146   , p_component_type               => l_component_type
27147   , p_component_code               => l_component_code
27148   , p_component_type_code          => l_component_type_code
27149   , p_component_appl_id            => l_component_appl_id
27150   , p_amb_context_code             => l_amb_context_code
27151   , p_side                         => 'NA'
27152   );
27153 
27154 
27155    --
27156    --
27157    END IF;
27158    --
27159    -- Bug 4922099
27160    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27161           (NVL(l_enc_upg_option, 'N') = 'O')
27162         ) AND
27163         (l_bflow_method_code = 'PRIOR_ENTRY')
27164       )
27165    THEN
27166       IF
27167       --
27168       1 = 2
27169       --
27170       THEN
27171       xla_accounting_err_pkg.build_message
27172                                     (p_appli_s_name            => 'XLA'
27173                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27174                                     ,p_token_1                 => 'LINE_NUMBER'
27175                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27176                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27177                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27178                                                                              l_component_type
27179                                                                             ,l_component_code
27180                                                                             ,l_component_type_code
27181                                                                             ,l_component_appl_id
27182                                                                             ,l_amb_context_code
27183                                                                             ,l_entity_code
27184                                                                             ,l_event_class_code
27185                                                                            )
27186                                     ,p_token_3                 => 'OWNER'
27187                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27188                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27189                                                                           ,p_lookup_code    => l_component_type_code
27190                                                                          )
27191                                     ,p_token_4                 => 'PRODUCT_NAME'
27192                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27193                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27194                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27195                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27196                                     ,p_ae_header_id            =>  NULL
27197                                        );
27198 
27199         IF (C_LEVEL_ERROR>= g_log_level) THEN
27200                  trace
27204         END IF;
27201                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27202                       ,p_level    => C_LEVEL_ERROR
27203                       ,p_module   => l_log_module);
27205       END IF;
27206    END IF;
27207    --
27208    --
27209    ------------------------------------------------------------------------------------------------
27210    -- 4219869 Business Flow
27211    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27212    -- Prior Entry.  Currently, the following code is always generated.
27213    ------------------------------------------------------------------------------------------------
27214    XLA_AE_LINES_PKG.ValidateCurrentLine;
27215 
27216    ------------------------------------------------------------------------------------
27217    -- 4219869 Business Flow
27218    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27219    ------------------------------------------------------------------------------------
27220    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27221 
27222    ----------------------------------------------------------------------------------
27223    -- 4219869 Business Flow
27224    -- Update journal entry status -- Need to generate this within IF <condition>
27225    ----------------------------------------------------------------------------------
27226    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27227          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27228          ,p_balance_type_code => l_balance_type_code
27229          );
27230 
27231    -------------------------------------------------------------------------------------------
27232    -- 4262811 - Generate the Accrual Reversal lines
27233    -------------------------------------------------------------------------------------------
27234    BEGIN
27235       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27236                               (g_array_event(p_event_id).array_value_num('header_index'));
27237       IF l_acc_rev_flag IS NULL THEN
27238          l_acc_rev_flag := 'N';
27239       END IF;
27240    EXCEPTION
27241       WHEN OTHERS THEN
27242          l_acc_rev_flag := 'N';
27243    END;
27244    --
27245    IF (l_acc_rev_flag = 'Y') THEN
27246 
27247        -- 4645092  ------------------------------------------------------------------------------
27248        -- To allow MPA report to determine if it should generate report process
27249        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27250        ------------------------------------------------------------------------------------------
27251 
27252        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27253        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27254    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
27255    -- call ADRs
27256    -- Bug 4922099
27257    --
27258    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27259         (NVL(l_actual_upg_option, 'N') = 'O') OR
27260         (NVL(l_enc_upg_option, 'N') = 'O')
27261       )
27262    THEN
27263    NULL;
27264    --
27265    --
27266    
27267   l_ccid := AcctDerRule_24(
27268            p_application_id           => p_application_id
27269          , p_ae_header_id             => l_ae_header_id 
27270 , p_source_26 => p_source_26
27271          , x_transaction_coa_id       => l_adr_transaction_coa_id
27272          , x_accounting_coa_id        => l_adr_accounting_coa_id
27273          , x_value_type_code          => l_adr_value_type_code
27274          , p_side                     => 'NA'
27275    );
27276 
27277    xla_ae_lines_pkg.set_ccid(
27278     p_code_combination_id          => l_ccid
27279   , p_value_type_code              => l_adr_value_type_code
27280   , p_transaction_coa_id           => l_adr_transaction_coa_id
27281   , p_accounting_coa_id            => l_adr_accounting_coa_id
27282   , p_adr_code                     => 'TRX_DIST_CCID'
27283   , p_adr_type_code                => 'S'
27284   , p_component_type               => l_component_type
27285   , p_component_code               => l_component_code
27286   , p_component_type_code          => l_component_type_code
27287   , p_component_appl_id            => l_component_appl_id
27288   , p_amb_context_code             => l_amb_context_code
27289   , p_side                         => 'NA'
27290   );
27291 
27292 
27293    --
27294    --
27295    END IF;
27296 
27297        --
27298        -- Update the line information that should be overwritten
27299        --
27300        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27301                                          p_header_num   => 1);
27302        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27303 
27304        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27305 
27306        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27307           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27308        END IF;
27309 
27310       --
27311       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27312       --
27313       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27317           -- 4262811a Switch Sign
27314           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27315       ELSE
27316           ---------------------------------------------------------------------------------------------------
27318           ---------------------------------------------------------------------------------------------------
27319           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27320           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27321                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27322           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27323                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27324           -- 5132302
27325           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27326                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27327 
27328       END IF;
27329 
27330       -- 4955764
27331       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27332       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27333 
27334 
27335       XLA_AE_LINES_PKG.ValidateCurrentLine;
27336       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27337 
27338       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27339                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27340                ,p_balance_type_code => l_balance_type_code);
27341 
27342    END IF;
27343 
27344    -----------------------------------------------------------------------------------------
27345    -- 4262811 Multiperiod Accounting
27346    -----------------------------------------------------------------------------------------
27347      -- No MPA option is assigned.
27348 
27349 
27350 END IF;
27351 END IF;
27352 --
27353 
27354 --
27355 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27356    trace
27357       (p_msg      => 'END of AcctLineType_66'
27358       ,p_level    => C_LEVEL_PROCEDURE
27359       ,p_module   => l_log_module);
27360 END IF;
27361 --
27362 EXCEPTION
27363   WHEN xla_exceptions_pkg.application_exception THEN
27364       RAISE;
27365   WHEN OTHERS THEN
27366        xla_exceptions_pkg.raise_message
27367            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_66');
27368 END AcctLineType_66;
27369 --
27370 
27371 ---------------------------------------
27372 --
27373 -- PRIVATE FUNCTION
27374 --         AcctLineType_67
27375 --
27376 ---------------------------------------
27377 PROCEDURE AcctLineType_67 (
27378   p_application_id        IN NUMBER
27379  ,p_event_id              IN NUMBER
27380  ,p_calculate_acctd_flag  IN VARCHAR2
27381  ,p_calculate_g_l_flag    IN VARCHAR2
27382  ,p_actual_flag           IN OUT VARCHAR2
27383  ,p_balance_type_code     OUT VARCHAR2
27384  ,p_gain_or_loss_ref      OUT VARCHAR2
27385  
27386 --Transaction Distribution GL Account
27387  , p_source_26            IN NUMBER
27388 --Bill To Customer Account Identifier
27389  , p_source_37            IN NUMBER
27390 --Bill To Customer Site Use Identifier
27391  , p_source_38            IN NUMBER
27392 --SLA Party Type
27393  , p_source_39            IN VARCHAR2
27394 --Transaction Distribution Account Class
27395  , p_source_43            IN VARCHAR2
27396 --Transaction Distribution Identifier
27397  , p_source_44            IN NUMBER
27398 --Transaction Distribution Type
27399  , p_source_45            IN VARCHAR2
27400 --Transaction Distribution Entered Amount
27401  , p_source_46            IN NUMBER
27402 --Transaction Currency Code
27403  , p_source_47            IN VARCHAR2
27404 --Transaction Exchange Date
27405  , p_source_48            IN DATE
27406 --Transaction Exchange Rate
27407  , p_source_49            IN NUMBER
27408 --Transaction Exchange Rate Type
27409  , p_source_50            IN VARCHAR2
27410 --Transaction Accounting Amount
27411  , p_source_51            IN NUMBER
27412 --Transaction Tax Line Identifier
27413  , p_source_86            IN NUMBER
27414 )
27415 IS
27416 
27417 l_component_type              VARCHAR2(80);
27418 l_component_code              VARCHAR2(30);
27419 l_component_type_code         VARCHAR2(1);
27420 l_component_appl_id           INTEGER;
27421 l_amb_context_code            VARCHAR2(30);
27422 l_entity_code                 VARCHAR2(30);
27423 l_event_class_code            VARCHAR2(30);
27424 l_ae_header_id                NUMBER;
27425 l_event_type_code             VARCHAR2(30);
27426 l_line_definition_code        VARCHAR2(30);
27427 l_line_definition_owner_code  VARCHAR2(1);
27428 --
27429 -- adr variables
27430 l_segment                     VARCHAR2(30);
27431 l_ccid                        NUMBER;
27432 l_adr_transaction_coa_id      NUMBER;
27433 l_adr_accounting_coa_id       NUMBER;
27434 l_adr_flexfield_segment_code  VARCHAR2(30);
27435 l_adr_flex_value_set_id       NUMBER;
27436 l_adr_value_type_code         VARCHAR2(30);
27437 l_adr_value_combination_id    NUMBER;
27438 l_adr_value_segment_code      VARCHAR2(30);
27439 
27440 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27444 
27441 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27442 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27443 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27445 -- 4262811 Variables ------------------------------------------------------------------------------------------
27446 l_entered_amt_idx             NUMBER;
27447 l_accted_amt_idx              NUMBER;
27448 l_acc_rev_flag                VARCHAR2(1);
27449 l_accrual_line_num            NUMBER;
27450 l_tmp_amt                     NUMBER;
27451 l_acc_rev_natural_side_code   VARCHAR2(1);
27452 
27453 l_num_entries                 NUMBER;
27454 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27455 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27456 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27457 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27458 l_recog_line_1                NUMBER;
27459 l_recog_line_2                NUMBER;
27460 
27461 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27462 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27463 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27464 
27465 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27466 
27467 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27468 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27469 
27470 ---------------------------------------------------------------------------------------------------------------
27471 
27472 
27473 --
27474 -- bulk performance
27475 --
27476 l_balance_type_code           VARCHAR2(1);
27477 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27478 l_log_module                  VARCHAR2(240);
27479 
27480 --
27481 -- Upgrade strategy
27482 --
27483 l_actual_upg_option           VARCHAR2(1);
27484 l_enc_upg_option           VARCHAR2(1);
27485 
27486 --
27487 BEGIN
27488 --
27489 IF g_log_enabled THEN
27490       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_67';
27491 END IF;
27492 --
27493 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27494 
27495       trace
27496          (p_msg      => 'BEGIN of AcctLineType_67'
27497          ,p_level    => C_LEVEL_PROCEDURE
27498          ,p_module   => l_log_module);
27499 
27500 END IF;
27501 --
27502 l_component_type             := 'AMB_JLT';
27503 l_component_code             := 'DM_TAX';
27504 l_component_type_code        := 'S';
27505 l_component_appl_id          :=  222;
27506 l_amb_context_code           := 'DEFAULT';
27507 l_entity_code                := 'TRANSACTIONS';
27508 l_event_class_code           := 'DEBIT_MEMO';
27509 l_event_type_code            := 'DEBIT_MEMO_ALL';
27510 l_line_definition_owner_code := 'S';
27511 l_line_definition_code       := 'JA_CN_AR_DM_DEFAULT_ACCRUAL';
27512 --
27513 l_balance_type_code          := 'A';
27514 l_segment                     := NULL;
27515 l_ccid                        := NULL;
27516 l_adr_transaction_coa_id      := NULL;
27517 l_adr_accounting_coa_id       := NULL;
27518 l_adr_flexfield_segment_code  := NULL;
27519 l_adr_flex_value_set_id       := NULL;
27520 l_adr_value_type_code         := NULL;
27521 l_adr_value_combination_id    := NULL;
27522 l_adr_value_segment_code      := NULL;
27523 
27524 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27525 l_bflow_class_code           := '';    -- 4219869 Business Flow
27526 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27527 l_budgetary_control_flag     := 'N';
27528 
27529 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27530 l_bflow_applied_to_amt       := NULL; -- 5132302
27531 l_entered_amt_idx            := NULL;          -- 4262811
27532 l_accted_amt_idx             := NULL;          -- 4262811
27533 l_acc_rev_flag               := NULL;          -- 4262811
27534 l_accrual_line_num           := NULL;          -- 4262811
27535 l_tmp_amt                    := NULL;          -- 4262811
27536 --
27537  
27538 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27539     l_balance_type_code <> 'B' THEN
27540 IF NVL(p_source_43,'
27541 ') =  'TAX'
27542  THEN 
27543 
27544    --
27545    XLA_AE_LINES_PKG.SetNewLine;
27546 
27547    p_balance_type_code          := l_balance_type_code;
27548    -- set the flag so later we will know whether the gain loss line needs to be created
27549    
27550    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27551      p_actual_flag :='A';
27552    END IF;
27553 
27554    --
27555    -- bulk performance
27556    --
27557    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27558                                       p_header_num   => 0); -- 4262811
27559    --
27560    -- set accounting line options
27561    --
27562    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27563            p_natural_side_code          => 'C'
27564          , p_gain_or_loss_flag          => 'N'
27565          , p_gl_transfer_mode_code      => 'S'
27566          , p_acct_entry_type_code       => 'A'
27567          , p_switch_side_flag           => 'Y'
27568          , p_merge_duplicate_code       => 'A'
27569          );
27570    --
27574    -- set accounting line type info
27571    l_acc_rev_natural_side_code := 'D';  -- 4262811
27572    -- 
27573    --
27575    --
27576    xla_ae_lines_pkg.SetAcctLineType
27577       (p_component_type             => l_component_type
27578       ,p_event_type_code            => l_event_type_code
27579       ,p_line_definition_owner_code => l_line_definition_owner_code
27580       ,p_line_definition_code       => l_line_definition_code
27581       ,p_accounting_line_code       => l_component_code
27582       ,p_accounting_line_type_code  => l_component_type_code
27583       ,p_accounting_line_appl_id    => l_component_appl_id
27584       ,p_amb_context_code           => l_amb_context_code
27585       ,p_entity_code                => l_entity_code
27586       ,p_event_class_code           => l_event_class_code);
27587    --
27588    -- set accounting class
27589    --
27590    xla_ae_lines_pkg.SetAcctClass(
27591            p_accounting_class_code  => 'TAX'
27592          , p_ae_header_id           => l_ae_header_id
27593          );
27594 
27595    --
27596    -- set rounding class
27597    --
27598    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27599                       'RECEIVABLE';
27600 
27601    --
27602    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27603    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27604    --
27605    -- bulk performance
27606    --
27607    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27608 
27609    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27610       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27611 
27612    -- 4955764
27613    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27614       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27615 
27616    -- 4458381 Public Sector Enh
27617    
27618    --
27619    -- set accounting attributes for the line type
27620    --
27621    l_entered_amt_idx := 3;
27622    l_accted_amt_idx  := 8;
27623    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27624    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27625    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
27626    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27627    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
27628    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27629    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
27630    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27631    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
27632    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27633    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
27634    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27635    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
27636    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27637    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
27638    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27639    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
27640    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
27641    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
27642    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
27643    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
27644    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
27645    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
27646    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
27647    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
27648 
27649    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27650    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27651 
27652    ---------------------------------------------------------------------------------------------------------------
27653    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27654    ---------------------------------------------------------------------------------------------------------------
27655    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27656 
27657    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27658    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27659 
27660    IF xla_accounting_cache_pkg.GetValueChar
27661          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27662          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27663    AND l_bflow_method_code = 'PRIOR_ENTRY'
27664 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27665    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27666          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27667        )
27668    THEN
27669          xla_ae_lines_pkg.BflowUpgEntry
27670            (p_business_method_code    => l_bflow_method_code
27671            ,p_business_class_code     => l_bflow_class_code
27672            ,p_balance_type            => l_balance_type_code);
27673    ELSE
27674       NULL;
27678    --
27675 -- No business flow processing for business flow method of NONE.
27676    END IF;
27677 
27679    -- call analytical criteria
27680    --
27681    
27682    --
27683    -- call description
27684    --
27685    -- No description or it is inherited.
27686    --
27687    -- call ADRs
27688    -- Bug 4922099
27689    --
27690    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27691         (NVL(l_actual_upg_option, 'N') = 'O') OR
27692         (NVL(l_enc_upg_option, 'N') = 'O')
27693       )
27694    THEN
27695    NULL;
27696    --
27697    --
27698    
27699   l_ccid := AcctDerRule_24(
27700            p_application_id           => p_application_id
27701          , p_ae_header_id             => l_ae_header_id 
27702 , p_source_26 => p_source_26
27703          , x_transaction_coa_id       => l_adr_transaction_coa_id
27704          , x_accounting_coa_id        => l_adr_accounting_coa_id
27705          , x_value_type_code          => l_adr_value_type_code
27706          , p_side                     => 'NA'
27707    );
27708 
27709    xla_ae_lines_pkg.set_ccid(
27710     p_code_combination_id          => l_ccid
27711   , p_value_type_code              => l_adr_value_type_code
27712   , p_transaction_coa_id           => l_adr_transaction_coa_id
27713   , p_accounting_coa_id            => l_adr_accounting_coa_id
27714   , p_adr_code                     => 'TRX_DIST_CCID'
27715   , p_adr_type_code                => 'S'
27716   , p_component_type               => l_component_type
27717   , p_component_code               => l_component_code
27718   , p_component_type_code          => l_component_type_code
27719   , p_component_appl_id            => l_component_appl_id
27720   , p_amb_context_code             => l_amb_context_code
27721   , p_side                         => 'NA'
27722   );
27723 
27724 
27725    --
27726    --
27727    END IF;
27728    --
27729    -- Bug 4922099
27730    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27731           (NVL(l_enc_upg_option, 'N') = 'O')
27732         ) AND
27733         (l_bflow_method_code = 'PRIOR_ENTRY')
27734       )
27735    THEN
27736       IF
27737       --
27738       1 = 2
27739       --
27740       THEN
27741       xla_accounting_err_pkg.build_message
27742                                     (p_appli_s_name            => 'XLA'
27743                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27744                                     ,p_token_1                 => 'LINE_NUMBER'
27745                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27746                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27747                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27748                                                                              l_component_type
27749                                                                             ,l_component_code
27750                                                                             ,l_component_type_code
27751                                                                             ,l_component_appl_id
27752                                                                             ,l_amb_context_code
27753                                                                             ,l_entity_code
27754                                                                             ,l_event_class_code
27755                                                                            )
27756                                     ,p_token_3                 => 'OWNER'
27757                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27758                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27759                                                                           ,p_lookup_code    => l_component_type_code
27760                                                                          )
27761                                     ,p_token_4                 => 'PRODUCT_NAME'
27762                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27763                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27764                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27765                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27766                                     ,p_ae_header_id            =>  NULL
27767                                        );
27768 
27769         IF (C_LEVEL_ERROR>= g_log_level) THEN
27770                  trace
27771                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27772                       ,p_level    => C_LEVEL_ERROR
27773                       ,p_module   => l_log_module);
27774         END IF;
27775       END IF;
27776    END IF;
27777    --
27778    --
27779    ------------------------------------------------------------------------------------------------
27780    -- 4219869 Business Flow
27781    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27782    -- Prior Entry.  Currently, the following code is always generated.
27786    ------------------------------------------------------------------------------------
27783    ------------------------------------------------------------------------------------------------
27784    XLA_AE_LINES_PKG.ValidateCurrentLine;
27785 
27787    -- 4219869 Business Flow
27788    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27789    ------------------------------------------------------------------------------------
27790    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27791 
27792    ----------------------------------------------------------------------------------
27793    -- 4219869 Business Flow
27794    -- Update journal entry status -- Need to generate this within IF <condition>
27795    ----------------------------------------------------------------------------------
27796    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27797          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27798          ,p_balance_type_code => l_balance_type_code
27799          );
27800 
27801    -------------------------------------------------------------------------------------------
27802    -- 4262811 - Generate the Accrual Reversal lines
27803    -------------------------------------------------------------------------------------------
27804    BEGIN
27805       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27806                               (g_array_event(p_event_id).array_value_num('header_index'));
27807       IF l_acc_rev_flag IS NULL THEN
27808          l_acc_rev_flag := 'N';
27809       END IF;
27810    EXCEPTION
27811       WHEN OTHERS THEN
27812          l_acc_rev_flag := 'N';
27813    END;
27814    --
27815    IF (l_acc_rev_flag = 'Y') THEN
27816 
27817        -- 4645092  ------------------------------------------------------------------------------
27818        -- To allow MPA report to determine if it should generate report process
27819        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27820        ------------------------------------------------------------------------------------------
27821 
27822        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27823        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27824    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
27825    -- call ADRs
27826    -- Bug 4922099
27827    --
27828    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27829         (NVL(l_actual_upg_option, 'N') = 'O') OR
27830         (NVL(l_enc_upg_option, 'N') = 'O')
27831       )
27832    THEN
27833    NULL;
27834    --
27835    --
27836    
27837   l_ccid := AcctDerRule_24(
27838            p_application_id           => p_application_id
27839          , p_ae_header_id             => l_ae_header_id 
27840 , p_source_26 => p_source_26
27841          , x_transaction_coa_id       => l_adr_transaction_coa_id
27842          , x_accounting_coa_id        => l_adr_accounting_coa_id
27843          , x_value_type_code          => l_adr_value_type_code
27844          , p_side                     => 'NA'
27845    );
27846 
27847    xla_ae_lines_pkg.set_ccid(
27848     p_code_combination_id          => l_ccid
27849   , p_value_type_code              => l_adr_value_type_code
27850   , p_transaction_coa_id           => l_adr_transaction_coa_id
27851   , p_accounting_coa_id            => l_adr_accounting_coa_id
27852   , p_adr_code                     => 'TRX_DIST_CCID'
27853   , p_adr_type_code                => 'S'
27854   , p_component_type               => l_component_type
27855   , p_component_code               => l_component_code
27856   , p_component_type_code          => l_component_type_code
27857   , p_component_appl_id            => l_component_appl_id
27858   , p_amb_context_code             => l_amb_context_code
27859   , p_side                         => 'NA'
27860   );
27861 
27862 
27863    --
27864    --
27865    END IF;
27866 
27867        --
27868        -- Update the line information that should be overwritten
27869        --
27870        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27871                                          p_header_num   => 1);
27872        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27873 
27874        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27875 
27876        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27877           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27878        END IF;
27879 
27880       --
27881       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27882       --
27883       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27884           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27885       ELSE
27886           ---------------------------------------------------------------------------------------------------
27887           -- 4262811a Switch Sign
27888           ---------------------------------------------------------------------------------------------------
27889           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27890           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27891                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27895           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27892           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27893                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27894           -- 5132302
27896                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27897 
27898       END IF;
27899 
27900       -- 4955764
27901       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27902       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27903 
27904 
27905       XLA_AE_LINES_PKG.ValidateCurrentLine;
27906       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27907 
27908       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27909                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27910                ,p_balance_type_code => l_balance_type_code);
27911 
27912    END IF;
27913 
27914    -----------------------------------------------------------------------------------------
27915    -- 4262811 Multiperiod Accounting
27916    -----------------------------------------------------------------------------------------
27917      -- No MPA option is assigned.
27918 
27919 
27920 END IF;
27921 END IF;
27922 --
27923 
27924 --
27925 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27926    trace
27927       (p_msg      => 'END of AcctLineType_67'
27928       ,p_level    => C_LEVEL_PROCEDURE
27929       ,p_module   => l_log_module);
27930 END IF;
27931 --
27932 EXCEPTION
27933   WHEN xla_exceptions_pkg.application_exception THEN
27934       RAISE;
27935   WHEN OTHERS THEN
27936        xla_exceptions_pkg.raise_message
27937            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_67');
27938 END AcctLineType_67;
27939 --
27940 
27941 ---------------------------------------
27942 --
27943 -- PRIVATE FUNCTION
27944 --         AcctLineType_68
27945 --
27946 ---------------------------------------
27947 PROCEDURE AcctLineType_68 (
27948   p_application_id        IN NUMBER
27949  ,p_event_id              IN NUMBER
27950  ,p_calculate_acctd_flag  IN VARCHAR2
27951  ,p_calculate_g_l_flag    IN VARCHAR2
27952  ,p_actual_flag           IN OUT VARCHAR2
27953  ,p_balance_type_code     OUT VARCHAR2
27954  ,p_gain_or_loss_ref      OUT VARCHAR2
27955  
27956 --Transaction Distribution GL Account
27957  , p_source_26            IN NUMBER
27958 --Bill To Customer Account Identifier
27959  , p_source_37            IN NUMBER
27960 --Bill To Customer Site Use Identifier
27961  , p_source_38            IN NUMBER
27962 --SLA Party Type
27963  , p_source_39            IN VARCHAR2
27964 --Transaction Distribution Account Class
27965  , p_source_43            IN VARCHAR2
27966 --Transaction Distribution Identifier
27967  , p_source_44            IN NUMBER
27968 --Transaction Distribution Type
27969  , p_source_45            IN VARCHAR2
27970 --Transaction Distribution Entered Amount
27971  , p_source_46            IN NUMBER
27972 --Transaction Currency Code
27973  , p_source_47            IN VARCHAR2
27974 --Transaction Exchange Date
27975  , p_source_48            IN DATE
27976 --Transaction Exchange Rate
27977  , p_source_49            IN NUMBER
27978 --Transaction Exchange Rate Type
27979  , p_source_50            IN VARCHAR2
27980 --Transaction Accounting Amount
27981  , p_source_51            IN NUMBER
27982 --Transaction Tax Line Identifier
27983  , p_source_86            IN NUMBER
27984 )
27985 IS
27986 
27987 l_component_type              VARCHAR2(80);
27988 l_component_code              VARCHAR2(30);
27989 l_component_type_code         VARCHAR2(1);
27990 l_component_appl_id           INTEGER;
27991 l_amb_context_code            VARCHAR2(30);
27992 l_entity_code                 VARCHAR2(30);
27993 l_event_class_code            VARCHAR2(30);
27994 l_ae_header_id                NUMBER;
27995 l_event_type_code             VARCHAR2(30);
27996 l_line_definition_code        VARCHAR2(30);
27997 l_line_definition_owner_code  VARCHAR2(1);
27998 --
27999 -- adr variables
28000 l_segment                     VARCHAR2(30);
28001 l_ccid                        NUMBER;
28002 l_adr_transaction_coa_id      NUMBER;
28003 l_adr_accounting_coa_id       NUMBER;
28004 l_adr_flexfield_segment_code  VARCHAR2(30);
28005 l_adr_flex_value_set_id       NUMBER;
28006 l_adr_value_type_code         VARCHAR2(30);
28007 l_adr_value_combination_id    NUMBER;
28008 l_adr_value_segment_code      VARCHAR2(30);
28009 
28010 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28011 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28012 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28013 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28014 
28015 -- 4262811 Variables ------------------------------------------------------------------------------------------
28016 l_entered_amt_idx             NUMBER;
28017 l_accted_amt_idx              NUMBER;
28018 l_acc_rev_flag                VARCHAR2(1);
28019 l_accrual_line_num            NUMBER;
28020 l_tmp_amt                     NUMBER;
28021 l_acc_rev_natural_side_code   VARCHAR2(1);
28022 
28023 l_num_entries                 NUMBER;
28027 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28024 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28025 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28026 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28028 l_recog_line_1                NUMBER;
28029 l_recog_line_2                NUMBER;
28030 
28031 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28032 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28033 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28034 
28035 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28036 
28037 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28038 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28039 
28040 ---------------------------------------------------------------------------------------------------------------
28041 
28042 
28043 --
28044 -- bulk performance
28045 --
28046 l_balance_type_code           VARCHAR2(1);
28047 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28048 l_log_module                  VARCHAR2(240);
28049 
28050 --
28051 -- Upgrade strategy
28052 --
28053 l_actual_upg_option           VARCHAR2(1);
28054 l_enc_upg_option           VARCHAR2(1);
28055 
28056 --
28057 BEGIN
28058 --
28059 IF g_log_enabled THEN
28060       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_68';
28061 END IF;
28062 --
28063 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28064 
28065       trace
28066          (p_msg      => 'BEGIN of AcctLineType_68'
28067          ,p_level    => C_LEVEL_PROCEDURE
28068          ,p_module   => l_log_module);
28069 
28070 END IF;
28071 --
28072 l_component_type             := 'AMB_JLT';
28073 l_component_code             := 'DM_UNBILL';
28074 l_component_type_code        := 'S';
28075 l_component_appl_id          :=  222;
28076 l_amb_context_code           := 'DEFAULT';
28077 l_entity_code                := 'TRANSACTIONS';
28078 l_event_class_code           := 'DEBIT_MEMO';
28079 l_event_type_code            := 'DEBIT_MEMO_ALL';
28080 l_line_definition_owner_code := 'S';
28081 l_line_definition_code       := 'JA_CN_AR_DM_DEFAULT_ACCRUAL';
28082 --
28083 l_balance_type_code          := 'A';
28084 l_segment                     := NULL;
28085 l_ccid                        := NULL;
28086 l_adr_transaction_coa_id      := NULL;
28087 l_adr_accounting_coa_id       := NULL;
28088 l_adr_flexfield_segment_code  := NULL;
28089 l_adr_flex_value_set_id       := NULL;
28090 l_adr_value_type_code         := NULL;
28091 l_adr_value_combination_id    := NULL;
28092 l_adr_value_segment_code      := NULL;
28093 
28094 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28095 l_bflow_class_code           := '';    -- 4219869 Business Flow
28096 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28097 l_budgetary_control_flag     := 'N';
28098 
28099 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28100 l_bflow_applied_to_amt       := NULL; -- 5132302
28101 l_entered_amt_idx            := NULL;          -- 4262811
28102 l_accted_amt_idx             := NULL;          -- 4262811
28103 l_acc_rev_flag               := NULL;          -- 4262811
28104 l_accrual_line_num           := NULL;          -- 4262811
28105 l_tmp_amt                    := NULL;          -- 4262811
28106 --
28107  
28108 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28109     l_balance_type_code <> 'B' THEN
28110 IF NVL(p_source_43,'
28111 ') =  'UNBILL'
28112  THEN 
28113 
28114    --
28115    XLA_AE_LINES_PKG.SetNewLine;
28116 
28117    p_balance_type_code          := l_balance_type_code;
28118    -- set the flag so later we will know whether the gain loss line needs to be created
28119    
28120    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28121      p_actual_flag :='A';
28122    END IF;
28123 
28124    --
28125    -- bulk performance
28126    --
28127    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28128                                       p_header_num   => 0); -- 4262811
28129    --
28130    -- set accounting line options
28131    --
28132    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28133            p_natural_side_code          => 'D'
28134          , p_gain_or_loss_flag          => 'N'
28135          , p_gl_transfer_mode_code      => 'S'
28136          , p_acct_entry_type_code       => 'A'
28137          , p_switch_side_flag           => 'Y'
28138          , p_merge_duplicate_code       => 'A'
28139          );
28140    --
28141    l_acc_rev_natural_side_code := 'C';  -- 4262811
28142    -- 
28143    --
28144    -- set accounting line type info
28145    --
28146    xla_ae_lines_pkg.SetAcctLineType
28147       (p_component_type             => l_component_type
28148       ,p_event_type_code            => l_event_type_code
28149       ,p_line_definition_owner_code => l_line_definition_owner_code
28150       ,p_line_definition_code       => l_line_definition_code
28151       ,p_accounting_line_code       => l_component_code
28152       ,p_accounting_line_type_code  => l_component_type_code
28153       ,p_accounting_line_appl_id    => l_component_appl_id
28154       ,p_amb_context_code           => l_amb_context_code
28158    -- set accounting class
28155       ,p_entity_code                => l_entity_code
28156       ,p_event_class_code           => l_event_class_code);
28157    --
28159    --
28160    xla_ae_lines_pkg.SetAcctClass(
28161            p_accounting_class_code  => 'UNBILL'
28162          , p_ae_header_id           => l_ae_header_id
28163          );
28164 
28165    --
28166    -- set rounding class
28167    --
28168    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28169                       'RECEIVABLE';
28170 
28171    --
28172    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28173    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28174    --
28175    -- bulk performance
28176    --
28177    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28178 
28179    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28180       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28181 
28182    -- 4955764
28183    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28184       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28185 
28186    -- 4458381 Public Sector Enh
28187    
28188    --
28189    -- set accounting attributes for the line type
28190    --
28191    l_entered_amt_idx := 3;
28192    l_accted_amt_idx  := 8;
28193    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28194    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
28195    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
28196    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
28197    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
28198    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
28199    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
28200    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
28201    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
28202    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
28203    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
28204    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
28205    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
28206    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
28207    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
28208    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
28209    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
28210    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
28211    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
28212    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
28213    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
28214    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
28215    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
28216    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
28217    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
28218 
28219    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28220    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28221 
28222    ---------------------------------------------------------------------------------------------------------------
28223    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28224    ---------------------------------------------------------------------------------------------------------------
28225    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28226 
28227    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28228    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28229 
28230    IF xla_accounting_cache_pkg.GetValueChar
28231          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28232          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28233    AND l_bflow_method_code = 'PRIOR_ENTRY'
28234 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28235    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28236          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28237        )
28238    THEN
28239          xla_ae_lines_pkg.BflowUpgEntry
28240            (p_business_method_code    => l_bflow_method_code
28241            ,p_business_class_code     => l_bflow_class_code
28242            ,p_balance_type            => l_balance_type_code);
28243    ELSE
28244       NULL;
28245 -- No business flow processing for business flow method of NONE.
28246    END IF;
28247 
28248    --
28249    -- call analytical criteria
28250    --
28251    
28252    --
28253    -- call description
28254    --
28255    -- No description or it is inherited.
28256    --
28257    -- call ADRs
28258    -- Bug 4922099
28259    --
28260    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28261         (NVL(l_actual_upg_option, 'N') = 'O') OR
28262         (NVL(l_enc_upg_option, 'N') = 'O')
28263       )
28264    THEN
28265    NULL;
28266    --
28267    --
28268    
28272 , p_source_26 => p_source_26
28269   l_ccid := AcctDerRule_24(
28270            p_application_id           => p_application_id
28271          , p_ae_header_id             => l_ae_header_id 
28273          , x_transaction_coa_id       => l_adr_transaction_coa_id
28274          , x_accounting_coa_id        => l_adr_accounting_coa_id
28275          , x_value_type_code          => l_adr_value_type_code
28276          , p_side                     => 'NA'
28277    );
28278 
28279    xla_ae_lines_pkg.set_ccid(
28280     p_code_combination_id          => l_ccid
28281   , p_value_type_code              => l_adr_value_type_code
28282   , p_transaction_coa_id           => l_adr_transaction_coa_id
28283   , p_accounting_coa_id            => l_adr_accounting_coa_id
28284   , p_adr_code                     => 'TRX_DIST_CCID'
28285   , p_adr_type_code                => 'S'
28286   , p_component_type               => l_component_type
28287   , p_component_code               => l_component_code
28288   , p_component_type_code          => l_component_type_code
28289   , p_component_appl_id            => l_component_appl_id
28290   , p_amb_context_code             => l_amb_context_code
28291   , p_side                         => 'NA'
28292   );
28293 
28294 
28295    --
28296    --
28297    END IF;
28298    --
28299    -- Bug 4922099
28300    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28301           (NVL(l_enc_upg_option, 'N') = 'O')
28302         ) AND
28303         (l_bflow_method_code = 'PRIOR_ENTRY')
28304       )
28305    THEN
28306       IF
28307       --
28308       1 = 2
28309       --
28310       THEN
28311       xla_accounting_err_pkg.build_message
28312                                     (p_appli_s_name            => 'XLA'
28313                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28314                                     ,p_token_1                 => 'LINE_NUMBER'
28315                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28316                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28317                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28318                                                                              l_component_type
28319                                                                             ,l_component_code
28320                                                                             ,l_component_type_code
28321                                                                             ,l_component_appl_id
28322                                                                             ,l_amb_context_code
28323                                                                             ,l_entity_code
28324                                                                             ,l_event_class_code
28325                                                                            )
28326                                     ,p_token_3                 => 'OWNER'
28327                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28328                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28329                                                                           ,p_lookup_code    => l_component_type_code
28330                                                                          )
28331                                     ,p_token_4                 => 'PRODUCT_NAME'
28332                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28333                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28334                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28335                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28336                                     ,p_ae_header_id            =>  NULL
28337                                        );
28338 
28339         IF (C_LEVEL_ERROR>= g_log_level) THEN
28340                  trace
28341                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28342                       ,p_level    => C_LEVEL_ERROR
28343                       ,p_module   => l_log_module);
28344         END IF;
28345       END IF;
28346    END IF;
28347    --
28348    --
28349    ------------------------------------------------------------------------------------------------
28350    -- 4219869 Business Flow
28351    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28352    -- Prior Entry.  Currently, the following code is always generated.
28353    ------------------------------------------------------------------------------------------------
28354    XLA_AE_LINES_PKG.ValidateCurrentLine;
28355 
28356    ------------------------------------------------------------------------------------
28357    -- 4219869 Business Flow
28358    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28359    ------------------------------------------------------------------------------------
28360    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28361 
28362    ----------------------------------------------------------------------------------
28363    -- 4219869 Business Flow
28364    -- Update journal entry status -- Need to generate this within IF <condition>
28368          ,p_balance_type_code => l_balance_type_code
28365    ----------------------------------------------------------------------------------
28366    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28367          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28369          );
28370 
28371    -------------------------------------------------------------------------------------------
28372    -- 4262811 - Generate the Accrual Reversal lines
28373    -------------------------------------------------------------------------------------------
28374    BEGIN
28375       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28376                               (g_array_event(p_event_id).array_value_num('header_index'));
28377       IF l_acc_rev_flag IS NULL THEN
28378          l_acc_rev_flag := 'N';
28379       END IF;
28380    EXCEPTION
28381       WHEN OTHERS THEN
28382          l_acc_rev_flag := 'N';
28383    END;
28384    --
28385    IF (l_acc_rev_flag = 'Y') THEN
28386 
28387        -- 4645092  ------------------------------------------------------------------------------
28388        -- To allow MPA report to determine if it should generate report process
28389        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28390        ------------------------------------------------------------------------------------------
28391 
28392        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28393        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28394    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
28395    -- call ADRs
28396    -- Bug 4922099
28397    --
28398    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28399         (NVL(l_actual_upg_option, 'N') = 'O') OR
28400         (NVL(l_enc_upg_option, 'N') = 'O')
28401       )
28402    THEN
28403    NULL;
28404    --
28405    --
28406    
28407   l_ccid := AcctDerRule_24(
28408            p_application_id           => p_application_id
28409          , p_ae_header_id             => l_ae_header_id 
28410 , p_source_26 => p_source_26
28411          , x_transaction_coa_id       => l_adr_transaction_coa_id
28412          , x_accounting_coa_id        => l_adr_accounting_coa_id
28413          , x_value_type_code          => l_adr_value_type_code
28414          , p_side                     => 'NA'
28415    );
28416 
28417    xla_ae_lines_pkg.set_ccid(
28418     p_code_combination_id          => l_ccid
28419   , p_value_type_code              => l_adr_value_type_code
28420   , p_transaction_coa_id           => l_adr_transaction_coa_id
28421   , p_accounting_coa_id            => l_adr_accounting_coa_id
28422   , p_adr_code                     => 'TRX_DIST_CCID'
28423   , p_adr_type_code                => 'S'
28424   , p_component_type               => l_component_type
28425   , p_component_code               => l_component_code
28426   , p_component_type_code          => l_component_type_code
28427   , p_component_appl_id            => l_component_appl_id
28428   , p_amb_context_code             => l_amb_context_code
28429   , p_side                         => 'NA'
28430   );
28431 
28432 
28433    --
28434    --
28435    END IF;
28436 
28437        --
28438        -- Update the line information that should be overwritten
28439        --
28440        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28441                                          p_header_num   => 1);
28442        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28443 
28444        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28445 
28446        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28447           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28448        END IF;
28449 
28450       --
28451       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28452       --
28453       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28454           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28455       ELSE
28456           ---------------------------------------------------------------------------------------------------
28457           -- 4262811a Switch Sign
28458           ---------------------------------------------------------------------------------------------------
28459           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28460           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28461                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28462           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28463                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28464           -- 5132302
28465           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28466                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28467 
28468       END IF;
28469 
28470       -- 4955764
28471       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28472       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28473 
28474 
28475       XLA_AE_LINES_PKG.ValidateCurrentLine;
28479                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28476       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28477 
28478       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28480                ,p_balance_type_code => l_balance_type_code);
28481 
28482    END IF;
28483 
28484    -----------------------------------------------------------------------------------------
28485    -- 4262811 Multiperiod Accounting
28486    -----------------------------------------------------------------------------------------
28487      -- No MPA option is assigned.
28488 
28489 
28490 END IF;
28491 END IF;
28492 --
28493 
28494 --
28495 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28496    trace
28497       (p_msg      => 'END of AcctLineType_68'
28498       ,p_level    => C_LEVEL_PROCEDURE
28499       ,p_module   => l_log_module);
28500 END IF;
28501 --
28502 EXCEPTION
28503   WHEN xla_exceptions_pkg.application_exception THEN
28504       RAISE;
28505   WHEN OTHERS THEN
28506        xla_exceptions_pkg.raise_message
28507            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_68');
28508 END AcctLineType_68;
28509 --
28510 
28511 ---------------------------------------
28512 --
28513 -- PRIVATE FUNCTION
28514 --         AcctLineType_69
28515 --
28516 ---------------------------------------
28517 PROCEDURE AcctLineType_69 (
28518   p_application_id        IN NUMBER
28519  ,p_event_id              IN NUMBER
28520  ,p_calculate_acctd_flag  IN VARCHAR2
28521  ,p_calculate_g_l_flag    IN VARCHAR2
28522  ,p_actual_flag           IN OUT VARCHAR2
28523  ,p_balance_type_code     OUT VARCHAR2
28524  ,p_gain_or_loss_ref      OUT VARCHAR2
28525  
28526 --Transaction Distribution GL Account
28527  , p_source_26            IN NUMBER
28528 --Bill To Customer Account Identifier
28529  , p_source_37            IN NUMBER
28530 --Bill To Customer Site Use Identifier
28531  , p_source_38            IN NUMBER
28532 --SLA Party Type
28533  , p_source_39            IN VARCHAR2
28534 --Transaction Distribution Account Class
28535  , p_source_43            IN VARCHAR2
28536 --Transaction Distribution Identifier
28537  , p_source_44            IN NUMBER
28538 --Transaction Distribution Type
28539  , p_source_45            IN VARCHAR2
28540 --Transaction Distribution Entered Amount
28541  , p_source_46            IN NUMBER
28542 --Transaction Currency Code
28543  , p_source_47            IN VARCHAR2
28544 --Transaction Exchange Date
28545  , p_source_48            IN DATE
28546 --Transaction Exchange Rate
28547  , p_source_49            IN NUMBER
28548 --Transaction Exchange Rate Type
28549  , p_source_50            IN VARCHAR2
28550 --Transaction Accounting Amount
28551  , p_source_51            IN NUMBER
28552 --Transaction Line Flexfield Attribute 1
28553  , p_source_65            IN VARCHAR2
28554 --Transaction Tax Line Identifier
28555  , p_source_86            IN NUMBER
28556 )
28557 IS
28558 
28559 l_component_type              VARCHAR2(80);
28560 l_component_code              VARCHAR2(30);
28561 l_component_type_code         VARCHAR2(1);
28562 l_component_appl_id           INTEGER;
28563 l_amb_context_code            VARCHAR2(30);
28564 l_entity_code                 VARCHAR2(30);
28565 l_event_class_code            VARCHAR2(30);
28566 l_ae_header_id                NUMBER;
28567 l_event_type_code             VARCHAR2(30);
28568 l_line_definition_code        VARCHAR2(30);
28569 l_line_definition_owner_code  VARCHAR2(1);
28570 --
28571 -- adr variables
28572 l_segment                     VARCHAR2(30);
28573 l_ccid                        NUMBER;
28574 l_adr_transaction_coa_id      NUMBER;
28575 l_adr_accounting_coa_id       NUMBER;
28576 l_adr_flexfield_segment_code  VARCHAR2(30);
28577 l_adr_flex_value_set_id       NUMBER;
28578 l_adr_value_type_code         VARCHAR2(30);
28579 l_adr_value_combination_id    NUMBER;
28580 l_adr_value_segment_code      VARCHAR2(30);
28581 
28582 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28583 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28584 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28585 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28586 
28587 -- 4262811 Variables ------------------------------------------------------------------------------------------
28588 l_entered_amt_idx             NUMBER;
28589 l_accted_amt_idx              NUMBER;
28590 l_acc_rev_flag                VARCHAR2(1);
28591 l_accrual_line_num            NUMBER;
28592 l_tmp_amt                     NUMBER;
28593 l_acc_rev_natural_side_code   VARCHAR2(1);
28594 
28595 l_num_entries                 NUMBER;
28596 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28597 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28598 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28599 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28600 l_recog_line_1                NUMBER;
28601 l_recog_line_2                NUMBER;
28602 
28603 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28604 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28605 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28606 
28610 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28607 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28608 
28609 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28611 
28612 ---------------------------------------------------------------------------------------------------------------
28613 
28614 
28615 --
28616 -- bulk performance
28617 --
28618 l_balance_type_code           VARCHAR2(1);
28619 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28620 l_log_module                  VARCHAR2(240);
28621 
28622 --
28623 -- Upgrade strategy
28624 --
28625 l_actual_upg_option           VARCHAR2(1);
28626 l_enc_upg_option           VARCHAR2(1);
28627 
28628 --
28629 BEGIN
28630 --
28631 IF g_log_enabled THEN
28632       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_69';
28633 END IF;
28634 --
28635 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28636 
28637       trace
28638          (p_msg      => 'BEGIN of AcctLineType_69'
28639          ,p_level    => C_LEVEL_PROCEDURE
28640          ,p_module   => l_log_module);
28641 
28642 END IF;
28643 --
28644 l_component_type             := 'AMB_JLT';
28645 l_component_code             := 'DM_UNEARN';
28646 l_component_type_code        := 'S';
28647 l_component_appl_id          :=  222;
28648 l_amb_context_code           := 'DEFAULT';
28649 l_entity_code                := 'TRANSACTIONS';
28650 l_event_class_code           := 'DEBIT_MEMO';
28651 l_event_type_code            := 'DEBIT_MEMO_ALL';
28652 l_line_definition_owner_code := 'S';
28653 l_line_definition_code       := 'JA_CN_AR_DM_DEFAULT_ACCRUAL';
28654 --
28655 l_balance_type_code          := 'A';
28656 l_segment                     := NULL;
28657 l_ccid                        := NULL;
28658 l_adr_transaction_coa_id      := NULL;
28659 l_adr_accounting_coa_id       := NULL;
28660 l_adr_flexfield_segment_code  := NULL;
28661 l_adr_flex_value_set_id       := NULL;
28662 l_adr_value_type_code         := NULL;
28663 l_adr_value_combination_id    := NULL;
28664 l_adr_value_segment_code      := NULL;
28665 
28666 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28667 l_bflow_class_code           := '';    -- 4219869 Business Flow
28668 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28669 l_budgetary_control_flag     := 'N';
28670 
28671 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28672 l_bflow_applied_to_amt       := NULL; -- 5132302
28673 l_entered_amt_idx            := NULL;          -- 4262811
28674 l_accted_amt_idx             := NULL;          -- 4262811
28675 l_acc_rev_flag               := NULL;          -- 4262811
28676 l_accrual_line_num           := NULL;          -- 4262811
28677 l_tmp_amt                    := NULL;          -- 4262811
28678 --
28679  
28680 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28681     l_balance_type_code <> 'B' THEN
28682 IF NVL(p_source_43,'
28683 ') =  'UNEARN'
28684  THEN 
28685 
28686    --
28687    XLA_AE_LINES_PKG.SetNewLine;
28688 
28689    p_balance_type_code          := l_balance_type_code;
28690    -- set the flag so later we will know whether the gain loss line needs to be created
28691    
28692    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28693      p_actual_flag :='A';
28694    END IF;
28695 
28696    --
28697    -- bulk performance
28698    --
28699    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28700                                       p_header_num   => 0); -- 4262811
28701    --
28702    -- set accounting line options
28703    --
28704    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28705            p_natural_side_code          => 'C'
28706          , p_gain_or_loss_flag          => 'N'
28707          , p_gl_transfer_mode_code      => 'S'
28708          , p_acct_entry_type_code       => 'A'
28709          , p_switch_side_flag           => 'Y'
28710          , p_merge_duplicate_code       => 'A'
28711          );
28712    --
28713    l_acc_rev_natural_side_code := 'D';  -- 4262811
28714    -- 
28715    --
28716    -- set accounting line type info
28717    --
28718    xla_ae_lines_pkg.SetAcctLineType
28719       (p_component_type             => l_component_type
28720       ,p_event_type_code            => l_event_type_code
28721       ,p_line_definition_owner_code => l_line_definition_owner_code
28722       ,p_line_definition_code       => l_line_definition_code
28723       ,p_accounting_line_code       => l_component_code
28724       ,p_accounting_line_type_code  => l_component_type_code
28725       ,p_accounting_line_appl_id    => l_component_appl_id
28726       ,p_amb_context_code           => l_amb_context_code
28727       ,p_entity_code                => l_entity_code
28728       ,p_event_class_code           => l_event_class_code);
28729    --
28730    -- set accounting class
28731    --
28732    xla_ae_lines_pkg.SetAcctClass(
28733            p_accounting_class_code  => 'UNEARNED_REVENUE'
28734          , p_ae_header_id           => l_ae_header_id
28735          );
28736 
28737    --
28738    -- set rounding class
28739    --
28740    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28744    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28741                       'RECEIVABLE';
28742 
28743    --
28745    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28746    --
28747    -- bulk performance
28748    --
28749    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28750 
28751    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28752       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28753 
28754    -- 4955764
28755    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28756       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28757 
28758    -- 4458381 Public Sector Enh
28759    
28760    --
28761    -- set accounting attributes for the line type
28762    --
28763    l_entered_amt_idx := 3;
28764    l_accted_amt_idx  := 8;
28765    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28766    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
28767    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
28768    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
28769    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
28770    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
28771    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
28772    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
28773    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
28774    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
28775    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
28776    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
28777    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
28778    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
28779    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
28780    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
28781    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
28782    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
28783    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
28784    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
28785    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
28786    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
28787    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
28788    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
28789    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
28790 
28791    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28792    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28793 
28794    ---------------------------------------------------------------------------------------------------------------
28795    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28796    ---------------------------------------------------------------------------------------------------------------
28797    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28798 
28799    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28800    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28801 
28802    IF xla_accounting_cache_pkg.GetValueChar
28803          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28804          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28805    AND l_bflow_method_code = 'PRIOR_ENTRY'
28806 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28807    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28808          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28809        )
28810    THEN
28811          xla_ae_lines_pkg.BflowUpgEntry
28812            (p_business_method_code    => l_bflow_method_code
28813            ,p_business_class_code     => l_bflow_class_code
28814            ,p_balance_type            => l_balance_type_code);
28815    ELSE
28816       NULL;
28817 -- No business flow processing for business flow method of NONE.
28818    END IF;
28819 
28820    --
28821    -- call analytical criteria
28822    --
28823    
28824 
28825 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
28826 xla_ae_lines_pkg.SetAnalyticalCriteria(
28827    p_analytical_criterion_name    => 'Project Number'
28828  , p_analytical_criterion_owner   => 'S'
28829  , p_analytical_criterion_code    => 'PROJECT_NUMBER'
28830  , p_amb_context_code             => 'DEFAULT'
28831  , p_balancing_flag               => 'N'
28832  
28833  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_65)
28834  , p_analytical_detail_num_1     =>  NULL
28835  , p_analytical_detail_date_1    =>  NULL
28836 
28837  , p_ae_header_id                 => l_ae_header_id
28838 )
28839 ;
28840 --
28841 
28842    --
28843    -- call description
28844    --
28845    -- No description or it is inherited.
28846    --
28847    -- call ADRs
28848    -- Bug 4922099
28849    --
28850    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28851         (NVL(l_actual_upg_option, 'N') = 'O') OR
28855    NULL;
28852         (NVL(l_enc_upg_option, 'N') = 'O')
28853       )
28854    THEN
28856    --
28857    --
28858    
28859   l_ccid := AcctDerRule_24(
28860            p_application_id           => p_application_id
28861          , p_ae_header_id             => l_ae_header_id 
28862 , p_source_26 => p_source_26
28863          , x_transaction_coa_id       => l_adr_transaction_coa_id
28864          , x_accounting_coa_id        => l_adr_accounting_coa_id
28865          , x_value_type_code          => l_adr_value_type_code
28866          , p_side                     => 'NA'
28867    );
28868 
28869    xla_ae_lines_pkg.set_ccid(
28870     p_code_combination_id          => l_ccid
28871   , p_value_type_code              => l_adr_value_type_code
28872   , p_transaction_coa_id           => l_adr_transaction_coa_id
28873   , p_accounting_coa_id            => l_adr_accounting_coa_id
28874   , p_adr_code                     => 'TRX_DIST_CCID'
28875   , p_adr_type_code                => 'S'
28876   , p_component_type               => l_component_type
28877   , p_component_code               => l_component_code
28878   , p_component_type_code          => l_component_type_code
28879   , p_component_appl_id            => l_component_appl_id
28880   , p_amb_context_code             => l_amb_context_code
28881   , p_side                         => 'NA'
28882   );
28883 
28884 
28885    --
28886    --
28887    END IF;
28888    --
28889    -- Bug 4922099
28890    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28891           (NVL(l_enc_upg_option, 'N') = 'O')
28892         ) AND
28893         (l_bflow_method_code = 'PRIOR_ENTRY')
28894       )
28895    THEN
28896       IF
28897       --
28898       1 = 2
28899       --
28900       THEN
28901       xla_accounting_err_pkg.build_message
28902                                     (p_appli_s_name            => 'XLA'
28903                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28904                                     ,p_token_1                 => 'LINE_NUMBER'
28905                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28906                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28907                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28908                                                                              l_component_type
28909                                                                             ,l_component_code
28910                                                                             ,l_component_type_code
28911                                                                             ,l_component_appl_id
28912                                                                             ,l_amb_context_code
28913                                                                             ,l_entity_code
28914                                                                             ,l_event_class_code
28915                                                                            )
28916                                     ,p_token_3                 => 'OWNER'
28917                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28918                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28919                                                                           ,p_lookup_code    => l_component_type_code
28920                                                                          )
28921                                     ,p_token_4                 => 'PRODUCT_NAME'
28922                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28923                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28924                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28925                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28926                                     ,p_ae_header_id            =>  NULL
28927                                        );
28928 
28929         IF (C_LEVEL_ERROR>= g_log_level) THEN
28930                  trace
28931                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28932                       ,p_level    => C_LEVEL_ERROR
28933                       ,p_module   => l_log_module);
28934         END IF;
28935       END IF;
28936    END IF;
28937    --
28938    --
28939    ------------------------------------------------------------------------------------------------
28940    -- 4219869 Business Flow
28941    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28942    -- Prior Entry.  Currently, the following code is always generated.
28943    ------------------------------------------------------------------------------------------------
28944    XLA_AE_LINES_PKG.ValidateCurrentLine;
28945 
28946    ------------------------------------------------------------------------------------
28947    -- 4219869 Business Flow
28948    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28949    ------------------------------------------------------------------------------------
28950    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28951 
28952    ----------------------------------------------------------------------------------
28953    -- 4219869 Business Flow
28957          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28954    -- Update journal entry status -- Need to generate this within IF <condition>
28955    ----------------------------------------------------------------------------------
28956    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28958          ,p_balance_type_code => l_balance_type_code
28959          );
28960 
28961    -------------------------------------------------------------------------------------------
28962    -- 4262811 - Generate the Accrual Reversal lines
28963    -------------------------------------------------------------------------------------------
28964    BEGIN
28965       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28966                               (g_array_event(p_event_id).array_value_num('header_index'));
28967       IF l_acc_rev_flag IS NULL THEN
28968          l_acc_rev_flag := 'N';
28969       END IF;
28970    EXCEPTION
28971       WHEN OTHERS THEN
28972          l_acc_rev_flag := 'N';
28973    END;
28974    --
28975    IF (l_acc_rev_flag = 'Y') THEN
28976 
28977        -- 4645092  ------------------------------------------------------------------------------
28978        -- To allow MPA report to determine if it should generate report process
28979        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28980        ------------------------------------------------------------------------------------------
28981 
28982        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28983        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28984    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
28985    -- call ADRs
28986    -- Bug 4922099
28987    --
28988    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28989         (NVL(l_actual_upg_option, 'N') = 'O') OR
28990         (NVL(l_enc_upg_option, 'N') = 'O')
28991       )
28992    THEN
28993    NULL;
28994    --
28995    --
28996    
28997   l_ccid := AcctDerRule_24(
28998            p_application_id           => p_application_id
28999          , p_ae_header_id             => l_ae_header_id 
29000 , p_source_26 => p_source_26
29001          , x_transaction_coa_id       => l_adr_transaction_coa_id
29002          , x_accounting_coa_id        => l_adr_accounting_coa_id
29003          , x_value_type_code          => l_adr_value_type_code
29004          , p_side                     => 'NA'
29005    );
29006 
29007    xla_ae_lines_pkg.set_ccid(
29008     p_code_combination_id          => l_ccid
29009   , p_value_type_code              => l_adr_value_type_code
29010   , p_transaction_coa_id           => l_adr_transaction_coa_id
29011   , p_accounting_coa_id            => l_adr_accounting_coa_id
29012   , p_adr_code                     => 'TRX_DIST_CCID'
29013   , p_adr_type_code                => 'S'
29014   , p_component_type               => l_component_type
29015   , p_component_code               => l_component_code
29016   , p_component_type_code          => l_component_type_code
29017   , p_component_appl_id            => l_component_appl_id
29018   , p_amb_context_code             => l_amb_context_code
29019   , p_side                         => 'NA'
29020   );
29021 
29022 
29023    --
29024    --
29025    END IF;
29026 
29027        --
29028        -- Update the line information that should be overwritten
29029        --
29030        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29031                                          p_header_num   => 1);
29032        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29033 
29034        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29035 
29036        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29037           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29038        END IF;
29039 
29040       --
29041       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29042       --
29043       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29044           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29045       ELSE
29046           ---------------------------------------------------------------------------------------------------
29047           -- 4262811a Switch Sign
29048           ---------------------------------------------------------------------------------------------------
29049           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29050           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29051                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29052           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29053                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29054           -- 5132302
29055           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29056                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29057 
29058       END IF;
29059 
29060       -- 4955764
29061       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29065       XLA_AE_LINES_PKG.ValidateCurrentLine;
29062       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29063 
29064 
29066       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29067 
29068       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29069                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29070                ,p_balance_type_code => l_balance_type_code);
29071 
29072    END IF;
29073 
29074    -----------------------------------------------------------------------------------------
29075    -- 4262811 Multiperiod Accounting
29076    -----------------------------------------------------------------------------------------
29077      -- No MPA option is assigned.
29078 
29079 
29080 END IF;
29081 END IF;
29082 --
29083 
29084 --
29085 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29086    trace
29087       (p_msg      => 'END of AcctLineType_69'
29088       ,p_level    => C_LEVEL_PROCEDURE
29089       ,p_module   => l_log_module);
29090 END IF;
29091 --
29092 EXCEPTION
29093   WHEN xla_exceptions_pkg.application_exception THEN
29094       RAISE;
29095   WHEN OTHERS THEN
29096        xla_exceptions_pkg.raise_message
29097            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_69');
29098 END AcctLineType_69;
29099 --
29100 
29101 ---------------------------------------
29102 --
29103 -- PRIVATE FUNCTION
29104 --         AcctLineType_70
29105 --
29106 ---------------------------------------
29107 PROCEDURE AcctLineType_70 (
29108   p_application_id        IN NUMBER
29109  ,p_event_id              IN NUMBER
29110  ,p_calculate_acctd_flag  IN VARCHAR2
29111  ,p_calculate_g_l_flag    IN VARCHAR2
29112  ,p_actual_flag           IN OUT VARCHAR2
29113  ,p_balance_type_code     OUT VARCHAR2
29114  ,p_gain_or_loss_ref      OUT VARCHAR2
29115  
29116 --Collection Document Bank Occurrence
29117  , p_source_4            IN VARCHAR2
29118 --Collection Document Number
29119  , p_source_5            IN NUMBER
29120 --Collection Document Trade Note Number
29121  , p_source_6            IN VARCHAR2
29122 --Bordero Type
29123  , p_source_7            IN VARCHAR2
29124  , p_source_7_meaning    IN VARCHAR2
29125 --Collection Document Bank Charges Account
29126  , p_source_15            IN NUMBER
29127 --Bill To Customer Account Identifier
29128  , p_source_37            IN NUMBER
29129 --Bill To Customer Site Use Identifier
29130  , p_source_38            IN NUMBER
29131 --SLA Party Type
29132  , p_source_39            IN VARCHAR2
29133 --Collection Document Distribution Line Type
29134  , p_source_66            IN VARCHAR2
29135  , p_source_66_meaning    IN VARCHAR2
29136 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
29137  , p_source_67            IN VARCHAR2
29138  , p_source_67_meaning    IN VARCHAR2
29139 --Applied To Distribution Link Type
29140  , p_source_69            IN VARCHAR2
29141 --Applied To Distribution Identifier
29142  , p_source_71            IN NUMBER
29143 --Applied To Distribution Document Identifier
29144  , p_source_72            IN NUMBER
29145 --Applied To Distribution Occurrence Identifier
29146  , p_source_73            IN NUMBER
29147 --Collection Document Distribution Identifier
29148  , p_source_74            IN NUMBER
29149 --Collection Document Distribution Link Type
29150  , p_source_75            IN VARCHAR2
29151 --Collection Document Distribution Entered Amount
29152  , p_source_76            IN NUMBER
29153 --Collection Document Distribution Entered Currency Code
29154  , p_source_77            IN VARCHAR2
29155 --Collection Document Distribution Conversion Date
29156  , p_source_78            IN DATE
29157 --Collection Document Distribution Conversion Rate
29158  , p_source_79            IN NUMBER
29159 --Collection Document Distribution Conversion Rate Type
29160  , p_source_80            IN VARCHAR2
29161 --Collection Document Distribution Accounted Amount
29162  , p_source_81            IN NUMBER
29163 --Collection Document Occurrence Identifier
29164  , p_source_82            IN NUMBER
29165 --Reversed Collection Document Distribution Identifier
29166  , p_source_83            IN NUMBER
29167 --Reversed Collection Document Distribution Link Type
29168  , p_source_84            IN VARCHAR2
29169 )
29170 IS
29171 
29172 l_component_type              VARCHAR2(80);
29173 l_component_code              VARCHAR2(30);
29174 l_component_type_code         VARCHAR2(1);
29175 l_component_appl_id           INTEGER;
29176 l_amb_context_code            VARCHAR2(30);
29177 l_entity_code                 VARCHAR2(30);
29178 l_event_class_code            VARCHAR2(30);
29179 l_ae_header_id                NUMBER;
29180 l_event_type_code             VARCHAR2(30);
29181 l_line_definition_code        VARCHAR2(30);
29182 l_line_definition_owner_code  VARCHAR2(1);
29183 --
29184 -- adr variables
29185 l_segment                     VARCHAR2(30);
29186 l_ccid                        NUMBER;
29187 l_adr_transaction_coa_id      NUMBER;
29188 l_adr_accounting_coa_id       NUMBER;
29189 l_adr_flexfield_segment_code  VARCHAR2(30);
29190 l_adr_flex_value_set_id       NUMBER;
29191 l_adr_value_type_code         VARCHAR2(30);
29192 l_adr_value_combination_id    NUMBER;
29193 l_adr_value_segment_code      VARCHAR2(30);
29194 
29195 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29199 
29196 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29197 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29198 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29200 -- 4262811 Variables ------------------------------------------------------------------------------------------
29201 l_entered_amt_idx             NUMBER;
29202 l_accted_amt_idx              NUMBER;
29203 l_acc_rev_flag                VARCHAR2(1);
29204 l_accrual_line_num            NUMBER;
29205 l_tmp_amt                     NUMBER;
29206 l_acc_rev_natural_side_code   VARCHAR2(1);
29207 
29208 l_num_entries                 NUMBER;
29209 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29210 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29211 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29212 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29213 l_recog_line_1                NUMBER;
29214 l_recog_line_2                NUMBER;
29215 
29216 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29217 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29218 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29219 
29220 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29221 
29222 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29223 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29224 
29225 ---------------------------------------------------------------------------------------------------------------
29226 
29227 
29228 --
29229 -- bulk performance
29230 --
29231 l_balance_type_code           VARCHAR2(1);
29232 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29233 l_log_module                  VARCHAR2(240);
29234 
29235 --
29236 -- Upgrade strategy
29237 --
29238 l_actual_upg_option           VARCHAR2(1);
29239 l_enc_upg_option           VARCHAR2(1);
29240 
29241 --
29242 BEGIN
29243 --
29244 IF g_log_enabled THEN
29245       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_70';
29246 END IF;
29247 --
29248 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29249 
29250       trace
29251          (p_msg      => 'BEGIN of AcctLineType_70'
29252          ,p_level    => C_LEVEL_PROCEDURE
29253          ,p_module   => l_log_module);
29254 
29255 END IF;
29256 --
29257 l_component_type             := 'AMB_JLT';
29258 l_component_code             := 'FACT_DOC_BANK_CHARGES';
29259 l_component_type_code        := 'S';
29260 l_component_appl_id          :=  222;
29261 l_amb_context_code           := 'DEFAULT';
29262 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
29263 l_event_class_code           := 'FACTORING_OCC_DOCUMENT';
29264 l_event_type_code            := 'FACTORING_OCC_DOCUMENT_ALL';
29265 l_line_definition_owner_code := 'S';
29266 l_line_definition_code       := 'JLBR_AR_FACT_DOC_ACCRUAL';
29267 --
29268 l_balance_type_code          := 'A';
29269 l_segment                     := NULL;
29270 l_ccid                        := NULL;
29271 l_adr_transaction_coa_id      := NULL;
29272 l_adr_accounting_coa_id       := NULL;
29273 l_adr_flexfield_segment_code  := NULL;
29274 l_adr_flex_value_set_id       := NULL;
29275 l_adr_value_type_code         := NULL;
29276 l_adr_value_combination_id    := NULL;
29277 l_adr_value_segment_code      := NULL;
29278 
29279 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
29280 l_bflow_class_code           := '';    -- 4219869 Business Flow
29281 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
29282 l_budgetary_control_flag     := 'N';
29283 
29284 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29285 l_bflow_applied_to_amt       := NULL; -- 5132302
29286 l_entered_amt_idx            := NULL;          -- 4262811
29287 l_accted_amt_idx             := NULL;          -- 4262811
29288 l_acc_rev_flag               := NULL;          -- 4262811
29289 l_accrual_line_num           := NULL;          -- 4262811
29290 l_tmp_amt                    := NULL;          -- 4262811
29291 --
29292  
29293 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29294     l_balance_type_code <> 'B' THEN
29295 IF NVL(p_source_66,'
29296 ') =  'JLBR_AR_BANK_CHARGES' AND 
29297 NVL(p_source_7,'
29298 ') =  'FACTORING'
29299  THEN 
29300 
29301    --
29302    XLA_AE_LINES_PKG.SetNewLine;
29303 
29304    p_balance_type_code          := l_balance_type_code;
29305    -- set the flag so later we will know whether the gain loss line needs to be created
29306    
29307    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29308      p_actual_flag :='A';
29309    END IF;
29310 
29311    --
29312    -- bulk performance
29313    --
29314    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29315                                       p_header_num   => 0); -- 4262811
29316    --
29317    -- set accounting line options
29318    --
29319    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29320            p_natural_side_code          => 'D'
29321          , p_gain_or_loss_flag          => 'N'
29322          , p_gl_transfer_mode_code      => 'S'
29323          , p_acct_entry_type_code       => 'A'
29324          , p_switch_side_flag           => 'Y'
29325          , p_merge_duplicate_code       => 'W'
29329    -- 
29326          );
29327    --
29328    l_acc_rev_natural_side_code := 'C';  -- 4262811
29330    --
29331    -- set accounting line type info
29332    --
29333    xla_ae_lines_pkg.SetAcctLineType
29334       (p_component_type             => l_component_type
29335       ,p_event_type_code            => l_event_type_code
29336       ,p_line_definition_owner_code => l_line_definition_owner_code
29337       ,p_line_definition_code       => l_line_definition_code
29338       ,p_accounting_line_code       => l_component_code
29339       ,p_accounting_line_type_code  => l_component_type_code
29340       ,p_accounting_line_appl_id    => l_component_appl_id
29341       ,p_amb_context_code           => l_amb_context_code
29342       ,p_entity_code                => l_entity_code
29343       ,p_event_class_code           => l_event_class_code);
29344    --
29345    -- set accounting class
29346    --
29347    xla_ae_lines_pkg.SetAcctClass(
29348            p_accounting_class_code  => 'BANK_CHG'
29349          , p_ae_header_id           => l_ae_header_id
29350          );
29351 
29352    --
29353    -- set rounding class
29354    --
29355    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29356                       'BANK_CHG';
29357 
29358    --
29359    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29360    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29361    --
29362    -- bulk performance
29363    --
29364    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29365 
29366    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29367       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29368 
29369    -- 4955764
29370    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29371       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29372 
29373    -- 4458381 Public Sector Enh
29374    
29375    --
29376    -- set accounting attributes for the line type
29377    --
29378    l_entered_amt_idx := 10;
29379    l_accted_amt_idx  := 15;
29380    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29381    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
29382    l_rec_acct_attrs.array_char_value(1)  := p_source_67;
29383    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
29384    l_rec_acct_attrs.array_num_value(2)  := 
29385 xla_ae_sources_pkg.GetSystemSourceNum(
29386    p_source_code           => 'XLA_EVENT_APPL_ID'
29387  , p_source_type_code      => 'Y'
29388  , p_source_application_id =>  602
29389 );
29390    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
29391    l_rec_acct_attrs.array_char_value(3)  := p_source_69;
29392    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
29393    l_rec_acct_attrs.array_char_value(4)  := 
29394 xla_ae_sources_pkg.GetSystemSourceChar(
29395    p_source_code           => 'XLA_ENTITY_CODE'
29396  , p_source_type_code      => 'Y'
29397  , p_source_application_id =>  602
29398 );
29399    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
29400    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_71);
29401    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
29402    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_72);
29403    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
29404    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_73);
29405    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
29406    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_74);
29407    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
29408    l_rec_acct_attrs.array_char_value(9)  := p_source_75;
29409    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
29410    l_rec_acct_attrs.array_num_value(10)  := p_source_76;
29411    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
29412    l_rec_acct_attrs.array_char_value(11)  := p_source_77;
29413    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
29414    l_rec_acct_attrs.array_date_value(12)  := p_source_78;
29415    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
29416    l_rec_acct_attrs.array_num_value(13)  := p_source_79;
29417    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
29418    l_rec_acct_attrs.array_char_value(14)  := p_source_80;
29419    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
29420    l_rec_acct_attrs.array_num_value(15)  := p_source_81;
29421    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
29422    l_rec_acct_attrs.array_num_value(16)  := p_source_37;
29423    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
29424    l_rec_acct_attrs.array_num_value(17)  := p_source_38;
29425    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
29426    l_rec_acct_attrs.array_char_value(18)  := p_source_39;
29427    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
29428    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_82);
29429    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
29430    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_83);
29434    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_82);
29431    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
29432    l_rec_acct_attrs.array_char_value(21)  := p_source_84;
29433    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
29435 
29436    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29437    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29438 
29439    ---------------------------------------------------------------------------------------------------------------
29440    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29441    ---------------------------------------------------------------------------------------------------------------
29442    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29443 
29444    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29445    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29446 
29447    IF xla_accounting_cache_pkg.GetValueChar
29448          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29449          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29450    AND l_bflow_method_code = 'PRIOR_ENTRY'
29451 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29452    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29453          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29454        )
29455    THEN
29456          xla_ae_lines_pkg.BflowUpgEntry
29457            (p_business_method_code    => l_bflow_method_code
29458            ,p_business_class_code     => l_bflow_class_code
29459            ,p_balance_type            => l_balance_type_code);
29460    ELSE
29461       NULL;
29462 -- No business flow processing for business flow method of NONE.
29463    END IF;
29464 
29465    --
29466    -- call analytical criteria
29467    --
29468    
29469    --
29470    -- call description
29471    --
29472    
29473 xla_ae_lines_pkg.SetLineDescription(
29474    p_ae_header_id => l_ae_header_id
29475   ,p_description  => Description_2 (
29476      p_application_id         => p_application_id
29477    , p_ae_header_id           => l_ae_header_id 
29478 , p_source_4 => p_source_4
29479 , p_source_5 => p_source_5
29480 , p_source_6 => p_source_6
29481 , p_source_7 => p_source_7
29482 , p_source_7_meaning => p_source_7_meaning
29483    )
29484 );
29485 
29486 
29487    --
29488    -- call ADRs
29489    -- Bug 4922099
29490    --
29491    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29492         (NVL(l_actual_upg_option, 'N') = 'O') OR
29493         (NVL(l_enc_upg_option, 'N') = 'O')
29494       )
29495    THEN
29496    NULL;
29497    --
29498    --
29499    
29500   l_ccid := AcctDerRule_13(
29501            p_application_id           => p_application_id
29502          , p_ae_header_id             => l_ae_header_id 
29503 , p_source_15 => p_source_15
29504          , x_transaction_coa_id       => l_adr_transaction_coa_id
29505          , x_accounting_coa_id        => l_adr_accounting_coa_id
29506          , x_value_type_code          => l_adr_value_type_code
29507          , p_side                     => 'NA'
29508    );
29509 
29510    xla_ae_lines_pkg.set_ccid(
29511     p_code_combination_id          => l_ccid
29512   , p_value_type_code              => l_adr_value_type_code
29513   , p_transaction_coa_id           => l_adr_transaction_coa_id
29514   , p_accounting_coa_id            => l_adr_accounting_coa_id
29515   , p_adr_code                     => 'COLL_DOC_BANK_CHARGES'
29516   , p_adr_type_code                => 'S'
29517   , p_component_type               => l_component_type
29518   , p_component_code               => l_component_code
29519   , p_component_type_code          => l_component_type_code
29520   , p_component_appl_id            => l_component_appl_id
29521   , p_amb_context_code             => l_amb_context_code
29522   , p_side                         => 'NA'
29523   );
29524 
29525 
29526    --
29527    --
29528    END IF;
29529    --
29530    -- Bug 4922099
29531    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29532           (NVL(l_enc_upg_option, 'N') = 'O')
29533         ) AND
29534         (l_bflow_method_code = 'PRIOR_ENTRY')
29535       )
29536    THEN
29537       IF
29538       --
29539       1 = 2
29540       --
29541       THEN
29542       xla_accounting_err_pkg.build_message
29543                                     (p_appli_s_name            => 'XLA'
29544                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29545                                     ,p_token_1                 => 'LINE_NUMBER'
29546                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29547                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29548                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29549                                                                              l_component_type
29550                                                                             ,l_component_code
29551                                                                             ,l_component_type_code
29555                                                                             ,l_event_class_code
29552                                                                             ,l_component_appl_id
29553                                                                             ,l_amb_context_code
29554                                                                             ,l_entity_code
29556                                                                            )
29557                                     ,p_token_3                 => 'OWNER'
29558                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29559                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29560                                                                           ,p_lookup_code    => l_component_type_code
29561                                                                          )
29562                                     ,p_token_4                 => 'PRODUCT_NAME'
29563                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29564                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29565                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29566                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29567                                     ,p_ae_header_id            =>  NULL
29568                                        );
29569 
29570         IF (C_LEVEL_ERROR>= g_log_level) THEN
29571                  trace
29572                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29573                       ,p_level    => C_LEVEL_ERROR
29574                       ,p_module   => l_log_module);
29575         END IF;
29576       END IF;
29577    END IF;
29578    --
29579    --
29580    ------------------------------------------------------------------------------------------------
29581    -- 4219869 Business Flow
29582    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29583    -- Prior Entry.  Currently, the following code is always generated.
29584    ------------------------------------------------------------------------------------------------
29585    XLA_AE_LINES_PKG.ValidateCurrentLine;
29586 
29587    ------------------------------------------------------------------------------------
29588    -- 4219869 Business Flow
29589    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29590    ------------------------------------------------------------------------------------
29591    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29592 
29593    ----------------------------------------------------------------------------------
29594    -- 4219869 Business Flow
29595    -- Update journal entry status -- Need to generate this within IF <condition>
29596    ----------------------------------------------------------------------------------
29597    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29598          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29599          ,p_balance_type_code => l_balance_type_code
29600          );
29601 
29602    -------------------------------------------------------------------------------------------
29603    -- 4262811 - Generate the Accrual Reversal lines
29604    -------------------------------------------------------------------------------------------
29605    BEGIN
29606       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29607                               (g_array_event(p_event_id).array_value_num('header_index'));
29608       IF l_acc_rev_flag IS NULL THEN
29609          l_acc_rev_flag := 'N';
29610       END IF;
29611    EXCEPTION
29612       WHEN OTHERS THEN
29613          l_acc_rev_flag := 'N';
29614    END;
29615    --
29616    IF (l_acc_rev_flag = 'Y') THEN
29617 
29618        -- 4645092  ------------------------------------------------------------------------------
29619        -- To allow MPA report to determine if it should generate report process
29620        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29621        ------------------------------------------------------------------------------------------
29622 
29623        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29624        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29625    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
29626    -- call ADRs
29627    -- Bug 4922099
29628    --
29629    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29630         (NVL(l_actual_upg_option, 'N') = 'O') OR
29631         (NVL(l_enc_upg_option, 'N') = 'O')
29632       )
29633    THEN
29634    NULL;
29635    --
29636    --
29637    
29638   l_ccid := AcctDerRule_13(
29639            p_application_id           => p_application_id
29640          , p_ae_header_id             => l_ae_header_id 
29641 , p_source_15 => p_source_15
29642          , x_transaction_coa_id       => l_adr_transaction_coa_id
29643          , x_accounting_coa_id        => l_adr_accounting_coa_id
29644          , x_value_type_code          => l_adr_value_type_code
29645          , p_side                     => 'NA'
29646    );
29647 
29648    xla_ae_lines_pkg.set_ccid(
29649     p_code_combination_id          => l_ccid
29650   , p_value_type_code              => l_adr_value_type_code
29651   , p_transaction_coa_id           => l_adr_transaction_coa_id
29655   , p_component_type               => l_component_type
29652   , p_accounting_coa_id            => l_adr_accounting_coa_id
29653   , p_adr_code                     => 'COLL_DOC_BANK_CHARGES'
29654   , p_adr_type_code                => 'S'
29656   , p_component_code               => l_component_code
29657   , p_component_type_code          => l_component_type_code
29658   , p_component_appl_id            => l_component_appl_id
29659   , p_amb_context_code             => l_amb_context_code
29660   , p_side                         => 'NA'
29661   );
29662 
29663 
29664    --
29665    --
29666    END IF;
29667 
29668        --
29669        -- Update the line information that should be overwritten
29670        --
29671        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29672                                          p_header_num   => 1);
29673        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29674 
29675        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29676 
29677        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29678           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29679        END IF;
29680 
29681       --
29682       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29683       --
29684       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29685           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29686       ELSE
29687           ---------------------------------------------------------------------------------------------------
29688           -- 4262811a Switch Sign
29689           ---------------------------------------------------------------------------------------------------
29690           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29691           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29692                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29693           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29694                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29695           -- 5132302
29696           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29697                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29698 
29699       END IF;
29700 
29701       -- 4955764
29702       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29703       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29704 
29705 
29706       XLA_AE_LINES_PKG.ValidateCurrentLine;
29707       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29708 
29709       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29710                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29711                ,p_balance_type_code => l_balance_type_code);
29712 
29713    END IF;
29714 
29715    -----------------------------------------------------------------------------------------
29716    -- 4262811 Multiperiod Accounting
29717    -----------------------------------------------------------------------------------------
29718      -- No MPA option is assigned.
29719 
29720 
29721 END IF;
29722 END IF;
29723 --
29724 
29725 --
29726 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29727    trace
29728       (p_msg      => 'END of AcctLineType_70'
29729       ,p_level    => C_LEVEL_PROCEDURE
29730       ,p_module   => l_log_module);
29731 END IF;
29732 --
29733 EXCEPTION
29734   WHEN xla_exceptions_pkg.application_exception THEN
29735       RAISE;
29736   WHEN OTHERS THEN
29737        xla_exceptions_pkg.raise_message
29738            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_70');
29739 END AcctLineType_70;
29740 --
29741 
29742 ---------------------------------------
29743 --
29744 -- PRIVATE FUNCTION
29745 --         AcctLineType_71
29746 --
29747 ---------------------------------------
29748 PROCEDURE AcctLineType_71 (
29749   p_application_id        IN NUMBER
29750  ,p_event_id              IN NUMBER
29751  ,p_calculate_acctd_flag  IN VARCHAR2
29752  ,p_calculate_g_l_flag    IN VARCHAR2
29753  ,p_actual_flag           IN OUT VARCHAR2
29754  ,p_balance_type_code     OUT VARCHAR2
29755  ,p_gain_or_loss_ref      OUT VARCHAR2
29756  
29757 --Bordero Type
29758  , p_source_7            IN VARCHAR2
29759  , p_source_7_meaning    IN VARCHAR2
29760 --SLA Party Type
29761  , p_source_39            IN VARCHAR2
29762 --Collection Document Distribution Line Type
29763  , p_source_66            IN VARCHAR2
29764  , p_source_66_meaning    IN VARCHAR2
29765 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
29766  , p_source_67            IN VARCHAR2
29767  , p_source_67_meaning    IN VARCHAR2
29768 --Applied To Distribution Link Type
29769  , p_source_69            IN VARCHAR2
29770 --Applied To Distribution Identifier
29771  , p_source_71            IN NUMBER
29772 --Applied To Distribution Document Identifier
29773  , p_source_72            IN NUMBER
29777  , p_source_74            IN NUMBER
29774 --Applied To Distribution Occurrence Identifier
29775  , p_source_73            IN NUMBER
29776 --Collection Document Distribution Identifier
29778 --Collection Document Distribution Link Type
29779  , p_source_75            IN VARCHAR2
29780 --Collection Document Distribution Entered Amount
29781  , p_source_76            IN NUMBER
29782 --Collection Document Distribution Entered Currency Code
29783  , p_source_77            IN VARCHAR2
29784 --Collection Document Distribution Accounted Amount
29785  , p_source_81            IN NUMBER
29786 --Collection Document Occurrence Identifier
29787  , p_source_82            IN NUMBER
29788 --Reversed Collection Document Distribution Identifier
29789  , p_source_83            IN NUMBER
29790 --Reversed Collection Document Distribution Link Type
29791  , p_source_84            IN VARCHAR2
29792 --Collection Document Occurrence Type
29793  , p_source_85            IN VARCHAR2
29794  , p_source_85_meaning    IN VARCHAR2
29795 )
29796 IS
29797 
29798 l_component_type              VARCHAR2(80);
29799 l_component_code              VARCHAR2(30);
29800 l_component_type_code         VARCHAR2(1);
29801 l_component_appl_id           INTEGER;
29802 l_amb_context_code            VARCHAR2(30);
29803 l_entity_code                 VARCHAR2(30);
29804 l_event_class_code            VARCHAR2(30);
29805 l_ae_header_id                NUMBER;
29806 l_event_type_code             VARCHAR2(30);
29807 l_line_definition_code        VARCHAR2(30);
29808 l_line_definition_owner_code  VARCHAR2(1);
29809 --
29810 -- adr variables
29811 l_segment                     VARCHAR2(30);
29812 l_ccid                        NUMBER;
29813 l_adr_transaction_coa_id      NUMBER;
29814 l_adr_accounting_coa_id       NUMBER;
29815 l_adr_flexfield_segment_code  VARCHAR2(30);
29816 l_adr_flex_value_set_id       NUMBER;
29817 l_adr_value_type_code         VARCHAR2(30);
29818 l_adr_value_combination_id    NUMBER;
29819 l_adr_value_segment_code      VARCHAR2(30);
29820 
29821 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29822 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29823 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29824 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29825 
29826 -- 4262811 Variables ------------------------------------------------------------------------------------------
29827 l_entered_amt_idx             NUMBER;
29828 l_accted_amt_idx              NUMBER;
29829 l_acc_rev_flag                VARCHAR2(1);
29830 l_accrual_line_num            NUMBER;
29831 l_tmp_amt                     NUMBER;
29832 l_acc_rev_natural_side_code   VARCHAR2(1);
29833 
29834 l_num_entries                 NUMBER;
29835 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29836 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29837 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29838 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29839 l_recog_line_1                NUMBER;
29840 l_recog_line_2                NUMBER;
29841 
29842 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29843 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29844 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29845 
29846 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29847 
29848 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29849 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29850 
29851 ---------------------------------------------------------------------------------------------------------------
29852 
29853 
29854 --
29855 -- bulk performance
29856 --
29857 l_balance_type_code           VARCHAR2(1);
29858 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29859 l_log_module                  VARCHAR2(240);
29860 
29861 --
29862 -- Upgrade strategy
29863 --
29864 l_actual_upg_option           VARCHAR2(1);
29865 l_enc_upg_option           VARCHAR2(1);
29866 
29867 --
29868 BEGIN
29869 --
29870 IF g_log_enabled THEN
29871       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_71';
29872 END IF;
29873 --
29874 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29875 
29876       trace
29877          (p_msg      => 'BEGIN of AcctLineType_71'
29878          ,p_level    => C_LEVEL_PROCEDURE
29879          ,p_module   => l_log_module);
29880 
29881 END IF;
29882 --
29883 l_component_type             := 'AMB_JLT';
29884 l_component_code             := 'FACT_DOC_BILLS_UNDER_DISC_CR';
29885 l_component_type_code        := 'S';
29886 l_component_appl_id          :=  222;
29887 l_amb_context_code           := 'DEFAULT';
29888 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
29889 l_event_class_code           := 'FACTORING_OCC_DOCUMENT';
29890 l_event_type_code            := 'FACTORING_OCC_DOCUMENT_ALL';
29891 l_line_definition_owner_code := 'S';
29892 l_line_definition_code       := 'JLBR_AR_FACT_DOC_ACCRUAL';
29893 --
29894 l_balance_type_code          := 'A';
29895 l_segment                     := NULL;
29896 l_ccid                        := NULL;
29897 l_adr_transaction_coa_id      := NULL;
29898 l_adr_accounting_coa_id       := NULL;
29902 l_adr_value_combination_id    := NULL;
29899 l_adr_flexfield_segment_code  := NULL;
29900 l_adr_flex_value_set_id       := NULL;
29901 l_adr_value_type_code         := NULL;
29903 l_adr_value_segment_code      := NULL;
29904 
29905 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
29906 l_bflow_class_code           := 'JLBR_AR_BILLS_UNDER_DISCOUNT';    -- 4219869 Business Flow
29907 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
29908 l_budgetary_control_flag     := 'N';
29909 
29910 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29911 l_bflow_applied_to_amt       := NULL; -- 5132302
29912 l_entered_amt_idx            := NULL;          -- 4262811
29913 l_accted_amt_idx             := NULL;          -- 4262811
29914 l_acc_rev_flag               := NULL;          -- 4262811
29915 l_accrual_line_num           := NULL;          -- 4262811
29916 l_tmp_amt                    := NULL;          -- 4262811
29917 --
29918  
29919 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29920     l_balance_type_code <> 'B' THEN
29921 IF NVL(p_source_66,'
29922 ') =  'JLBR_AR_ENDORSEMENT' AND 
29923 NVL(p_source_7,'
29924 ') =  'FACTORING' AND 
29925 NVL(p_source_85,'
29926 ') =  'RETURN_OCCURRENCE'
29927  THEN 
29928 
29929    --
29930    XLA_AE_LINES_PKG.SetNewLine;
29931 
29932    p_balance_type_code          := l_balance_type_code;
29933    -- set the flag so later we will know whether the gain loss line needs to be created
29934    
29935    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29936      p_actual_flag :='A';
29937    END IF;
29938 
29939    --
29940    -- bulk performance
29941    --
29942    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29943                                       p_header_num   => 0); -- 4262811
29944    --
29945    -- set accounting line options
29946    --
29947    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29948            p_natural_side_code          => 'C'
29949          , p_gain_or_loss_flag          => 'N'
29950          , p_gl_transfer_mode_code      => 'S'
29951          , p_acct_entry_type_code       => 'A'
29952          , p_switch_side_flag           => 'Y'
29953          , p_merge_duplicate_code       => 'A'
29954          );
29955    --
29956    l_acc_rev_natural_side_code := 'D';  -- 4262811
29957    -- 
29958    --
29959    -- set accounting line type info
29960    --
29961    xla_ae_lines_pkg.SetAcctLineType
29962       (p_component_type             => l_component_type
29963       ,p_event_type_code            => l_event_type_code
29964       ,p_line_definition_owner_code => l_line_definition_owner_code
29965       ,p_line_definition_code       => l_line_definition_code
29966       ,p_accounting_line_code       => l_component_code
29967       ,p_accounting_line_type_code  => l_component_type_code
29968       ,p_accounting_line_appl_id    => l_component_appl_id
29969       ,p_amb_context_code           => l_amb_context_code
29970       ,p_entity_code                => l_entity_code
29971       ,p_event_class_code           => l_event_class_code);
29972    --
29973    -- set accounting class
29974    --
29975    xla_ae_lines_pkg.SetAcctClass(
29976            p_accounting_class_code  => 'FACTOR'
29977          , p_ae_header_id           => l_ae_header_id
29978          );
29979 
29980    --
29981    -- set rounding class
29982    --
29983    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29984                       'FACTOR';
29985 
29986    --
29987    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29988    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29989    --
29990    -- bulk performance
29991    --
29992    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29993 
29994    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29995       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29996 
29997    -- 4955764
29998    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29999       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30000 
30001    -- 4458381 Public Sector Enh
30002    
30003    --
30004    -- set accounting attributes for the line type
30005    --
30006    l_entered_amt_idx := 10;
30007    l_accted_amt_idx  := 12;
30008    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30009    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
30010    l_rec_acct_attrs.array_char_value(1)  := p_source_67;
30011    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
30012    l_rec_acct_attrs.array_num_value(2)  := 
30013 xla_ae_sources_pkg.GetSystemSourceNum(
30014    p_source_code           => 'XLA_EVENT_APPL_ID'
30015  , p_source_type_code      => 'Y'
30016  , p_source_application_id =>  602
30017 );
30018    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
30019    l_rec_acct_attrs.array_char_value(3)  := p_source_69;
30020    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
30021    l_rec_acct_attrs.array_char_value(4)  := 
30022 xla_ae_sources_pkg.GetSystemSourceChar(
30026 );
30023    p_source_code           => 'XLA_ENTITY_CODE'
30024  , p_source_type_code      => 'Y'
30025  , p_source_application_id =>  602
30027    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
30028    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_71);
30029    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
30030    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_72);
30031    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
30032    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_73);
30033    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
30034    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_74);
30035    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
30036    l_rec_acct_attrs.array_char_value(9)  := p_source_75;
30037    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
30038    l_rec_acct_attrs.array_num_value(10)  := p_source_76;
30039    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
30040    l_rec_acct_attrs.array_char_value(11)  := p_source_77;
30041    l_rec_acct_attrs.array_acct_attr_code(12) := 'LEDGER_AMOUNT';
30042    l_rec_acct_attrs.array_num_value(12)  := p_source_81;
30043    l_rec_acct_attrs.array_acct_attr_code(13) := 'PARTY_TYPE';
30044    l_rec_acct_attrs.array_char_value(13)  := p_source_39;
30045    l_rec_acct_attrs.array_acct_attr_code(14) := 'RECON_REF';
30046    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_82);
30047    l_rec_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_ID1';
30048    l_rec_acct_attrs.array_num_value(15)  :=  to_char(p_source_83);
30049    l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_TYPE';
30050    l_rec_acct_attrs.array_char_value(16)  := p_source_84;
30051    l_rec_acct_attrs.array_acct_attr_code(17) := 'TRX_ROUNDING_REF';
30052    l_rec_acct_attrs.array_num_value(17)  :=  to_char(p_source_82);
30053 
30054    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30055    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30056 
30057    ---------------------------------------------------------------------------------------------------------------
30058    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30059    ---------------------------------------------------------------------------------------------------------------
30060    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30061 
30062    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30063    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30064 
30065    IF xla_accounting_cache_pkg.GetValueChar
30066          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30067          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30068    AND l_bflow_method_code = 'PRIOR_ENTRY'
30069 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30070    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30071          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30072        )
30073    THEN
30074          xla_ae_lines_pkg.BflowUpgEntry
30075            (p_business_method_code    => l_bflow_method_code
30076            ,p_business_class_code     => l_bflow_class_code
30077            ,p_balance_type            => l_balance_type_code);
30078    ELSE
30079       NULL;
30080 XLA_AE_LINES_PKG.business_flow_validation(
30081                                 p_business_method_code     => l_bflow_method_code
30082                                ,p_business_class_code      => l_bflow_class_code
30083                                ,p_inherit_description_flag => l_inherit_desc_flag);
30084    END IF;
30085 
30086    --
30087    -- call analytical criteria
30088    --
30089    -- Inherited Analytical Criteria for business flow method of Prior Entry.
30090    --
30091    -- call description
30092    --
30093    -- No description or it is inherited.
30094    --
30095    -- call ADRs
30096    -- Bug 4922099
30097    --
30098    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30099         (NVL(l_actual_upg_option, 'N') = 'O') OR
30100         (NVL(l_enc_upg_option, 'N') = 'O')
30101       )
30102    THEN
30103    NULL;
30104    --
30105    --
30106    
30107    --
30108    --
30109    END IF;
30110    --
30111    -- Bug 4922099
30112    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30113           (NVL(l_enc_upg_option, 'N') = 'O')
30114         ) AND
30115         (l_bflow_method_code = 'PRIOR_ENTRY')
30116       )
30117    THEN
30118       IF
30119       --
30120       1 = 1
30121       --
30122       THEN
30123       xla_accounting_err_pkg.build_message
30124                                     (p_appli_s_name            => 'XLA'
30125                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30126                                     ,p_token_1                 => 'LINE_NUMBER'
30127                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30128                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30129                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30130                                                                              l_component_type
30134                                                                             ,l_amb_context_code
30131                                                                             ,l_component_code
30132                                                                             ,l_component_type_code
30133                                                                             ,l_component_appl_id
30135                                                                             ,l_entity_code
30136                                                                             ,l_event_class_code
30137                                                                            )
30138                                     ,p_token_3                 => 'OWNER'
30139                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30140                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30141                                                                           ,p_lookup_code    => l_component_type_code
30142                                                                          )
30143                                     ,p_token_4                 => 'PRODUCT_NAME'
30144                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30145                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30146                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30147                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30148                                     ,p_ae_header_id            =>  NULL
30149                                        );
30150 
30151         IF (C_LEVEL_ERROR>= g_log_level) THEN
30152                  trace
30153                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30154                       ,p_level    => C_LEVEL_ERROR
30155                       ,p_module   => l_log_module);
30156         END IF;
30157       END IF;
30158    END IF;
30159    --
30160    --
30161    ------------------------------------------------------------------------------------------------
30162    -- 4219869 Business Flow
30163    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30164    -- Prior Entry.  Currently, the following code is always generated.
30165    ------------------------------------------------------------------------------------------------
30166    -- No ValidateCurrentLine for business flow method of Prior Entry
30167 
30168    ------------------------------------------------------------------------------------
30169    -- 4219869 Business Flow
30170    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30171    ------------------------------------------------------------------------------------
30172    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30173 
30174    ----------------------------------------------------------------------------------
30175    -- 4219869 Business Flow
30176    -- Update journal entry status -- Need to generate this within IF <condition>
30177    ----------------------------------------------------------------------------------
30178    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30179          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30180          ,p_balance_type_code => l_balance_type_code
30181          );
30182 
30183    -------------------------------------------------------------------------------------------
30184    -- 4262811 - Generate the Accrual Reversal lines
30185    -------------------------------------------------------------------------------------------
30186    BEGIN
30187       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30188                               (g_array_event(p_event_id).array_value_num('header_index'));
30189       IF l_acc_rev_flag IS NULL THEN
30190          l_acc_rev_flag := 'N';
30191       END IF;
30192    EXCEPTION
30193       WHEN OTHERS THEN
30194          l_acc_rev_flag := 'N';
30195    END;
30196    --
30197    IF (l_acc_rev_flag = 'Y') THEN
30198 
30199        -- 4645092  ------------------------------------------------------------------------------
30200        -- To allow MPA report to determine if it should generate report process
30201        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30202        ------------------------------------------------------------------------------------------
30203 
30204        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30205        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30206    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
30207    -- call ADRs
30208    -- Bug 4922099
30209    --
30210    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30211         (NVL(l_actual_upg_option, 'N') = 'O') OR
30212         (NVL(l_enc_upg_option, 'N') = 'O')
30213       )
30214    THEN
30215    NULL;
30216    --
30217    --
30218    
30219    --
30220    --
30221    END IF;
30222 
30223        --
30224        -- Update the line information that should be overwritten
30225        --
30226        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30227                                          p_header_num   => 1);
30228        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30229 
30233           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30230        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30231 
30232        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30234        END IF;
30235 
30236       --
30237       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30238       --
30239       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30240           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30241       ELSE
30242           ---------------------------------------------------------------------------------------------------
30243           -- 4262811a Switch Sign
30244           ---------------------------------------------------------------------------------------------------
30245           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30246           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30247                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30248           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30249                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30250           -- 5132302
30251           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30252                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30253 
30254       END IF;
30255 
30256       -- 4955764
30257       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30258       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30259 
30260 
30261       XLA_AE_LINES_PKG.ValidateCurrentLine;
30262       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30263 
30264       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30265                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30266                ,p_balance_type_code => l_balance_type_code);
30267 
30268    END IF;
30269 
30270    -----------------------------------------------------------------------------------------
30271    -- 4262811 Multiperiod Accounting
30272    -----------------------------------------------------------------------------------------
30273      -- No MPA option is assigned.
30274 
30275 
30276 END IF;
30277 END IF;
30278 --
30279 
30280 --
30281 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30282    trace
30283       (p_msg      => 'END of AcctLineType_71'
30284       ,p_level    => C_LEVEL_PROCEDURE
30285       ,p_module   => l_log_module);
30286 END IF;
30287 --
30288 EXCEPTION
30289   WHEN xla_exceptions_pkg.application_exception THEN
30290       RAISE;
30291   WHEN OTHERS THEN
30292        xla_exceptions_pkg.raise_message
30293            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_71');
30294 END AcctLineType_71;
30295 --
30296 
30297 ---------------------------------------
30298 --
30299 -- PRIVATE FUNCTION
30300 --         AcctLineType_72
30301 --
30302 ---------------------------------------
30303 PROCEDURE AcctLineType_72 (
30304   p_application_id        IN NUMBER
30305  ,p_event_id              IN NUMBER
30306  ,p_calculate_acctd_flag  IN VARCHAR2
30307  ,p_calculate_g_l_flag    IN VARCHAR2
30308  ,p_actual_flag           IN OUT VARCHAR2
30309  ,p_balance_type_code     OUT VARCHAR2
30310  ,p_gain_or_loss_ref      OUT VARCHAR2
30311  
30312 --Collection Document Bank Occurrence
30313  , p_source_4            IN VARCHAR2
30314 --Collection Document Number
30315  , p_source_5            IN NUMBER
30316 --Collection Document Trade Note Number
30317  , p_source_6            IN VARCHAR2
30318 --Bordero Type
30319  , p_source_7            IN VARCHAR2
30320  , p_source_7_meaning    IN VARCHAR2
30321 --Collection Document Bills Under Discount Account
30322  , p_source_17            IN NUMBER
30323 --Bill To Customer Account Identifier
30324  , p_source_37            IN NUMBER
30325 --Bill To Customer Site Use Identifier
30326  , p_source_38            IN NUMBER
30327 --SLA Party Type
30328  , p_source_39            IN VARCHAR2
30329 --Collection Document Distribution Line Type
30330  , p_source_66            IN VARCHAR2
30331  , p_source_66_meaning    IN VARCHAR2
30332 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
30333  , p_source_67            IN VARCHAR2
30334  , p_source_67_meaning    IN VARCHAR2
30335 --Applied To Distribution Link Type
30336  , p_source_69            IN VARCHAR2
30337 --Applied To Distribution Identifier
30338  , p_source_71            IN NUMBER
30339 --Applied To Distribution Document Identifier
30340  , p_source_72            IN NUMBER
30341 --Applied To Distribution Occurrence Identifier
30342  , p_source_73            IN NUMBER
30343 --Collection Document Distribution Identifier
30344  , p_source_74            IN NUMBER
30345 --Collection Document Distribution Link Type
30346  , p_source_75            IN VARCHAR2
30347 --Collection Document Distribution Entered Amount
30348  , p_source_76            IN NUMBER
30352  , p_source_78            IN DATE
30349 --Collection Document Distribution Entered Currency Code
30350  , p_source_77            IN VARCHAR2
30351 --Collection Document Distribution Conversion Date
30353 --Collection Document Distribution Conversion Rate
30354  , p_source_79            IN NUMBER
30355 --Collection Document Distribution Conversion Rate Type
30356  , p_source_80            IN VARCHAR2
30357 --Collection Document Distribution Accounted Amount
30358  , p_source_81            IN NUMBER
30359 --Collection Document Occurrence Identifier
30360  , p_source_82            IN NUMBER
30361 --Reversed Collection Document Distribution Identifier
30362  , p_source_83            IN NUMBER
30363 --Reversed Collection Document Distribution Link Type
30364  , p_source_84            IN VARCHAR2
30365 --Collection Document Occurrence Type
30366  , p_source_85            IN VARCHAR2
30367  , p_source_85_meaning    IN VARCHAR2
30368 )
30369 IS
30370 
30371 l_component_type              VARCHAR2(80);
30372 l_component_code              VARCHAR2(30);
30373 l_component_type_code         VARCHAR2(1);
30374 l_component_appl_id           INTEGER;
30375 l_amb_context_code            VARCHAR2(30);
30376 l_entity_code                 VARCHAR2(30);
30377 l_event_class_code            VARCHAR2(30);
30378 l_ae_header_id                NUMBER;
30379 l_event_type_code             VARCHAR2(30);
30380 l_line_definition_code        VARCHAR2(30);
30381 l_line_definition_owner_code  VARCHAR2(1);
30382 --
30383 -- adr variables
30384 l_segment                     VARCHAR2(30);
30385 l_ccid                        NUMBER;
30386 l_adr_transaction_coa_id      NUMBER;
30387 l_adr_accounting_coa_id       NUMBER;
30388 l_adr_flexfield_segment_code  VARCHAR2(30);
30389 l_adr_flex_value_set_id       NUMBER;
30390 l_adr_value_type_code         VARCHAR2(30);
30391 l_adr_value_combination_id    NUMBER;
30392 l_adr_value_segment_code      VARCHAR2(30);
30393 
30394 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30395 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30396 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30397 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30398 
30399 -- 4262811 Variables ------------------------------------------------------------------------------------------
30400 l_entered_amt_idx             NUMBER;
30401 l_accted_amt_idx              NUMBER;
30402 l_acc_rev_flag                VARCHAR2(1);
30403 l_accrual_line_num            NUMBER;
30404 l_tmp_amt                     NUMBER;
30405 l_acc_rev_natural_side_code   VARCHAR2(1);
30406 
30407 l_num_entries                 NUMBER;
30408 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30409 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30410 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30411 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30412 l_recog_line_1                NUMBER;
30413 l_recog_line_2                NUMBER;
30414 
30415 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30416 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30417 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30418 
30419 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30420 
30421 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30422 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30423 
30424 ---------------------------------------------------------------------------------------------------------------
30425 
30426 
30427 --
30428 -- bulk performance
30429 --
30430 l_balance_type_code           VARCHAR2(1);
30431 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30432 l_log_module                  VARCHAR2(240);
30433 
30434 --
30435 -- Upgrade strategy
30436 --
30437 l_actual_upg_option           VARCHAR2(1);
30438 l_enc_upg_option           VARCHAR2(1);
30439 
30440 --
30441 BEGIN
30442 --
30443 IF g_log_enabled THEN
30444       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_72';
30445 END IF;
30446 --
30447 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30448 
30449       trace
30450          (p_msg      => 'BEGIN of AcctLineType_72'
30451          ,p_level    => C_LEVEL_PROCEDURE
30452          ,p_module   => l_log_module);
30453 
30454 END IF;
30455 --
30456 l_component_type             := 'AMB_JLT';
30457 l_component_code             := 'FACT_DOC_BILLS_UNDER_DISC_DR';
30458 l_component_type_code        := 'S';
30459 l_component_appl_id          :=  222;
30460 l_amb_context_code           := 'DEFAULT';
30461 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
30462 l_event_class_code           := 'FACTORING_OCC_DOCUMENT';
30463 l_event_type_code            := 'FACTORING_OCC_DOCUMENT_ALL';
30464 l_line_definition_owner_code := 'S';
30465 l_line_definition_code       := 'JLBR_AR_FACT_DOC_ACCRUAL';
30466 --
30467 l_balance_type_code          := 'A';
30468 l_segment                     := NULL;
30469 l_ccid                        := NULL;
30470 l_adr_transaction_coa_id      := NULL;
30471 l_adr_accounting_coa_id       := NULL;
30472 l_adr_flexfield_segment_code  := NULL;
30476 l_adr_value_segment_code      := NULL;
30473 l_adr_flex_value_set_id       := NULL;
30474 l_adr_value_type_code         := NULL;
30475 l_adr_value_combination_id    := NULL;
30477 
30478 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30479 l_bflow_class_code           := 'JLBR_AR_BILLS_UNDER_DISCOUNT';    -- 4219869 Business Flow
30480 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30481 l_budgetary_control_flag     := 'N';
30482 
30483 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30484 l_bflow_applied_to_amt       := NULL; -- 5132302
30485 l_entered_amt_idx            := NULL;          -- 4262811
30486 l_accted_amt_idx             := NULL;          -- 4262811
30487 l_acc_rev_flag               := NULL;          -- 4262811
30488 l_accrual_line_num           := NULL;          -- 4262811
30489 l_tmp_amt                    := NULL;          -- 4262811
30490 --
30491  
30492 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30493     l_balance_type_code <> 'B' THEN
30494 IF NVL(p_source_66,'
30495 ') =  'JLBR_AR_ENDORSEMENT' AND 
30496 NVL(p_source_7,'
30497 ') =  'FACTORING' AND 
30498 NVL(p_source_85,'
30499 ') =  'REMITTANCE_OCCURRENCE'
30500  THEN 
30501 
30502    --
30503    XLA_AE_LINES_PKG.SetNewLine;
30504 
30505    p_balance_type_code          := l_balance_type_code;
30506    -- set the flag so later we will know whether the gain loss line needs to be created
30507    
30508    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30509      p_actual_flag :='A';
30510    END IF;
30511 
30512    --
30513    -- bulk performance
30514    --
30515    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30516                                       p_header_num   => 0); -- 4262811
30517    --
30518    -- set accounting line options
30519    --
30520    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30521            p_natural_side_code          => 'D'
30522          , p_gain_or_loss_flag          => 'N'
30523          , p_gl_transfer_mode_code      => 'S'
30524          , p_acct_entry_type_code       => 'A'
30525          , p_switch_side_flag           => 'Y'
30526          , p_merge_duplicate_code       => 'A'
30527          );
30528    --
30529    l_acc_rev_natural_side_code := 'C';  -- 4262811
30530    -- 
30531    --
30532    -- set accounting line type info
30533    --
30534    xla_ae_lines_pkg.SetAcctLineType
30535       (p_component_type             => l_component_type
30536       ,p_event_type_code            => l_event_type_code
30537       ,p_line_definition_owner_code => l_line_definition_owner_code
30538       ,p_line_definition_code       => l_line_definition_code
30539       ,p_accounting_line_code       => l_component_code
30540       ,p_accounting_line_type_code  => l_component_type_code
30541       ,p_accounting_line_appl_id    => l_component_appl_id
30542       ,p_amb_context_code           => l_amb_context_code
30543       ,p_entity_code                => l_entity_code
30544       ,p_event_class_code           => l_event_class_code);
30545    --
30546    -- set accounting class
30547    --
30548    xla_ae_lines_pkg.SetAcctClass(
30549            p_accounting_class_code  => 'FACTOR'
30550          , p_ae_header_id           => l_ae_header_id
30551          );
30552 
30553    --
30554    -- set rounding class
30555    --
30556    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30557                       'FACTOR';
30558 
30559    --
30560    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30561    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30562    --
30563    -- bulk performance
30564    --
30565    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30566 
30567    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30568       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30569 
30570    -- 4955764
30571    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30572       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30573 
30574    -- 4458381 Public Sector Enh
30575    
30576    --
30577    -- set accounting attributes for the line type
30578    --
30579    l_entered_amt_idx := 10;
30580    l_accted_amt_idx  := 15;
30581    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30582    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
30583    l_rec_acct_attrs.array_char_value(1)  := p_source_67;
30584    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
30585    l_rec_acct_attrs.array_num_value(2)  := 
30586 xla_ae_sources_pkg.GetSystemSourceNum(
30587    p_source_code           => 'XLA_EVENT_APPL_ID'
30588  , p_source_type_code      => 'Y'
30589  , p_source_application_id =>  602
30590 );
30591    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
30592    l_rec_acct_attrs.array_char_value(3)  := p_source_69;
30593    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
30594    l_rec_acct_attrs.array_char_value(4)  := 
30595 xla_ae_sources_pkg.GetSystemSourceChar(
30596    p_source_code           => 'XLA_ENTITY_CODE'
30597  , p_source_type_code      => 'Y'
30601    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_71);
30598  , p_source_application_id =>  602
30599 );
30600    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
30602    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
30603    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_72);
30604    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
30605    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_73);
30606    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
30607    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_74);
30608    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
30609    l_rec_acct_attrs.array_char_value(9)  := p_source_75;
30610    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
30611    l_rec_acct_attrs.array_num_value(10)  := p_source_76;
30612    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
30613    l_rec_acct_attrs.array_char_value(11)  := p_source_77;
30614    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
30615    l_rec_acct_attrs.array_date_value(12)  := p_source_78;
30616    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
30617    l_rec_acct_attrs.array_num_value(13)  := p_source_79;
30618    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
30619    l_rec_acct_attrs.array_char_value(14)  := p_source_80;
30620    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
30621    l_rec_acct_attrs.array_num_value(15)  := p_source_81;
30622    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
30623    l_rec_acct_attrs.array_num_value(16)  := p_source_37;
30624    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
30625    l_rec_acct_attrs.array_num_value(17)  := p_source_38;
30626    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
30627    l_rec_acct_attrs.array_char_value(18)  := p_source_39;
30628    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
30629    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_82);
30630    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
30631    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_83);
30632    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
30633    l_rec_acct_attrs.array_char_value(21)  := p_source_84;
30634    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
30635    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_82);
30636 
30637    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30638    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30639 
30640    ---------------------------------------------------------------------------------------------------------------
30641    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30642    ---------------------------------------------------------------------------------------------------------------
30643    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30644 
30645    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30646    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30647 
30648    IF xla_accounting_cache_pkg.GetValueChar
30649          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30650          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30651    AND l_bflow_method_code = 'PRIOR_ENTRY'
30652 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30653    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30654          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30655        )
30656    THEN
30657          xla_ae_lines_pkg.BflowUpgEntry
30658            (p_business_method_code    => l_bflow_method_code
30659            ,p_business_class_code     => l_bflow_class_code
30660            ,p_balance_type            => l_balance_type_code);
30661    ELSE
30662       NULL;
30663 -- No business flow processing for business flow method of NONE.
30664    END IF;
30665 
30666    --
30667    -- call analytical criteria
30668    --
30669    
30670    --
30671    -- call description
30672    --
30673    
30674 xla_ae_lines_pkg.SetLineDescription(
30675    p_ae_header_id => l_ae_header_id
30676   ,p_description  => Description_4 (
30677      p_application_id         => p_application_id
30678    , p_ae_header_id           => l_ae_header_id 
30679 , p_source_4 => p_source_4
30680 , p_source_5 => p_source_5
30681 , p_source_6 => p_source_6
30682    )
30683 );
30684 
30685 
30686    --
30687    -- call ADRs
30688    -- Bug 4922099
30689    --
30690    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30691         (NVL(l_actual_upg_option, 'N') = 'O') OR
30692         (NVL(l_enc_upg_option, 'N') = 'O')
30693       )
30694    THEN
30695    NULL;
30696    --
30697    --
30698    
30699   l_ccid := AcctDerRule_15(
30700            p_application_id           => p_application_id
30701          , p_ae_header_id             => l_ae_header_id 
30702 , p_source_17 => p_source_17
30703          , x_transaction_coa_id       => l_adr_transaction_coa_id
30704          , x_accounting_coa_id        => l_adr_accounting_coa_id
30705          , x_value_type_code          => l_adr_value_type_code
30706          , p_side                     => 'NA'
30710     p_code_combination_id          => l_ccid
30707    );
30708 
30709    xla_ae_lines_pkg.set_ccid(
30711   , p_value_type_code              => l_adr_value_type_code
30712   , p_transaction_coa_id           => l_adr_transaction_coa_id
30713   , p_accounting_coa_id            => l_adr_accounting_coa_id
30714   , p_adr_code                     => 'COLL_DOC_BILLS_UNDER_DISC'
30715   , p_adr_type_code                => 'S'
30716   , p_component_type               => l_component_type
30717   , p_component_code               => l_component_code
30718   , p_component_type_code          => l_component_type_code
30719   , p_component_appl_id            => l_component_appl_id
30720   , p_amb_context_code             => l_amb_context_code
30721   , p_side                         => 'NA'
30722   );
30723 
30724 
30725    --
30726    --
30727    END IF;
30728    --
30729    -- Bug 4922099
30730    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30731           (NVL(l_enc_upg_option, 'N') = 'O')
30732         ) AND
30733         (l_bflow_method_code = 'PRIOR_ENTRY')
30734       )
30735    THEN
30736       IF
30737       --
30738       1 = 2
30739       --
30740       THEN
30741       xla_accounting_err_pkg.build_message
30742                                     (p_appli_s_name            => 'XLA'
30743                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30744                                     ,p_token_1                 => 'LINE_NUMBER'
30745                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30746                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30747                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30748                                                                              l_component_type
30749                                                                             ,l_component_code
30750                                                                             ,l_component_type_code
30751                                                                             ,l_component_appl_id
30752                                                                             ,l_amb_context_code
30753                                                                             ,l_entity_code
30754                                                                             ,l_event_class_code
30755                                                                            )
30756                                     ,p_token_3                 => 'OWNER'
30757                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30758                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30759                                                                           ,p_lookup_code    => l_component_type_code
30760                                                                          )
30761                                     ,p_token_4                 => 'PRODUCT_NAME'
30762                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30763                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30764                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30765                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30766                                     ,p_ae_header_id            =>  NULL
30767                                        );
30768 
30769         IF (C_LEVEL_ERROR>= g_log_level) THEN
30770                  trace
30771                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30772                       ,p_level    => C_LEVEL_ERROR
30773                       ,p_module   => l_log_module);
30774         END IF;
30775       END IF;
30776    END IF;
30777    --
30778    --
30779    ------------------------------------------------------------------------------------------------
30780    -- 4219869 Business Flow
30781    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30782    -- Prior Entry.  Currently, the following code is always generated.
30783    ------------------------------------------------------------------------------------------------
30784    XLA_AE_LINES_PKG.ValidateCurrentLine;
30785 
30786    ------------------------------------------------------------------------------------
30787    -- 4219869 Business Flow
30788    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30789    ------------------------------------------------------------------------------------
30790    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30791 
30792    ----------------------------------------------------------------------------------
30793    -- 4219869 Business Flow
30794    -- Update journal entry status -- Need to generate this within IF <condition>
30795    ----------------------------------------------------------------------------------
30796    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30797          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30798          ,p_balance_type_code => l_balance_type_code
30799          );
30800 
30801    -------------------------------------------------------------------------------------------
30802    -- 4262811 - Generate the Accrual Reversal lines
30803    -------------------------------------------------------------------------------------------
30804    BEGIN
30808          l_acc_rev_flag := 'N';
30805       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30806                               (g_array_event(p_event_id).array_value_num('header_index'));
30807       IF l_acc_rev_flag IS NULL THEN
30809       END IF;
30810    EXCEPTION
30811       WHEN OTHERS THEN
30812          l_acc_rev_flag := 'N';
30813    END;
30814    --
30815    IF (l_acc_rev_flag = 'Y') THEN
30816 
30817        -- 4645092  ------------------------------------------------------------------------------
30818        -- To allow MPA report to determine if it should generate report process
30819        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30820        ------------------------------------------------------------------------------------------
30821 
30822        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30823        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30824    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
30825    -- call ADRs
30826    -- Bug 4922099
30827    --
30828    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30829         (NVL(l_actual_upg_option, 'N') = 'O') OR
30830         (NVL(l_enc_upg_option, 'N') = 'O')
30831       )
30832    THEN
30833    NULL;
30834    --
30835    --
30836    
30837   l_ccid := AcctDerRule_15(
30838            p_application_id           => p_application_id
30839          , p_ae_header_id             => l_ae_header_id 
30840 , p_source_17 => p_source_17
30841          , x_transaction_coa_id       => l_adr_transaction_coa_id
30842          , x_accounting_coa_id        => l_adr_accounting_coa_id
30843          , x_value_type_code          => l_adr_value_type_code
30844          , p_side                     => 'NA'
30845    );
30846 
30847    xla_ae_lines_pkg.set_ccid(
30848     p_code_combination_id          => l_ccid
30849   , p_value_type_code              => l_adr_value_type_code
30850   , p_transaction_coa_id           => l_adr_transaction_coa_id
30851   , p_accounting_coa_id            => l_adr_accounting_coa_id
30852   , p_adr_code                     => 'COLL_DOC_BILLS_UNDER_DISC'
30853   , p_adr_type_code                => 'S'
30854   , p_component_type               => l_component_type
30855   , p_component_code               => l_component_code
30856   , p_component_type_code          => l_component_type_code
30857   , p_component_appl_id            => l_component_appl_id
30858   , p_amb_context_code             => l_amb_context_code
30859   , p_side                         => 'NA'
30860   );
30861 
30862 
30863    --
30864    --
30865    END IF;
30866 
30867        --
30868        -- Update the line information that should be overwritten
30869        --
30870        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30871                                          p_header_num   => 1);
30872        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30873 
30874        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30875 
30876        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30877           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30878        END IF;
30879 
30880       --
30881       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30882       --
30883       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30884           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30885       ELSE
30886           ---------------------------------------------------------------------------------------------------
30887           -- 4262811a Switch Sign
30888           ---------------------------------------------------------------------------------------------------
30889           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30890           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30891                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30892           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30893                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30894           -- 5132302
30895           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30896                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30897 
30898       END IF;
30899 
30900       -- 4955764
30901       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30902       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30903 
30904 
30905       XLA_AE_LINES_PKG.ValidateCurrentLine;
30906       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30907 
30908       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30909                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30910                ,p_balance_type_code => l_balance_type_code);
30911 
30912    END IF;
30913 
30914    -----------------------------------------------------------------------------------------
30918 
30915    -- 4262811 Multiperiod Accounting
30916    -----------------------------------------------------------------------------------------
30917      -- No MPA option is assigned.
30919 
30920 END IF;
30921 END IF;
30922 --
30923 
30924 --
30925 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30926    trace
30927       (p_msg      => 'END of AcctLineType_72'
30928       ,p_level    => C_LEVEL_PROCEDURE
30929       ,p_module   => l_log_module);
30930 END IF;
30931 --
30932 EXCEPTION
30933   WHEN xla_exceptions_pkg.application_exception THEN
30934       RAISE;
30935   WHEN OTHERS THEN
30936        xla_exceptions_pkg.raise_message
30937            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_72');
30938 END AcctLineType_72;
30939 --
30940 
30941 ---------------------------------------
30942 --
30943 -- PRIVATE FUNCTION
30944 --         AcctLineType_73
30945 --
30946 ---------------------------------------
30947 PROCEDURE AcctLineType_73 (
30948   p_application_id        IN NUMBER
30949  ,p_event_id              IN NUMBER
30950  ,p_calculate_acctd_flag  IN VARCHAR2
30951  ,p_calculate_g_l_flag    IN VARCHAR2
30952  ,p_actual_flag           IN OUT VARCHAR2
30953  ,p_balance_type_code     OUT VARCHAR2
30954  ,p_gain_or_loss_ref      OUT VARCHAR2
30955  
30956 --Collection Document Bank Occurrence
30957  , p_source_4            IN VARCHAR2
30958 --Collection Document Number
30959  , p_source_5            IN NUMBER
30960 --Collection Document Trade Note Number
30961  , p_source_6            IN VARCHAR2
30962 --Bordero Type
30963  , p_source_7            IN VARCHAR2
30964  , p_source_7_meaning    IN VARCHAR2
30965 --Collection Document Cash Account
30966  , p_source_18            IN NUMBER
30967 --Bill To Customer Account Identifier
30968  , p_source_37            IN NUMBER
30969 --Bill To Customer Site Use Identifier
30970  , p_source_38            IN NUMBER
30971 --SLA Party Type
30972  , p_source_39            IN VARCHAR2
30973 --Collection Document Distribution Line Type
30974  , p_source_66            IN VARCHAR2
30975  , p_source_66_meaning    IN VARCHAR2
30976 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
30977  , p_source_67            IN VARCHAR2
30978  , p_source_67_meaning    IN VARCHAR2
30979 --Applied To Distribution Link Type
30980  , p_source_69            IN VARCHAR2
30981 --Applied To Distribution Identifier
30982  , p_source_71            IN NUMBER
30983 --Applied To Distribution Document Identifier
30984  , p_source_72            IN NUMBER
30985 --Applied To Distribution Occurrence Identifier
30986  , p_source_73            IN NUMBER
30987 --Collection Document Distribution Identifier
30988  , p_source_74            IN NUMBER
30989 --Collection Document Distribution Link Type
30990  , p_source_75            IN VARCHAR2
30991 --Collection Document Distribution Entered Amount
30992  , p_source_76            IN NUMBER
30993 --Collection Document Distribution Entered Currency Code
30994  , p_source_77            IN VARCHAR2
30995 --Collection Document Distribution Conversion Date
30996  , p_source_78            IN DATE
30997 --Collection Document Distribution Conversion Rate
30998  , p_source_79            IN NUMBER
30999 --Collection Document Distribution Conversion Rate Type
31000  , p_source_80            IN VARCHAR2
31001 --Collection Document Distribution Accounted Amount
31002  , p_source_81            IN NUMBER
31003 --Collection Document Occurrence Identifier
31004  , p_source_82            IN NUMBER
31005 --Reversed Collection Document Distribution Identifier
31006  , p_source_83            IN NUMBER
31007 --Reversed Collection Document Distribution Link Type
31008  , p_source_84            IN VARCHAR2
31009 )
31010 IS
31011 
31012 l_component_type              VARCHAR2(80);
31013 l_component_code              VARCHAR2(30);
31014 l_component_type_code         VARCHAR2(1);
31015 l_component_appl_id           INTEGER;
31016 l_amb_context_code            VARCHAR2(30);
31017 l_entity_code                 VARCHAR2(30);
31018 l_event_class_code            VARCHAR2(30);
31019 l_ae_header_id                NUMBER;
31020 l_event_type_code             VARCHAR2(30);
31021 l_line_definition_code        VARCHAR2(30);
31022 l_line_definition_owner_code  VARCHAR2(1);
31023 --
31024 -- adr variables
31025 l_segment                     VARCHAR2(30);
31026 l_ccid                        NUMBER;
31027 l_adr_transaction_coa_id      NUMBER;
31028 l_adr_accounting_coa_id       NUMBER;
31029 l_adr_flexfield_segment_code  VARCHAR2(30);
31030 l_adr_flex_value_set_id       NUMBER;
31031 l_adr_value_type_code         VARCHAR2(30);
31032 l_adr_value_combination_id    NUMBER;
31033 l_adr_value_segment_code      VARCHAR2(30);
31034 
31035 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31036 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31037 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31038 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31039 
31040 -- 4262811 Variables ------------------------------------------------------------------------------------------
31041 l_entered_amt_idx             NUMBER;
31042 l_accted_amt_idx              NUMBER;
31043 l_acc_rev_flag                VARCHAR2(1);
31044 l_accrual_line_num            NUMBER;
31045 l_tmp_amt                     NUMBER;
31049 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31046 l_acc_rev_natural_side_code   VARCHAR2(1);
31047 
31048 l_num_entries                 NUMBER;
31050 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31051 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31052 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31053 l_recog_line_1                NUMBER;
31054 l_recog_line_2                NUMBER;
31055 
31056 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31057 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31058 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31059 
31060 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31061 
31062 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31063 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31064 
31065 ---------------------------------------------------------------------------------------------------------------
31066 
31067 
31068 --
31069 -- bulk performance
31070 --
31071 l_balance_type_code           VARCHAR2(1);
31072 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31073 l_log_module                  VARCHAR2(240);
31074 
31075 --
31076 -- Upgrade strategy
31077 --
31078 l_actual_upg_option           VARCHAR2(1);
31079 l_enc_upg_option           VARCHAR2(1);
31080 
31081 --
31082 BEGIN
31083 --
31084 IF g_log_enabled THEN
31085       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_73';
31086 END IF;
31087 --
31088 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31089 
31090       trace
31091          (p_msg      => 'BEGIN of AcctLineType_73'
31092          ,p_level    => C_LEVEL_PROCEDURE
31093          ,p_module   => l_log_module);
31094 
31095 END IF;
31096 --
31097 l_component_type             := 'AMB_JLT';
31098 l_component_code             := 'FACT_DOC_CASH';
31099 l_component_type_code        := 'S';
31100 l_component_appl_id          :=  222;
31101 l_amb_context_code           := 'DEFAULT';
31102 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
31103 l_event_class_code           := 'FACTORING_OCC_DOCUMENT';
31104 l_event_type_code            := 'FACTORING_OCC_DOCUMENT_ALL';
31105 l_line_definition_owner_code := 'S';
31106 l_line_definition_code       := 'JLBR_AR_FACT_DOC_ACCRUAL';
31107 --
31108 l_balance_type_code          := 'A';
31109 l_segment                     := NULL;
31110 l_ccid                        := NULL;
31111 l_adr_transaction_coa_id      := NULL;
31112 l_adr_accounting_coa_id       := NULL;
31113 l_adr_flexfield_segment_code  := NULL;
31114 l_adr_flex_value_set_id       := NULL;
31115 l_adr_value_type_code         := NULL;
31116 l_adr_value_combination_id    := NULL;
31117 l_adr_value_segment_code      := NULL;
31118 
31119 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31120 l_bflow_class_code           := '';    -- 4219869 Business Flow
31121 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31122 l_budgetary_control_flag     := 'N';
31123 
31124 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31125 l_bflow_applied_to_amt       := NULL; -- 5132302
31126 l_entered_amt_idx            := NULL;          -- 4262811
31127 l_accted_amt_idx             := NULL;          -- 4262811
31128 l_acc_rev_flag               := NULL;          -- 4262811
31129 l_accrual_line_num           := NULL;          -- 4262811
31130 l_tmp_amt                    := NULL;          -- 4262811
31131 --
31132  
31133 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31134     l_balance_type_code <> 'B' THEN
31135 IF (NVL(p_source_66,'
31136 ') =  'JLBR_AR_BANK_CHARGES' OR 
31137 NVL(p_source_66,'
31138 ') =  'JLBR_AR_FACTORING_CHARGES') AND 
31139 NVL(p_source_7,'
31140 ') =  'FACTORING'
31141  THEN 
31142 
31143    --
31144    XLA_AE_LINES_PKG.SetNewLine;
31145 
31146    p_balance_type_code          := l_balance_type_code;
31147    -- set the flag so later we will know whether the gain loss line needs to be created
31148    
31149    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31150      p_actual_flag :='A';
31151    END IF;
31152 
31153    --
31154    -- bulk performance
31155    --
31156    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31157                                       p_header_num   => 0); -- 4262811
31158    --
31159    -- set accounting line options
31160    --
31161    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31162            p_natural_side_code          => 'C'
31163          , p_gain_or_loss_flag          => 'N'
31164          , p_gl_transfer_mode_code      => 'S'
31165          , p_acct_entry_type_code       => 'A'
31166          , p_switch_side_flag           => 'Y'
31167          , p_merge_duplicate_code       => 'W'
31168          );
31169    --
31170    l_acc_rev_natural_side_code := 'D';  -- 4262811
31171    -- 
31172    --
31173    -- set accounting line type info
31174    --
31175    xla_ae_lines_pkg.SetAcctLineType
31176       (p_component_type             => l_component_type
31177       ,p_event_type_code            => l_event_type_code
31178       ,p_line_definition_owner_code => l_line_definition_owner_code
31179       ,p_line_definition_code       => l_line_definition_code
31183       ,p_amb_context_code           => l_amb_context_code
31180       ,p_accounting_line_code       => l_component_code
31181       ,p_accounting_line_type_code  => l_component_type_code
31182       ,p_accounting_line_appl_id    => l_component_appl_id
31184       ,p_entity_code                => l_entity_code
31185       ,p_event_class_code           => l_event_class_code);
31186    --
31187    -- set accounting class
31188    --
31189    xla_ae_lines_pkg.SetAcctClass(
31190            p_accounting_class_code  => 'CASH'
31191          , p_ae_header_id           => l_ae_header_id
31192          );
31193 
31194    --
31195    -- set rounding class
31196    --
31197    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31198                       'CASH';
31199 
31200    --
31201    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31202    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31203    --
31204    -- bulk performance
31205    --
31206    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31207 
31208    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31209       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31210 
31211    -- 4955764
31212    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31213       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31214 
31215    -- 4458381 Public Sector Enh
31216    
31217    --
31218    -- set accounting attributes for the line type
31219    --
31220    l_entered_amt_idx := 10;
31221    l_accted_amt_idx  := 15;
31222    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31223    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
31224    l_rec_acct_attrs.array_char_value(1)  := p_source_67;
31225    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
31226    l_rec_acct_attrs.array_num_value(2)  := 
31227 xla_ae_sources_pkg.GetSystemSourceNum(
31228    p_source_code           => 'XLA_EVENT_APPL_ID'
31229  , p_source_type_code      => 'Y'
31230  , p_source_application_id =>  602
31231 );
31232    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
31233    l_rec_acct_attrs.array_char_value(3)  := p_source_69;
31234    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
31235    l_rec_acct_attrs.array_char_value(4)  := 
31236 xla_ae_sources_pkg.GetSystemSourceChar(
31237    p_source_code           => 'XLA_ENTITY_CODE'
31238  , p_source_type_code      => 'Y'
31239  , p_source_application_id =>  602
31240 );
31241    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
31242    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_71);
31243    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
31244    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_72);
31245    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
31246    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_73);
31247    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
31248    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_74);
31249    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
31250    l_rec_acct_attrs.array_char_value(9)  := p_source_75;
31251    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
31252    l_rec_acct_attrs.array_num_value(10)  := p_source_76;
31253    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
31254    l_rec_acct_attrs.array_char_value(11)  := p_source_77;
31255    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
31256    l_rec_acct_attrs.array_date_value(12)  := p_source_78;
31257    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
31258    l_rec_acct_attrs.array_num_value(13)  := p_source_79;
31259    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
31260    l_rec_acct_attrs.array_char_value(14)  := p_source_80;
31261    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
31262    l_rec_acct_attrs.array_num_value(15)  := p_source_81;
31263    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
31264    l_rec_acct_attrs.array_num_value(16)  := p_source_37;
31265    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
31266    l_rec_acct_attrs.array_num_value(17)  := p_source_38;
31267    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
31268    l_rec_acct_attrs.array_char_value(18)  := p_source_39;
31269    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
31270    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_82);
31271    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
31272    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_83);
31273    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
31274    l_rec_acct_attrs.array_char_value(21)  := p_source_84;
31275    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
31276    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_82);
31277 
31278    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31279    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31280 
31281    ---------------------------------------------------------------------------------------------------------------
31285 
31282    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31283    ---------------------------------------------------------------------------------------------------------------
31284    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31286    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31287    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31288 
31289    IF xla_accounting_cache_pkg.GetValueChar
31290          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31291          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31292    AND l_bflow_method_code = 'PRIOR_ENTRY'
31293 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31294    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31295          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31296        )
31297    THEN
31298          xla_ae_lines_pkg.BflowUpgEntry
31299            (p_business_method_code    => l_bflow_method_code
31300            ,p_business_class_code     => l_bflow_class_code
31301            ,p_balance_type            => l_balance_type_code);
31302    ELSE
31303       NULL;
31304 -- No business flow processing for business flow method of NONE.
31305    END IF;
31306 
31307    --
31308    -- call analytical criteria
31309    --
31310    
31311    --
31312    -- call description
31313    --
31314    
31315 xla_ae_lines_pkg.SetLineDescription(
31316    p_ae_header_id => l_ae_header_id
31317   ,p_description  => Description_5 (
31318      p_application_id         => p_application_id
31319    , p_ae_header_id           => l_ae_header_id 
31320 , p_source_4 => p_source_4
31321 , p_source_5 => p_source_5
31322 , p_source_6 => p_source_6
31323 , p_source_7 => p_source_7
31324 , p_source_7_meaning => p_source_7_meaning
31325    )
31326 );
31327 
31328 
31329    --
31330    -- call ADRs
31331    -- Bug 4922099
31332    --
31333    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31334         (NVL(l_actual_upg_option, 'N') = 'O') OR
31335         (NVL(l_enc_upg_option, 'N') = 'O')
31336       )
31337    THEN
31338    NULL;
31339    --
31340    --
31341    
31342   l_ccid := AcctDerRule_16(
31343            p_application_id           => p_application_id
31344          , p_ae_header_id             => l_ae_header_id 
31345 , p_source_18 => p_source_18
31346          , x_transaction_coa_id       => l_adr_transaction_coa_id
31347          , x_accounting_coa_id        => l_adr_accounting_coa_id
31348          , x_value_type_code          => l_adr_value_type_code
31349          , p_side                     => 'NA'
31350    );
31351 
31352    xla_ae_lines_pkg.set_ccid(
31353     p_code_combination_id          => l_ccid
31354   , p_value_type_code              => l_adr_value_type_code
31355   , p_transaction_coa_id           => l_adr_transaction_coa_id
31356   , p_accounting_coa_id            => l_adr_accounting_coa_id
31357   , p_adr_code                     => 'COLL_DOC_CASH'
31358   , p_adr_type_code                => 'S'
31359   , p_component_type               => l_component_type
31360   , p_component_code               => l_component_code
31361   , p_component_type_code          => l_component_type_code
31362   , p_component_appl_id            => l_component_appl_id
31363   , p_amb_context_code             => l_amb_context_code
31364   , p_side                         => 'NA'
31365   );
31366 
31367 
31368    --
31369    --
31370    END IF;
31371    --
31372    -- Bug 4922099
31373    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31374           (NVL(l_enc_upg_option, 'N') = 'O')
31375         ) AND
31376         (l_bflow_method_code = 'PRIOR_ENTRY')
31377       )
31378    THEN
31379       IF
31380       --
31381       1 = 2
31382       --
31383       THEN
31384       xla_accounting_err_pkg.build_message
31385                                     (p_appli_s_name            => 'XLA'
31386                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31387                                     ,p_token_1                 => 'LINE_NUMBER'
31388                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31389                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31390                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31391                                                                              l_component_type
31392                                                                             ,l_component_code
31393                                                                             ,l_component_type_code
31394                                                                             ,l_component_appl_id
31395                                                                             ,l_amb_context_code
31396                                                                             ,l_entity_code
31397                                                                             ,l_event_class_code
31398                                                                            )
31399                                     ,p_token_3                 => 'OWNER'
31400                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31404                                     ,p_token_4                 => 'PRODUCT_NAME'
31401                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31402                                                                           ,p_lookup_code    => l_component_type_code
31403                                                                          )
31405                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31406                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31407                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31408                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31409                                     ,p_ae_header_id            =>  NULL
31410                                        );
31411 
31412         IF (C_LEVEL_ERROR>= g_log_level) THEN
31413                  trace
31414                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31415                       ,p_level    => C_LEVEL_ERROR
31416                       ,p_module   => l_log_module);
31417         END IF;
31418       END IF;
31419    END IF;
31420    --
31421    --
31422    ------------------------------------------------------------------------------------------------
31423    -- 4219869 Business Flow
31424    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31425    -- Prior Entry.  Currently, the following code is always generated.
31426    ------------------------------------------------------------------------------------------------
31427    XLA_AE_LINES_PKG.ValidateCurrentLine;
31428 
31429    ------------------------------------------------------------------------------------
31430    -- 4219869 Business Flow
31431    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31432    ------------------------------------------------------------------------------------
31433    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31434 
31435    ----------------------------------------------------------------------------------
31436    -- 4219869 Business Flow
31437    -- Update journal entry status -- Need to generate this within IF <condition>
31438    ----------------------------------------------------------------------------------
31439    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31440          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31441          ,p_balance_type_code => l_balance_type_code
31442          );
31443 
31444    -------------------------------------------------------------------------------------------
31445    -- 4262811 - Generate the Accrual Reversal lines
31446    -------------------------------------------------------------------------------------------
31447    BEGIN
31448       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31449                               (g_array_event(p_event_id).array_value_num('header_index'));
31450       IF l_acc_rev_flag IS NULL THEN
31451          l_acc_rev_flag := 'N';
31452       END IF;
31453    EXCEPTION
31454       WHEN OTHERS THEN
31455          l_acc_rev_flag := 'N';
31456    END;
31457    --
31458    IF (l_acc_rev_flag = 'Y') THEN
31459 
31460        -- 4645092  ------------------------------------------------------------------------------
31461        -- To allow MPA report to determine if it should generate report process
31462        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31463        ------------------------------------------------------------------------------------------
31464 
31465        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31466        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31467    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
31468    -- call ADRs
31469    -- Bug 4922099
31470    --
31471    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31472         (NVL(l_actual_upg_option, 'N') = 'O') OR
31473         (NVL(l_enc_upg_option, 'N') = 'O')
31474       )
31475    THEN
31476    NULL;
31477    --
31478    --
31479    
31480   l_ccid := AcctDerRule_16(
31481            p_application_id           => p_application_id
31482          , p_ae_header_id             => l_ae_header_id 
31483 , p_source_18 => p_source_18
31484          , x_transaction_coa_id       => l_adr_transaction_coa_id
31485          , x_accounting_coa_id        => l_adr_accounting_coa_id
31486          , x_value_type_code          => l_adr_value_type_code
31487          , p_side                     => 'NA'
31488    );
31489 
31490    xla_ae_lines_pkg.set_ccid(
31491     p_code_combination_id          => l_ccid
31492   , p_value_type_code              => l_adr_value_type_code
31493   , p_transaction_coa_id           => l_adr_transaction_coa_id
31494   , p_accounting_coa_id            => l_adr_accounting_coa_id
31495   , p_adr_code                     => 'COLL_DOC_CASH'
31496   , p_adr_type_code                => 'S'
31497   , p_component_type               => l_component_type
31498   , p_component_code               => l_component_code
31499   , p_component_type_code          => l_component_type_code
31500   , p_component_appl_id            => l_component_appl_id
31501   , p_amb_context_code             => l_amb_context_code
31502   , p_side                         => 'NA'
31503   );
31504 
31505 
31509 
31506    --
31507    --
31508    END IF;
31510        --
31511        -- Update the line information that should be overwritten
31512        --
31513        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31514                                          p_header_num   => 1);
31515        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31516 
31517        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31518 
31519        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31520           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31521        END IF;
31522 
31523       --
31524       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31525       --
31526       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31527           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31528       ELSE
31529           ---------------------------------------------------------------------------------------------------
31530           -- 4262811a Switch Sign
31531           ---------------------------------------------------------------------------------------------------
31532           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31533           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31534                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31535           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31536                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31537           -- 5132302
31538           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31539                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31540 
31541       END IF;
31542 
31543       -- 4955764
31544       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31545       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31546 
31547 
31548       XLA_AE_LINES_PKG.ValidateCurrentLine;
31549       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31550 
31551       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31552                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31553                ,p_balance_type_code => l_balance_type_code);
31554 
31555    END IF;
31556 
31557    -----------------------------------------------------------------------------------------
31558    -- 4262811 Multiperiod Accounting
31559    -----------------------------------------------------------------------------------------
31560      -- No MPA option is assigned.
31561 
31562 
31563 END IF;
31564 END IF;
31565 --
31566 
31567 --
31568 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31569    trace
31570       (p_msg      => 'END of AcctLineType_73'
31571       ,p_level    => C_LEVEL_PROCEDURE
31572       ,p_module   => l_log_module);
31573 END IF;
31574 --
31575 EXCEPTION
31576   WHEN xla_exceptions_pkg.application_exception THEN
31577       RAISE;
31578   WHEN OTHERS THEN
31579        xla_exceptions_pkg.raise_message
31580            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_73');
31581 END AcctLineType_73;
31582 --
31583 
31584 ---------------------------------------
31585 --
31586 -- PRIVATE FUNCTION
31587 --         AcctLineType_74
31588 --
31589 ---------------------------------------
31590 PROCEDURE AcctLineType_74 (
31591   p_application_id        IN NUMBER
31592  ,p_event_id              IN NUMBER
31593  ,p_calculate_acctd_flag  IN VARCHAR2
31594  ,p_calculate_g_l_flag    IN VARCHAR2
31595  ,p_actual_flag           IN OUT VARCHAR2
31596  ,p_balance_type_code     OUT VARCHAR2
31597  ,p_gain_or_loss_ref      OUT VARCHAR2
31598  
31599 --Collection Document Bank Occurrence
31600  , p_source_4            IN VARCHAR2
31601 --Collection Document Number
31602  , p_source_5            IN NUMBER
31603 --Collection Document Trade Note Number
31604  , p_source_6            IN VARCHAR2
31605 --Bordero Type
31606  , p_source_7            IN VARCHAR2
31607  , p_source_7_meaning    IN VARCHAR2
31608 --Collection Document Discount Endorsement Account
31609  , p_source_20            IN NUMBER
31610 --Bill To Customer Account Identifier
31611  , p_source_37            IN NUMBER
31612 --Bill To Customer Site Use Identifier
31613  , p_source_38            IN NUMBER
31614 --SLA Party Type
31615  , p_source_39            IN VARCHAR2
31616 --Collection Document Distribution Line Type
31617  , p_source_66            IN VARCHAR2
31618  , p_source_66_meaning    IN VARCHAR2
31619 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
31620  , p_source_67            IN VARCHAR2
31621  , p_source_67_meaning    IN VARCHAR2
31622 --Applied To Distribution Link Type
31623  , p_source_69            IN VARCHAR2
31624 --Applied To Distribution Identifier
31625  , p_source_71            IN NUMBER
31626 --Applied To Distribution Document Identifier
31627  , p_source_72            IN NUMBER
31631  , p_source_74            IN NUMBER
31628 --Applied To Distribution Occurrence Identifier
31629  , p_source_73            IN NUMBER
31630 --Collection Document Distribution Identifier
31632 --Collection Document Distribution Link Type
31633  , p_source_75            IN VARCHAR2
31634 --Collection Document Distribution Entered Amount
31635  , p_source_76            IN NUMBER
31636 --Collection Document Distribution Entered Currency Code
31637  , p_source_77            IN VARCHAR2
31638 --Collection Document Distribution Conversion Date
31639  , p_source_78            IN DATE
31640 --Collection Document Distribution Conversion Rate
31641  , p_source_79            IN NUMBER
31642 --Collection Document Distribution Conversion Rate Type
31643  , p_source_80            IN VARCHAR2
31644 --Collection Document Distribution Accounted Amount
31645  , p_source_81            IN NUMBER
31646 --Collection Document Occurrence Identifier
31647  , p_source_82            IN NUMBER
31648 --Reversed Collection Document Distribution Identifier
31649  , p_source_83            IN NUMBER
31650 --Reversed Collection Document Distribution Link Type
31651  , p_source_84            IN VARCHAR2
31652 --Collection Document Occurrence Type
31653  , p_source_85            IN VARCHAR2
31654  , p_source_85_meaning    IN VARCHAR2
31655 )
31656 IS
31657 
31658 l_component_type              VARCHAR2(80);
31659 l_component_code              VARCHAR2(30);
31660 l_component_type_code         VARCHAR2(1);
31661 l_component_appl_id           INTEGER;
31662 l_amb_context_code            VARCHAR2(30);
31663 l_entity_code                 VARCHAR2(30);
31664 l_event_class_code            VARCHAR2(30);
31665 l_ae_header_id                NUMBER;
31666 l_event_type_code             VARCHAR2(30);
31667 l_line_definition_code        VARCHAR2(30);
31668 l_line_definition_owner_code  VARCHAR2(1);
31669 --
31670 -- adr variables
31671 l_segment                     VARCHAR2(30);
31672 l_ccid                        NUMBER;
31673 l_adr_transaction_coa_id      NUMBER;
31674 l_adr_accounting_coa_id       NUMBER;
31675 l_adr_flexfield_segment_code  VARCHAR2(30);
31676 l_adr_flex_value_set_id       NUMBER;
31677 l_adr_value_type_code         VARCHAR2(30);
31678 l_adr_value_combination_id    NUMBER;
31679 l_adr_value_segment_code      VARCHAR2(30);
31680 
31681 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31682 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31683 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31684 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31685 
31686 -- 4262811 Variables ------------------------------------------------------------------------------------------
31687 l_entered_amt_idx             NUMBER;
31688 l_accted_amt_idx              NUMBER;
31689 l_acc_rev_flag                VARCHAR2(1);
31690 l_accrual_line_num            NUMBER;
31691 l_tmp_amt                     NUMBER;
31692 l_acc_rev_natural_side_code   VARCHAR2(1);
31693 
31694 l_num_entries                 NUMBER;
31695 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31696 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31697 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31698 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31699 l_recog_line_1                NUMBER;
31700 l_recog_line_2                NUMBER;
31701 
31702 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31703 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31704 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31705 
31706 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31707 
31708 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31709 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31710 
31711 ---------------------------------------------------------------------------------------------------------------
31712 
31713 
31714 --
31715 -- bulk performance
31716 --
31717 l_balance_type_code           VARCHAR2(1);
31718 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31719 l_log_module                  VARCHAR2(240);
31720 
31721 --
31722 -- Upgrade strategy
31723 --
31724 l_actual_upg_option           VARCHAR2(1);
31725 l_enc_upg_option           VARCHAR2(1);
31726 
31727 --
31728 BEGIN
31729 --
31730 IF g_log_enabled THEN
31731       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_74';
31732 END IF;
31733 --
31734 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31735 
31736       trace
31737          (p_msg      => 'BEGIN of AcctLineType_74'
31738          ,p_level    => C_LEVEL_PROCEDURE
31739          ,p_module   => l_log_module);
31740 
31741 END IF;
31742 --
31743 l_component_type             := 'AMB_JLT';
31744 l_component_code             := 'FACT_DOC_DISC_ENDRSMNT_CR';
31745 l_component_type_code        := 'S';
31746 l_component_appl_id          :=  222;
31747 l_amb_context_code           := 'DEFAULT';
31748 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
31749 l_event_class_code           := 'FACTORING_OCC_DOCUMENT';
31750 l_event_type_code            := 'FACTORING_OCC_DOCUMENT_ALL';
31751 l_line_definition_owner_code := 'S';
31752 l_line_definition_code       := 'JLBR_AR_FACT_DOC_ACCRUAL';
31753 --
31754 l_balance_type_code          := 'A';
31758 l_adr_accounting_coa_id       := NULL;
31755 l_segment                     := NULL;
31756 l_ccid                        := NULL;
31757 l_adr_transaction_coa_id      := NULL;
31759 l_adr_flexfield_segment_code  := NULL;
31760 l_adr_flex_value_set_id       := NULL;
31761 l_adr_value_type_code         := NULL;
31762 l_adr_value_combination_id    := NULL;
31763 l_adr_value_segment_code      := NULL;
31764 
31765 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31766 l_bflow_class_code           := 'JLBR_AR_DISCOUNT_ENDORSEMENT';    -- 4219869 Business Flow
31767 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31768 l_budgetary_control_flag     := 'N';
31769 
31770 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31771 l_bflow_applied_to_amt       := NULL; -- 5132302
31772 l_entered_amt_idx            := NULL;          -- 4262811
31773 l_accted_amt_idx             := NULL;          -- 4262811
31774 l_acc_rev_flag               := NULL;          -- 4262811
31775 l_accrual_line_num           := NULL;          -- 4262811
31776 l_tmp_amt                    := NULL;          -- 4262811
31777 --
31778  
31779 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31780     l_balance_type_code <> 'B' THEN
31781 IF NVL(p_source_66,'
31782 ') =  'JLBR_AR_ENDORSEMENT' AND 
31783 NVL(p_source_7,'
31784 ') =  'FACTORING' AND 
31785 NVL(p_source_85,'
31786 ') =  'REMITTANCE_OCCURRENCE'
31787  THEN 
31788 
31789    --
31790    XLA_AE_LINES_PKG.SetNewLine;
31791 
31792    p_balance_type_code          := l_balance_type_code;
31793    -- set the flag so later we will know whether the gain loss line needs to be created
31794    
31795    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31796      p_actual_flag :='A';
31797    END IF;
31798 
31799    --
31800    -- bulk performance
31801    --
31802    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31803                                       p_header_num   => 0); -- 4262811
31804    --
31805    -- set accounting line options
31806    --
31807    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31808            p_natural_side_code          => 'C'
31809          , p_gain_or_loss_flag          => 'N'
31810          , p_gl_transfer_mode_code      => 'S'
31811          , p_acct_entry_type_code       => 'A'
31812          , p_switch_side_flag           => 'Y'
31813          , p_merge_duplicate_code       => 'A'
31814          );
31815    --
31816    l_acc_rev_natural_side_code := 'D';  -- 4262811
31817    -- 
31818    --
31819    -- set accounting line type info
31820    --
31821    xla_ae_lines_pkg.SetAcctLineType
31822       (p_component_type             => l_component_type
31823       ,p_event_type_code            => l_event_type_code
31824       ,p_line_definition_owner_code => l_line_definition_owner_code
31825       ,p_line_definition_code       => l_line_definition_code
31826       ,p_accounting_line_code       => l_component_code
31827       ,p_accounting_line_type_code  => l_component_type_code
31828       ,p_accounting_line_appl_id    => l_component_appl_id
31829       ,p_amb_context_code           => l_amb_context_code
31830       ,p_entity_code                => l_entity_code
31831       ,p_event_class_code           => l_event_class_code);
31832    --
31833    -- set accounting class
31834    --
31835    xla_ae_lines_pkg.SetAcctClass(
31836            p_accounting_class_code  => 'FACTOR'
31837          , p_ae_header_id           => l_ae_header_id
31838          );
31839 
31840    --
31841    -- set rounding class
31842    --
31843    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31844                       'FACTOR';
31845 
31846    --
31847    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31848    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31849    --
31850    -- bulk performance
31851    --
31852    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31853 
31854    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31855       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31856 
31857    -- 4955764
31858    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31859       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31860 
31861    -- 4458381 Public Sector Enh
31862    
31863    --
31864    -- set accounting attributes for the line type
31865    --
31866    l_entered_amt_idx := 10;
31867    l_accted_amt_idx  := 15;
31868    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31869    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
31870    l_rec_acct_attrs.array_char_value(1)  := p_source_67;
31871    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
31872    l_rec_acct_attrs.array_num_value(2)  := 
31873 xla_ae_sources_pkg.GetSystemSourceNum(
31874    p_source_code           => 'XLA_EVENT_APPL_ID'
31875  , p_source_type_code      => 'Y'
31876  , p_source_application_id =>  602
31877 );
31878    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
31879    l_rec_acct_attrs.array_char_value(3)  := p_source_69;
31883    p_source_code           => 'XLA_ENTITY_CODE'
31880    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
31881    l_rec_acct_attrs.array_char_value(4)  := 
31882 xla_ae_sources_pkg.GetSystemSourceChar(
31884  , p_source_type_code      => 'Y'
31885  , p_source_application_id =>  602
31886 );
31887    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
31888    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_71);
31889    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
31890    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_72);
31891    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
31892    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_73);
31893    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
31894    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_74);
31895    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
31896    l_rec_acct_attrs.array_char_value(9)  := p_source_75;
31897    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
31898    l_rec_acct_attrs.array_num_value(10)  := p_source_76;
31899    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
31900    l_rec_acct_attrs.array_char_value(11)  := p_source_77;
31901    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
31902    l_rec_acct_attrs.array_date_value(12)  := p_source_78;
31903    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
31904    l_rec_acct_attrs.array_num_value(13)  := p_source_79;
31905    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
31906    l_rec_acct_attrs.array_char_value(14)  := p_source_80;
31907    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
31908    l_rec_acct_attrs.array_num_value(15)  := p_source_81;
31909    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
31910    l_rec_acct_attrs.array_num_value(16)  := p_source_37;
31911    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
31912    l_rec_acct_attrs.array_num_value(17)  := p_source_38;
31913    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
31914    l_rec_acct_attrs.array_char_value(18)  := p_source_39;
31915    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
31916    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_82);
31917    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
31918    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_83);
31919    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
31920    l_rec_acct_attrs.array_char_value(21)  := p_source_84;
31921    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
31922    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_82);
31923 
31924    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31925    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31926 
31927    ---------------------------------------------------------------------------------------------------------------
31928    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31929    ---------------------------------------------------------------------------------------------------------------
31930    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31931 
31932    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31933    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31934 
31935    IF xla_accounting_cache_pkg.GetValueChar
31936          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31937          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31938    AND l_bflow_method_code = 'PRIOR_ENTRY'
31939 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31940    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31941          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31942        )
31943    THEN
31944          xla_ae_lines_pkg.BflowUpgEntry
31945            (p_business_method_code    => l_bflow_method_code
31946            ,p_business_class_code     => l_bflow_class_code
31947            ,p_balance_type            => l_balance_type_code);
31948    ELSE
31949       NULL;
31950 -- No business flow processing for business flow method of NONE.
31951    END IF;
31952 
31953    --
31954    -- call analytical criteria
31955    --
31956    
31957    --
31958    -- call description
31959    --
31960    
31961 xla_ae_lines_pkg.SetLineDescription(
31962    p_ae_header_id => l_ae_header_id
31963   ,p_description  => Description_7 (
31964      p_application_id         => p_application_id
31965    , p_ae_header_id           => l_ae_header_id 
31966 , p_source_4 => p_source_4
31967 , p_source_5 => p_source_5
31968 , p_source_6 => p_source_6
31969    )
31970 );
31971 
31972 
31973    --
31974    -- call ADRs
31975    -- Bug 4922099
31976    --
31977    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31978         (NVL(l_actual_upg_option, 'N') = 'O') OR
31979         (NVL(l_enc_upg_option, 'N') = 'O')
31980       )
31981    THEN
31982    NULL;
31983    --
31984    --
31985    
31986   l_ccid := AcctDerRule_18(
31987            p_application_id           => p_application_id
31991          , x_accounting_coa_id        => l_adr_accounting_coa_id
31988          , p_ae_header_id             => l_ae_header_id 
31989 , p_source_20 => p_source_20
31990          , x_transaction_coa_id       => l_adr_transaction_coa_id
31992          , x_value_type_code          => l_adr_value_type_code
31993          , p_side                     => 'NA'
31994    );
31995 
31996    xla_ae_lines_pkg.set_ccid(
31997     p_code_combination_id          => l_ccid
31998   , p_value_type_code              => l_adr_value_type_code
31999   , p_transaction_coa_id           => l_adr_transaction_coa_id
32000   , p_accounting_coa_id            => l_adr_accounting_coa_id
32001   , p_adr_code                     => 'COLL_DOC_DISC_ENDRSMNT'
32002   , p_adr_type_code                => 'S'
32003   , p_component_type               => l_component_type
32004   , p_component_code               => l_component_code
32005   , p_component_type_code          => l_component_type_code
32006   , p_component_appl_id            => l_component_appl_id
32007   , p_amb_context_code             => l_amb_context_code
32008   , p_side                         => 'NA'
32009   );
32010 
32011 
32012    --
32013    --
32014    END IF;
32015    --
32016    -- Bug 4922099
32017    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32018           (NVL(l_enc_upg_option, 'N') = 'O')
32019         ) AND
32020         (l_bflow_method_code = 'PRIOR_ENTRY')
32021       )
32022    THEN
32023       IF
32024       --
32025       1 = 2
32026       --
32027       THEN
32028       xla_accounting_err_pkg.build_message
32029                                     (p_appli_s_name            => 'XLA'
32030                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32031                                     ,p_token_1                 => 'LINE_NUMBER'
32032                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32033                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32034                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32035                                                                              l_component_type
32036                                                                             ,l_component_code
32037                                                                             ,l_component_type_code
32038                                                                             ,l_component_appl_id
32039                                                                             ,l_amb_context_code
32040                                                                             ,l_entity_code
32041                                                                             ,l_event_class_code
32042                                                                            )
32043                                     ,p_token_3                 => 'OWNER'
32044                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32045                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32046                                                                           ,p_lookup_code    => l_component_type_code
32047                                                                          )
32048                                     ,p_token_4                 => 'PRODUCT_NAME'
32049                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32050                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32051                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32052                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32053                                     ,p_ae_header_id            =>  NULL
32054                                        );
32055 
32056         IF (C_LEVEL_ERROR>= g_log_level) THEN
32057                  trace
32058                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32059                       ,p_level    => C_LEVEL_ERROR
32060                       ,p_module   => l_log_module);
32061         END IF;
32062       END IF;
32063    END IF;
32064    --
32065    --
32066    ------------------------------------------------------------------------------------------------
32067    -- 4219869 Business Flow
32068    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32069    -- Prior Entry.  Currently, the following code is always generated.
32070    ------------------------------------------------------------------------------------------------
32071    XLA_AE_LINES_PKG.ValidateCurrentLine;
32072 
32073    ------------------------------------------------------------------------------------
32074    -- 4219869 Business Flow
32075    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32076    ------------------------------------------------------------------------------------
32077    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32078 
32079    ----------------------------------------------------------------------------------
32080    -- 4219869 Business Flow
32081    -- Update journal entry status -- Need to generate this within IF <condition>
32082    ----------------------------------------------------------------------------------
32083    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32087 
32084          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32085          ,p_balance_type_code => l_balance_type_code
32086          );
32088    -------------------------------------------------------------------------------------------
32089    -- 4262811 - Generate the Accrual Reversal lines
32090    -------------------------------------------------------------------------------------------
32091    BEGIN
32092       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32093                               (g_array_event(p_event_id).array_value_num('header_index'));
32094       IF l_acc_rev_flag IS NULL THEN
32095          l_acc_rev_flag := 'N';
32096       END IF;
32097    EXCEPTION
32098       WHEN OTHERS THEN
32099          l_acc_rev_flag := 'N';
32100    END;
32101    --
32102    IF (l_acc_rev_flag = 'Y') THEN
32103 
32104        -- 4645092  ------------------------------------------------------------------------------
32105        -- To allow MPA report to determine if it should generate report process
32106        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32107        ------------------------------------------------------------------------------------------
32108 
32109        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32110        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32111    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
32112    -- call ADRs
32113    -- Bug 4922099
32114    --
32115    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32116         (NVL(l_actual_upg_option, 'N') = 'O') OR
32117         (NVL(l_enc_upg_option, 'N') = 'O')
32118       )
32119    THEN
32120    NULL;
32121    --
32122    --
32123    
32124   l_ccid := AcctDerRule_18(
32125            p_application_id           => p_application_id
32126          , p_ae_header_id             => l_ae_header_id 
32127 , p_source_20 => p_source_20
32128          , x_transaction_coa_id       => l_adr_transaction_coa_id
32129          , x_accounting_coa_id        => l_adr_accounting_coa_id
32130          , x_value_type_code          => l_adr_value_type_code
32131          , p_side                     => 'NA'
32132    );
32133 
32134    xla_ae_lines_pkg.set_ccid(
32135     p_code_combination_id          => l_ccid
32136   , p_value_type_code              => l_adr_value_type_code
32137   , p_transaction_coa_id           => l_adr_transaction_coa_id
32138   , p_accounting_coa_id            => l_adr_accounting_coa_id
32139   , p_adr_code                     => 'COLL_DOC_DISC_ENDRSMNT'
32140   , p_adr_type_code                => 'S'
32141   , p_component_type               => l_component_type
32142   , p_component_code               => l_component_code
32143   , p_component_type_code          => l_component_type_code
32144   , p_component_appl_id            => l_component_appl_id
32145   , p_amb_context_code             => l_amb_context_code
32146   , p_side                         => 'NA'
32147   );
32148 
32149 
32150    --
32151    --
32152    END IF;
32153 
32154        --
32155        -- Update the line information that should be overwritten
32156        --
32157        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32158                                          p_header_num   => 1);
32159        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32160 
32161        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32162 
32163        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32164           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32165        END IF;
32166 
32167       --
32168       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32169       --
32170       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32171           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32172       ELSE
32173           ---------------------------------------------------------------------------------------------------
32174           -- 4262811a Switch Sign
32175           ---------------------------------------------------------------------------------------------------
32176           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32177           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32178                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32179           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32180                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32181           -- 5132302
32182           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32183                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32184 
32185       END IF;
32186 
32187       -- 4955764
32188       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32189       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32190 
32191 
32192       XLA_AE_LINES_PKG.ValidateCurrentLine;
32193       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32194 
32195       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32199    END IF;
32196                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32197                ,p_balance_type_code => l_balance_type_code);
32198 
32200 
32201    -----------------------------------------------------------------------------------------
32202    -- 4262811 Multiperiod Accounting
32203    -----------------------------------------------------------------------------------------
32204      -- No MPA option is assigned.
32205 
32206 
32207 END IF;
32208 END IF;
32209 --
32210 
32211 --
32212 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32213    trace
32214       (p_msg      => 'END of AcctLineType_74'
32215       ,p_level    => C_LEVEL_PROCEDURE
32216       ,p_module   => l_log_module);
32217 END IF;
32218 --
32219 EXCEPTION
32220   WHEN xla_exceptions_pkg.application_exception THEN
32221       RAISE;
32222   WHEN OTHERS THEN
32223        xla_exceptions_pkg.raise_message
32224            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_74');
32225 END AcctLineType_74;
32226 --
32227 
32228 ---------------------------------------
32229 --
32230 -- PRIVATE FUNCTION
32231 --         AcctLineType_75
32232 --
32233 ---------------------------------------
32234 PROCEDURE AcctLineType_75 (
32235   p_application_id        IN NUMBER
32236  ,p_event_id              IN NUMBER
32237  ,p_calculate_acctd_flag  IN VARCHAR2
32238  ,p_calculate_g_l_flag    IN VARCHAR2
32239  ,p_actual_flag           IN OUT VARCHAR2
32240  ,p_balance_type_code     OUT VARCHAR2
32241  ,p_gain_or_loss_ref      OUT VARCHAR2
32242  
32243 --Bordero Type
32244  , p_source_7            IN VARCHAR2
32245  , p_source_7_meaning    IN VARCHAR2
32246 --SLA Party Type
32247  , p_source_39            IN VARCHAR2
32248 --Collection Document Distribution Line Type
32249  , p_source_66            IN VARCHAR2
32250  , p_source_66_meaning    IN VARCHAR2
32251 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
32252  , p_source_67            IN VARCHAR2
32253  , p_source_67_meaning    IN VARCHAR2
32254 --Applied To Distribution Link Type
32255  , p_source_69            IN VARCHAR2
32256 --Applied To Distribution Identifier
32257  , p_source_71            IN NUMBER
32258 --Applied To Distribution Document Identifier
32259  , p_source_72            IN NUMBER
32260 --Applied To Distribution Occurrence Identifier
32261  , p_source_73            IN NUMBER
32262 --Collection Document Distribution Identifier
32263  , p_source_74            IN NUMBER
32264 --Collection Document Distribution Link Type
32265  , p_source_75            IN VARCHAR2
32266 --Collection Document Distribution Entered Amount
32267  , p_source_76            IN NUMBER
32268 --Collection Document Distribution Entered Currency Code
32269  , p_source_77            IN VARCHAR2
32270 --Collection Document Distribution Accounted Amount
32271  , p_source_81            IN NUMBER
32272 --Collection Document Occurrence Identifier
32273  , p_source_82            IN NUMBER
32274 --Reversed Collection Document Distribution Identifier
32275  , p_source_83            IN NUMBER
32276 --Reversed Collection Document Distribution Link Type
32277  , p_source_84            IN VARCHAR2
32278 --Collection Document Occurrence Type
32279  , p_source_85            IN VARCHAR2
32280  , p_source_85_meaning    IN VARCHAR2
32281 )
32282 IS
32283 
32284 l_component_type              VARCHAR2(80);
32285 l_component_code              VARCHAR2(30);
32286 l_component_type_code         VARCHAR2(1);
32287 l_component_appl_id           INTEGER;
32288 l_amb_context_code            VARCHAR2(30);
32289 l_entity_code                 VARCHAR2(30);
32290 l_event_class_code            VARCHAR2(30);
32291 l_ae_header_id                NUMBER;
32292 l_event_type_code             VARCHAR2(30);
32293 l_line_definition_code        VARCHAR2(30);
32294 l_line_definition_owner_code  VARCHAR2(1);
32295 --
32296 -- adr variables
32297 l_segment                     VARCHAR2(30);
32298 l_ccid                        NUMBER;
32299 l_adr_transaction_coa_id      NUMBER;
32300 l_adr_accounting_coa_id       NUMBER;
32301 l_adr_flexfield_segment_code  VARCHAR2(30);
32302 l_adr_flex_value_set_id       NUMBER;
32303 l_adr_value_type_code         VARCHAR2(30);
32304 l_adr_value_combination_id    NUMBER;
32305 l_adr_value_segment_code      VARCHAR2(30);
32306 
32307 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32308 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32309 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32310 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32311 
32312 -- 4262811 Variables ------------------------------------------------------------------------------------------
32313 l_entered_amt_idx             NUMBER;
32314 l_accted_amt_idx              NUMBER;
32315 l_acc_rev_flag                VARCHAR2(1);
32316 l_accrual_line_num            NUMBER;
32317 l_tmp_amt                     NUMBER;
32318 l_acc_rev_natural_side_code   VARCHAR2(1);
32319 
32320 l_num_entries                 NUMBER;
32321 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32322 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32323 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32324 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32328 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32325 l_recog_line_1                NUMBER;
32326 l_recog_line_2                NUMBER;
32327 
32329 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32330 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32331 
32332 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32333 
32334 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32335 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32336 
32337 ---------------------------------------------------------------------------------------------------------------
32338 
32339 
32340 --
32341 -- bulk performance
32342 --
32343 l_balance_type_code           VARCHAR2(1);
32344 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32345 l_log_module                  VARCHAR2(240);
32346 
32347 --
32348 -- Upgrade strategy
32349 --
32350 l_actual_upg_option           VARCHAR2(1);
32351 l_enc_upg_option           VARCHAR2(1);
32352 
32353 --
32354 BEGIN
32355 --
32356 IF g_log_enabled THEN
32357       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_75';
32358 END IF;
32359 --
32360 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32361 
32362       trace
32363          (p_msg      => 'BEGIN of AcctLineType_75'
32364          ,p_level    => C_LEVEL_PROCEDURE
32365          ,p_module   => l_log_module);
32366 
32367 END IF;
32368 --
32369 l_component_type             := 'AMB_JLT';
32370 l_component_code             := 'FACT_DOC_DISC_ENDRSMNT_DR';
32371 l_component_type_code        := 'S';
32372 l_component_appl_id          :=  222;
32373 l_amb_context_code           := 'DEFAULT';
32374 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
32375 l_event_class_code           := 'FACTORING_OCC_DOCUMENT';
32376 l_event_type_code            := 'FACTORING_OCC_DOCUMENT_ALL';
32377 l_line_definition_owner_code := 'S';
32378 l_line_definition_code       := 'JLBR_AR_FACT_DOC_ACCRUAL';
32379 --
32380 l_balance_type_code          := 'A';
32381 l_segment                     := NULL;
32382 l_ccid                        := NULL;
32383 l_adr_transaction_coa_id      := NULL;
32384 l_adr_accounting_coa_id       := NULL;
32385 l_adr_flexfield_segment_code  := NULL;
32386 l_adr_flex_value_set_id       := NULL;
32387 l_adr_value_type_code         := NULL;
32388 l_adr_value_combination_id    := NULL;
32389 l_adr_value_segment_code      := NULL;
32390 
32391 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
32392 l_bflow_class_code           := 'JLBR_AR_DISCOUNT_ENDORSEMENT';    -- 4219869 Business Flow
32393 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
32394 l_budgetary_control_flag     := 'N';
32395 
32396 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32397 l_bflow_applied_to_amt       := NULL; -- 5132302
32398 l_entered_amt_idx            := NULL;          -- 4262811
32399 l_accted_amt_idx             := NULL;          -- 4262811
32400 l_acc_rev_flag               := NULL;          -- 4262811
32401 l_accrual_line_num           := NULL;          -- 4262811
32402 l_tmp_amt                    := NULL;          -- 4262811
32403 --
32404  
32405 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32406     l_balance_type_code <> 'B' THEN
32407 IF NVL(p_source_66,'
32408 ') =  'JLBR_AR_ENDORSEMENT' AND 
32409 NVL(p_source_7,'
32410 ') =  'FACTORING' AND 
32411 NVL(p_source_85,'
32412 ') =  'RETURN_OCCURRENCE'
32413  THEN 
32414 
32415    --
32416    XLA_AE_LINES_PKG.SetNewLine;
32417 
32418    p_balance_type_code          := l_balance_type_code;
32419    -- set the flag so later we will know whether the gain loss line needs to be created
32420    
32421    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32422      p_actual_flag :='A';
32423    END IF;
32424 
32425    --
32426    -- bulk performance
32427    --
32428    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32429                                       p_header_num   => 0); -- 4262811
32430    --
32431    -- set accounting line options
32432    --
32433    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32434            p_natural_side_code          => 'D'
32435          , p_gain_or_loss_flag          => 'N'
32436          , p_gl_transfer_mode_code      => 'S'
32437          , p_acct_entry_type_code       => 'A'
32438          , p_switch_side_flag           => 'Y'
32439          , p_merge_duplicate_code       => 'A'
32440          );
32441    --
32442    l_acc_rev_natural_side_code := 'C';  -- 4262811
32443    -- 
32444    --
32445    -- set accounting line type info
32446    --
32447    xla_ae_lines_pkg.SetAcctLineType
32448       (p_component_type             => l_component_type
32449       ,p_event_type_code            => l_event_type_code
32450       ,p_line_definition_owner_code => l_line_definition_owner_code
32451       ,p_line_definition_code       => l_line_definition_code
32452       ,p_accounting_line_code       => l_component_code
32453       ,p_accounting_line_type_code  => l_component_type_code
32454       ,p_accounting_line_appl_id    => l_component_appl_id
32458    --
32455       ,p_amb_context_code           => l_amb_context_code
32456       ,p_entity_code                => l_entity_code
32457       ,p_event_class_code           => l_event_class_code);
32459    -- set accounting class
32460    --
32461    xla_ae_lines_pkg.SetAcctClass(
32462            p_accounting_class_code  => 'FACTOR'
32463          , p_ae_header_id           => l_ae_header_id
32464          );
32465 
32466    --
32467    -- set rounding class
32468    --
32469    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32470                       'FACTOR';
32471 
32472    --
32473    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32474    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32475    --
32476    -- bulk performance
32477    --
32478    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32479 
32480    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32481       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32482 
32483    -- 4955764
32484    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32485       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32486 
32487    -- 4458381 Public Sector Enh
32488    
32489    --
32490    -- set accounting attributes for the line type
32491    --
32492    l_entered_amt_idx := 10;
32493    l_accted_amt_idx  := 12;
32494    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
32495    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
32496    l_rec_acct_attrs.array_char_value(1)  := p_source_67;
32497    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
32498    l_rec_acct_attrs.array_num_value(2)  := 
32499 xla_ae_sources_pkg.GetSystemSourceNum(
32500    p_source_code           => 'XLA_EVENT_APPL_ID'
32501  , p_source_type_code      => 'Y'
32502  , p_source_application_id =>  602
32503 );
32504    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
32505    l_rec_acct_attrs.array_char_value(3)  := p_source_69;
32506    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
32507    l_rec_acct_attrs.array_char_value(4)  := 
32508 xla_ae_sources_pkg.GetSystemSourceChar(
32509    p_source_code           => 'XLA_ENTITY_CODE'
32510  , p_source_type_code      => 'Y'
32511  , p_source_application_id =>  602
32512 );
32513    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
32514    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_71);
32515    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
32516    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_72);
32517    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
32518    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_73);
32519    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
32520    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_74);
32521    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
32522    l_rec_acct_attrs.array_char_value(9)  := p_source_75;
32523    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
32524    l_rec_acct_attrs.array_num_value(10)  := p_source_76;
32525    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
32526    l_rec_acct_attrs.array_char_value(11)  := p_source_77;
32527    l_rec_acct_attrs.array_acct_attr_code(12) := 'LEDGER_AMOUNT';
32528    l_rec_acct_attrs.array_num_value(12)  := p_source_81;
32529    l_rec_acct_attrs.array_acct_attr_code(13) := 'PARTY_TYPE';
32530    l_rec_acct_attrs.array_char_value(13)  := p_source_39;
32531    l_rec_acct_attrs.array_acct_attr_code(14) := 'RECON_REF';
32532    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_82);
32533    l_rec_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_ID1';
32534    l_rec_acct_attrs.array_num_value(15)  :=  to_char(p_source_83);
32535    l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_TYPE';
32536    l_rec_acct_attrs.array_char_value(16)  := p_source_84;
32537    l_rec_acct_attrs.array_acct_attr_code(17) := 'TRX_ROUNDING_REF';
32538    l_rec_acct_attrs.array_num_value(17)  :=  to_char(p_source_82);
32539 
32540    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32541    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32542 
32543    ---------------------------------------------------------------------------------------------------------------
32544    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32545    ---------------------------------------------------------------------------------------------------------------
32546    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32547 
32548    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32549    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32550 
32551    IF xla_accounting_cache_pkg.GetValueChar
32552          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32553          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32554    AND l_bflow_method_code = 'PRIOR_ENTRY'
32558        )
32555 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32556    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32557          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32559    THEN
32560          xla_ae_lines_pkg.BflowUpgEntry
32561            (p_business_method_code    => l_bflow_method_code
32562            ,p_business_class_code     => l_bflow_class_code
32563            ,p_balance_type            => l_balance_type_code);
32564    ELSE
32565       NULL;
32566 XLA_AE_LINES_PKG.business_flow_validation(
32567                                 p_business_method_code     => l_bflow_method_code
32568                                ,p_business_class_code      => l_bflow_class_code
32569                                ,p_inherit_description_flag => l_inherit_desc_flag);
32570    END IF;
32571 
32572    --
32573    -- call analytical criteria
32574    --
32575    -- Inherited Analytical Criteria for business flow method of Prior Entry.
32576    --
32577    -- call description
32578    --
32579    -- No description or it is inherited.
32580    --
32581    -- call ADRs
32582    -- Bug 4922099
32583    --
32584    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32585         (NVL(l_actual_upg_option, 'N') = 'O') OR
32586         (NVL(l_enc_upg_option, 'N') = 'O')
32587       )
32588    THEN
32589    NULL;
32590    --
32591    --
32592    
32593    --
32594    --
32595    END IF;
32596    --
32597    -- Bug 4922099
32598    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32599           (NVL(l_enc_upg_option, 'N') = 'O')
32600         ) AND
32601         (l_bflow_method_code = 'PRIOR_ENTRY')
32602       )
32603    THEN
32604       IF
32605       --
32606       1 = 1
32607       --
32608       THEN
32609       xla_accounting_err_pkg.build_message
32610                                     (p_appli_s_name            => 'XLA'
32611                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32612                                     ,p_token_1                 => 'LINE_NUMBER'
32613                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32614                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32615                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32616                                                                              l_component_type
32617                                                                             ,l_component_code
32618                                                                             ,l_component_type_code
32619                                                                             ,l_component_appl_id
32620                                                                             ,l_amb_context_code
32621                                                                             ,l_entity_code
32622                                                                             ,l_event_class_code
32623                                                                            )
32624                                     ,p_token_3                 => 'OWNER'
32625                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32626                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32627                                                                           ,p_lookup_code    => l_component_type_code
32628                                                                          )
32629                                     ,p_token_4                 => 'PRODUCT_NAME'
32630                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32631                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32632                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32633                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32634                                     ,p_ae_header_id            =>  NULL
32635                                        );
32636 
32637         IF (C_LEVEL_ERROR>= g_log_level) THEN
32638                  trace
32639                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32640                       ,p_level    => C_LEVEL_ERROR
32641                       ,p_module   => l_log_module);
32642         END IF;
32643       END IF;
32644    END IF;
32645    --
32646    --
32647    ------------------------------------------------------------------------------------------------
32648    -- 4219869 Business Flow
32649    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32650    -- Prior Entry.  Currently, the following code is always generated.
32651    ------------------------------------------------------------------------------------------------
32652    -- No ValidateCurrentLine for business flow method of Prior Entry
32653 
32654    ------------------------------------------------------------------------------------
32655    -- 4219869 Business Flow
32656    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32657    ------------------------------------------------------------------------------------
32658    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32659 
32660    ----------------------------------------------------------------------------------
32661    -- 4219869 Business Flow
32665          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32662    -- Update journal entry status -- Need to generate this within IF <condition>
32663    ----------------------------------------------------------------------------------
32664    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32666          ,p_balance_type_code => l_balance_type_code
32667          );
32668 
32669    -------------------------------------------------------------------------------------------
32670    -- 4262811 - Generate the Accrual Reversal lines
32671    -------------------------------------------------------------------------------------------
32672    BEGIN
32673       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32674                               (g_array_event(p_event_id).array_value_num('header_index'));
32675       IF l_acc_rev_flag IS NULL THEN
32676          l_acc_rev_flag := 'N';
32677       END IF;
32678    EXCEPTION
32679       WHEN OTHERS THEN
32680          l_acc_rev_flag := 'N';
32681    END;
32682    --
32683    IF (l_acc_rev_flag = 'Y') THEN
32684 
32685        -- 4645092  ------------------------------------------------------------------------------
32686        -- To allow MPA report to determine if it should generate report process
32687        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32688        ------------------------------------------------------------------------------------------
32689 
32690        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32691        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32692    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
32693    -- call ADRs
32694    -- Bug 4922099
32695    --
32696    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32697         (NVL(l_actual_upg_option, 'N') = 'O') OR
32698         (NVL(l_enc_upg_option, 'N') = 'O')
32699       )
32700    THEN
32701    NULL;
32702    --
32703    --
32704    
32705    --
32706    --
32707    END IF;
32708 
32709        --
32710        -- Update the line information that should be overwritten
32711        --
32712        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32713                                          p_header_num   => 1);
32714        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32715 
32716        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32717 
32718        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32719           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32720        END IF;
32721 
32722       --
32723       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32724       --
32725       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32726           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32727       ELSE
32728           ---------------------------------------------------------------------------------------------------
32729           -- 4262811a Switch Sign
32730           ---------------------------------------------------------------------------------------------------
32731           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32732           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32733                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32734           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32735                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32736           -- 5132302
32737           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32738                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32739 
32740       END IF;
32741 
32742       -- 4955764
32743       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32744       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32745 
32746 
32747       XLA_AE_LINES_PKG.ValidateCurrentLine;
32748       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32749 
32750       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32751                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32752                ,p_balance_type_code => l_balance_type_code);
32753 
32754    END IF;
32755 
32756    -----------------------------------------------------------------------------------------
32757    -- 4262811 Multiperiod Accounting
32758    -----------------------------------------------------------------------------------------
32759      -- No MPA option is assigned.
32760 
32761 
32762 END IF;
32763 END IF;
32764 --
32765 
32766 --
32767 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32768    trace
32769       (p_msg      => 'END of AcctLineType_75'
32770       ,p_level    => C_LEVEL_PROCEDURE
32771       ,p_module   => l_log_module);
32772 END IF;
32773 --
32774 EXCEPTION
32775   WHEN xla_exceptions_pkg.application_exception THEN
32776       RAISE;
32780 END AcctLineType_75;
32777   WHEN OTHERS THEN
32778        xla_exceptions_pkg.raise_message
32779            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_75');
32781 --
32782 
32783 ---------------------------------------
32784 --
32785 -- PRIVATE FUNCTION
32786 --         AcctLineType_76
32787 --
32788 ---------------------------------------
32789 PROCEDURE AcctLineType_76 (
32790   p_application_id        IN NUMBER
32791  ,p_event_id              IN NUMBER
32792  ,p_calculate_acctd_flag  IN VARCHAR2
32793  ,p_calculate_g_l_flag    IN VARCHAR2
32794  ,p_actual_flag           IN OUT VARCHAR2
32795  ,p_balance_type_code     OUT VARCHAR2
32796  ,p_gain_or_loss_ref      OUT VARCHAR2
32797  
32798 --Collection Document Bank Occurrence
32799  , p_source_4            IN VARCHAR2
32800 --Collection Document Number
32801  , p_source_5            IN NUMBER
32802 --Collection Document Trade Note Number
32803  , p_source_6            IN VARCHAR2
32804 --Bordero Type
32805  , p_source_7            IN VARCHAR2
32806  , p_source_7_meaning    IN VARCHAR2
32807 --Collection Document Factoring Charges Account
32808  , p_source_21            IN NUMBER
32809 --Bill To Customer Account Identifier
32810  , p_source_37            IN NUMBER
32811 --Bill To Customer Site Use Identifier
32812  , p_source_38            IN NUMBER
32813 --SLA Party Type
32814  , p_source_39            IN VARCHAR2
32815 --Collection Document Distribution Line Type
32816  , p_source_66            IN VARCHAR2
32817  , p_source_66_meaning    IN VARCHAR2
32818 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
32819  , p_source_67            IN VARCHAR2
32820  , p_source_67_meaning    IN VARCHAR2
32821 --Applied To Distribution Link Type
32822  , p_source_69            IN VARCHAR2
32823 --Applied To Distribution Identifier
32824  , p_source_71            IN NUMBER
32825 --Applied To Distribution Document Identifier
32826  , p_source_72            IN NUMBER
32827 --Applied To Distribution Occurrence Identifier
32828  , p_source_73            IN NUMBER
32829 --Collection Document Distribution Identifier
32830  , p_source_74            IN NUMBER
32831 --Collection Document Distribution Link Type
32832  , p_source_75            IN VARCHAR2
32833 --Collection Document Distribution Entered Amount
32834  , p_source_76            IN NUMBER
32835 --Collection Document Distribution Entered Currency Code
32836  , p_source_77            IN VARCHAR2
32837 --Collection Document Distribution Conversion Date
32838  , p_source_78            IN DATE
32839 --Collection Document Distribution Conversion Rate
32840  , p_source_79            IN NUMBER
32841 --Collection Document Distribution Conversion Rate Type
32842  , p_source_80            IN VARCHAR2
32843 --Collection Document Distribution Accounted Amount
32844  , p_source_81            IN NUMBER
32845 --Collection Document Occurrence Identifier
32846  , p_source_82            IN NUMBER
32847 --Reversed Collection Document Distribution Identifier
32848  , p_source_83            IN NUMBER
32849 --Reversed Collection Document Distribution Link Type
32850  , p_source_84            IN VARCHAR2
32851 )
32852 IS
32853 
32854 l_component_type              VARCHAR2(80);
32855 l_component_code              VARCHAR2(30);
32856 l_component_type_code         VARCHAR2(1);
32857 l_component_appl_id           INTEGER;
32858 l_amb_context_code            VARCHAR2(30);
32859 l_entity_code                 VARCHAR2(30);
32860 l_event_class_code            VARCHAR2(30);
32861 l_ae_header_id                NUMBER;
32862 l_event_type_code             VARCHAR2(30);
32863 l_line_definition_code        VARCHAR2(30);
32864 l_line_definition_owner_code  VARCHAR2(1);
32865 --
32866 -- adr variables
32867 l_segment                     VARCHAR2(30);
32868 l_ccid                        NUMBER;
32869 l_adr_transaction_coa_id      NUMBER;
32870 l_adr_accounting_coa_id       NUMBER;
32871 l_adr_flexfield_segment_code  VARCHAR2(30);
32872 l_adr_flex_value_set_id       NUMBER;
32873 l_adr_value_type_code         VARCHAR2(30);
32874 l_adr_value_combination_id    NUMBER;
32875 l_adr_value_segment_code      VARCHAR2(30);
32876 
32877 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32878 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32879 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32880 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32881 
32882 -- 4262811 Variables ------------------------------------------------------------------------------------------
32883 l_entered_amt_idx             NUMBER;
32884 l_accted_amt_idx              NUMBER;
32885 l_acc_rev_flag                VARCHAR2(1);
32886 l_accrual_line_num            NUMBER;
32887 l_tmp_amt                     NUMBER;
32888 l_acc_rev_natural_side_code   VARCHAR2(1);
32889 
32890 l_num_entries                 NUMBER;
32891 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32892 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32893 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32894 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32895 l_recog_line_1                NUMBER;
32896 l_recog_line_2                NUMBER;
32897 
32898 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32899 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32903 
32900 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32901 
32902 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32904 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32905 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32906 
32907 ---------------------------------------------------------------------------------------------------------------
32908 
32909 
32910 --
32911 -- bulk performance
32912 --
32913 l_balance_type_code           VARCHAR2(1);
32914 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32915 l_log_module                  VARCHAR2(240);
32916 
32917 --
32918 -- Upgrade strategy
32919 --
32920 l_actual_upg_option           VARCHAR2(1);
32921 l_enc_upg_option           VARCHAR2(1);
32922 
32923 --
32924 BEGIN
32925 --
32926 IF g_log_enabled THEN
32927       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_76';
32928 END IF;
32929 --
32930 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32931 
32932       trace
32933          (p_msg      => 'BEGIN of AcctLineType_76'
32934          ,p_level    => C_LEVEL_PROCEDURE
32935          ,p_module   => l_log_module);
32936 
32937 END IF;
32938 --
32939 l_component_type             := 'AMB_JLT';
32940 l_component_code             := 'FACT_DOC_FACTORING_CHARGES';
32941 l_component_type_code        := 'S';
32942 l_component_appl_id          :=  222;
32943 l_amb_context_code           := 'DEFAULT';
32944 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
32945 l_event_class_code           := 'FACTORING_OCC_DOCUMENT';
32946 l_event_type_code            := 'FACTORING_OCC_DOCUMENT_ALL';
32947 l_line_definition_owner_code := 'S';
32948 l_line_definition_code       := 'JLBR_AR_FACT_DOC_ACCRUAL';
32949 --
32950 l_balance_type_code          := 'A';
32951 l_segment                     := NULL;
32952 l_ccid                        := NULL;
32953 l_adr_transaction_coa_id      := NULL;
32954 l_adr_accounting_coa_id       := NULL;
32955 l_adr_flexfield_segment_code  := NULL;
32956 l_adr_flex_value_set_id       := NULL;
32957 l_adr_value_type_code         := NULL;
32958 l_adr_value_combination_id    := NULL;
32959 l_adr_value_segment_code      := NULL;
32960 
32961 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
32962 l_bflow_class_code           := '';    -- 4219869 Business Flow
32963 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
32964 l_budgetary_control_flag     := 'N';
32965 
32966 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32967 l_bflow_applied_to_amt       := NULL; -- 5132302
32968 l_entered_amt_idx            := NULL;          -- 4262811
32969 l_accted_amt_idx             := NULL;          -- 4262811
32970 l_acc_rev_flag               := NULL;          -- 4262811
32971 l_accrual_line_num           := NULL;          -- 4262811
32972 l_tmp_amt                    := NULL;          -- 4262811
32973 --
32974  
32975 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32976     l_balance_type_code <> 'B' THEN
32977 IF NVL(p_source_66,'
32978 ') =  'JLBR_AR_FACTORING_CHARGES' AND 
32979 NVL(p_source_7,'
32980 ') =  'FACTORING'
32981  THEN 
32982 
32983    --
32984    XLA_AE_LINES_PKG.SetNewLine;
32985 
32986    p_balance_type_code          := l_balance_type_code;
32987    -- set the flag so later we will know whether the gain loss line needs to be created
32988    
32989    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32990      p_actual_flag :='A';
32991    END IF;
32992 
32993    --
32994    -- bulk performance
32995    --
32996    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32997                                       p_header_num   => 0); -- 4262811
32998    --
32999    -- set accounting line options
33000    --
33001    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33002            p_natural_side_code          => 'D'
33003          , p_gain_or_loss_flag          => 'N'
33004          , p_gl_transfer_mode_code      => 'S'
33005          , p_acct_entry_type_code       => 'A'
33006          , p_switch_side_flag           => 'Y'
33007          , p_merge_duplicate_code       => 'A'
33008          );
33009    --
33010    l_acc_rev_natural_side_code := 'C';  -- 4262811
33011    -- 
33012    --
33013    -- set accounting line type info
33014    --
33015    xla_ae_lines_pkg.SetAcctLineType
33016       (p_component_type             => l_component_type
33017       ,p_event_type_code            => l_event_type_code
33018       ,p_line_definition_owner_code => l_line_definition_owner_code
33019       ,p_line_definition_code       => l_line_definition_code
33020       ,p_accounting_line_code       => l_component_code
33021       ,p_accounting_line_type_code  => l_component_type_code
33022       ,p_accounting_line_appl_id    => l_component_appl_id
33023       ,p_amb_context_code           => l_amb_context_code
33024       ,p_entity_code                => l_entity_code
33025       ,p_event_class_code           => l_event_class_code);
33026    --
33027    -- set accounting class
33028    --
33029    xla_ae_lines_pkg.SetAcctClass(
33030            p_accounting_class_code  => 'BANK_CHG'
33031          , p_ae_header_id           => l_ae_header_id
33035    -- set rounding class
33032          );
33033 
33034    --
33036    --
33037    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33038                       'BANK_CHG';
33039 
33040    --
33041    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33042    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33043    --
33044    -- bulk performance
33045    --
33046    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33047 
33048    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33049       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33050 
33051    -- 4955764
33052    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33053       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33054 
33055    -- 4458381 Public Sector Enh
33056    
33057    --
33058    -- set accounting attributes for the line type
33059    --
33060    l_entered_amt_idx := 10;
33061    l_accted_amt_idx  := 15;
33062    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33063    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
33064    l_rec_acct_attrs.array_char_value(1)  := p_source_67;
33065    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
33066    l_rec_acct_attrs.array_num_value(2)  := 
33067 xla_ae_sources_pkg.GetSystemSourceNum(
33068    p_source_code           => 'XLA_EVENT_APPL_ID'
33069  , p_source_type_code      => 'Y'
33070  , p_source_application_id =>  602
33071 );
33072    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
33073    l_rec_acct_attrs.array_char_value(3)  := p_source_69;
33074    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
33075    l_rec_acct_attrs.array_char_value(4)  := 
33076 xla_ae_sources_pkg.GetSystemSourceChar(
33077    p_source_code           => 'XLA_ENTITY_CODE'
33078  , p_source_type_code      => 'Y'
33079  , p_source_application_id =>  602
33080 );
33081    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
33082    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_71);
33083    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
33084    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_72);
33085    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
33086    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_73);
33087    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
33088    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_74);
33089    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
33090    l_rec_acct_attrs.array_char_value(9)  := p_source_75;
33091    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
33092    l_rec_acct_attrs.array_num_value(10)  := p_source_76;
33093    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
33094    l_rec_acct_attrs.array_char_value(11)  := p_source_77;
33095    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
33096    l_rec_acct_attrs.array_date_value(12)  := p_source_78;
33097    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
33098    l_rec_acct_attrs.array_num_value(13)  := p_source_79;
33099    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
33100    l_rec_acct_attrs.array_char_value(14)  := p_source_80;
33101    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
33102    l_rec_acct_attrs.array_num_value(15)  := p_source_81;
33103    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
33104    l_rec_acct_attrs.array_num_value(16)  := p_source_37;
33105    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
33106    l_rec_acct_attrs.array_num_value(17)  := p_source_38;
33107    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
33108    l_rec_acct_attrs.array_char_value(18)  := p_source_39;
33109    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
33110    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_82);
33111    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
33112    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_83);
33113    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
33114    l_rec_acct_attrs.array_char_value(21)  := p_source_84;
33115    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
33116    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_82);
33117 
33118    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33119    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33120 
33121    ---------------------------------------------------------------------------------------------------------------
33122    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33123    ---------------------------------------------------------------------------------------------------------------
33124    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33125 
33126    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33127    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33128 
33129    IF xla_accounting_cache_pkg.GetValueChar
33133 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33130          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33131          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33132    AND l_bflow_method_code = 'PRIOR_ENTRY'
33134    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33135          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33136        )
33137    THEN
33138          xla_ae_lines_pkg.BflowUpgEntry
33139            (p_business_method_code    => l_bflow_method_code
33140            ,p_business_class_code     => l_bflow_class_code
33141            ,p_balance_type            => l_balance_type_code);
33142    ELSE
33143       NULL;
33144 -- No business flow processing for business flow method of NONE.
33145    END IF;
33146 
33147    --
33148    -- call analytical criteria
33149    --
33150    
33151    --
33152    -- call description
33153    --
33154    
33155 xla_ae_lines_pkg.SetLineDescription(
33156    p_ae_header_id => l_ae_header_id
33157   ,p_description  => Description_8 (
33158      p_application_id         => p_application_id
33159    , p_ae_header_id           => l_ae_header_id 
33160 , p_source_4 => p_source_4
33161 , p_source_5 => p_source_5
33162 , p_source_6 => p_source_6
33163    )
33164 );
33165 
33166 
33167    --
33168    -- call ADRs
33169    -- Bug 4922099
33170    --
33171    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33172         (NVL(l_actual_upg_option, 'N') = 'O') OR
33173         (NVL(l_enc_upg_option, 'N') = 'O')
33174       )
33175    THEN
33176    NULL;
33177    --
33178    --
33179    
33180   l_ccid := AcctDerRule_19(
33181            p_application_id           => p_application_id
33182          , p_ae_header_id             => l_ae_header_id 
33183 , p_source_21 => p_source_21
33184          , x_transaction_coa_id       => l_adr_transaction_coa_id
33185          , x_accounting_coa_id        => l_adr_accounting_coa_id
33186          , x_value_type_code          => l_adr_value_type_code
33187          , p_side                     => 'NA'
33188    );
33189 
33190    xla_ae_lines_pkg.set_ccid(
33191     p_code_combination_id          => l_ccid
33192   , p_value_type_code              => l_adr_value_type_code
33193   , p_transaction_coa_id           => l_adr_transaction_coa_id
33194   , p_accounting_coa_id            => l_adr_accounting_coa_id
33195   , p_adr_code                     => 'COLL_DOC_FACTORING_CHARGES'
33196   , p_adr_type_code                => 'S'
33197   , p_component_type               => l_component_type
33198   , p_component_code               => l_component_code
33199   , p_component_type_code          => l_component_type_code
33200   , p_component_appl_id            => l_component_appl_id
33201   , p_amb_context_code             => l_amb_context_code
33202   , p_side                         => 'NA'
33203   );
33204 
33205 
33206    --
33207    --
33208    END IF;
33209    --
33210    -- Bug 4922099
33211    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33212           (NVL(l_enc_upg_option, 'N') = 'O')
33213         ) AND
33214         (l_bflow_method_code = 'PRIOR_ENTRY')
33215       )
33216    THEN
33217       IF
33218       --
33219       1 = 2
33220       --
33221       THEN
33222       xla_accounting_err_pkg.build_message
33223                                     (p_appli_s_name            => 'XLA'
33224                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33225                                     ,p_token_1                 => 'LINE_NUMBER'
33226                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33227                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33228                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33229                                                                              l_component_type
33230                                                                             ,l_component_code
33231                                                                             ,l_component_type_code
33232                                                                             ,l_component_appl_id
33233                                                                             ,l_amb_context_code
33234                                                                             ,l_entity_code
33235                                                                             ,l_event_class_code
33236                                                                            )
33237                                     ,p_token_3                 => 'OWNER'
33238                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33239                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33240                                                                           ,p_lookup_code    => l_component_type_code
33241                                                                          )
33242                                     ,p_token_4                 => 'PRODUCT_NAME'
33243                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33244                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33248                                        );
33245                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33246                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33247                                     ,p_ae_header_id            =>  NULL
33249 
33250         IF (C_LEVEL_ERROR>= g_log_level) THEN
33251                  trace
33252                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33253                       ,p_level    => C_LEVEL_ERROR
33254                       ,p_module   => l_log_module);
33255         END IF;
33256       END IF;
33257    END IF;
33258    --
33259    --
33260    ------------------------------------------------------------------------------------------------
33261    -- 4219869 Business Flow
33262    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33263    -- Prior Entry.  Currently, the following code is always generated.
33264    ------------------------------------------------------------------------------------------------
33265    XLA_AE_LINES_PKG.ValidateCurrentLine;
33266 
33267    ------------------------------------------------------------------------------------
33268    -- 4219869 Business Flow
33269    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33270    ------------------------------------------------------------------------------------
33271    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33272 
33273    ----------------------------------------------------------------------------------
33274    -- 4219869 Business Flow
33275    -- Update journal entry status -- Need to generate this within IF <condition>
33276    ----------------------------------------------------------------------------------
33277    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33278          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33279          ,p_balance_type_code => l_balance_type_code
33280          );
33281 
33282    -------------------------------------------------------------------------------------------
33283    -- 4262811 - Generate the Accrual Reversal lines
33284    -------------------------------------------------------------------------------------------
33285    BEGIN
33286       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33287                               (g_array_event(p_event_id).array_value_num('header_index'));
33288       IF l_acc_rev_flag IS NULL THEN
33289          l_acc_rev_flag := 'N';
33290       END IF;
33291    EXCEPTION
33292       WHEN OTHERS THEN
33293          l_acc_rev_flag := 'N';
33294    END;
33295    --
33296    IF (l_acc_rev_flag = 'Y') THEN
33297 
33298        -- 4645092  ------------------------------------------------------------------------------
33299        -- To allow MPA report to determine if it should generate report process
33300        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33301        ------------------------------------------------------------------------------------------
33302 
33303        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33304        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33305    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
33306    -- call ADRs
33307    -- Bug 4922099
33308    --
33309    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33310         (NVL(l_actual_upg_option, 'N') = 'O') OR
33311         (NVL(l_enc_upg_option, 'N') = 'O')
33312       )
33313    THEN
33314    NULL;
33315    --
33316    --
33317    
33318   l_ccid := AcctDerRule_19(
33319            p_application_id           => p_application_id
33320          , p_ae_header_id             => l_ae_header_id 
33321 , p_source_21 => p_source_21
33322          , x_transaction_coa_id       => l_adr_transaction_coa_id
33323          , x_accounting_coa_id        => l_adr_accounting_coa_id
33324          , x_value_type_code          => l_adr_value_type_code
33325          , p_side                     => 'NA'
33326    );
33327 
33328    xla_ae_lines_pkg.set_ccid(
33329     p_code_combination_id          => l_ccid
33330   , p_value_type_code              => l_adr_value_type_code
33331   , p_transaction_coa_id           => l_adr_transaction_coa_id
33332   , p_accounting_coa_id            => l_adr_accounting_coa_id
33333   , p_adr_code                     => 'COLL_DOC_FACTORING_CHARGES'
33334   , p_adr_type_code                => 'S'
33335   , p_component_type               => l_component_type
33336   , p_component_code               => l_component_code
33337   , p_component_type_code          => l_component_type_code
33338   , p_component_appl_id            => l_component_appl_id
33339   , p_amb_context_code             => l_amb_context_code
33340   , p_side                         => 'NA'
33341   );
33342 
33343 
33344    --
33345    --
33346    END IF;
33347 
33348        --
33349        -- Update the line information that should be overwritten
33350        --
33351        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33352                                          p_header_num   => 1);
33353        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33354 
33355        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33356 
33357        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33361       --
33358           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33359        END IF;
33360 
33362       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33363       --
33364       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33365           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33366       ELSE
33367           ---------------------------------------------------------------------------------------------------
33368           -- 4262811a Switch Sign
33369           ---------------------------------------------------------------------------------------------------
33370           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33371           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33372                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33373           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33374                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33375           -- 5132302
33376           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33377                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33378 
33379       END IF;
33380 
33381       -- 4955764
33382       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33383       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33384 
33385 
33386       XLA_AE_LINES_PKG.ValidateCurrentLine;
33387       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33388 
33389       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33390                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33391                ,p_balance_type_code => l_balance_type_code);
33392 
33393    END IF;
33394 
33395    -----------------------------------------------------------------------------------------
33396    -- 4262811 Multiperiod Accounting
33397    -----------------------------------------------------------------------------------------
33398      -- No MPA option is assigned.
33399 
33400 
33401 END IF;
33402 END IF;
33403 --
33404 
33405 --
33406 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33407    trace
33408       (p_msg      => 'END of AcctLineType_76'
33409       ,p_level    => C_LEVEL_PROCEDURE
33410       ,p_module   => l_log_module);
33411 END IF;
33412 --
33413 EXCEPTION
33414   WHEN xla_exceptions_pkg.application_exception THEN
33415       RAISE;
33416   WHEN OTHERS THEN
33417        xla_exceptions_pkg.raise_message
33418            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_76');
33419 END AcctLineType_76;
33420 --
33421 
33422 ---------------------------------------
33423 --
33424 -- PRIVATE FUNCTION
33425 --         AcctLineType_77
33426 --
33427 ---------------------------------------
33428 PROCEDURE AcctLineType_77 (
33429   p_application_id        IN NUMBER
33430  ,p_event_id              IN NUMBER
33431  ,p_calculate_acctd_flag  IN VARCHAR2
33432  ,p_calculate_g_l_flag    IN VARCHAR2
33433  ,p_actual_flag           IN OUT VARCHAR2
33434  ,p_balance_type_code     OUT VARCHAR2
33435  ,p_gain_or_loss_ref      OUT VARCHAR2
33436  
33437 --Transaction Distribution GL Account
33438  , p_source_26            IN NUMBER
33439 --Bill To Customer Account Identifier
33440  , p_source_37            IN NUMBER
33441 --Bill To Customer Site Use Identifier
33442  , p_source_38            IN NUMBER
33443 --SLA Party Type
33444  , p_source_39            IN VARCHAR2
33445 --Transaction Distribution Account Class
33446  , p_source_43            IN VARCHAR2
33447 --Transaction Distribution Identifier
33448  , p_source_44            IN NUMBER
33449 --Transaction Distribution Type
33450  , p_source_45            IN VARCHAR2
33451 --Transaction Distribution Entered Amount
33452  , p_source_46            IN NUMBER
33453 --Transaction Currency Code
33454  , p_source_47            IN VARCHAR2
33455 --Transaction Exchange Date
33456  , p_source_48            IN DATE
33457 --Transaction Exchange Rate
33458  , p_source_49            IN NUMBER
33459 --Transaction Exchange Rate Type
33460  , p_source_50            IN VARCHAR2
33461 --Transaction Accounting Amount
33462  , p_source_51            IN NUMBER
33463 )
33464 IS
33465 
33466 l_component_type              VARCHAR2(80);
33467 l_component_code              VARCHAR2(30);
33468 l_component_type_code         VARCHAR2(1);
33469 l_component_appl_id           INTEGER;
33470 l_amb_context_code            VARCHAR2(30);
33471 l_entity_code                 VARCHAR2(30);
33472 l_event_class_code            VARCHAR2(30);
33473 l_ae_header_id                NUMBER;
33474 l_event_type_code             VARCHAR2(30);
33475 l_line_definition_code        VARCHAR2(30);
33476 l_line_definition_owner_code  VARCHAR2(1);
33477 --
33478 -- adr variables
33479 l_segment                     VARCHAR2(30);
33480 l_ccid                        NUMBER;
33481 l_adr_transaction_coa_id      NUMBER;
33485 l_adr_value_type_code         VARCHAR2(30);
33482 l_adr_accounting_coa_id       NUMBER;
33483 l_adr_flexfield_segment_code  VARCHAR2(30);
33484 l_adr_flex_value_set_id       NUMBER;
33486 l_adr_value_combination_id    NUMBER;
33487 l_adr_value_segment_code      VARCHAR2(30);
33488 
33489 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33490 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33491 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33492 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33493 
33494 -- 4262811 Variables ------------------------------------------------------------------------------------------
33495 l_entered_amt_idx             NUMBER;
33496 l_accted_amt_idx              NUMBER;
33497 l_acc_rev_flag                VARCHAR2(1);
33498 l_accrual_line_num            NUMBER;
33499 l_tmp_amt                     NUMBER;
33500 l_acc_rev_natural_side_code   VARCHAR2(1);
33501 
33502 l_num_entries                 NUMBER;
33503 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33504 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33505 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33506 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33507 l_recog_line_1                NUMBER;
33508 l_recog_line_2                NUMBER;
33509 
33510 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33511 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33512 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33513 
33514 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33515 
33516 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33517 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33518 
33519 ---------------------------------------------------------------------------------------------------------------
33520 
33521 
33522 --
33523 -- bulk performance
33524 --
33525 l_balance_type_code           VARCHAR2(1);
33526 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33527 l_log_module                  VARCHAR2(240);
33528 
33529 --
33530 -- Upgrade strategy
33531 --
33532 l_actual_upg_option           VARCHAR2(1);
33533 l_enc_upg_option           VARCHAR2(1);
33534 
33535 --
33536 BEGIN
33537 --
33538 IF g_log_enabled THEN
33539       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_77';
33540 END IF;
33541 --
33542 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33543 
33544       trace
33545          (p_msg      => 'BEGIN of AcctLineType_77'
33546          ,p_level    => C_LEVEL_PROCEDURE
33547          ,p_module   => l_log_module);
33548 
33549 END IF;
33550 --
33551 l_component_type             := 'AMB_JLT';
33552 l_component_code             := 'GUAR_DEFAULT_REC';
33553 l_component_type_code        := 'S';
33554 l_component_appl_id          :=  222;
33555 l_amb_context_code           := 'DEFAULT';
33556 l_entity_code                := 'TRANSACTIONS';
33557 l_event_class_code           := 'GUARANTEE';
33558 l_event_type_code            := 'GUARANTEE_ALL';
33559 l_line_definition_owner_code := 'S';
33560 l_line_definition_code       := 'AR_GUAR_DEFAULT_ACCRUAL';
33561 --
33562 l_balance_type_code          := 'A';
33563 l_segment                     := NULL;
33564 l_ccid                        := NULL;
33565 l_adr_transaction_coa_id      := NULL;
33566 l_adr_accounting_coa_id       := NULL;
33567 l_adr_flexfield_segment_code  := NULL;
33568 l_adr_flex_value_set_id       := NULL;
33569 l_adr_value_type_code         := NULL;
33570 l_adr_value_combination_id    := NULL;
33571 l_adr_value_segment_code      := NULL;
33572 
33573 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33574 l_bflow_class_code           := '';    -- 4219869 Business Flow
33575 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33576 l_budgetary_control_flag     := 'N';
33577 
33578 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33579 l_bflow_applied_to_amt       := NULL; -- 5132302
33580 l_entered_amt_idx            := NULL;          -- 4262811
33581 l_accted_amt_idx             := NULL;          -- 4262811
33582 l_acc_rev_flag               := NULL;          -- 4262811
33583 l_accrual_line_num           := NULL;          -- 4262811
33584 l_tmp_amt                    := NULL;          -- 4262811
33585 --
33586  
33587 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33588     l_balance_type_code <> 'B' THEN
33589 IF NVL(p_source_43,'
33590 ') =  'REC'
33591  THEN 
33592 
33593    --
33594    XLA_AE_LINES_PKG.SetNewLine;
33595 
33596    p_balance_type_code          := l_balance_type_code;
33597    -- set the flag so later we will know whether the gain loss line needs to be created
33598    
33599    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33600      p_actual_flag :='A';
33601    END IF;
33602 
33603    --
33604    -- bulk performance
33605    --
33606    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33607                                       p_header_num   => 0); -- 4262811
33608    --
33609    -- set accounting line options
33610    --
33614          , p_gl_transfer_mode_code      => 'S'
33611    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33612            p_natural_side_code          => 'D'
33613          , p_gain_or_loss_flag          => 'N'
33615          , p_acct_entry_type_code       => 'A'
33616          , p_switch_side_flag           => 'Y'
33617          , p_merge_duplicate_code       => 'A'
33618          );
33619    --
33620    l_acc_rev_natural_side_code := 'C';  -- 4262811
33621    -- 
33622    --
33623    -- set accounting line type info
33624    --
33625    xla_ae_lines_pkg.SetAcctLineType
33626       (p_component_type             => l_component_type
33627       ,p_event_type_code            => l_event_type_code
33628       ,p_line_definition_owner_code => l_line_definition_owner_code
33629       ,p_line_definition_code       => l_line_definition_code
33630       ,p_accounting_line_code       => l_component_code
33631       ,p_accounting_line_type_code  => l_component_type_code
33632       ,p_accounting_line_appl_id    => l_component_appl_id
33633       ,p_amb_context_code           => l_amb_context_code
33634       ,p_entity_code                => l_entity_code
33635       ,p_event_class_code           => l_event_class_code);
33636    --
33637    -- set accounting class
33638    --
33639    xla_ae_lines_pkg.SetAcctClass(
33640            p_accounting_class_code  => 'RECEIVABLE'
33641          , p_ae_header_id           => l_ae_header_id
33642          );
33643 
33644    --
33645    -- set rounding class
33646    --
33647    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33648                       'RECEIVABLE';
33649 
33650    --
33651    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33652    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33653    --
33654    -- bulk performance
33655    --
33656    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33657 
33658    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33659       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33660 
33661    -- 4955764
33662    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33663       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33664 
33665    -- 4458381 Public Sector Enh
33666    
33667    --
33668    -- set accounting attributes for the line type
33669    --
33670    l_entered_amt_idx := 3;
33671    l_accted_amt_idx  := 8;
33672    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33673    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
33674    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
33675    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
33676    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
33677    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
33678    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
33679    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
33680    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
33681    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
33682    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
33683    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
33684    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
33685    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
33686    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
33687    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
33688    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
33689    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
33690    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
33691    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
33692    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
33693    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
33694    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
33695 
33696    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33697    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33698 
33699    ---------------------------------------------------------------------------------------------------------------
33700    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33701    ---------------------------------------------------------------------------------------------------------------
33702    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33703 
33704    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33705    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33706 
33707    IF xla_accounting_cache_pkg.GetValueChar
33708          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33709          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33710    AND l_bflow_method_code = 'PRIOR_ENTRY'
33711 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33712    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33713          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33714        )
33715    THEN
33716          xla_ae_lines_pkg.BflowUpgEntry
33717            (p_business_method_code    => l_bflow_method_code
33721       NULL;
33718            ,p_business_class_code     => l_bflow_class_code
33719            ,p_balance_type            => l_balance_type_code);
33720    ELSE
33722 -- No business flow processing for business flow method of NONE.
33723    END IF;
33724 
33725    --
33726    -- call analytical criteria
33727    --
33728    
33729    --
33730    -- call description
33731    --
33732    -- No description or it is inherited.
33733    --
33734    -- call ADRs
33735    -- Bug 4922099
33736    --
33737    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33738         (NVL(l_actual_upg_option, 'N') = 'O') OR
33739         (NVL(l_enc_upg_option, 'N') = 'O')
33740       )
33741    THEN
33742    NULL;
33743    --
33744    --
33745    
33746   l_ccid := AcctDerRule_24(
33747            p_application_id           => p_application_id
33748          , p_ae_header_id             => l_ae_header_id 
33749 , p_source_26 => p_source_26
33750          , x_transaction_coa_id       => l_adr_transaction_coa_id
33751          , x_accounting_coa_id        => l_adr_accounting_coa_id
33752          , x_value_type_code          => l_adr_value_type_code
33753          , p_side                     => 'NA'
33754    );
33755 
33756    xla_ae_lines_pkg.set_ccid(
33757     p_code_combination_id          => l_ccid
33758   , p_value_type_code              => l_adr_value_type_code
33759   , p_transaction_coa_id           => l_adr_transaction_coa_id
33760   , p_accounting_coa_id            => l_adr_accounting_coa_id
33761   , p_adr_code                     => 'TRX_DIST_CCID'
33762   , p_adr_type_code                => 'S'
33763   , p_component_type               => l_component_type
33764   , p_component_code               => l_component_code
33765   , p_component_type_code          => l_component_type_code
33766   , p_component_appl_id            => l_component_appl_id
33767   , p_amb_context_code             => l_amb_context_code
33768   , p_side                         => 'NA'
33769   );
33770 
33771 
33772    --
33773    --
33774    END IF;
33775    --
33776    -- Bug 4922099
33777    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33778           (NVL(l_enc_upg_option, 'N') = 'O')
33779         ) AND
33780         (l_bflow_method_code = 'PRIOR_ENTRY')
33781       )
33782    THEN
33783       IF
33784       --
33785       1 = 2
33786       --
33787       THEN
33788       xla_accounting_err_pkg.build_message
33789                                     (p_appli_s_name            => 'XLA'
33790                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33791                                     ,p_token_1                 => 'LINE_NUMBER'
33792                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33793                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33794                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33795                                                                              l_component_type
33796                                                                             ,l_component_code
33797                                                                             ,l_component_type_code
33798                                                                             ,l_component_appl_id
33799                                                                             ,l_amb_context_code
33800                                                                             ,l_entity_code
33801                                                                             ,l_event_class_code
33802                                                                            )
33803                                     ,p_token_3                 => 'OWNER'
33804                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33805                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33806                                                                           ,p_lookup_code    => l_component_type_code
33807                                                                          )
33808                                     ,p_token_4                 => 'PRODUCT_NAME'
33809                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33810                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33811                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33812                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33813                                     ,p_ae_header_id            =>  NULL
33814                                        );
33815 
33816         IF (C_LEVEL_ERROR>= g_log_level) THEN
33817                  trace
33818                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33819                       ,p_level    => C_LEVEL_ERROR
33820                       ,p_module   => l_log_module);
33821         END IF;
33822       END IF;
33823    END IF;
33824    --
33825    --
33826    ------------------------------------------------------------------------------------------------
33827    -- 4219869 Business Flow
33828    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33832 
33829    -- Prior Entry.  Currently, the following code is always generated.
33830    ------------------------------------------------------------------------------------------------
33831    XLA_AE_LINES_PKG.ValidateCurrentLine;
33833    ------------------------------------------------------------------------------------
33834    -- 4219869 Business Flow
33835    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33836    ------------------------------------------------------------------------------------
33837    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33838 
33839    ----------------------------------------------------------------------------------
33840    -- 4219869 Business Flow
33841    -- Update journal entry status -- Need to generate this within IF <condition>
33842    ----------------------------------------------------------------------------------
33843    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33844          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33845          ,p_balance_type_code => l_balance_type_code
33846          );
33847 
33848    -------------------------------------------------------------------------------------------
33849    -- 4262811 - Generate the Accrual Reversal lines
33850    -------------------------------------------------------------------------------------------
33851    BEGIN
33852       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33853                               (g_array_event(p_event_id).array_value_num('header_index'));
33854       IF l_acc_rev_flag IS NULL THEN
33855          l_acc_rev_flag := 'N';
33856       END IF;
33857    EXCEPTION
33858       WHEN OTHERS THEN
33859          l_acc_rev_flag := 'N';
33860    END;
33861    --
33862    IF (l_acc_rev_flag = 'Y') THEN
33863 
33864        -- 4645092  ------------------------------------------------------------------------------
33865        -- To allow MPA report to determine if it should generate report process
33866        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33867        ------------------------------------------------------------------------------------------
33868 
33869        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33870        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33871    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
33872    -- call ADRs
33873    -- Bug 4922099
33874    --
33875    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33876         (NVL(l_actual_upg_option, 'N') = 'O') OR
33877         (NVL(l_enc_upg_option, 'N') = 'O')
33878       )
33879    THEN
33880    NULL;
33881    --
33882    --
33883    
33884   l_ccid := AcctDerRule_24(
33885            p_application_id           => p_application_id
33886          , p_ae_header_id             => l_ae_header_id 
33887 , p_source_26 => p_source_26
33888          , x_transaction_coa_id       => l_adr_transaction_coa_id
33889          , x_accounting_coa_id        => l_adr_accounting_coa_id
33890          , x_value_type_code          => l_adr_value_type_code
33891          , p_side                     => 'NA'
33892    );
33893 
33894    xla_ae_lines_pkg.set_ccid(
33895     p_code_combination_id          => l_ccid
33896   , p_value_type_code              => l_adr_value_type_code
33897   , p_transaction_coa_id           => l_adr_transaction_coa_id
33898   , p_accounting_coa_id            => l_adr_accounting_coa_id
33899   , p_adr_code                     => 'TRX_DIST_CCID'
33900   , p_adr_type_code                => 'S'
33901   , p_component_type               => l_component_type
33902   , p_component_code               => l_component_code
33903   , p_component_type_code          => l_component_type_code
33904   , p_component_appl_id            => l_component_appl_id
33905   , p_amb_context_code             => l_amb_context_code
33906   , p_side                         => 'NA'
33907   );
33908 
33909 
33910    --
33911    --
33912    END IF;
33913 
33914        --
33915        -- Update the line information that should be overwritten
33916        --
33917        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33918                                          p_header_num   => 1);
33919        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33920 
33921        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33922 
33923        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33924           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33925        END IF;
33926 
33927       --
33928       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33929       --
33930       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33931           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33932       ELSE
33933           ---------------------------------------------------------------------------------------------------
33934           -- 4262811a Switch Sign
33935           ---------------------------------------------------------------------------------------------------
33936           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33940                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33937           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33938                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33939           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33941           -- 5132302
33942           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33943                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33944 
33945       END IF;
33946 
33947       -- 4955764
33948       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33949       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33950 
33951 
33952       XLA_AE_LINES_PKG.ValidateCurrentLine;
33953       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33954 
33955       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33956                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33957                ,p_balance_type_code => l_balance_type_code);
33958 
33959    END IF;
33960 
33961    -----------------------------------------------------------------------------------------
33962    -- 4262811 Multiperiod Accounting
33963    -----------------------------------------------------------------------------------------
33964      -- No MPA option is assigned.
33965 
33966 
33967 END IF;
33968 END IF;
33969 --
33970 
33971 --
33972 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33973    trace
33974       (p_msg      => 'END of AcctLineType_77'
33975       ,p_level    => C_LEVEL_PROCEDURE
33976       ,p_module   => l_log_module);
33977 END IF;
33978 --
33979 EXCEPTION
33980   WHEN xla_exceptions_pkg.application_exception THEN
33981       RAISE;
33982   WHEN OTHERS THEN
33983        xla_exceptions_pkg.raise_message
33984            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_77');
33985 END AcctLineType_77;
33986 --
33987 
33988 ---------------------------------------
33989 --
33990 -- PRIVATE FUNCTION
33991 --         AcctLineType_78
33992 --
33993 ---------------------------------------
33994 PROCEDURE AcctLineType_78 (
33995   p_application_id        IN NUMBER
33996  ,p_event_id              IN NUMBER
33997  ,p_calculate_acctd_flag  IN VARCHAR2
33998  ,p_calculate_g_l_flag    IN VARCHAR2
33999  ,p_actual_flag           IN OUT VARCHAR2
34000  ,p_balance_type_code     OUT VARCHAR2
34001  ,p_gain_or_loss_ref      OUT VARCHAR2
34002  
34003 --Transaction Distribution GL Account
34004  , p_source_26            IN NUMBER
34005 --Bill To Customer Account Identifier
34006  , p_source_37            IN NUMBER
34007 --Bill To Customer Site Use Identifier
34008  , p_source_38            IN NUMBER
34009 --SLA Party Type
34010  , p_source_39            IN VARCHAR2
34011 --Transaction Distribution Account Class
34012  , p_source_43            IN VARCHAR2
34013 --Transaction Distribution Identifier
34014  , p_source_44            IN NUMBER
34015 --Transaction Distribution Type
34016  , p_source_45            IN VARCHAR2
34017 --Transaction Distribution Entered Amount
34018  , p_source_46            IN NUMBER
34019 --Transaction Currency Code
34020  , p_source_47            IN VARCHAR2
34021 --Transaction Exchange Date
34022  , p_source_48            IN DATE
34023 --Transaction Exchange Rate
34024  , p_source_49            IN NUMBER
34025 --Transaction Exchange Rate Type
34026  , p_source_50            IN VARCHAR2
34027 --Transaction Accounting Amount
34028  , p_source_51            IN NUMBER
34029 )
34030 IS
34031 
34032 l_component_type              VARCHAR2(80);
34033 l_component_code              VARCHAR2(30);
34034 l_component_type_code         VARCHAR2(1);
34035 l_component_appl_id           INTEGER;
34036 l_amb_context_code            VARCHAR2(30);
34037 l_entity_code                 VARCHAR2(30);
34038 l_event_class_code            VARCHAR2(30);
34039 l_ae_header_id                NUMBER;
34040 l_event_type_code             VARCHAR2(30);
34041 l_line_definition_code        VARCHAR2(30);
34042 l_line_definition_owner_code  VARCHAR2(1);
34043 --
34044 -- adr variables
34045 l_segment                     VARCHAR2(30);
34046 l_ccid                        NUMBER;
34047 l_adr_transaction_coa_id      NUMBER;
34048 l_adr_accounting_coa_id       NUMBER;
34049 l_adr_flexfield_segment_code  VARCHAR2(30);
34050 l_adr_flex_value_set_id       NUMBER;
34051 l_adr_value_type_code         VARCHAR2(30);
34052 l_adr_value_combination_id    NUMBER;
34053 l_adr_value_segment_code      VARCHAR2(30);
34054 
34055 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34056 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34057 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34058 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34059 
34060 -- 4262811 Variables ------------------------------------------------------------------------------------------
34061 l_entered_amt_idx             NUMBER;
34062 l_accted_amt_idx              NUMBER;
34063 l_acc_rev_flag                VARCHAR2(1);
34064 l_accrual_line_num            NUMBER;
34068 l_num_entries                 NUMBER;
34065 l_tmp_amt                     NUMBER;
34066 l_acc_rev_natural_side_code   VARCHAR2(1);
34067 
34069 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34070 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34071 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34072 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34073 l_recog_line_1                NUMBER;
34074 l_recog_line_2                NUMBER;
34075 
34076 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34077 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34078 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34079 
34080 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34081 
34082 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34083 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34084 
34085 ---------------------------------------------------------------------------------------------------------------
34086 
34087 
34088 --
34089 -- bulk performance
34090 --
34091 l_balance_type_code           VARCHAR2(1);
34092 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34093 l_log_module                  VARCHAR2(240);
34094 
34095 --
34096 -- Upgrade strategy
34097 --
34098 l_actual_upg_option           VARCHAR2(1);
34099 l_enc_upg_option           VARCHAR2(1);
34100 
34101 --
34102 BEGIN
34103 --
34104 IF g_log_enabled THEN
34105       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_78';
34106 END IF;
34107 --
34108 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34109 
34110       trace
34111          (p_msg      => 'BEGIN of AcctLineType_78'
34112          ,p_level    => C_LEVEL_PROCEDURE
34113          ,p_module   => l_log_module);
34114 
34115 END IF;
34116 --
34117 l_component_type             := 'AMB_JLT';
34118 l_component_code             := 'GUAR_REV';
34119 l_component_type_code        := 'S';
34120 l_component_appl_id          :=  222;
34121 l_amb_context_code           := 'DEFAULT';
34122 l_entity_code                := 'TRANSACTIONS';
34123 l_event_class_code           := 'GUARANTEE';
34124 l_event_type_code            := 'GUARANTEE_ALL';
34125 l_line_definition_owner_code := 'S';
34126 l_line_definition_code       := 'AR_GUAR_DEFAULT_ACCRUAL';
34127 --
34128 l_balance_type_code          := 'A';
34129 l_segment                     := NULL;
34130 l_ccid                        := NULL;
34131 l_adr_transaction_coa_id      := NULL;
34132 l_adr_accounting_coa_id       := NULL;
34133 l_adr_flexfield_segment_code  := NULL;
34134 l_adr_flex_value_set_id       := NULL;
34135 l_adr_value_type_code         := NULL;
34136 l_adr_value_combination_id    := NULL;
34137 l_adr_value_segment_code      := NULL;
34138 
34139 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34140 l_bflow_class_code           := '';    -- 4219869 Business Flow
34141 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34142 l_budgetary_control_flag     := 'N';
34143 
34144 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34145 l_bflow_applied_to_amt       := NULL; -- 5132302
34146 l_entered_amt_idx            := NULL;          -- 4262811
34147 l_accted_amt_idx             := NULL;          -- 4262811
34148 l_acc_rev_flag               := NULL;          -- 4262811
34149 l_accrual_line_num           := NULL;          -- 4262811
34150 l_tmp_amt                    := NULL;          -- 4262811
34151 --
34152  
34153 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34154     l_balance_type_code <> 'B' THEN
34155 IF NVL(p_source_43,'
34156 ') =  'REV'
34157  THEN 
34158 
34159    --
34160    XLA_AE_LINES_PKG.SetNewLine;
34161 
34162    p_balance_type_code          := l_balance_type_code;
34163    -- set the flag so later we will know whether the gain loss line needs to be created
34164    
34165    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34166      p_actual_flag :='A';
34167    END IF;
34168 
34169    --
34170    -- bulk performance
34171    --
34172    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34173                                       p_header_num   => 0); -- 4262811
34174    --
34175    -- set accounting line options
34176    --
34177    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34178            p_natural_side_code          => 'C'
34179          , p_gain_or_loss_flag          => 'N'
34180          , p_gl_transfer_mode_code      => 'S'
34181          , p_acct_entry_type_code       => 'A'
34182          , p_switch_side_flag           => 'Y'
34183          , p_merge_duplicate_code       => 'A'
34184          );
34185    --
34186    l_acc_rev_natural_side_code := 'D';  -- 4262811
34187    -- 
34188    --
34189    -- set accounting line type info
34190    --
34191    xla_ae_lines_pkg.SetAcctLineType
34192       (p_component_type             => l_component_type
34193       ,p_event_type_code            => l_event_type_code
34194       ,p_line_definition_owner_code => l_line_definition_owner_code
34195       ,p_line_definition_code       => l_line_definition_code
34196       ,p_accounting_line_code       => l_component_code
34197       ,p_accounting_line_type_code  => l_component_type_code
34201       ,p_event_class_code           => l_event_class_code);
34198       ,p_accounting_line_appl_id    => l_component_appl_id
34199       ,p_amb_context_code           => l_amb_context_code
34200       ,p_entity_code                => l_entity_code
34202    --
34203    -- set accounting class
34204    --
34205    xla_ae_lines_pkg.SetAcctClass(
34206            p_accounting_class_code  => 'REVENUE'
34207          , p_ae_header_id           => l_ae_header_id
34208          );
34209 
34210    --
34211    -- set rounding class
34212    --
34213    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34214                       'RECEIVABLE';
34215 
34216    --
34217    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34218    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34219    --
34220    -- bulk performance
34221    --
34222    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34223 
34224    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34225       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34226 
34227    -- 4955764
34228    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34229       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34230 
34231    -- 4458381 Public Sector Enh
34232    
34233    --
34234    -- set accounting attributes for the line type
34235    --
34236    l_entered_amt_idx := 3;
34237    l_accted_amt_idx  := 8;
34238    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34239    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
34240    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
34241    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
34242    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
34243    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
34244    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
34245    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
34246    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
34247    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
34248    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
34249    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
34250    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
34251    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
34252    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
34253    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
34254    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
34255    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
34256    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
34257    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
34258    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
34259    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
34260    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
34261 
34262    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34263    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34264 
34265    ---------------------------------------------------------------------------------------------------------------
34266    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34267    ---------------------------------------------------------------------------------------------------------------
34268    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34269 
34270    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34271    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34272 
34273    IF xla_accounting_cache_pkg.GetValueChar
34274          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34275          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34276    AND l_bflow_method_code = 'PRIOR_ENTRY'
34277 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34278    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34279          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34280        )
34281    THEN
34282          xla_ae_lines_pkg.BflowUpgEntry
34283            (p_business_method_code    => l_bflow_method_code
34284            ,p_business_class_code     => l_bflow_class_code
34285            ,p_balance_type            => l_balance_type_code);
34286    ELSE
34287       NULL;
34288 -- No business flow processing for business flow method of NONE.
34289    END IF;
34290 
34291    --
34292    -- call analytical criteria
34293    --
34294    
34295    --
34296    -- call description
34297    --
34298    -- No description or it is inherited.
34299    --
34300    -- call ADRs
34301    -- Bug 4922099
34302    --
34303    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34304         (NVL(l_actual_upg_option, 'N') = 'O') OR
34305         (NVL(l_enc_upg_option, 'N') = 'O')
34306       )
34307    THEN
34308    NULL;
34309    --
34310    --
34311    
34312   l_ccid := AcctDerRule_24(
34316          , x_transaction_coa_id       => l_adr_transaction_coa_id
34313            p_application_id           => p_application_id
34314          , p_ae_header_id             => l_ae_header_id 
34315 , p_source_26 => p_source_26
34317          , x_accounting_coa_id        => l_adr_accounting_coa_id
34318          , x_value_type_code          => l_adr_value_type_code
34319          , p_side                     => 'NA'
34320    );
34321 
34322    xla_ae_lines_pkg.set_ccid(
34323     p_code_combination_id          => l_ccid
34324   , p_value_type_code              => l_adr_value_type_code
34325   , p_transaction_coa_id           => l_adr_transaction_coa_id
34326   , p_accounting_coa_id            => l_adr_accounting_coa_id
34327   , p_adr_code                     => 'TRX_DIST_CCID'
34328   , p_adr_type_code                => 'S'
34329   , p_component_type               => l_component_type
34330   , p_component_code               => l_component_code
34331   , p_component_type_code          => l_component_type_code
34332   , p_component_appl_id            => l_component_appl_id
34333   , p_amb_context_code             => l_amb_context_code
34334   , p_side                         => 'NA'
34335   );
34336 
34337 
34338    --
34339    --
34340    END IF;
34341    --
34342    -- Bug 4922099
34343    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34344           (NVL(l_enc_upg_option, 'N') = 'O')
34345         ) AND
34346         (l_bflow_method_code = 'PRIOR_ENTRY')
34347       )
34348    THEN
34349       IF
34350       --
34351       1 = 2
34352       --
34353       THEN
34354       xla_accounting_err_pkg.build_message
34355                                     (p_appli_s_name            => 'XLA'
34356                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34357                                     ,p_token_1                 => 'LINE_NUMBER'
34358                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34359                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34360                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34361                                                                              l_component_type
34362                                                                             ,l_component_code
34363                                                                             ,l_component_type_code
34364                                                                             ,l_component_appl_id
34365                                                                             ,l_amb_context_code
34366                                                                             ,l_entity_code
34367                                                                             ,l_event_class_code
34368                                                                            )
34369                                     ,p_token_3                 => 'OWNER'
34370                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34371                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34372                                                                           ,p_lookup_code    => l_component_type_code
34373                                                                          )
34374                                     ,p_token_4                 => 'PRODUCT_NAME'
34375                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34376                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34377                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34378                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34379                                     ,p_ae_header_id            =>  NULL
34380                                        );
34381 
34382         IF (C_LEVEL_ERROR>= g_log_level) THEN
34383                  trace
34384                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34385                       ,p_level    => C_LEVEL_ERROR
34386                       ,p_module   => l_log_module);
34387         END IF;
34388       END IF;
34389    END IF;
34390    --
34391    --
34392    ------------------------------------------------------------------------------------------------
34393    -- 4219869 Business Flow
34394    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34395    -- Prior Entry.  Currently, the following code is always generated.
34396    ------------------------------------------------------------------------------------------------
34397    XLA_AE_LINES_PKG.ValidateCurrentLine;
34398 
34399    ------------------------------------------------------------------------------------
34400    -- 4219869 Business Flow
34401    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34402    ------------------------------------------------------------------------------------
34403    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34404 
34405    ----------------------------------------------------------------------------------
34406    -- 4219869 Business Flow
34407    -- Update journal entry status -- Need to generate this within IF <condition>
34408    ----------------------------------------------------------------------------------
34412          );
34409    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34410          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34411          ,p_balance_type_code => l_balance_type_code
34413 
34414    -------------------------------------------------------------------------------------------
34415    -- 4262811 - Generate the Accrual Reversal lines
34416    -------------------------------------------------------------------------------------------
34417    BEGIN
34418       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34419                               (g_array_event(p_event_id).array_value_num('header_index'));
34420       IF l_acc_rev_flag IS NULL THEN
34421          l_acc_rev_flag := 'N';
34422       END IF;
34423    EXCEPTION
34424       WHEN OTHERS THEN
34425          l_acc_rev_flag := 'N';
34426    END;
34427    --
34428    IF (l_acc_rev_flag = 'Y') THEN
34429 
34430        -- 4645092  ------------------------------------------------------------------------------
34431        -- To allow MPA report to determine if it should generate report process
34432        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34433        ------------------------------------------------------------------------------------------
34434 
34435        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34436        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34437    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
34438    -- call ADRs
34439    -- Bug 4922099
34440    --
34441    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34442         (NVL(l_actual_upg_option, 'N') = 'O') OR
34443         (NVL(l_enc_upg_option, 'N') = 'O')
34444       )
34445    THEN
34446    NULL;
34447    --
34448    --
34449    
34450   l_ccid := AcctDerRule_24(
34451            p_application_id           => p_application_id
34452          , p_ae_header_id             => l_ae_header_id 
34453 , p_source_26 => p_source_26
34454          , x_transaction_coa_id       => l_adr_transaction_coa_id
34455          , x_accounting_coa_id        => l_adr_accounting_coa_id
34456          , x_value_type_code          => l_adr_value_type_code
34457          , p_side                     => 'NA'
34458    );
34459 
34460    xla_ae_lines_pkg.set_ccid(
34461     p_code_combination_id          => l_ccid
34462   , p_value_type_code              => l_adr_value_type_code
34463   , p_transaction_coa_id           => l_adr_transaction_coa_id
34464   , p_accounting_coa_id            => l_adr_accounting_coa_id
34465   , p_adr_code                     => 'TRX_DIST_CCID'
34466   , p_adr_type_code                => 'S'
34467   , p_component_type               => l_component_type
34468   , p_component_code               => l_component_code
34469   , p_component_type_code          => l_component_type_code
34470   , p_component_appl_id            => l_component_appl_id
34471   , p_amb_context_code             => l_amb_context_code
34472   , p_side                         => 'NA'
34473   );
34474 
34475 
34476    --
34477    --
34478    END IF;
34479 
34480        --
34481        -- Update the line information that should be overwritten
34482        --
34483        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34484                                          p_header_num   => 1);
34485        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34486 
34487        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34488 
34489        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34490           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34491        END IF;
34492 
34493       --
34494       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34495       --
34496       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34497           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34498       ELSE
34499           ---------------------------------------------------------------------------------------------------
34500           -- 4262811a Switch Sign
34501           ---------------------------------------------------------------------------------------------------
34502           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34503           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34504                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34505           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34506                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34507           -- 5132302
34508           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34509                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34510 
34511       END IF;
34512 
34513       -- 4955764
34514       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34515       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34516 
34517 
34521       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34518       XLA_AE_LINES_PKG.ValidateCurrentLine;
34519       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34520 
34522                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34523                ,p_balance_type_code => l_balance_type_code);
34524 
34525    END IF;
34526 
34527    -----------------------------------------------------------------------------------------
34528    -- 4262811 Multiperiod Accounting
34529    -----------------------------------------------------------------------------------------
34530      -- No MPA option is assigned.
34531 
34532 
34533 END IF;
34534 END IF;
34535 --
34536 
34537 --
34538 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34539    trace
34540       (p_msg      => 'END of AcctLineType_78'
34541       ,p_level    => C_LEVEL_PROCEDURE
34542       ,p_module   => l_log_module);
34543 END IF;
34544 --
34545 EXCEPTION
34546   WHEN xla_exceptions_pkg.application_exception THEN
34547       RAISE;
34548   WHEN OTHERS THEN
34549        xla_exceptions_pkg.raise_message
34550            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_78');
34551 END AcctLineType_78;
34552 --
34553 
34554 ---------------------------------------
34555 --
34556 -- PRIVATE FUNCTION
34557 --         AcctLineType_79
34558 --
34559 ---------------------------------------
34560 PROCEDURE AcctLineType_79 (
34561   p_application_id        IN NUMBER
34562  ,p_event_id              IN NUMBER
34563  ,p_calculate_acctd_flag  IN VARCHAR2
34564  ,p_calculate_g_l_flag    IN VARCHAR2
34565  ,p_actual_flag           IN OUT VARCHAR2
34566  ,p_balance_type_code     OUT VARCHAR2
34567  ,p_gain_or_loss_ref      OUT VARCHAR2
34568  
34569 --Transaction Distribution GL Account
34570  , p_source_26            IN NUMBER
34571 --Bill To Customer Account Identifier
34572  , p_source_37            IN NUMBER
34573 --Bill To Customer Site Use Identifier
34574  , p_source_38            IN NUMBER
34575 --SLA Party Type
34576  , p_source_39            IN VARCHAR2
34577 --Transaction Distribution Account Class
34578  , p_source_43            IN VARCHAR2
34579 --Transaction Distribution Identifier
34580  , p_source_44            IN NUMBER
34581 --Transaction Distribution Type
34582  , p_source_45            IN VARCHAR2
34583 --Transaction Distribution Entered Amount
34584  , p_source_46            IN NUMBER
34585 --Transaction Currency Code
34586  , p_source_47            IN VARCHAR2
34587 --Transaction Exchange Date
34588  , p_source_48            IN DATE
34589 --Transaction Exchange Rate
34590  , p_source_49            IN NUMBER
34591 --Transaction Exchange Rate Type
34592  , p_source_50            IN VARCHAR2
34593 --Transaction Accounting Amount
34594  , p_source_51            IN NUMBER
34595 --Transaction Tax Line Identifier
34596  , p_source_86            IN NUMBER
34597 )
34598 IS
34599 
34600 l_component_type              VARCHAR2(80);
34601 l_component_code              VARCHAR2(30);
34602 l_component_type_code         VARCHAR2(1);
34603 l_component_appl_id           INTEGER;
34604 l_amb_context_code            VARCHAR2(30);
34605 l_entity_code                 VARCHAR2(30);
34606 l_event_class_code            VARCHAR2(30);
34607 l_ae_header_id                NUMBER;
34608 l_event_type_code             VARCHAR2(30);
34609 l_line_definition_code        VARCHAR2(30);
34610 l_line_definition_owner_code  VARCHAR2(1);
34611 --
34612 -- adr variables
34613 l_segment                     VARCHAR2(30);
34614 l_ccid                        NUMBER;
34615 l_adr_transaction_coa_id      NUMBER;
34616 l_adr_accounting_coa_id       NUMBER;
34617 l_adr_flexfield_segment_code  VARCHAR2(30);
34618 l_adr_flex_value_set_id       NUMBER;
34619 l_adr_value_type_code         VARCHAR2(30);
34620 l_adr_value_combination_id    NUMBER;
34621 l_adr_value_segment_code      VARCHAR2(30);
34622 
34623 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34624 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34625 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34626 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34627 
34628 -- 4262811 Variables ------------------------------------------------------------------------------------------
34629 l_entered_amt_idx             NUMBER;
34630 l_accted_amt_idx              NUMBER;
34631 l_acc_rev_flag                VARCHAR2(1);
34632 l_accrual_line_num            NUMBER;
34633 l_tmp_amt                     NUMBER;
34634 l_acc_rev_natural_side_code   VARCHAR2(1);
34635 
34636 l_num_entries                 NUMBER;
34637 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34638 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34639 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34640 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34641 l_recog_line_1                NUMBER;
34642 l_recog_line_2                NUMBER;
34643 
34644 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34645 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34646 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34647 
34648 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34649 
34653 ---------------------------------------------------------------------------------------------------------------
34650 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34651 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34652 
34654 
34655 
34656 --
34657 -- bulk performance
34658 --
34659 l_balance_type_code           VARCHAR2(1);
34660 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34661 l_log_module                  VARCHAR2(240);
34662 
34663 --
34664 -- Upgrade strategy
34665 --
34666 l_actual_upg_option           VARCHAR2(1);
34667 l_enc_upg_option           VARCHAR2(1);
34668 
34669 --
34670 BEGIN
34671 --
34672 IF g_log_enabled THEN
34673       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_79';
34674 END IF;
34675 --
34676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34677 
34678       trace
34679          (p_msg      => 'BEGIN of AcctLineType_79'
34680          ,p_level    => C_LEVEL_PROCEDURE
34681          ,p_module   => l_log_module);
34682 
34683 END IF;
34684 --
34685 l_component_type             := 'AMB_JLT';
34686 l_component_code             := 'INV_CHARGES';
34687 l_component_type_code        := 'S';
34688 l_component_appl_id          :=  222;
34689 l_amb_context_code           := 'DEFAULT';
34690 l_entity_code                := 'TRANSACTIONS';
34691 l_event_class_code           := 'INVOICE';
34692 l_event_type_code            := 'INVOICE_ALL';
34693 l_line_definition_owner_code := 'S';
34694 l_line_definition_code       := 'JA_CN_AR_INV_DEFAULT_ACCRUAL';
34695 --
34696 l_balance_type_code          := 'A';
34697 l_segment                     := NULL;
34698 l_ccid                        := NULL;
34699 l_adr_transaction_coa_id      := NULL;
34700 l_adr_accounting_coa_id       := NULL;
34701 l_adr_flexfield_segment_code  := NULL;
34702 l_adr_flex_value_set_id       := NULL;
34703 l_adr_value_type_code         := NULL;
34704 l_adr_value_combination_id    := NULL;
34705 l_adr_value_segment_code      := NULL;
34706 
34707 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34708 l_bflow_class_code           := '';    -- 4219869 Business Flow
34709 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34710 l_budgetary_control_flag     := 'N';
34711 
34712 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34713 l_bflow_applied_to_amt       := NULL; -- 5132302
34714 l_entered_amt_idx            := NULL;          -- 4262811
34715 l_accted_amt_idx             := NULL;          -- 4262811
34716 l_acc_rev_flag               := NULL;          -- 4262811
34717 l_accrual_line_num           := NULL;          -- 4262811
34718 l_tmp_amt                    := NULL;          -- 4262811
34719 --
34720  
34721 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34722     l_balance_type_code <> 'B' THEN
34723 IF NVL(p_source_43,'
34724 ') =  'CHARGES'
34725  THEN 
34726 
34727    --
34728    XLA_AE_LINES_PKG.SetNewLine;
34729 
34730    p_balance_type_code          := l_balance_type_code;
34731    -- set the flag so later we will know whether the gain loss line needs to be created
34732    
34733    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34734      p_actual_flag :='A';
34735    END IF;
34736 
34737    --
34738    -- bulk performance
34739    --
34740    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34741                                       p_header_num   => 0); -- 4262811
34742    --
34743    -- set accounting line options
34744    --
34745    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34746            p_natural_side_code          => 'C'
34747          , p_gain_or_loss_flag          => 'N'
34748          , p_gl_transfer_mode_code      => 'S'
34749          , p_acct_entry_type_code       => 'A'
34750          , p_switch_side_flag           => 'Y'
34751          , p_merge_duplicate_code       => 'A'
34752          );
34753    --
34754    l_acc_rev_natural_side_code := 'D';  -- 4262811
34755    -- 
34756    --
34757    -- set accounting line type info
34758    --
34759    xla_ae_lines_pkg.SetAcctLineType
34760       (p_component_type             => l_component_type
34761       ,p_event_type_code            => l_event_type_code
34762       ,p_line_definition_owner_code => l_line_definition_owner_code
34763       ,p_line_definition_code       => l_line_definition_code
34764       ,p_accounting_line_code       => l_component_code
34765       ,p_accounting_line_type_code  => l_component_type_code
34766       ,p_accounting_line_appl_id    => l_component_appl_id
34767       ,p_amb_context_code           => l_amb_context_code
34768       ,p_entity_code                => l_entity_code
34769       ,p_event_class_code           => l_event_class_code);
34770    --
34771    -- set accounting class
34772    --
34773    xla_ae_lines_pkg.SetAcctClass(
34774            p_accounting_class_code  => 'CHARGES'
34775          , p_ae_header_id           => l_ae_header_id
34776          );
34777 
34778    --
34779    -- set rounding class
34780    --
34781    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34782                       'RECEIVABLE';
34783 
34784    --
34785    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34789    --
34786    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34787    --
34788    -- bulk performance
34790    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34791 
34792    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34793       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34794 
34795    -- 4955764
34796    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34797       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34798 
34799    -- 4458381 Public Sector Enh
34800    
34801    --
34802    -- set accounting attributes for the line type
34803    --
34804    l_entered_amt_idx := 3;
34805    l_accted_amt_idx  := 8;
34806    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34807    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
34808    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
34809    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
34810    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
34811    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
34812    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
34813    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
34814    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
34815    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
34816    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
34817    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
34818    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
34819    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
34820    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
34821    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
34822    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
34823    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
34824    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
34825    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
34826    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
34827    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
34828    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
34829    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
34830    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
34831 
34832    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34833    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34834 
34835    ---------------------------------------------------------------------------------------------------------------
34836    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34837    ---------------------------------------------------------------------------------------------------------------
34838    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34839 
34840    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34841    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34842 
34843    IF xla_accounting_cache_pkg.GetValueChar
34844          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34845          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34846    AND l_bflow_method_code = 'PRIOR_ENTRY'
34847 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34848    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34849          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34850        )
34851    THEN
34852          xla_ae_lines_pkg.BflowUpgEntry
34853            (p_business_method_code    => l_bflow_method_code
34854            ,p_business_class_code     => l_bflow_class_code
34855            ,p_balance_type            => l_balance_type_code);
34856    ELSE
34857       NULL;
34858 -- No business flow processing for business flow method of NONE.
34859    END IF;
34860 
34861    --
34862    -- call analytical criteria
34863    --
34864    
34865    --
34866    -- call description
34867    --
34868    -- No description or it is inherited.
34869    --
34870    -- call ADRs
34871    -- Bug 4922099
34872    --
34873    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34874         (NVL(l_actual_upg_option, 'N') = 'O') OR
34875         (NVL(l_enc_upg_option, 'N') = 'O')
34876       )
34877    THEN
34878    NULL;
34879    --
34880    --
34881    
34882   l_ccid := AcctDerRule_24(
34883            p_application_id           => p_application_id
34884          , p_ae_header_id             => l_ae_header_id 
34885 , p_source_26 => p_source_26
34886          , x_transaction_coa_id       => l_adr_transaction_coa_id
34887          , x_accounting_coa_id        => l_adr_accounting_coa_id
34888          , x_value_type_code          => l_adr_value_type_code
34889          , p_side                     => 'NA'
34890    );
34891 
34892    xla_ae_lines_pkg.set_ccid(
34893     p_code_combination_id          => l_ccid
34894   , p_value_type_code              => l_adr_value_type_code
34895   , p_transaction_coa_id           => l_adr_transaction_coa_id
34896   , p_accounting_coa_id            => l_adr_accounting_coa_id
34900   , p_component_code               => l_component_code
34897   , p_adr_code                     => 'TRX_DIST_CCID'
34898   , p_adr_type_code                => 'S'
34899   , p_component_type               => l_component_type
34901   , p_component_type_code          => l_component_type_code
34902   , p_component_appl_id            => l_component_appl_id
34903   , p_amb_context_code             => l_amb_context_code
34904   , p_side                         => 'NA'
34905   );
34906 
34907 
34908    --
34909    --
34910    END IF;
34911    --
34912    -- Bug 4922099
34913    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34914           (NVL(l_enc_upg_option, 'N') = 'O')
34915         ) AND
34916         (l_bflow_method_code = 'PRIOR_ENTRY')
34917       )
34918    THEN
34919       IF
34920       --
34921       1 = 2
34922       --
34923       THEN
34924       xla_accounting_err_pkg.build_message
34925                                     (p_appli_s_name            => 'XLA'
34926                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34927                                     ,p_token_1                 => 'LINE_NUMBER'
34928                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34929                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34930                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34931                                                                              l_component_type
34932                                                                             ,l_component_code
34933                                                                             ,l_component_type_code
34934                                                                             ,l_component_appl_id
34935                                                                             ,l_amb_context_code
34936                                                                             ,l_entity_code
34937                                                                             ,l_event_class_code
34938                                                                            )
34939                                     ,p_token_3                 => 'OWNER'
34940                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34941                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34942                                                                           ,p_lookup_code    => l_component_type_code
34943                                                                          )
34944                                     ,p_token_4                 => 'PRODUCT_NAME'
34945                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34946                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34947                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34948                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34949                                     ,p_ae_header_id            =>  NULL
34950                                        );
34951 
34952         IF (C_LEVEL_ERROR>= g_log_level) THEN
34953                  trace
34954                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34955                       ,p_level    => C_LEVEL_ERROR
34956                       ,p_module   => l_log_module);
34957         END IF;
34958       END IF;
34959    END IF;
34960    --
34961    --
34962    ------------------------------------------------------------------------------------------------
34963    -- 4219869 Business Flow
34964    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34965    -- Prior Entry.  Currently, the following code is always generated.
34966    ------------------------------------------------------------------------------------------------
34967    XLA_AE_LINES_PKG.ValidateCurrentLine;
34968 
34969    ------------------------------------------------------------------------------------
34970    -- 4219869 Business Flow
34971    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34972    ------------------------------------------------------------------------------------
34973    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34974 
34975    ----------------------------------------------------------------------------------
34976    -- 4219869 Business Flow
34977    -- Update journal entry status -- Need to generate this within IF <condition>
34978    ----------------------------------------------------------------------------------
34979    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34980          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34981          ,p_balance_type_code => l_balance_type_code
34982          );
34983 
34984    -------------------------------------------------------------------------------------------
34985    -- 4262811 - Generate the Accrual Reversal lines
34986    -------------------------------------------------------------------------------------------
34987    BEGIN
34988       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34989                               (g_array_event(p_event_id).array_value_num('header_index'));
34990       IF l_acc_rev_flag IS NULL THEN
34994       WHEN OTHERS THEN
34991          l_acc_rev_flag := 'N';
34992       END IF;
34993    EXCEPTION
34995          l_acc_rev_flag := 'N';
34996    END;
34997    --
34998    IF (l_acc_rev_flag = 'Y') THEN
34999 
35000        -- 4645092  ------------------------------------------------------------------------------
35001        -- To allow MPA report to determine if it should generate report process
35002        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35003        ------------------------------------------------------------------------------------------
35004 
35005        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35006        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35007    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
35008    -- call ADRs
35009    -- Bug 4922099
35010    --
35011    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35012         (NVL(l_actual_upg_option, 'N') = 'O') OR
35013         (NVL(l_enc_upg_option, 'N') = 'O')
35014       )
35015    THEN
35016    NULL;
35017    --
35018    --
35019    
35020   l_ccid := AcctDerRule_24(
35021            p_application_id           => p_application_id
35022          , p_ae_header_id             => l_ae_header_id 
35023 , p_source_26 => p_source_26
35024          , x_transaction_coa_id       => l_adr_transaction_coa_id
35025          , x_accounting_coa_id        => l_adr_accounting_coa_id
35026          , x_value_type_code          => l_adr_value_type_code
35027          , p_side                     => 'NA'
35028    );
35029 
35030    xla_ae_lines_pkg.set_ccid(
35031     p_code_combination_id          => l_ccid
35032   , p_value_type_code              => l_adr_value_type_code
35033   , p_transaction_coa_id           => l_adr_transaction_coa_id
35034   , p_accounting_coa_id            => l_adr_accounting_coa_id
35035   , p_adr_code                     => 'TRX_DIST_CCID'
35036   , p_adr_type_code                => 'S'
35037   , p_component_type               => l_component_type
35038   , p_component_code               => l_component_code
35039   , p_component_type_code          => l_component_type_code
35040   , p_component_appl_id            => l_component_appl_id
35041   , p_amb_context_code             => l_amb_context_code
35042   , p_side                         => 'NA'
35043   );
35044 
35045 
35046    --
35047    --
35048    END IF;
35049 
35050        --
35051        -- Update the line information that should be overwritten
35052        --
35053        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35054                                          p_header_num   => 1);
35055        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35056 
35057        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35058 
35059        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35060           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35061        END IF;
35062 
35063       --
35064       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35065       --
35066       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35067           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35068       ELSE
35069           ---------------------------------------------------------------------------------------------------
35070           -- 4262811a Switch Sign
35071           ---------------------------------------------------------------------------------------------------
35072           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35073           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35074                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35075           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35076                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35077           -- 5132302
35078           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35079                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35080 
35081       END IF;
35082 
35083       -- 4955764
35084       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35085       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35086 
35087 
35088       XLA_AE_LINES_PKG.ValidateCurrentLine;
35089       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35090 
35091       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35092                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35093                ,p_balance_type_code => l_balance_type_code);
35094 
35095    END IF;
35096 
35097    -----------------------------------------------------------------------------------------
35098    -- 4262811 Multiperiod Accounting
35099    -----------------------------------------------------------------------------------------
35100      -- No MPA option is assigned.
35101 
35102 
35103 END IF;
35104 END IF;
35105 --
35106 
35107 --
35111       ,p_level    => C_LEVEL_PROCEDURE
35108 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35109    trace
35110       (p_msg      => 'END of AcctLineType_79'
35112       ,p_module   => l_log_module);
35113 END IF;
35114 --
35115 EXCEPTION
35116   WHEN xla_exceptions_pkg.application_exception THEN
35117       RAISE;
35118   WHEN OTHERS THEN
35119        xla_exceptions_pkg.raise_message
35120            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_79');
35121 END AcctLineType_79;
35122 --
35123 
35124 ---------------------------------------
35125 --
35126 -- PRIVATE FUNCTION
35127 --         AcctLineType_80
35128 --
35129 ---------------------------------------
35130 PROCEDURE AcctLineType_80 (
35131   p_application_id        IN NUMBER
35132  ,p_event_id              IN NUMBER
35133  ,p_calculate_acctd_flag  IN VARCHAR2
35134  ,p_calculate_g_l_flag    IN VARCHAR2
35135  ,p_actual_flag           IN OUT VARCHAR2
35136  ,p_balance_type_code     OUT VARCHAR2
35137  ,p_gain_or_loss_ref      OUT VARCHAR2
35138  
35139 --Transaction Distribution GL Account
35140  , p_source_26            IN NUMBER
35141 --Bill To Customer Account Identifier
35142  , p_source_37            IN NUMBER
35143 --Bill To Customer Site Use Identifier
35144  , p_source_38            IN NUMBER
35145 --SLA Party Type
35146  , p_source_39            IN VARCHAR2
35147 --Transaction Distribution Account Class
35148  , p_source_43            IN VARCHAR2
35149 --Transaction Distribution Identifier
35150  , p_source_44            IN NUMBER
35151 --Transaction Distribution Type
35152  , p_source_45            IN VARCHAR2
35153 --Transaction Distribution Entered Amount
35154  , p_source_46            IN NUMBER
35155 --Transaction Currency Code
35156  , p_source_47            IN VARCHAR2
35157 --Transaction Exchange Date
35158  , p_source_48            IN DATE
35159 --Transaction Exchange Rate
35160  , p_source_49            IN NUMBER
35161 --Transaction Exchange Rate Type
35162  , p_source_50            IN VARCHAR2
35163 --Transaction Accounting Amount
35164  , p_source_51            IN NUMBER
35165 --Transaction Tax Line Identifier
35166  , p_source_86            IN NUMBER
35167 )
35168 IS
35169 
35170 l_component_type              VARCHAR2(80);
35171 l_component_code              VARCHAR2(30);
35172 l_component_type_code         VARCHAR2(1);
35173 l_component_appl_id           INTEGER;
35174 l_amb_context_code            VARCHAR2(30);
35175 l_entity_code                 VARCHAR2(30);
35176 l_event_class_code            VARCHAR2(30);
35177 l_ae_header_id                NUMBER;
35178 l_event_type_code             VARCHAR2(30);
35179 l_line_definition_code        VARCHAR2(30);
35180 l_line_definition_owner_code  VARCHAR2(1);
35181 --
35182 -- adr variables
35183 l_segment                     VARCHAR2(30);
35184 l_ccid                        NUMBER;
35185 l_adr_transaction_coa_id      NUMBER;
35186 l_adr_accounting_coa_id       NUMBER;
35187 l_adr_flexfield_segment_code  VARCHAR2(30);
35188 l_adr_flex_value_set_id       NUMBER;
35189 l_adr_value_type_code         VARCHAR2(30);
35190 l_adr_value_combination_id    NUMBER;
35191 l_adr_value_segment_code      VARCHAR2(30);
35192 
35193 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35194 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35195 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35196 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35197 
35198 -- 4262811 Variables ------------------------------------------------------------------------------------------
35199 l_entered_amt_idx             NUMBER;
35200 l_accted_amt_idx              NUMBER;
35201 l_acc_rev_flag                VARCHAR2(1);
35202 l_accrual_line_num            NUMBER;
35203 l_tmp_amt                     NUMBER;
35204 l_acc_rev_natural_side_code   VARCHAR2(1);
35205 
35206 l_num_entries                 NUMBER;
35207 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35208 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35209 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35210 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35211 l_recog_line_1                NUMBER;
35212 l_recog_line_2                NUMBER;
35213 
35214 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35215 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35216 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35217 
35218 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35219 
35220 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35221 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35222 
35223 ---------------------------------------------------------------------------------------------------------------
35224 
35225 
35226 --
35227 -- bulk performance
35228 --
35229 l_balance_type_code           VARCHAR2(1);
35230 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35231 l_log_module                  VARCHAR2(240);
35232 
35233 --
35234 -- Upgrade strategy
35235 --
35236 l_actual_upg_option           VARCHAR2(1);
35237 l_enc_upg_option           VARCHAR2(1);
35238 
35239 --
35240 BEGIN
35241 --
35245 --
35242 IF g_log_enabled THEN
35243       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_80';
35244 END IF;
35246 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35247 
35248       trace
35249          (p_msg      => 'BEGIN of AcctLineType_80'
35250          ,p_level    => C_LEVEL_PROCEDURE
35251          ,p_module   => l_log_module);
35252 
35253 END IF;
35254 --
35255 l_component_type             := 'AMB_JLT';
35256 l_component_code             := 'INV_DEFAULT_REC';
35257 l_component_type_code        := 'S';
35258 l_component_appl_id          :=  222;
35259 l_amb_context_code           := 'DEFAULT';
35260 l_entity_code                := 'TRANSACTIONS';
35261 l_event_class_code           := 'INVOICE';
35262 l_event_type_code            := 'INVOICE_ALL';
35263 l_line_definition_owner_code := 'S';
35264 l_line_definition_code       := 'JA_CN_AR_INV_DEFAULT_ACCRUAL';
35265 --
35266 l_balance_type_code          := 'A';
35267 l_segment                     := NULL;
35268 l_ccid                        := NULL;
35269 l_adr_transaction_coa_id      := NULL;
35270 l_adr_accounting_coa_id       := NULL;
35271 l_adr_flexfield_segment_code  := NULL;
35272 l_adr_flex_value_set_id       := NULL;
35273 l_adr_value_type_code         := NULL;
35274 l_adr_value_combination_id    := NULL;
35275 l_adr_value_segment_code      := NULL;
35276 
35277 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35278 l_bflow_class_code           := 'RECEIVABLE';    -- 4219869 Business Flow
35279 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35280 l_budgetary_control_flag     := 'N';
35281 
35282 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35283 l_bflow_applied_to_amt       := NULL; -- 5132302
35284 l_entered_amt_idx            := NULL;          -- 4262811
35285 l_accted_amt_idx             := NULL;          -- 4262811
35286 l_acc_rev_flag               := NULL;          -- 4262811
35287 l_accrual_line_num           := NULL;          -- 4262811
35288 l_tmp_amt                    := NULL;          -- 4262811
35289 --
35290  
35291 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35292     l_balance_type_code <> 'B' THEN
35293 IF NVL(p_source_43,'
35294 ') =  'REC'
35295  THEN 
35296 
35297    --
35298    XLA_AE_LINES_PKG.SetNewLine;
35299 
35300    p_balance_type_code          := l_balance_type_code;
35301    -- set the flag so later we will know whether the gain loss line needs to be created
35302    
35303    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35304      p_actual_flag :='A';
35305    END IF;
35306 
35307    --
35308    -- bulk performance
35309    --
35310    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35311                                       p_header_num   => 0); -- 4262811
35312    --
35313    -- set accounting line options
35314    --
35315    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35316            p_natural_side_code          => 'D'
35317          , p_gain_or_loss_flag          => 'N'
35318          , p_gl_transfer_mode_code      => 'S'
35319          , p_acct_entry_type_code       => 'A'
35320          , p_switch_side_flag           => 'Y'
35321          , p_merge_duplicate_code       => 'A'
35322          );
35323    --
35324    l_acc_rev_natural_side_code := 'C';  -- 4262811
35325    -- 
35326    --
35327    -- set accounting line type info
35328    --
35329    xla_ae_lines_pkg.SetAcctLineType
35330       (p_component_type             => l_component_type
35331       ,p_event_type_code            => l_event_type_code
35332       ,p_line_definition_owner_code => l_line_definition_owner_code
35333       ,p_line_definition_code       => l_line_definition_code
35334       ,p_accounting_line_code       => l_component_code
35335       ,p_accounting_line_type_code  => l_component_type_code
35336       ,p_accounting_line_appl_id    => l_component_appl_id
35337       ,p_amb_context_code           => l_amb_context_code
35338       ,p_entity_code                => l_entity_code
35339       ,p_event_class_code           => l_event_class_code);
35340    --
35341    -- set accounting class
35342    --
35343    xla_ae_lines_pkg.SetAcctClass(
35344            p_accounting_class_code  => 'RECEIVABLE'
35345          , p_ae_header_id           => l_ae_header_id
35346          );
35347 
35348    --
35349    -- set rounding class
35350    --
35351    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35352                       'RECEIVABLE';
35353 
35354    --
35355    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35356    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35357    --
35358    -- bulk performance
35359    --
35360    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35361 
35362    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35363       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35364 
35365    -- 4955764
35366    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35367       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35368 
35369    -- 4458381 Public Sector Enh
35370    
35371    --
35375    l_accted_amt_idx  := 8;
35372    -- set accounting attributes for the line type
35373    --
35374    l_entered_amt_idx := 3;
35376    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35377    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35378    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
35379    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35380    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
35381    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35382    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
35383    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35384    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
35385    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35386    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
35387    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35388    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
35389    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35390    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
35391    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35392    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
35393    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
35394    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
35395    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
35396    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
35397    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
35398    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
35399    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
35400    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
35401 
35402    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35403    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35404 
35405    ---------------------------------------------------------------------------------------------------------------
35406    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35407    ---------------------------------------------------------------------------------------------------------------
35408    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35409 
35410    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35411    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35412 
35413    IF xla_accounting_cache_pkg.GetValueChar
35414          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35415          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35416    AND l_bflow_method_code = 'PRIOR_ENTRY'
35417 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35418    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35419          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35420        )
35421    THEN
35422          xla_ae_lines_pkg.BflowUpgEntry
35423            (p_business_method_code    => l_bflow_method_code
35424            ,p_business_class_code     => l_bflow_class_code
35425            ,p_balance_type            => l_balance_type_code);
35426    ELSE
35427       NULL;
35428 -- No business flow processing for business flow method of NONE.
35429    END IF;
35430 
35431    --
35432    -- call analytical criteria
35433    --
35434    
35435    --
35436    -- call description
35437    --
35438    -- No description or it is inherited.
35439    --
35440    -- call ADRs
35441    -- Bug 4922099
35442    --
35443    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35444         (NVL(l_actual_upg_option, 'N') = 'O') OR
35445         (NVL(l_enc_upg_option, 'N') = 'O')
35446       )
35447    THEN
35448    NULL;
35449    --
35450    --
35451    
35452   l_ccid := AcctDerRule_24(
35453            p_application_id           => p_application_id
35454          , p_ae_header_id             => l_ae_header_id 
35455 , p_source_26 => p_source_26
35456          , x_transaction_coa_id       => l_adr_transaction_coa_id
35457          , x_accounting_coa_id        => l_adr_accounting_coa_id
35458          , x_value_type_code          => l_adr_value_type_code
35459          , p_side                     => 'NA'
35460    );
35461 
35462    xla_ae_lines_pkg.set_ccid(
35463     p_code_combination_id          => l_ccid
35464   , p_value_type_code              => l_adr_value_type_code
35465   , p_transaction_coa_id           => l_adr_transaction_coa_id
35466   , p_accounting_coa_id            => l_adr_accounting_coa_id
35467   , p_adr_code                     => 'TRX_DIST_CCID'
35468   , p_adr_type_code                => 'S'
35469   , p_component_type               => l_component_type
35470   , p_component_code               => l_component_code
35471   , p_component_type_code          => l_component_type_code
35472   , p_component_appl_id            => l_component_appl_id
35473   , p_amb_context_code             => l_amb_context_code
35474   , p_side                         => 'NA'
35475   );
35476 
35477 
35478    --
35479    --
35480    END IF;
35481    --
35482    -- Bug 4922099
35483    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35484           (NVL(l_enc_upg_option, 'N') = 'O')
35485         ) AND
35489       IF
35486         (l_bflow_method_code = 'PRIOR_ENTRY')
35487       )
35488    THEN
35490       --
35491       1 = 2
35492       --
35493       THEN
35494       xla_accounting_err_pkg.build_message
35495                                     (p_appli_s_name            => 'XLA'
35496                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35497                                     ,p_token_1                 => 'LINE_NUMBER'
35498                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35499                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35500                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35501                                                                              l_component_type
35502                                                                             ,l_component_code
35503                                                                             ,l_component_type_code
35504                                                                             ,l_component_appl_id
35505                                                                             ,l_amb_context_code
35506                                                                             ,l_entity_code
35507                                                                             ,l_event_class_code
35508                                                                            )
35509                                     ,p_token_3                 => 'OWNER'
35510                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35511                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35512                                                                           ,p_lookup_code    => l_component_type_code
35513                                                                          )
35514                                     ,p_token_4                 => 'PRODUCT_NAME'
35515                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35516                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35517                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35518                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35519                                     ,p_ae_header_id            =>  NULL
35520                                        );
35521 
35522         IF (C_LEVEL_ERROR>= g_log_level) THEN
35523                  trace
35524                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35525                       ,p_level    => C_LEVEL_ERROR
35526                       ,p_module   => l_log_module);
35527         END IF;
35528       END IF;
35529    END IF;
35530    --
35531    --
35532    ------------------------------------------------------------------------------------------------
35533    -- 4219869 Business Flow
35534    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35535    -- Prior Entry.  Currently, the following code is always generated.
35536    ------------------------------------------------------------------------------------------------
35537    XLA_AE_LINES_PKG.ValidateCurrentLine;
35538 
35539    ------------------------------------------------------------------------------------
35540    -- 4219869 Business Flow
35541    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35542    ------------------------------------------------------------------------------------
35543    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35544 
35545    ----------------------------------------------------------------------------------
35546    -- 4219869 Business Flow
35547    -- Update journal entry status -- Need to generate this within IF <condition>
35548    ----------------------------------------------------------------------------------
35549    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35550          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35551          ,p_balance_type_code => l_balance_type_code
35552          );
35553 
35554    -------------------------------------------------------------------------------------------
35555    -- 4262811 - Generate the Accrual Reversal lines
35556    -------------------------------------------------------------------------------------------
35557    BEGIN
35558       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35559                               (g_array_event(p_event_id).array_value_num('header_index'));
35560       IF l_acc_rev_flag IS NULL THEN
35561          l_acc_rev_flag := 'N';
35562       END IF;
35563    EXCEPTION
35564       WHEN OTHERS THEN
35565          l_acc_rev_flag := 'N';
35566    END;
35567    --
35568    IF (l_acc_rev_flag = 'Y') THEN
35569 
35570        -- 4645092  ------------------------------------------------------------------------------
35571        -- To allow MPA report to determine if it should generate report process
35572        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35573        ------------------------------------------------------------------------------------------
35574 
35575        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35576        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35580    --
35577    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
35578    -- call ADRs
35579    -- Bug 4922099
35581    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35582         (NVL(l_actual_upg_option, 'N') = 'O') OR
35583         (NVL(l_enc_upg_option, 'N') = 'O')
35584       )
35585    THEN
35586    NULL;
35587    --
35588    --
35589    
35590   l_ccid := AcctDerRule_24(
35591            p_application_id           => p_application_id
35592          , p_ae_header_id             => l_ae_header_id 
35593 , p_source_26 => p_source_26
35594          , x_transaction_coa_id       => l_adr_transaction_coa_id
35595          , x_accounting_coa_id        => l_adr_accounting_coa_id
35596          , x_value_type_code          => l_adr_value_type_code
35597          , p_side                     => 'NA'
35598    );
35599 
35600    xla_ae_lines_pkg.set_ccid(
35601     p_code_combination_id          => l_ccid
35602   , p_value_type_code              => l_adr_value_type_code
35603   , p_transaction_coa_id           => l_adr_transaction_coa_id
35604   , p_accounting_coa_id            => l_adr_accounting_coa_id
35605   , p_adr_code                     => 'TRX_DIST_CCID'
35606   , p_adr_type_code                => 'S'
35607   , p_component_type               => l_component_type
35608   , p_component_code               => l_component_code
35609   , p_component_type_code          => l_component_type_code
35610   , p_component_appl_id            => l_component_appl_id
35611   , p_amb_context_code             => l_amb_context_code
35612   , p_side                         => 'NA'
35613   );
35614 
35615 
35616    --
35617    --
35618    END IF;
35619 
35620        --
35621        -- Update the line information that should be overwritten
35622        --
35623        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35624                                          p_header_num   => 1);
35625        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35626 
35627        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35628 
35629        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35630           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35631        END IF;
35632 
35633       --
35634       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35635       --
35636       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35637           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35638       ELSE
35639           ---------------------------------------------------------------------------------------------------
35640           -- 4262811a Switch Sign
35641           ---------------------------------------------------------------------------------------------------
35642           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35643           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35644                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35645           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35646                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35647           -- 5132302
35648           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35649                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35650 
35651       END IF;
35652 
35653       -- 4955764
35654       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35655       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35656 
35657 
35658       XLA_AE_LINES_PKG.ValidateCurrentLine;
35659       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35660 
35661       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35662                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35663                ,p_balance_type_code => l_balance_type_code);
35664 
35665    END IF;
35666 
35667    -----------------------------------------------------------------------------------------
35668    -- 4262811 Multiperiod Accounting
35669    -----------------------------------------------------------------------------------------
35670      -- No MPA option is assigned.
35671 
35672 
35673 END IF;
35674 END IF;
35675 --
35676 
35677 --
35678 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35679    trace
35680       (p_msg      => 'END of AcctLineType_80'
35681       ,p_level    => C_LEVEL_PROCEDURE
35682       ,p_module   => l_log_module);
35683 END IF;
35684 --
35685 EXCEPTION
35686   WHEN xla_exceptions_pkg.application_exception THEN
35687       RAISE;
35688   WHEN OTHERS THEN
35689        xla_exceptions_pkg.raise_message
35690            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_80');
35691 END AcctLineType_80;
35692 --
35693 
35694 ---------------------------------------
35695 --
35696 -- PRIVATE FUNCTION
35697 --         AcctLineType_81
35698 --
35699 ---------------------------------------
35700 PROCEDURE AcctLineType_81 (
35704  ,p_calculate_g_l_flag    IN VARCHAR2
35701   p_application_id        IN NUMBER
35702  ,p_event_id              IN NUMBER
35703  ,p_calculate_acctd_flag  IN VARCHAR2
35705  ,p_actual_flag           IN OUT VARCHAR2
35706  ,p_balance_type_code     OUT VARCHAR2
35707  ,p_gain_or_loss_ref      OUT VARCHAR2
35708  
35709 --Transaction Distribution GL Account
35710  , p_source_26            IN NUMBER
35711 --Bill To Customer Account Identifier
35712  , p_source_37            IN NUMBER
35713 --Bill To Customer Site Use Identifier
35714  , p_source_38            IN NUMBER
35715 --SLA Party Type
35716  , p_source_39            IN VARCHAR2
35717 --Transaction Distribution Account Class
35718  , p_source_43            IN VARCHAR2
35719 --Transaction Distribution Identifier
35720  , p_source_44            IN NUMBER
35721 --Transaction Distribution Type
35722  , p_source_45            IN VARCHAR2
35723 --Transaction Distribution Entered Amount
35724  , p_source_46            IN NUMBER
35725 --Transaction Currency Code
35726  , p_source_47            IN VARCHAR2
35727 --Transaction Exchange Date
35728  , p_source_48            IN DATE
35729 --Transaction Exchange Rate
35730  , p_source_49            IN NUMBER
35731 --Transaction Exchange Rate Type
35732  , p_source_50            IN VARCHAR2
35733 --Transaction Accounting Amount
35734  , p_source_51            IN NUMBER
35735 --Transaction Tax Line Identifier
35736  , p_source_86            IN NUMBER
35737 )
35738 IS
35739 
35740 l_component_type              VARCHAR2(80);
35741 l_component_code              VARCHAR2(30);
35742 l_component_type_code         VARCHAR2(1);
35743 l_component_appl_id           INTEGER;
35744 l_amb_context_code            VARCHAR2(30);
35745 l_entity_code                 VARCHAR2(30);
35746 l_event_class_code            VARCHAR2(30);
35747 l_ae_header_id                NUMBER;
35748 l_event_type_code             VARCHAR2(30);
35749 l_line_definition_code        VARCHAR2(30);
35750 l_line_definition_owner_code  VARCHAR2(1);
35751 --
35752 -- adr variables
35753 l_segment                     VARCHAR2(30);
35754 l_ccid                        NUMBER;
35755 l_adr_transaction_coa_id      NUMBER;
35756 l_adr_accounting_coa_id       NUMBER;
35757 l_adr_flexfield_segment_code  VARCHAR2(30);
35758 l_adr_flex_value_set_id       NUMBER;
35759 l_adr_value_type_code         VARCHAR2(30);
35760 l_adr_value_combination_id    NUMBER;
35761 l_adr_value_segment_code      VARCHAR2(30);
35762 
35763 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35764 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35765 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35766 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35767 
35768 -- 4262811 Variables ------------------------------------------------------------------------------------------
35769 l_entered_amt_idx             NUMBER;
35770 l_accted_amt_idx              NUMBER;
35771 l_acc_rev_flag                VARCHAR2(1);
35772 l_accrual_line_num            NUMBER;
35773 l_tmp_amt                     NUMBER;
35774 l_acc_rev_natural_side_code   VARCHAR2(1);
35775 
35776 l_num_entries                 NUMBER;
35777 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35778 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35779 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35780 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35781 l_recog_line_1                NUMBER;
35782 l_recog_line_2                NUMBER;
35783 
35784 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35785 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35786 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35787 
35788 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35789 
35790 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35791 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35792 
35793 ---------------------------------------------------------------------------------------------------------------
35794 
35795 
35796 --
35797 -- bulk performance
35798 --
35799 l_balance_type_code           VARCHAR2(1);
35800 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35801 l_log_module                  VARCHAR2(240);
35802 
35803 --
35804 -- Upgrade strategy
35805 --
35806 l_actual_upg_option           VARCHAR2(1);
35807 l_enc_upg_option           VARCHAR2(1);
35808 
35809 --
35810 BEGIN
35811 --
35812 IF g_log_enabled THEN
35813       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_81';
35814 END IF;
35815 --
35816 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35817 
35818       trace
35819          (p_msg      => 'BEGIN of AcctLineType_81'
35820          ,p_level    => C_LEVEL_PROCEDURE
35821          ,p_module   => l_log_module);
35822 
35823 END IF;
35824 --
35825 l_component_type             := 'AMB_JLT';
35826 l_component_code             := 'INV_FREIGHT';
35827 l_component_type_code        := 'S';
35828 l_component_appl_id          :=  222;
35829 l_amb_context_code           := 'DEFAULT';
35830 l_entity_code                := 'TRANSACTIONS';
35831 l_event_class_code           := 'INVOICE';
35835 --
35832 l_event_type_code            := 'INVOICE_ALL';
35833 l_line_definition_owner_code := 'S';
35834 l_line_definition_code       := 'JA_CN_AR_INV_DEFAULT_ACCRUAL';
35836 l_balance_type_code          := 'A';
35837 l_segment                     := NULL;
35838 l_ccid                        := NULL;
35839 l_adr_transaction_coa_id      := NULL;
35840 l_adr_accounting_coa_id       := NULL;
35841 l_adr_flexfield_segment_code  := NULL;
35842 l_adr_flex_value_set_id       := NULL;
35843 l_adr_value_type_code         := NULL;
35844 l_adr_value_combination_id    := NULL;
35845 l_adr_value_segment_code      := NULL;
35846 
35847 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35848 l_bflow_class_code           := 'FREIGHT';    -- 4219869 Business Flow
35849 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35850 l_budgetary_control_flag     := 'N';
35851 
35852 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35853 l_bflow_applied_to_amt       := NULL; -- 5132302
35854 l_entered_amt_idx            := NULL;          -- 4262811
35855 l_accted_amt_idx             := NULL;          -- 4262811
35856 l_acc_rev_flag               := NULL;          -- 4262811
35857 l_accrual_line_num           := NULL;          -- 4262811
35858 l_tmp_amt                    := NULL;          -- 4262811
35859 --
35860  
35861 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35862     l_balance_type_code <> 'B' THEN
35863 IF NVL(p_source_43,'
35864 ') =  'FREIGHT'
35865  THEN 
35866 
35867    --
35868    XLA_AE_LINES_PKG.SetNewLine;
35869 
35870    p_balance_type_code          := l_balance_type_code;
35871    -- set the flag so later we will know whether the gain loss line needs to be created
35872    
35873    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35874      p_actual_flag :='A';
35875    END IF;
35876 
35877    --
35878    -- bulk performance
35879    --
35880    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35881                                       p_header_num   => 0); -- 4262811
35882    --
35883    -- set accounting line options
35884    --
35885    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35886            p_natural_side_code          => 'C'
35887          , p_gain_or_loss_flag          => 'N'
35888          , p_gl_transfer_mode_code      => 'S'
35889          , p_acct_entry_type_code       => 'A'
35890          , p_switch_side_flag           => 'Y'
35891          , p_merge_duplicate_code       => 'A'
35892          );
35893    --
35894    l_acc_rev_natural_side_code := 'D';  -- 4262811
35895    -- 
35896    --
35897    -- set accounting line type info
35898    --
35899    xla_ae_lines_pkg.SetAcctLineType
35900       (p_component_type             => l_component_type
35901       ,p_event_type_code            => l_event_type_code
35902       ,p_line_definition_owner_code => l_line_definition_owner_code
35903       ,p_line_definition_code       => l_line_definition_code
35904       ,p_accounting_line_code       => l_component_code
35905       ,p_accounting_line_type_code  => l_component_type_code
35906       ,p_accounting_line_appl_id    => l_component_appl_id
35907       ,p_amb_context_code           => l_amb_context_code
35908       ,p_entity_code                => l_entity_code
35909       ,p_event_class_code           => l_event_class_code);
35910    --
35911    -- set accounting class
35912    --
35913    xla_ae_lines_pkg.SetAcctClass(
35914            p_accounting_class_code  => 'FREIGHT'
35915          , p_ae_header_id           => l_ae_header_id
35916          );
35917 
35918    --
35919    -- set rounding class
35920    --
35921    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35922                       'RECEIVABLE';
35923 
35924    --
35925    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35926    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35927    --
35928    -- bulk performance
35929    --
35930    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35931 
35932    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35933       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35934 
35935    -- 4955764
35936    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35937       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35938 
35939    -- 4458381 Public Sector Enh
35940    
35941    --
35942    -- set accounting attributes for the line type
35943    --
35944    l_entered_amt_idx := 3;
35945    l_accted_amt_idx  := 8;
35946    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35947    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
35948    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
35949    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
35950    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
35951    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
35952    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
35953    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
35957    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
35954    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
35955    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
35956    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
35958    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
35959    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
35960    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
35961    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
35962    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
35963    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
35964    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
35965    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
35966    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
35967    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
35968    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
35969    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
35970    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
35971 
35972    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35973    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35974 
35975    ---------------------------------------------------------------------------------------------------------------
35976    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35977    ---------------------------------------------------------------------------------------------------------------
35978    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35979 
35980    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35981    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35982 
35983    IF xla_accounting_cache_pkg.GetValueChar
35984          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35985          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35986    AND l_bflow_method_code = 'PRIOR_ENTRY'
35987 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35988    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35989          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35990        )
35991    THEN
35992          xla_ae_lines_pkg.BflowUpgEntry
35993            (p_business_method_code    => l_bflow_method_code
35994            ,p_business_class_code     => l_bflow_class_code
35995            ,p_balance_type            => l_balance_type_code);
35996    ELSE
35997       NULL;
35998 -- No business flow processing for business flow method of NONE.
35999    END IF;
36000 
36001    --
36002    -- call analytical criteria
36003    --
36004    
36005    --
36006    -- call description
36007    --
36008    -- No description or it is inherited.
36009    --
36010    -- call ADRs
36011    -- Bug 4922099
36012    --
36013    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36014         (NVL(l_actual_upg_option, 'N') = 'O') OR
36015         (NVL(l_enc_upg_option, 'N') = 'O')
36016       )
36017    THEN
36018    NULL;
36019    --
36020    --
36021    
36022   l_ccid := AcctDerRule_24(
36023            p_application_id           => p_application_id
36024          , p_ae_header_id             => l_ae_header_id 
36025 , p_source_26 => p_source_26
36026          , x_transaction_coa_id       => l_adr_transaction_coa_id
36027          , x_accounting_coa_id        => l_adr_accounting_coa_id
36028          , x_value_type_code          => l_adr_value_type_code
36029          , p_side                     => 'NA'
36030    );
36031 
36032    xla_ae_lines_pkg.set_ccid(
36033     p_code_combination_id          => l_ccid
36034   , p_value_type_code              => l_adr_value_type_code
36035   , p_transaction_coa_id           => l_adr_transaction_coa_id
36036   , p_accounting_coa_id            => l_adr_accounting_coa_id
36037   , p_adr_code                     => 'TRX_DIST_CCID'
36038   , p_adr_type_code                => 'S'
36039   , p_component_type               => l_component_type
36040   , p_component_code               => l_component_code
36041   , p_component_type_code          => l_component_type_code
36042   , p_component_appl_id            => l_component_appl_id
36043   , p_amb_context_code             => l_amb_context_code
36044   , p_side                         => 'NA'
36045   );
36046 
36047 
36048    --
36049    --
36050    END IF;
36051    --
36052    -- Bug 4922099
36053    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36054           (NVL(l_enc_upg_option, 'N') = 'O')
36055         ) AND
36056         (l_bflow_method_code = 'PRIOR_ENTRY')
36057       )
36058    THEN
36059       IF
36060       --
36061       1 = 2
36062       --
36063       THEN
36064       xla_accounting_err_pkg.build_message
36065                                     (p_appli_s_name            => 'XLA'
36066                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36067                                     ,p_token_1                 => 'LINE_NUMBER'
36068                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36069                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36073                                                                             ,l_component_type_code
36070                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36071                                                                              l_component_type
36072                                                                             ,l_component_code
36074                                                                             ,l_component_appl_id
36075                                                                             ,l_amb_context_code
36076                                                                             ,l_entity_code
36077                                                                             ,l_event_class_code
36078                                                                            )
36079                                     ,p_token_3                 => 'OWNER'
36080                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36081                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36082                                                                           ,p_lookup_code    => l_component_type_code
36083                                                                          )
36084                                     ,p_token_4                 => 'PRODUCT_NAME'
36085                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36086                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36087                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36088                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36089                                     ,p_ae_header_id            =>  NULL
36090                                        );
36091 
36092         IF (C_LEVEL_ERROR>= g_log_level) THEN
36093                  trace
36094                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36095                       ,p_level    => C_LEVEL_ERROR
36096                       ,p_module   => l_log_module);
36097         END IF;
36098       END IF;
36099    END IF;
36100    --
36101    --
36102    ------------------------------------------------------------------------------------------------
36103    -- 4219869 Business Flow
36104    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36105    -- Prior Entry.  Currently, the following code is always generated.
36106    ------------------------------------------------------------------------------------------------
36107    XLA_AE_LINES_PKG.ValidateCurrentLine;
36108 
36109    ------------------------------------------------------------------------------------
36110    -- 4219869 Business Flow
36111    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36112    ------------------------------------------------------------------------------------
36113    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36114 
36115    ----------------------------------------------------------------------------------
36116    -- 4219869 Business Flow
36117    -- Update journal entry status -- Need to generate this within IF <condition>
36118    ----------------------------------------------------------------------------------
36119    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36120          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36121          ,p_balance_type_code => l_balance_type_code
36122          );
36123 
36124    -------------------------------------------------------------------------------------------
36125    -- 4262811 - Generate the Accrual Reversal lines
36126    -------------------------------------------------------------------------------------------
36127    BEGIN
36128       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36129                               (g_array_event(p_event_id).array_value_num('header_index'));
36130       IF l_acc_rev_flag IS NULL THEN
36131          l_acc_rev_flag := 'N';
36132       END IF;
36133    EXCEPTION
36134       WHEN OTHERS THEN
36135          l_acc_rev_flag := 'N';
36136    END;
36137    --
36138    IF (l_acc_rev_flag = 'Y') THEN
36139 
36140        -- 4645092  ------------------------------------------------------------------------------
36141        -- To allow MPA report to determine if it should generate report process
36142        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36143        ------------------------------------------------------------------------------------------
36144 
36145        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36146        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36147    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
36148    -- call ADRs
36149    -- Bug 4922099
36150    --
36151    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36152         (NVL(l_actual_upg_option, 'N') = 'O') OR
36153         (NVL(l_enc_upg_option, 'N') = 'O')
36154       )
36155    THEN
36156    NULL;
36157    --
36158    --
36159    
36160   l_ccid := AcctDerRule_24(
36161            p_application_id           => p_application_id
36162          , p_ae_header_id             => l_ae_header_id 
36163 , p_source_26 => p_source_26
36164          , x_transaction_coa_id       => l_adr_transaction_coa_id
36165          , x_accounting_coa_id        => l_adr_accounting_coa_id
36166          , x_value_type_code          => l_adr_value_type_code
36170    xla_ae_lines_pkg.set_ccid(
36167          , p_side                     => 'NA'
36168    );
36169 
36171     p_code_combination_id          => l_ccid
36172   , p_value_type_code              => l_adr_value_type_code
36173   , p_transaction_coa_id           => l_adr_transaction_coa_id
36174   , p_accounting_coa_id            => l_adr_accounting_coa_id
36175   , p_adr_code                     => 'TRX_DIST_CCID'
36176   , p_adr_type_code                => 'S'
36177   , p_component_type               => l_component_type
36178   , p_component_code               => l_component_code
36179   , p_component_type_code          => l_component_type_code
36180   , p_component_appl_id            => l_component_appl_id
36181   , p_amb_context_code             => l_amb_context_code
36182   , p_side                         => 'NA'
36183   );
36184 
36185 
36186    --
36187    --
36188    END IF;
36189 
36190        --
36191        -- Update the line information that should be overwritten
36192        --
36193        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36194                                          p_header_num   => 1);
36195        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36196 
36197        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36198 
36199        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36200           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36201        END IF;
36202 
36203       --
36204       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36205       --
36206       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36207           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36208       ELSE
36209           ---------------------------------------------------------------------------------------------------
36210           -- 4262811a Switch Sign
36211           ---------------------------------------------------------------------------------------------------
36212           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36213           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36214                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36215           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36216                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36217           -- 5132302
36218           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36219                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36220 
36221       END IF;
36222 
36223       -- 4955764
36224       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36225       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36226 
36227 
36228       XLA_AE_LINES_PKG.ValidateCurrentLine;
36229       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36230 
36231       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36232                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36233                ,p_balance_type_code => l_balance_type_code);
36234 
36235    END IF;
36236 
36237    -----------------------------------------------------------------------------------------
36238    -- 4262811 Multiperiod Accounting
36239    -----------------------------------------------------------------------------------------
36240      -- No MPA option is assigned.
36241 
36242 
36243 END IF;
36244 END IF;
36245 --
36246 
36247 --
36248 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36249    trace
36250       (p_msg      => 'END of AcctLineType_81'
36251       ,p_level    => C_LEVEL_PROCEDURE
36252       ,p_module   => l_log_module);
36253 END IF;
36254 --
36255 EXCEPTION
36256   WHEN xla_exceptions_pkg.application_exception THEN
36257       RAISE;
36258   WHEN OTHERS THEN
36259        xla_exceptions_pkg.raise_message
36260            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_81');
36261 END AcctLineType_81;
36262 --
36263 
36264 ---------------------------------------
36265 --
36266 -- PRIVATE FUNCTION
36267 --         AcctLineType_82
36268 --
36269 ---------------------------------------
36270 PROCEDURE AcctLineType_82 (
36271   p_application_id        IN NUMBER
36272  ,p_event_id              IN NUMBER
36273  ,p_calculate_acctd_flag  IN VARCHAR2
36274  ,p_calculate_g_l_flag    IN VARCHAR2
36275  ,p_actual_flag           IN OUT VARCHAR2
36276  ,p_balance_type_code     OUT VARCHAR2
36277  ,p_gain_or_loss_ref      OUT VARCHAR2
36278  
36279 --Transaction Distribution GL Account
36280  , p_source_26            IN NUMBER
36281 --Bill To Customer Account Identifier
36282  , p_source_37            IN NUMBER
36283 --Bill To Customer Site Use Identifier
36284  , p_source_38            IN NUMBER
36285 --SLA Party Type
36286  , p_source_39            IN VARCHAR2
36287 --Transaction Distribution Account Class
36288  , p_source_43            IN VARCHAR2
36292  , p_source_45            IN VARCHAR2
36289 --Transaction Distribution Identifier
36290  , p_source_44            IN NUMBER
36291 --Transaction Distribution Type
36293 --Transaction Distribution Entered Amount
36294  , p_source_46            IN NUMBER
36295 --Transaction Currency Code
36296  , p_source_47            IN VARCHAR2
36297 --Transaction Exchange Date
36298  , p_source_48            IN DATE
36299 --Transaction Exchange Rate
36300  , p_source_49            IN NUMBER
36301 --Transaction Exchange Rate Type
36302  , p_source_50            IN VARCHAR2
36303 --Transaction Accounting Amount
36304  , p_source_51            IN NUMBER
36305 --Transaction Line Flexfield Attribute 1
36306  , p_source_65            IN VARCHAR2
36307 --Transaction Tax Line Identifier
36308  , p_source_86            IN NUMBER
36309 --Rounding Correction Flag
36310  , p_source_87            IN VARCHAR2
36311 )
36312 IS
36313 
36314 l_component_type              VARCHAR2(80);
36315 l_component_code              VARCHAR2(30);
36316 l_component_type_code         VARCHAR2(1);
36317 l_component_appl_id           INTEGER;
36318 l_amb_context_code            VARCHAR2(30);
36319 l_entity_code                 VARCHAR2(30);
36320 l_event_class_code            VARCHAR2(30);
36321 l_ae_header_id                NUMBER;
36322 l_event_type_code             VARCHAR2(30);
36323 l_line_definition_code        VARCHAR2(30);
36324 l_line_definition_owner_code  VARCHAR2(1);
36325 --
36326 -- adr variables
36327 l_segment                     VARCHAR2(30);
36328 l_ccid                        NUMBER;
36329 l_adr_transaction_coa_id      NUMBER;
36330 l_adr_accounting_coa_id       NUMBER;
36331 l_adr_flexfield_segment_code  VARCHAR2(30);
36332 l_adr_flex_value_set_id       NUMBER;
36333 l_adr_value_type_code         VARCHAR2(30);
36334 l_adr_value_combination_id    NUMBER;
36335 l_adr_value_segment_code      VARCHAR2(30);
36336 
36337 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36338 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36339 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36340 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36341 
36342 -- 4262811 Variables ------------------------------------------------------------------------------------------
36343 l_entered_amt_idx             NUMBER;
36344 l_accted_amt_idx              NUMBER;
36345 l_acc_rev_flag                VARCHAR2(1);
36346 l_accrual_line_num            NUMBER;
36347 l_tmp_amt                     NUMBER;
36348 l_acc_rev_natural_side_code   VARCHAR2(1);
36349 
36350 l_num_entries                 NUMBER;
36351 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36352 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36353 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36354 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36355 l_recog_line_1                NUMBER;
36356 l_recog_line_2                NUMBER;
36357 
36358 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36359 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36360 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36361 
36362 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36363 
36364 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36365 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36366 
36367 ---------------------------------------------------------------------------------------------------------------
36368 
36369 
36370 --
36371 -- bulk performance
36372 --
36373 l_balance_type_code           VARCHAR2(1);
36374 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36375 l_log_module                  VARCHAR2(240);
36376 
36377 --
36378 -- Upgrade strategy
36379 --
36380 l_actual_upg_option           VARCHAR2(1);
36381 l_enc_upg_option           VARCHAR2(1);
36382 
36383 --
36384 BEGIN
36385 --
36386 IF g_log_enabled THEN
36387       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_82';
36388 END IF;
36389 --
36390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36391 
36392       trace
36393          (p_msg      => 'BEGIN of AcctLineType_82'
36394          ,p_level    => C_LEVEL_PROCEDURE
36395          ,p_module   => l_log_module);
36396 
36397 END IF;
36398 --
36399 l_component_type             := 'AMB_JLT';
36400 l_component_code             := 'INV_REV';
36401 l_component_type_code        := 'S';
36402 l_component_appl_id          :=  222;
36403 l_amb_context_code           := 'DEFAULT';
36404 l_entity_code                := 'TRANSACTIONS';
36405 l_event_class_code           := 'INVOICE';
36406 l_event_type_code            := 'INVOICE_ALL';
36407 l_line_definition_owner_code := 'S';
36408 l_line_definition_code       := 'JA_CN_AR_INV_DEFAULT_ACCRUAL';
36409 --
36410 l_balance_type_code          := 'A';
36411 l_segment                     := NULL;
36412 l_ccid                        := NULL;
36413 l_adr_transaction_coa_id      := NULL;
36414 l_adr_accounting_coa_id       := NULL;
36415 l_adr_flexfield_segment_code  := NULL;
36416 l_adr_flex_value_set_id       := NULL;
36417 l_adr_value_type_code         := NULL;
36421 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36418 l_adr_value_combination_id    := NULL;
36419 l_adr_value_segment_code      := NULL;
36420 
36422 l_bflow_class_code           := 'REVENUE';    -- 4219869 Business Flow
36423 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36424 l_budgetary_control_flag     := 'N';
36425 
36426 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36427 l_bflow_applied_to_amt       := NULL; -- 5132302
36428 l_entered_amt_idx            := NULL;          -- 4262811
36429 l_accted_amt_idx             := NULL;          -- 4262811
36430 l_acc_rev_flag               := NULL;          -- 4262811
36431 l_accrual_line_num           := NULL;          -- 4262811
36432 l_tmp_amt                    := NULL;          -- 4262811
36433 --
36434  
36435 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36436     l_balance_type_code <> 'B' THEN
36437 IF NVL(p_source_43,'
36438 ') =  'REV' AND 
36439 p_source_87 IS NULL 
36440  THEN 
36441 
36442    --
36443    XLA_AE_LINES_PKG.SetNewLine;
36444 
36445    p_balance_type_code          := l_balance_type_code;
36446    -- set the flag so later we will know whether the gain loss line needs to be created
36447    
36448    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36449      p_actual_flag :='A';
36450    END IF;
36451 
36452    --
36453    -- bulk performance
36454    --
36455    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36456                                       p_header_num   => 0); -- 4262811
36457    --
36458    -- set accounting line options
36459    --
36460    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36461            p_natural_side_code          => 'C'
36462          , p_gain_or_loss_flag          => 'N'
36463          , p_gl_transfer_mode_code      => 'S'
36464          , p_acct_entry_type_code       => 'A'
36465          , p_switch_side_flag           => 'Y'
36466          , p_merge_duplicate_code       => 'A'
36467          );
36468    --
36469    l_acc_rev_natural_side_code := 'D';  -- 4262811
36470    -- 
36471    --
36472    -- set accounting line type info
36473    --
36474    xla_ae_lines_pkg.SetAcctLineType
36475       (p_component_type             => l_component_type
36476       ,p_event_type_code            => l_event_type_code
36477       ,p_line_definition_owner_code => l_line_definition_owner_code
36478       ,p_line_definition_code       => l_line_definition_code
36479       ,p_accounting_line_code       => l_component_code
36480       ,p_accounting_line_type_code  => l_component_type_code
36481       ,p_accounting_line_appl_id    => l_component_appl_id
36482       ,p_amb_context_code           => l_amb_context_code
36483       ,p_entity_code                => l_entity_code
36484       ,p_event_class_code           => l_event_class_code);
36485    --
36486    -- set accounting class
36487    --
36488    xla_ae_lines_pkg.SetAcctClass(
36489            p_accounting_class_code  => 'REVENUE'
36490          , p_ae_header_id           => l_ae_header_id
36491          );
36492 
36493    --
36494    -- set rounding class
36495    --
36496    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36497                       'RECEIVABLE';
36498 
36499    --
36500    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36501    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36502    --
36503    -- bulk performance
36504    --
36505    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36506 
36507    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36508       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36509 
36510    -- 4955764
36511    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36512       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36513 
36514    -- 4458381 Public Sector Enh
36515    
36516    --
36517    -- set accounting attributes for the line type
36518    --
36519    l_entered_amt_idx := 3;
36520    l_accted_amt_idx  := 8;
36521    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36522    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36523    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
36524    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36525    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
36526    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36527    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
36528    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36529    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
36530    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36531    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
36532    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36533    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
36534    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36535    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
36536    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36540    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
36537    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
36538    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
36539    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
36541    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
36542    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
36543    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
36544    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
36545    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
36546 
36547    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36548    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36549 
36550    ---------------------------------------------------------------------------------------------------------------
36551    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36552    ---------------------------------------------------------------------------------------------------------------
36553    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36554 
36555    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36556    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36557 
36558    IF xla_accounting_cache_pkg.GetValueChar
36559          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36560          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36561    AND l_bflow_method_code = 'PRIOR_ENTRY'
36562 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36563    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36564          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36565        )
36566    THEN
36567          xla_ae_lines_pkg.BflowUpgEntry
36568            (p_business_method_code    => l_bflow_method_code
36569            ,p_business_class_code     => l_bflow_class_code
36570            ,p_balance_type            => l_balance_type_code);
36571    ELSE
36572       NULL;
36573 -- No business flow processing for business flow method of NONE.
36574    END IF;
36575 
36576    --
36577    -- call analytical criteria
36578    --
36579    
36580 
36581 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
36582 xla_ae_lines_pkg.SetAnalyticalCriteria(
36583    p_analytical_criterion_name    => 'Project Number'
36584  , p_analytical_criterion_owner   => 'S'
36585  , p_analytical_criterion_code    => 'PROJECT_NUMBER'
36586  , p_amb_context_code             => 'DEFAULT'
36587  , p_balancing_flag               => 'N'
36588  
36589  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_65)
36590  , p_analytical_detail_num_1     =>  NULL
36591  , p_analytical_detail_date_1    =>  NULL
36592 
36593  , p_ae_header_id                 => l_ae_header_id
36594 )
36595 ;
36596 --
36597 
36598    --
36599    -- call description
36600    --
36601    -- No description or it is inherited.
36602    --
36603    -- call ADRs
36604    -- Bug 4922099
36605    --
36606    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36607         (NVL(l_actual_upg_option, 'N') = 'O') OR
36608         (NVL(l_enc_upg_option, 'N') = 'O')
36609       )
36610    THEN
36611    NULL;
36612    --
36613    --
36614    
36615   l_ccid := AcctDerRule_24(
36616            p_application_id           => p_application_id
36617          , p_ae_header_id             => l_ae_header_id 
36618 , p_source_26 => p_source_26
36619          , x_transaction_coa_id       => l_adr_transaction_coa_id
36620          , x_accounting_coa_id        => l_adr_accounting_coa_id
36621          , x_value_type_code          => l_adr_value_type_code
36622          , p_side                     => 'NA'
36623    );
36624 
36625    xla_ae_lines_pkg.set_ccid(
36626     p_code_combination_id          => l_ccid
36627   , p_value_type_code              => l_adr_value_type_code
36628   , p_transaction_coa_id           => l_adr_transaction_coa_id
36629   , p_accounting_coa_id            => l_adr_accounting_coa_id
36630   , p_adr_code                     => 'TRX_DIST_CCID'
36631   , p_adr_type_code                => 'S'
36632   , p_component_type               => l_component_type
36633   , p_component_code               => l_component_code
36634   , p_component_type_code          => l_component_type_code
36635   , p_component_appl_id            => l_component_appl_id
36636   , p_amb_context_code             => l_amb_context_code
36637   , p_side                         => 'NA'
36638   );
36639 
36640 
36641    --
36642    --
36643    END IF;
36644    --
36645    -- Bug 4922099
36646    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36647           (NVL(l_enc_upg_option, 'N') = 'O')
36648         ) AND
36649         (l_bflow_method_code = 'PRIOR_ENTRY')
36650       )
36651    THEN
36652       IF
36653       --
36654       1 = 2
36655       --
36656       THEN
36657       xla_accounting_err_pkg.build_message
36658                                     (p_appli_s_name            => 'XLA'
36659                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36660                                     ,p_token_1                 => 'LINE_NUMBER'
36661                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36665                                                                             ,l_component_code
36662                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36663                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36664                                                                              l_component_type
36666                                                                             ,l_component_type_code
36667                                                                             ,l_component_appl_id
36668                                                                             ,l_amb_context_code
36669                                                                             ,l_entity_code
36670                                                                             ,l_event_class_code
36671                                                                            )
36672                                     ,p_token_3                 => 'OWNER'
36673                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36674                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36675                                                                           ,p_lookup_code    => l_component_type_code
36676                                                                          )
36677                                     ,p_token_4                 => 'PRODUCT_NAME'
36678                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36679                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36680                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36681                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36682                                     ,p_ae_header_id            =>  NULL
36683                                        );
36684 
36685         IF (C_LEVEL_ERROR>= g_log_level) THEN
36686                  trace
36687                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36688                       ,p_level    => C_LEVEL_ERROR
36689                       ,p_module   => l_log_module);
36690         END IF;
36691       END IF;
36692    END IF;
36693    --
36694    --
36695    ------------------------------------------------------------------------------------------------
36696    -- 4219869 Business Flow
36697    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36698    -- Prior Entry.  Currently, the following code is always generated.
36699    ------------------------------------------------------------------------------------------------
36700    XLA_AE_LINES_PKG.ValidateCurrentLine;
36701 
36702    ------------------------------------------------------------------------------------
36703    -- 4219869 Business Flow
36704    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36705    ------------------------------------------------------------------------------------
36706    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36707 
36708    ----------------------------------------------------------------------------------
36709    -- 4219869 Business Flow
36710    -- Update journal entry status -- Need to generate this within IF <condition>
36711    ----------------------------------------------------------------------------------
36712    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36713          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36714          ,p_balance_type_code => l_balance_type_code
36715          );
36716 
36717    -------------------------------------------------------------------------------------------
36718    -- 4262811 - Generate the Accrual Reversal lines
36719    -------------------------------------------------------------------------------------------
36720    BEGIN
36721       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36722                               (g_array_event(p_event_id).array_value_num('header_index'));
36723       IF l_acc_rev_flag IS NULL THEN
36724          l_acc_rev_flag := 'N';
36725       END IF;
36726    EXCEPTION
36727       WHEN OTHERS THEN
36728          l_acc_rev_flag := 'N';
36729    END;
36730    --
36731    IF (l_acc_rev_flag = 'Y') THEN
36732 
36733        -- 4645092  ------------------------------------------------------------------------------
36734        -- To allow MPA report to determine if it should generate report process
36735        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36736        ------------------------------------------------------------------------------------------
36737 
36738        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36739        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36740    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
36741    -- call ADRs
36742    -- Bug 4922099
36743    --
36744    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36745         (NVL(l_actual_upg_option, 'N') = 'O') OR
36746         (NVL(l_enc_upg_option, 'N') = 'O')
36747       )
36748    THEN
36749    NULL;
36750    --
36751    --
36752    
36753   l_ccid := AcctDerRule_24(
36754            p_application_id           => p_application_id
36755          , p_ae_header_id             => l_ae_header_id 
36756 , p_source_26 => p_source_26
36757          , x_transaction_coa_id       => l_adr_transaction_coa_id
36761    );
36758          , x_accounting_coa_id        => l_adr_accounting_coa_id
36759          , x_value_type_code          => l_adr_value_type_code
36760          , p_side                     => 'NA'
36762 
36763    xla_ae_lines_pkg.set_ccid(
36764     p_code_combination_id          => l_ccid
36765   , p_value_type_code              => l_adr_value_type_code
36766   , p_transaction_coa_id           => l_adr_transaction_coa_id
36767   , p_accounting_coa_id            => l_adr_accounting_coa_id
36768   , p_adr_code                     => 'TRX_DIST_CCID'
36769   , p_adr_type_code                => 'S'
36770   , p_component_type               => l_component_type
36771   , p_component_code               => l_component_code
36772   , p_component_type_code          => l_component_type_code
36773   , p_component_appl_id            => l_component_appl_id
36774   , p_amb_context_code             => l_amb_context_code
36775   , p_side                         => 'NA'
36776   );
36777 
36778 
36779    --
36780    --
36781    END IF;
36782 
36783        --
36784        -- Update the line information that should be overwritten
36785        --
36786        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36787                                          p_header_num   => 1);
36788        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36789 
36790        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36791 
36792        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36793           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36794        END IF;
36795 
36796       --
36797       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36798       --
36799       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36800           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36801       ELSE
36802           ---------------------------------------------------------------------------------------------------
36803           -- 4262811a Switch Sign
36804           ---------------------------------------------------------------------------------------------------
36805           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36806           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36807                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36808           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36809                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36810           -- 5132302
36811           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36812                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36813 
36814       END IF;
36815 
36816       -- 4955764
36817       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36818       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36819 
36820 
36821       XLA_AE_LINES_PKG.ValidateCurrentLine;
36822       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36823 
36824       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36825                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36826                ,p_balance_type_code => l_balance_type_code);
36827 
36828    END IF;
36829 
36830    -----------------------------------------------------------------------------------------
36831    -- 4262811 Multiperiod Accounting
36832    -----------------------------------------------------------------------------------------
36833      -- No MPA option is assigned.
36834 
36835 
36836 END IF;
36837 END IF;
36838 --
36839 
36840 --
36841 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36842    trace
36843       (p_msg      => 'END of AcctLineType_82'
36844       ,p_level    => C_LEVEL_PROCEDURE
36845       ,p_module   => l_log_module);
36846 END IF;
36847 --
36848 EXCEPTION
36849   WHEN xla_exceptions_pkg.application_exception THEN
36850       RAISE;
36851   WHEN OTHERS THEN
36852        xla_exceptions_pkg.raise_message
36853            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_82');
36854 END AcctLineType_82;
36855 --
36856 
36857 ---------------------------------------
36858 --
36859 -- PRIVATE FUNCTION
36860 --         AcctLineType_83
36861 --
36862 ---------------------------------------
36863 PROCEDURE AcctLineType_83 (
36864   p_application_id        IN NUMBER
36865  ,p_event_id              IN NUMBER
36866  ,p_calculate_acctd_flag  IN VARCHAR2
36867  ,p_calculate_g_l_flag    IN VARCHAR2
36868  ,p_actual_flag           IN OUT VARCHAR2
36869  ,p_balance_type_code     OUT VARCHAR2
36870  ,p_gain_or_loss_ref      OUT VARCHAR2
36871  
36872 --Transaction Distribution GL Account
36873  , p_source_26            IN NUMBER
36874 --Bill To Customer Account Identifier
36875  , p_source_37            IN NUMBER
36876 --Bill To Customer Site Use Identifier
36877  , p_source_38            IN NUMBER
36878 --SLA Party Type
36882 --Transaction Distribution Identifier
36879  , p_source_39            IN VARCHAR2
36880 --Transaction Distribution Account Class
36881  , p_source_43            IN VARCHAR2
36883  , p_source_44            IN NUMBER
36884 --Transaction Distribution Type
36885  , p_source_45            IN VARCHAR2
36886 --Transaction Distribution Entered Amount
36887  , p_source_46            IN NUMBER
36888 --Transaction Currency Code
36889  , p_source_47            IN VARCHAR2
36890 --Transaction Exchange Date
36891  , p_source_48            IN DATE
36892 --Transaction Exchange Rate
36893  , p_source_49            IN NUMBER
36894 --Transaction Exchange Rate Type
36895  , p_source_50            IN VARCHAR2
36896 --Transaction Accounting Amount
36897  , p_source_51            IN NUMBER
36898 --Transaction Tax Line Identifier
36899  , p_source_86            IN NUMBER
36900 --Rounding Correction Flag
36901  , p_source_87            IN VARCHAR2
36902 )
36903 IS
36904 
36905 l_component_type              VARCHAR2(80);
36906 l_component_code              VARCHAR2(30);
36907 l_component_type_code         VARCHAR2(1);
36908 l_component_appl_id           INTEGER;
36909 l_amb_context_code            VARCHAR2(30);
36910 l_entity_code                 VARCHAR2(30);
36911 l_event_class_code            VARCHAR2(30);
36912 l_ae_header_id                NUMBER;
36913 l_event_type_code             VARCHAR2(30);
36914 l_line_definition_code        VARCHAR2(30);
36915 l_line_definition_owner_code  VARCHAR2(1);
36916 --
36917 -- adr variables
36918 l_segment                     VARCHAR2(30);
36919 l_ccid                        NUMBER;
36920 l_adr_transaction_coa_id      NUMBER;
36921 l_adr_accounting_coa_id       NUMBER;
36922 l_adr_flexfield_segment_code  VARCHAR2(30);
36923 l_adr_flex_value_set_id       NUMBER;
36924 l_adr_value_type_code         VARCHAR2(30);
36925 l_adr_value_combination_id    NUMBER;
36926 l_adr_value_segment_code      VARCHAR2(30);
36927 
36928 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36929 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36930 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36931 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36932 
36933 -- 4262811 Variables ------------------------------------------------------------------------------------------
36934 l_entered_amt_idx             NUMBER;
36935 l_accted_amt_idx              NUMBER;
36936 l_acc_rev_flag                VARCHAR2(1);
36937 l_accrual_line_num            NUMBER;
36938 l_tmp_amt                     NUMBER;
36939 l_acc_rev_natural_side_code   VARCHAR2(1);
36940 
36941 l_num_entries                 NUMBER;
36942 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36943 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36944 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36945 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36946 l_recog_line_1                NUMBER;
36947 l_recog_line_2                NUMBER;
36948 
36949 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36950 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36951 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36952 
36953 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36954 
36955 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36956 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36957 
36958 ---------------------------------------------------------------------------------------------------------------
36959 
36960 
36961 --
36962 -- bulk performance
36963 --
36964 l_balance_type_code           VARCHAR2(1);
36965 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36966 l_log_module                  VARCHAR2(240);
36967 
36968 --
36969 -- Upgrade strategy
36970 --
36971 l_actual_upg_option           VARCHAR2(1);
36972 l_enc_upg_option           VARCHAR2(1);
36973 
36974 --
36975 BEGIN
36976 --
36977 IF g_log_enabled THEN
36978       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_83';
36979 END IF;
36980 --
36981 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36982 
36983       trace
36984          (p_msg      => 'BEGIN of AcctLineType_83'
36985          ,p_level    => C_LEVEL_PROCEDURE
36986          ,p_module   => l_log_module);
36987 
36988 END IF;
36989 --
36990 l_component_type             := 'AMB_JLT';
36991 l_component_code             := 'INV_REV_ROUND';
36992 l_component_type_code        := 'S';
36993 l_component_appl_id          :=  222;
36994 l_amb_context_code           := 'DEFAULT';
36995 l_entity_code                := 'TRANSACTIONS';
36996 l_event_class_code           := 'INVOICE';
36997 l_event_type_code            := 'INVOICE_ALL';
36998 l_line_definition_owner_code := 'S';
36999 l_line_definition_code       := 'JA_CN_AR_INV_DEFAULT_ACCRUAL';
37000 --
37001 l_balance_type_code          := 'A';
37002 l_segment                     := NULL;
37003 l_ccid                        := NULL;
37004 l_adr_transaction_coa_id      := NULL;
37005 l_adr_accounting_coa_id       := NULL;
37006 l_adr_flexfield_segment_code  := NULL;
37007 l_adr_flex_value_set_id       := NULL;
37011 
37008 l_adr_value_type_code         := NULL;
37009 l_adr_value_combination_id    := NULL;
37010 l_adr_value_segment_code      := NULL;
37012 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37013 l_bflow_class_code           := 'REVENUE';    -- 4219869 Business Flow
37014 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37015 l_budgetary_control_flag     := 'N';
37016 
37017 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37018 l_bflow_applied_to_amt       := NULL; -- 5132302
37019 l_entered_amt_idx            := NULL;          -- 4262811
37020 l_accted_amt_idx             := NULL;          -- 4262811
37021 l_acc_rev_flag               := NULL;          -- 4262811
37022 l_accrual_line_num           := NULL;          -- 4262811
37023 l_tmp_amt                    := NULL;          -- 4262811
37024 --
37025  
37026 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37027     l_balance_type_code <> 'B' THEN
37028 IF NVL(p_source_43,'
37029 ') =  'REV' AND 
37030 NVL(p_source_87,'
37031 ') =  'Y'
37032  THEN 
37033 
37034    --
37035    XLA_AE_LINES_PKG.SetNewLine;
37036 
37037    p_balance_type_code          := l_balance_type_code;
37038    -- set the flag so later we will know whether the gain loss line needs to be created
37039    
37040    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37041      p_actual_flag :='A';
37042    END IF;
37043 
37044    --
37045    -- bulk performance
37046    --
37047    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37048                                       p_header_num   => 0); -- 4262811
37049    --
37050    -- set accounting line options
37051    --
37052    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37053            p_natural_side_code          => 'C'
37054          , p_gain_or_loss_flag          => 'N'
37055          , p_gl_transfer_mode_code      => 'S'
37056          , p_acct_entry_type_code       => 'A'
37057          , p_switch_side_flag           => 'Y'
37058          , p_merge_duplicate_code       => 'N'
37059          );
37060    --
37061    l_acc_rev_natural_side_code := 'D';  -- 4262811
37062    -- 
37063    --
37064    -- set accounting line type info
37065    --
37066    xla_ae_lines_pkg.SetAcctLineType
37067       (p_component_type             => l_component_type
37068       ,p_event_type_code            => l_event_type_code
37069       ,p_line_definition_owner_code => l_line_definition_owner_code
37070       ,p_line_definition_code       => l_line_definition_code
37071       ,p_accounting_line_code       => l_component_code
37072       ,p_accounting_line_type_code  => l_component_type_code
37073       ,p_accounting_line_appl_id    => l_component_appl_id
37074       ,p_amb_context_code           => l_amb_context_code
37075       ,p_entity_code                => l_entity_code
37076       ,p_event_class_code           => l_event_class_code);
37077    --
37078    -- set accounting class
37079    --
37080    xla_ae_lines_pkg.SetAcctClass(
37081            p_accounting_class_code  => 'REVENUE'
37082          , p_ae_header_id           => l_ae_header_id
37083          );
37084 
37085    --
37086    -- set rounding class
37087    --
37088    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37089                       'RECEIVABLE';
37090 
37091    --
37092    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37093    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37094    --
37095    -- bulk performance
37096    --
37097    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37098 
37099    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37100       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37101 
37102    -- 4955764
37103    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37104       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37105 
37106    -- 4458381 Public Sector Enh
37107    
37108    --
37109    -- set accounting attributes for the line type
37110    --
37111    l_entered_amt_idx := 3;
37112    l_accted_amt_idx  := 8;
37113    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
37114    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
37115    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
37116    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
37117    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
37118    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
37119    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
37120    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
37121    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
37122    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
37123    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
37124    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
37125    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
37126    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
37127    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
37128    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
37129    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
37133    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
37130    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
37131    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
37132    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
37134    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
37135    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
37136    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
37137    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
37138 
37139    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37140    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37141 
37142    ---------------------------------------------------------------------------------------------------------------
37143    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37144    ---------------------------------------------------------------------------------------------------------------
37145    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37146 
37147    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37148    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37149 
37150    IF xla_accounting_cache_pkg.GetValueChar
37151          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37152          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37153    AND l_bflow_method_code = 'PRIOR_ENTRY'
37154 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37155    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37156          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37157        )
37158    THEN
37159          xla_ae_lines_pkg.BflowUpgEntry
37160            (p_business_method_code    => l_bflow_method_code
37161            ,p_business_class_code     => l_bflow_class_code
37162            ,p_balance_type            => l_balance_type_code);
37163    ELSE
37164       NULL;
37165 -- No business flow processing for business flow method of NONE.
37166    END IF;
37167 
37168    --
37169    -- call analytical criteria
37170    --
37171    
37172    --
37173    -- call description
37174    --
37175    -- No description or it is inherited.
37176    --
37177    -- call ADRs
37178    -- Bug 4922099
37179    --
37180    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37181         (NVL(l_actual_upg_option, 'N') = 'O') OR
37182         (NVL(l_enc_upg_option, 'N') = 'O')
37183       )
37184    THEN
37185    NULL;
37186    --
37187    --
37188    
37189   l_ccid := AcctDerRule_24(
37190            p_application_id           => p_application_id
37191          , p_ae_header_id             => l_ae_header_id 
37192 , p_source_26 => p_source_26
37193          , x_transaction_coa_id       => l_adr_transaction_coa_id
37194          , x_accounting_coa_id        => l_adr_accounting_coa_id
37195          , x_value_type_code          => l_adr_value_type_code
37196          , p_side                     => 'NA'
37197    );
37198 
37199    xla_ae_lines_pkg.set_ccid(
37200     p_code_combination_id          => l_ccid
37201   , p_value_type_code              => l_adr_value_type_code
37202   , p_transaction_coa_id           => l_adr_transaction_coa_id
37203   , p_accounting_coa_id            => l_adr_accounting_coa_id
37204   , p_adr_code                     => 'TRX_DIST_CCID'
37205   , p_adr_type_code                => 'S'
37206   , p_component_type               => l_component_type
37207   , p_component_code               => l_component_code
37208   , p_component_type_code          => l_component_type_code
37209   , p_component_appl_id            => l_component_appl_id
37210   , p_amb_context_code             => l_amb_context_code
37211   , p_side                         => 'NA'
37212   );
37213 
37214 
37215    --
37216    --
37217    END IF;
37218    --
37219    -- Bug 4922099
37220    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37221           (NVL(l_enc_upg_option, 'N') = 'O')
37222         ) AND
37223         (l_bflow_method_code = 'PRIOR_ENTRY')
37224       )
37225    THEN
37226       IF
37227       --
37228       1 = 2
37229       --
37230       THEN
37231       xla_accounting_err_pkg.build_message
37232                                     (p_appli_s_name            => 'XLA'
37233                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37234                                     ,p_token_1                 => 'LINE_NUMBER'
37235                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37236                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37237                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37238                                                                              l_component_type
37239                                                                             ,l_component_code
37240                                                                             ,l_component_type_code
37241                                                                             ,l_component_appl_id
37242                                                                             ,l_amb_context_code
37243                                                                             ,l_entity_code
37247                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37244                                                                             ,l_event_class_code
37245                                                                            )
37246                                     ,p_token_3                 => 'OWNER'
37248                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37249                                                                           ,p_lookup_code    => l_component_type_code
37250                                                                          )
37251                                     ,p_token_4                 => 'PRODUCT_NAME'
37252                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37253                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37254                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37255                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37256                                     ,p_ae_header_id            =>  NULL
37257                                        );
37258 
37259         IF (C_LEVEL_ERROR>= g_log_level) THEN
37260                  trace
37261                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37262                       ,p_level    => C_LEVEL_ERROR
37263                       ,p_module   => l_log_module);
37264         END IF;
37265       END IF;
37266    END IF;
37267    --
37268    --
37269    ------------------------------------------------------------------------------------------------
37270    -- 4219869 Business Flow
37271    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37272    -- Prior Entry.  Currently, the following code is always generated.
37273    ------------------------------------------------------------------------------------------------
37274    XLA_AE_LINES_PKG.ValidateCurrentLine;
37275 
37276    ------------------------------------------------------------------------------------
37277    -- 4219869 Business Flow
37278    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37279    ------------------------------------------------------------------------------------
37280    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37281 
37282    ----------------------------------------------------------------------------------
37283    -- 4219869 Business Flow
37284    -- Update journal entry status -- Need to generate this within IF <condition>
37285    ----------------------------------------------------------------------------------
37286    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37287          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37288          ,p_balance_type_code => l_balance_type_code
37289          );
37290 
37291    -------------------------------------------------------------------------------------------
37292    -- 4262811 - Generate the Accrual Reversal lines
37293    -------------------------------------------------------------------------------------------
37294    BEGIN
37295       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37296                               (g_array_event(p_event_id).array_value_num('header_index'));
37297       IF l_acc_rev_flag IS NULL THEN
37298          l_acc_rev_flag := 'N';
37299       END IF;
37300    EXCEPTION
37301       WHEN OTHERS THEN
37302          l_acc_rev_flag := 'N';
37303    END;
37304    --
37305    IF (l_acc_rev_flag = 'Y') THEN
37306 
37307        -- 4645092  ------------------------------------------------------------------------------
37308        -- To allow MPA report to determine if it should generate report process
37309        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37310        ------------------------------------------------------------------------------------------
37311 
37312        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37313        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37314    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
37315    -- call ADRs
37316    -- Bug 4922099
37317    --
37318    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37319         (NVL(l_actual_upg_option, 'N') = 'O') OR
37320         (NVL(l_enc_upg_option, 'N') = 'O')
37321       )
37322    THEN
37323    NULL;
37324    --
37325    --
37326    
37327   l_ccid := AcctDerRule_24(
37328            p_application_id           => p_application_id
37329          , p_ae_header_id             => l_ae_header_id 
37330 , p_source_26 => p_source_26
37331          , x_transaction_coa_id       => l_adr_transaction_coa_id
37332          , x_accounting_coa_id        => l_adr_accounting_coa_id
37333          , x_value_type_code          => l_adr_value_type_code
37334          , p_side                     => 'NA'
37335    );
37336 
37337    xla_ae_lines_pkg.set_ccid(
37338     p_code_combination_id          => l_ccid
37339   , p_value_type_code              => l_adr_value_type_code
37340   , p_transaction_coa_id           => l_adr_transaction_coa_id
37341   , p_accounting_coa_id            => l_adr_accounting_coa_id
37342   , p_adr_code                     => 'TRX_DIST_CCID'
37343   , p_adr_type_code                => 'S'
37344   , p_component_type               => l_component_type
37345   , p_component_code               => l_component_code
37349   , p_side                         => 'NA'
37346   , p_component_type_code          => l_component_type_code
37347   , p_component_appl_id            => l_component_appl_id
37348   , p_amb_context_code             => l_amb_context_code
37350   );
37351 
37352 
37353    --
37354    --
37355    END IF;
37356 
37357        --
37358        -- Update the line information that should be overwritten
37359        --
37360        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37361                                          p_header_num   => 1);
37362        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37363 
37364        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37365 
37366        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37367           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37368        END IF;
37369 
37370       --
37371       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37372       --
37373       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37374           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37375       ELSE
37376           ---------------------------------------------------------------------------------------------------
37377           -- 4262811a Switch Sign
37378           ---------------------------------------------------------------------------------------------------
37379           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37380           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37381                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37382           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37383                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37384           -- 5132302
37385           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37386                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37387 
37388       END IF;
37389 
37390       -- 4955764
37391       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37392       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37393 
37394 
37395       XLA_AE_LINES_PKG.ValidateCurrentLine;
37396       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37397 
37398       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37399                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37400                ,p_balance_type_code => l_balance_type_code);
37401 
37402    END IF;
37403 
37404    -----------------------------------------------------------------------------------------
37405    -- 4262811 Multiperiod Accounting
37406    -----------------------------------------------------------------------------------------
37407      -- No MPA option is assigned.
37408 
37409 
37410 END IF;
37411 END IF;
37412 --
37413 
37414 --
37415 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37416    trace
37417       (p_msg      => 'END of AcctLineType_83'
37418       ,p_level    => C_LEVEL_PROCEDURE
37419       ,p_module   => l_log_module);
37420 END IF;
37421 --
37422 EXCEPTION
37423   WHEN xla_exceptions_pkg.application_exception THEN
37424       RAISE;
37425   WHEN OTHERS THEN
37426        xla_exceptions_pkg.raise_message
37427            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_83');
37428 END AcctLineType_83;
37429 --
37430 
37431 ---------------------------------------
37432 --
37433 -- PRIVATE FUNCTION
37434 --         AcctLineType_84
37435 --
37436 ---------------------------------------
37437 PROCEDURE AcctLineType_84 (
37438   p_application_id        IN NUMBER
37439  ,p_event_id              IN NUMBER
37440  ,p_calculate_acctd_flag  IN VARCHAR2
37441  ,p_calculate_g_l_flag    IN VARCHAR2
37442  ,p_actual_flag           IN OUT VARCHAR2
37443  ,p_balance_type_code     OUT VARCHAR2
37444  ,p_gain_or_loss_ref      OUT VARCHAR2
37445  
37446 --Transaction Distribution GL Account
37447  , p_source_26            IN NUMBER
37448 --Bill To Customer Account Identifier
37449  , p_source_37            IN NUMBER
37450 --Bill To Customer Site Use Identifier
37451  , p_source_38            IN NUMBER
37452 --SLA Party Type
37453  , p_source_39            IN VARCHAR2
37454 --Transaction Distribution Account Class
37455  , p_source_43            IN VARCHAR2
37456 --Transaction Distribution Identifier
37457  , p_source_44            IN NUMBER
37458 --Transaction Distribution Type
37459  , p_source_45            IN VARCHAR2
37460 --Transaction Distribution Entered Amount
37461  , p_source_46            IN NUMBER
37462 --Transaction Currency Code
37463  , p_source_47            IN VARCHAR2
37464 --Transaction Exchange Date
37465  , p_source_48            IN DATE
37466 --Transaction Exchange Rate
37467  , p_source_49            IN NUMBER
37468 --Transaction Exchange Rate Type
37472 --Transaction Tax Line Identifier
37469  , p_source_50            IN VARCHAR2
37470 --Transaction Accounting Amount
37471  , p_source_51            IN NUMBER
37473  , p_source_86            IN NUMBER
37474 )
37475 IS
37476 
37477 l_component_type              VARCHAR2(80);
37478 l_component_code              VARCHAR2(30);
37479 l_component_type_code         VARCHAR2(1);
37480 l_component_appl_id           INTEGER;
37481 l_amb_context_code            VARCHAR2(30);
37482 l_entity_code                 VARCHAR2(30);
37483 l_event_class_code            VARCHAR2(30);
37484 l_ae_header_id                NUMBER;
37485 l_event_type_code             VARCHAR2(30);
37486 l_line_definition_code        VARCHAR2(30);
37487 l_line_definition_owner_code  VARCHAR2(1);
37488 --
37489 -- adr variables
37490 l_segment                     VARCHAR2(30);
37491 l_ccid                        NUMBER;
37492 l_adr_transaction_coa_id      NUMBER;
37493 l_adr_accounting_coa_id       NUMBER;
37494 l_adr_flexfield_segment_code  VARCHAR2(30);
37495 l_adr_flex_value_set_id       NUMBER;
37496 l_adr_value_type_code         VARCHAR2(30);
37497 l_adr_value_combination_id    NUMBER;
37498 l_adr_value_segment_code      VARCHAR2(30);
37499 
37500 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37501 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37502 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37503 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37504 
37505 -- 4262811 Variables ------------------------------------------------------------------------------------------
37506 l_entered_amt_idx             NUMBER;
37507 l_accted_amt_idx              NUMBER;
37508 l_acc_rev_flag                VARCHAR2(1);
37509 l_accrual_line_num            NUMBER;
37510 l_tmp_amt                     NUMBER;
37511 l_acc_rev_natural_side_code   VARCHAR2(1);
37512 
37513 l_num_entries                 NUMBER;
37514 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37515 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37516 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37517 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37518 l_recog_line_1                NUMBER;
37519 l_recog_line_2                NUMBER;
37520 
37521 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37522 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37523 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37524 
37525 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37526 
37527 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37528 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37529 
37530 ---------------------------------------------------------------------------------------------------------------
37531 
37532 
37533 --
37534 -- bulk performance
37535 --
37536 l_balance_type_code           VARCHAR2(1);
37537 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37538 l_log_module                  VARCHAR2(240);
37539 
37540 --
37541 -- Upgrade strategy
37542 --
37543 l_actual_upg_option           VARCHAR2(1);
37544 l_enc_upg_option           VARCHAR2(1);
37545 
37546 --
37547 BEGIN
37548 --
37549 IF g_log_enabled THEN
37550       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_84';
37551 END IF;
37552 --
37553 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37554 
37555       trace
37556          (p_msg      => 'BEGIN of AcctLineType_84'
37557          ,p_level    => C_LEVEL_PROCEDURE
37558          ,p_module   => l_log_module);
37559 
37560 END IF;
37561 --
37562 l_component_type             := 'AMB_JLT';
37563 l_component_code             := 'INV_ROUND';
37564 l_component_type_code        := 'S';
37565 l_component_appl_id          :=  222;
37566 l_amb_context_code           := 'DEFAULT';
37567 l_entity_code                := 'TRANSACTIONS';
37568 l_event_class_code           := 'INVOICE';
37569 l_event_type_code            := 'INVOICE_ALL';
37570 l_line_definition_owner_code := 'S';
37571 l_line_definition_code       := 'JA_CN_AR_INV_DEFAULT_ACCRUAL';
37572 --
37573 l_balance_type_code          := 'A';
37574 l_segment                     := NULL;
37575 l_ccid                        := NULL;
37576 l_adr_transaction_coa_id      := NULL;
37577 l_adr_accounting_coa_id       := NULL;
37578 l_adr_flexfield_segment_code  := NULL;
37579 l_adr_flex_value_set_id       := NULL;
37580 l_adr_value_type_code         := NULL;
37581 l_adr_value_combination_id    := NULL;
37582 l_adr_value_segment_code      := NULL;
37583 
37584 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37585 l_bflow_class_code           := '';    -- 4219869 Business Flow
37586 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37587 l_budgetary_control_flag     := 'N';
37588 
37589 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37590 l_bflow_applied_to_amt       := NULL; -- 5132302
37591 l_entered_amt_idx            := NULL;          -- 4262811
37592 l_accted_amt_idx             := NULL;          -- 4262811
37593 l_acc_rev_flag               := NULL;          -- 4262811
37594 l_accrual_line_num           := NULL;          -- 4262811
37598 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37595 l_tmp_amt                    := NULL;          -- 4262811
37596 --
37597  
37599     l_balance_type_code <> 'B' THEN
37600 IF NVL(p_source_43,'
37601 ') =  'ROUND'
37602  THEN 
37603 
37604    --
37605    XLA_AE_LINES_PKG.SetNewLine;
37606 
37607    p_balance_type_code          := l_balance_type_code;
37608    -- set the flag so later we will know whether the gain loss line needs to be created
37609    
37610    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37611      p_actual_flag :='A';
37612    END IF;
37613 
37614    --
37615    -- bulk performance
37616    --
37617    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37618                                       p_header_num   => 0); -- 4262811
37619    --
37620    -- set accounting line options
37621    --
37622    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37623            p_natural_side_code          => 'C'
37624          , p_gain_or_loss_flag          => 'N'
37625          , p_gl_transfer_mode_code      => 'S'
37626          , p_acct_entry_type_code       => 'A'
37627          , p_switch_side_flag           => 'Y'
37628          , p_merge_duplicate_code       => 'A'
37629          );
37630    --
37631    l_acc_rev_natural_side_code := 'D';  -- 4262811
37632    -- 
37633    --
37634    -- set accounting line type info
37635    --
37636    xla_ae_lines_pkg.SetAcctLineType
37637       (p_component_type             => l_component_type
37638       ,p_event_type_code            => l_event_type_code
37639       ,p_line_definition_owner_code => l_line_definition_owner_code
37640       ,p_line_definition_code       => l_line_definition_code
37641       ,p_accounting_line_code       => l_component_code
37642       ,p_accounting_line_type_code  => l_component_type_code
37643       ,p_accounting_line_appl_id    => l_component_appl_id
37644       ,p_amb_context_code           => l_amb_context_code
37645       ,p_entity_code                => l_entity_code
37646       ,p_event_class_code           => l_event_class_code);
37647    --
37648    -- set accounting class
37649    --
37650    xla_ae_lines_pkg.SetAcctClass(
37651            p_accounting_class_code  => 'ROUNDING'
37652          , p_ae_header_id           => l_ae_header_id
37653          );
37654 
37655    --
37656    -- set rounding class
37657    --
37658    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37659                       'RECEIVABLE';
37660 
37661    --
37662    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37663    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37664    --
37665    -- bulk performance
37666    --
37667    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37668 
37669    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37670       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37671 
37672    -- 4955764
37673    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37674       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37675 
37676    -- 4458381 Public Sector Enh
37677    
37678    --
37679    -- set accounting attributes for the line type
37680    --
37681    l_entered_amt_idx := 3;
37682    l_accted_amt_idx  := 8;
37683    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
37684    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
37685    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
37686    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
37687    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
37688    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
37689    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
37690    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
37691    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
37692    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
37693    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
37694    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
37695    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
37696    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
37697    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
37698    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
37699    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
37700    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
37701    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
37702    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
37703    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
37704    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
37705    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
37706    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
37707    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
37708 
37709    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37710    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37711 
37712    ---------------------------------------------------------------------------------------------------------------
37716 
37713    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37714    ---------------------------------------------------------------------------------------------------------------
37715    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37717    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37718    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37719 
37720    IF xla_accounting_cache_pkg.GetValueChar
37721          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37722          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37723    AND l_bflow_method_code = 'PRIOR_ENTRY'
37724 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37725    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37726          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37727        )
37728    THEN
37729          xla_ae_lines_pkg.BflowUpgEntry
37730            (p_business_method_code    => l_bflow_method_code
37731            ,p_business_class_code     => l_bflow_class_code
37732            ,p_balance_type            => l_balance_type_code);
37733    ELSE
37734       NULL;
37735 -- No business flow processing for business flow method of NONE.
37736    END IF;
37737 
37738    --
37739    -- call analytical criteria
37740    --
37741    
37742    --
37743    -- call description
37744    --
37745    -- No description or it is inherited.
37746    --
37747    -- call ADRs
37748    -- Bug 4922099
37749    --
37750    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37751         (NVL(l_actual_upg_option, 'N') = 'O') OR
37752         (NVL(l_enc_upg_option, 'N') = 'O')
37753       )
37754    THEN
37755    NULL;
37756    --
37757    --
37758    
37759   l_ccid := AcctDerRule_24(
37760            p_application_id           => p_application_id
37761          , p_ae_header_id             => l_ae_header_id 
37762 , p_source_26 => p_source_26
37763          , x_transaction_coa_id       => l_adr_transaction_coa_id
37764          , x_accounting_coa_id        => l_adr_accounting_coa_id
37765          , x_value_type_code          => l_adr_value_type_code
37766          , p_side                     => 'NA'
37767    );
37768 
37769    xla_ae_lines_pkg.set_ccid(
37770     p_code_combination_id          => l_ccid
37771   , p_value_type_code              => l_adr_value_type_code
37772   , p_transaction_coa_id           => l_adr_transaction_coa_id
37773   , p_accounting_coa_id            => l_adr_accounting_coa_id
37774   , p_adr_code                     => 'TRX_DIST_CCID'
37775   , p_adr_type_code                => 'S'
37776   , p_component_type               => l_component_type
37777   , p_component_code               => l_component_code
37778   , p_component_type_code          => l_component_type_code
37779   , p_component_appl_id            => l_component_appl_id
37780   , p_amb_context_code             => l_amb_context_code
37781   , p_side                         => 'NA'
37782   );
37783 
37784 
37785    --
37786    --
37787    END IF;
37788    --
37789    -- Bug 4922099
37790    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37791           (NVL(l_enc_upg_option, 'N') = 'O')
37792         ) AND
37793         (l_bflow_method_code = 'PRIOR_ENTRY')
37794       )
37795    THEN
37796       IF
37797       --
37798       1 = 2
37799       --
37800       THEN
37801       xla_accounting_err_pkg.build_message
37802                                     (p_appli_s_name            => 'XLA'
37803                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37804                                     ,p_token_1                 => 'LINE_NUMBER'
37805                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37806                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37807                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37808                                                                              l_component_type
37809                                                                             ,l_component_code
37810                                                                             ,l_component_type_code
37811                                                                             ,l_component_appl_id
37812                                                                             ,l_amb_context_code
37813                                                                             ,l_entity_code
37814                                                                             ,l_event_class_code
37815                                                                            )
37816                                     ,p_token_3                 => 'OWNER'
37817                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37818                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37819                                                                           ,p_lookup_code    => l_component_type_code
37820                                                                          )
37821                                     ,p_token_4                 => 'PRODUCT_NAME'
37825                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37822                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37823                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37824                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37826                                     ,p_ae_header_id            =>  NULL
37827                                        );
37828 
37829         IF (C_LEVEL_ERROR>= g_log_level) THEN
37830                  trace
37831                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37832                       ,p_level    => C_LEVEL_ERROR
37833                       ,p_module   => l_log_module);
37834         END IF;
37835       END IF;
37836    END IF;
37837    --
37838    --
37839    ------------------------------------------------------------------------------------------------
37840    -- 4219869 Business Flow
37841    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37842    -- Prior Entry.  Currently, the following code is always generated.
37843    ------------------------------------------------------------------------------------------------
37844    XLA_AE_LINES_PKG.ValidateCurrentLine;
37845 
37846    ------------------------------------------------------------------------------------
37847    -- 4219869 Business Flow
37848    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37849    ------------------------------------------------------------------------------------
37850    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37851 
37852    ----------------------------------------------------------------------------------
37853    -- 4219869 Business Flow
37854    -- Update journal entry status -- Need to generate this within IF <condition>
37855    ----------------------------------------------------------------------------------
37856    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37857          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37858          ,p_balance_type_code => l_balance_type_code
37859          );
37860 
37861    -------------------------------------------------------------------------------------------
37862    -- 4262811 - Generate the Accrual Reversal lines
37863    -------------------------------------------------------------------------------------------
37864    BEGIN
37865       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37866                               (g_array_event(p_event_id).array_value_num('header_index'));
37867       IF l_acc_rev_flag IS NULL THEN
37868          l_acc_rev_flag := 'N';
37869       END IF;
37870    EXCEPTION
37871       WHEN OTHERS THEN
37872          l_acc_rev_flag := 'N';
37873    END;
37874    --
37875    IF (l_acc_rev_flag = 'Y') THEN
37876 
37877        -- 4645092  ------------------------------------------------------------------------------
37878        -- To allow MPA report to determine if it should generate report process
37879        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37880        ------------------------------------------------------------------------------------------
37881 
37882        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37883        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37884    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
37885    -- call ADRs
37886    -- Bug 4922099
37887    --
37888    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37889         (NVL(l_actual_upg_option, 'N') = 'O') OR
37890         (NVL(l_enc_upg_option, 'N') = 'O')
37891       )
37892    THEN
37893    NULL;
37894    --
37895    --
37896    
37897   l_ccid := AcctDerRule_24(
37898            p_application_id           => p_application_id
37899          , p_ae_header_id             => l_ae_header_id 
37900 , p_source_26 => p_source_26
37901          , x_transaction_coa_id       => l_adr_transaction_coa_id
37902          , x_accounting_coa_id        => l_adr_accounting_coa_id
37903          , x_value_type_code          => l_adr_value_type_code
37904          , p_side                     => 'NA'
37905    );
37906 
37907    xla_ae_lines_pkg.set_ccid(
37908     p_code_combination_id          => l_ccid
37909   , p_value_type_code              => l_adr_value_type_code
37910   , p_transaction_coa_id           => l_adr_transaction_coa_id
37911   , p_accounting_coa_id            => l_adr_accounting_coa_id
37912   , p_adr_code                     => 'TRX_DIST_CCID'
37913   , p_adr_type_code                => 'S'
37914   , p_component_type               => l_component_type
37915   , p_component_code               => l_component_code
37916   , p_component_type_code          => l_component_type_code
37917   , p_component_appl_id            => l_component_appl_id
37918   , p_amb_context_code             => l_amb_context_code
37919   , p_side                         => 'NA'
37920   );
37921 
37922 
37923    --
37924    --
37925    END IF;
37926 
37927        --
37928        -- Update the line information that should be overwritten
37929        --
37930        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37931                                          p_header_num   => 1);
37935 
37932        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37933 
37934        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37936        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37937           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37938        END IF;
37939 
37940       --
37941       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37942       --
37943       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37944           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37945       ELSE
37946           ---------------------------------------------------------------------------------------------------
37947           -- 4262811a Switch Sign
37948           ---------------------------------------------------------------------------------------------------
37949           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37950           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37951                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37952           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37953                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37954           -- 5132302
37955           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37956                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37957 
37958       END IF;
37959 
37960       -- 4955764
37961       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37962       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37963 
37964 
37965       XLA_AE_LINES_PKG.ValidateCurrentLine;
37966       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37967 
37968       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37969                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37970                ,p_balance_type_code => l_balance_type_code);
37971 
37972    END IF;
37973 
37974    -----------------------------------------------------------------------------------------
37975    -- 4262811 Multiperiod Accounting
37976    -----------------------------------------------------------------------------------------
37977      -- No MPA option is assigned.
37978 
37979 
37980 END IF;
37981 END IF;
37982 --
37983 
37984 --
37985 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37986    trace
37987       (p_msg      => 'END of AcctLineType_84'
37988       ,p_level    => C_LEVEL_PROCEDURE
37989       ,p_module   => l_log_module);
37990 END IF;
37991 --
37992 EXCEPTION
37993   WHEN xla_exceptions_pkg.application_exception THEN
37994       RAISE;
37995   WHEN OTHERS THEN
37996        xla_exceptions_pkg.raise_message
37997            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_84');
37998 END AcctLineType_84;
37999 --
38000 
38001 ---------------------------------------
38002 --
38003 -- PRIVATE FUNCTION
38004 --         AcctLineType_85
38005 --
38006 ---------------------------------------
38007 PROCEDURE AcctLineType_85 (
38008   p_application_id        IN NUMBER
38009  ,p_event_id              IN NUMBER
38010  ,p_calculate_acctd_flag  IN VARCHAR2
38011  ,p_calculate_g_l_flag    IN VARCHAR2
38012  ,p_actual_flag           IN OUT VARCHAR2
38013  ,p_balance_type_code     OUT VARCHAR2
38014  ,p_gain_or_loss_ref      OUT VARCHAR2
38015  
38016 --Transaction Distribution GL Account
38017  , p_source_26            IN NUMBER
38018 --Bill To Customer Account Identifier
38019  , p_source_37            IN NUMBER
38020 --Bill To Customer Site Use Identifier
38021  , p_source_38            IN NUMBER
38022 --SLA Party Type
38023  , p_source_39            IN VARCHAR2
38024 --Transaction Distribution Account Class
38025  , p_source_43            IN VARCHAR2
38026 --Transaction Distribution Identifier
38027  , p_source_44            IN NUMBER
38028 --Transaction Distribution Type
38029  , p_source_45            IN VARCHAR2
38030 --Transaction Distribution Entered Amount
38031  , p_source_46            IN NUMBER
38032 --Transaction Currency Code
38033  , p_source_47            IN VARCHAR2
38034 --Transaction Exchange Date
38035  , p_source_48            IN DATE
38036 --Transaction Exchange Rate
38037  , p_source_49            IN NUMBER
38038 --Transaction Exchange Rate Type
38039  , p_source_50            IN VARCHAR2
38040 --Transaction Accounting Amount
38041  , p_source_51            IN NUMBER
38042 --Transaction Tax Line Identifier
38043  , p_source_86            IN NUMBER
38044 )
38045 IS
38046 
38047 l_component_type              VARCHAR2(80);
38048 l_component_code              VARCHAR2(30);
38049 l_component_type_code         VARCHAR2(1);
38050 l_component_appl_id           INTEGER;
38051 l_amb_context_code            VARCHAR2(30);
38052 l_entity_code                 VARCHAR2(30);
38053 l_event_class_code            VARCHAR2(30);
38054 l_ae_header_id                NUMBER;
38058 --
38055 l_event_type_code             VARCHAR2(30);
38056 l_line_definition_code        VARCHAR2(30);
38057 l_line_definition_owner_code  VARCHAR2(1);
38059 -- adr variables
38060 l_segment                     VARCHAR2(30);
38061 l_ccid                        NUMBER;
38062 l_adr_transaction_coa_id      NUMBER;
38063 l_adr_accounting_coa_id       NUMBER;
38064 l_adr_flexfield_segment_code  VARCHAR2(30);
38065 l_adr_flex_value_set_id       NUMBER;
38066 l_adr_value_type_code         VARCHAR2(30);
38067 l_adr_value_combination_id    NUMBER;
38068 l_adr_value_segment_code      VARCHAR2(30);
38069 
38070 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38071 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38072 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38073 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38074 
38075 -- 4262811 Variables ------------------------------------------------------------------------------------------
38076 l_entered_amt_idx             NUMBER;
38077 l_accted_amt_idx              NUMBER;
38078 l_acc_rev_flag                VARCHAR2(1);
38079 l_accrual_line_num            NUMBER;
38080 l_tmp_amt                     NUMBER;
38081 l_acc_rev_natural_side_code   VARCHAR2(1);
38082 
38083 l_num_entries                 NUMBER;
38084 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38085 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38086 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38087 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38088 l_recog_line_1                NUMBER;
38089 l_recog_line_2                NUMBER;
38090 
38091 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38092 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38093 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38094 
38095 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38096 
38097 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38098 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38099 
38100 ---------------------------------------------------------------------------------------------------------------
38101 
38102 
38103 --
38104 -- bulk performance
38105 --
38106 l_balance_type_code           VARCHAR2(1);
38107 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38108 l_log_module                  VARCHAR2(240);
38109 
38110 --
38111 -- Upgrade strategy
38112 --
38113 l_actual_upg_option           VARCHAR2(1);
38114 l_enc_upg_option           VARCHAR2(1);
38115 
38116 --
38117 BEGIN
38118 --
38119 IF g_log_enabled THEN
38120       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_85';
38121 END IF;
38122 --
38123 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38124 
38125       trace
38126          (p_msg      => 'BEGIN of AcctLineType_85'
38127          ,p_level    => C_LEVEL_PROCEDURE
38128          ,p_module   => l_log_module);
38129 
38130 END IF;
38131 --
38132 l_component_type             := 'AMB_JLT';
38133 l_component_code             := 'INV_TAX';
38134 l_component_type_code        := 'S';
38135 l_component_appl_id          :=  222;
38136 l_amb_context_code           := 'DEFAULT';
38137 l_entity_code                := 'TRANSACTIONS';
38138 l_event_class_code           := 'INVOICE';
38139 l_event_type_code            := 'INVOICE_ALL';
38140 l_line_definition_owner_code := 'S';
38141 l_line_definition_code       := 'JA_CN_AR_INV_DEFAULT_ACCRUAL';
38142 --
38143 l_balance_type_code          := 'A';
38144 l_segment                     := NULL;
38145 l_ccid                        := NULL;
38146 l_adr_transaction_coa_id      := NULL;
38147 l_adr_accounting_coa_id       := NULL;
38148 l_adr_flexfield_segment_code  := NULL;
38149 l_adr_flex_value_set_id       := NULL;
38150 l_adr_value_type_code         := NULL;
38151 l_adr_value_combination_id    := NULL;
38152 l_adr_value_segment_code      := NULL;
38153 
38154 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38155 l_bflow_class_code           := 'TAX';    -- 4219869 Business Flow
38156 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38157 l_budgetary_control_flag     := 'N';
38158 
38159 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38160 l_bflow_applied_to_amt       := NULL; -- 5132302
38161 l_entered_amt_idx            := NULL;          -- 4262811
38162 l_accted_amt_idx             := NULL;          -- 4262811
38163 l_acc_rev_flag               := NULL;          -- 4262811
38164 l_accrual_line_num           := NULL;          -- 4262811
38165 l_tmp_amt                    := NULL;          -- 4262811
38166 --
38167  
38168 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38169     l_balance_type_code <> 'B' THEN
38170 IF NVL(p_source_43,'
38171 ') =  'TAX'
38172  THEN 
38173 
38174    --
38175    XLA_AE_LINES_PKG.SetNewLine;
38176 
38177    p_balance_type_code          := l_balance_type_code;
38178    -- set the flag so later we will know whether the gain loss line needs to be created
38179    
38180    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38181      p_actual_flag :='A';
38182    END IF;
38183 
38184    --
38185    -- bulk performance
38186    --
38190    -- set accounting line options
38187    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38188                                       p_header_num   => 0); -- 4262811
38189    --
38191    --
38192    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38193            p_natural_side_code          => 'C'
38194          , p_gain_or_loss_flag          => 'N'
38195          , p_gl_transfer_mode_code      => 'S'
38196          , p_acct_entry_type_code       => 'A'
38197          , p_switch_side_flag           => 'Y'
38198          , p_merge_duplicate_code       => 'A'
38199          );
38200    --
38201    l_acc_rev_natural_side_code := 'D';  -- 4262811
38202    -- 
38203    --
38204    -- set accounting line type info
38205    --
38206    xla_ae_lines_pkg.SetAcctLineType
38207       (p_component_type             => l_component_type
38208       ,p_event_type_code            => l_event_type_code
38209       ,p_line_definition_owner_code => l_line_definition_owner_code
38210       ,p_line_definition_code       => l_line_definition_code
38211       ,p_accounting_line_code       => l_component_code
38212       ,p_accounting_line_type_code  => l_component_type_code
38213       ,p_accounting_line_appl_id    => l_component_appl_id
38214       ,p_amb_context_code           => l_amb_context_code
38215       ,p_entity_code                => l_entity_code
38216       ,p_event_class_code           => l_event_class_code);
38217    --
38218    -- set accounting class
38219    --
38220    xla_ae_lines_pkg.SetAcctClass(
38221            p_accounting_class_code  => 'TAX'
38222          , p_ae_header_id           => l_ae_header_id
38223          );
38224 
38225    --
38226    -- set rounding class
38227    --
38228    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38229                       'RECEIVABLE';
38230 
38231    --
38232    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38233    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38234    --
38235    -- bulk performance
38236    --
38237    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38238 
38239    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38240       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38241 
38242    -- 4955764
38243    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38244       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38245 
38246    -- 4458381 Public Sector Enh
38247    
38248    --
38249    -- set accounting attributes for the line type
38250    --
38251    l_entered_amt_idx := 3;
38252    l_accted_amt_idx  := 8;
38253    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38254    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
38255    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
38256    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
38257    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
38258    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
38259    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
38260    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
38261    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
38262    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
38263    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
38264    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
38265    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
38266    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
38267    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
38268    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
38269    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
38270    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
38271    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
38272    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
38273    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
38274    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
38275    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
38276    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
38277    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
38278 
38279    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38280    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38281 
38282    ---------------------------------------------------------------------------------------------------------------
38283    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38284    ---------------------------------------------------------------------------------------------------------------
38285    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38286 
38287    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38288    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38289 
38290    IF xla_accounting_cache_pkg.GetValueChar
38291          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38295    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38292          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38293    AND l_bflow_method_code = 'PRIOR_ENTRY'
38294 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38296          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38297        )
38298    THEN
38299          xla_ae_lines_pkg.BflowUpgEntry
38300            (p_business_method_code    => l_bflow_method_code
38301            ,p_business_class_code     => l_bflow_class_code
38302            ,p_balance_type            => l_balance_type_code);
38303    ELSE
38304       NULL;
38305 -- No business flow processing for business flow method of NONE.
38306    END IF;
38307 
38308    --
38309    -- call analytical criteria
38310    --
38311    
38312    --
38313    -- call description
38314    --
38315    -- No description or it is inherited.
38316    --
38317    -- call ADRs
38318    -- Bug 4922099
38319    --
38320    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38321         (NVL(l_actual_upg_option, 'N') = 'O') OR
38322         (NVL(l_enc_upg_option, 'N') = 'O')
38323       )
38324    THEN
38325    NULL;
38326    --
38327    --
38328    
38329   l_ccid := AcctDerRule_24(
38330            p_application_id           => p_application_id
38331          , p_ae_header_id             => l_ae_header_id 
38332 , p_source_26 => p_source_26
38333          , x_transaction_coa_id       => l_adr_transaction_coa_id
38334          , x_accounting_coa_id        => l_adr_accounting_coa_id
38335          , x_value_type_code          => l_adr_value_type_code
38336          , p_side                     => 'NA'
38337    );
38338 
38339    xla_ae_lines_pkg.set_ccid(
38340     p_code_combination_id          => l_ccid
38341   , p_value_type_code              => l_adr_value_type_code
38342   , p_transaction_coa_id           => l_adr_transaction_coa_id
38343   , p_accounting_coa_id            => l_adr_accounting_coa_id
38344   , p_adr_code                     => 'TRX_DIST_CCID'
38345   , p_adr_type_code                => 'S'
38346   , p_component_type               => l_component_type
38347   , p_component_code               => l_component_code
38348   , p_component_type_code          => l_component_type_code
38349   , p_component_appl_id            => l_component_appl_id
38350   , p_amb_context_code             => l_amb_context_code
38351   , p_side                         => 'NA'
38352   );
38353 
38354 
38355    --
38356    --
38357    END IF;
38358    --
38359    -- Bug 4922099
38360    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38361           (NVL(l_enc_upg_option, 'N') = 'O')
38362         ) AND
38363         (l_bflow_method_code = 'PRIOR_ENTRY')
38364       )
38365    THEN
38366       IF
38367       --
38368       1 = 2
38369       --
38370       THEN
38371       xla_accounting_err_pkg.build_message
38372                                     (p_appli_s_name            => 'XLA'
38373                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38374                                     ,p_token_1                 => 'LINE_NUMBER'
38375                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38376                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38377                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38378                                                                              l_component_type
38379                                                                             ,l_component_code
38380                                                                             ,l_component_type_code
38381                                                                             ,l_component_appl_id
38382                                                                             ,l_amb_context_code
38383                                                                             ,l_entity_code
38384                                                                             ,l_event_class_code
38385                                                                            )
38386                                     ,p_token_3                 => 'OWNER'
38387                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38388                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38389                                                                           ,p_lookup_code    => l_component_type_code
38390                                                                          )
38391                                     ,p_token_4                 => 'PRODUCT_NAME'
38392                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38393                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38394                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38395                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38396                                     ,p_ae_header_id            =>  NULL
38397                                        );
38398 
38399         IF (C_LEVEL_ERROR>= g_log_level) THEN
38400                  trace
38404         END IF;
38401                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38402                       ,p_level    => C_LEVEL_ERROR
38403                       ,p_module   => l_log_module);
38405       END IF;
38406    END IF;
38407    --
38408    --
38409    ------------------------------------------------------------------------------------------------
38410    -- 4219869 Business Flow
38411    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38412    -- Prior Entry.  Currently, the following code is always generated.
38413    ------------------------------------------------------------------------------------------------
38414    XLA_AE_LINES_PKG.ValidateCurrentLine;
38415 
38416    ------------------------------------------------------------------------------------
38417    -- 4219869 Business Flow
38418    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38419    ------------------------------------------------------------------------------------
38420    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38421 
38422    ----------------------------------------------------------------------------------
38423    -- 4219869 Business Flow
38424    -- Update journal entry status -- Need to generate this within IF <condition>
38425    ----------------------------------------------------------------------------------
38426    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38427          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38428          ,p_balance_type_code => l_balance_type_code
38429          );
38430 
38431    -------------------------------------------------------------------------------------------
38432    -- 4262811 - Generate the Accrual Reversal lines
38433    -------------------------------------------------------------------------------------------
38434    BEGIN
38435       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38436                               (g_array_event(p_event_id).array_value_num('header_index'));
38437       IF l_acc_rev_flag IS NULL THEN
38438          l_acc_rev_flag := 'N';
38439       END IF;
38440    EXCEPTION
38441       WHEN OTHERS THEN
38442          l_acc_rev_flag := 'N';
38443    END;
38444    --
38445    IF (l_acc_rev_flag = 'Y') THEN
38446 
38447        -- 4645092  ------------------------------------------------------------------------------
38448        -- To allow MPA report to determine if it should generate report process
38449        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38450        ------------------------------------------------------------------------------------------
38451 
38452        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38453        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38454    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
38455    -- call ADRs
38456    -- Bug 4922099
38457    --
38458    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38459         (NVL(l_actual_upg_option, 'N') = 'O') OR
38460         (NVL(l_enc_upg_option, 'N') = 'O')
38461       )
38462    THEN
38463    NULL;
38464    --
38465    --
38466    
38467   l_ccid := AcctDerRule_24(
38468            p_application_id           => p_application_id
38469          , p_ae_header_id             => l_ae_header_id 
38470 , p_source_26 => p_source_26
38471          , x_transaction_coa_id       => l_adr_transaction_coa_id
38472          , x_accounting_coa_id        => l_adr_accounting_coa_id
38473          , x_value_type_code          => l_adr_value_type_code
38474          , p_side                     => 'NA'
38475    );
38476 
38477    xla_ae_lines_pkg.set_ccid(
38478     p_code_combination_id          => l_ccid
38479   , p_value_type_code              => l_adr_value_type_code
38480   , p_transaction_coa_id           => l_adr_transaction_coa_id
38481   , p_accounting_coa_id            => l_adr_accounting_coa_id
38482   , p_adr_code                     => 'TRX_DIST_CCID'
38483   , p_adr_type_code                => 'S'
38484   , p_component_type               => l_component_type
38485   , p_component_code               => l_component_code
38486   , p_component_type_code          => l_component_type_code
38487   , p_component_appl_id            => l_component_appl_id
38488   , p_amb_context_code             => l_amb_context_code
38489   , p_side                         => 'NA'
38490   );
38491 
38492 
38493    --
38494    --
38495    END IF;
38496 
38497        --
38498        -- Update the line information that should be overwritten
38499        --
38500        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38501                                          p_header_num   => 1);
38502        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38503 
38504        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38505 
38506        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38507           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38508        END IF;
38509 
38510       --
38511       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38512       --
38513       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38517           -- 4262811a Switch Sign
38514           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38515       ELSE
38516           ---------------------------------------------------------------------------------------------------
38518           ---------------------------------------------------------------------------------------------------
38519           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38520           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38521                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38522           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38523                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38524           -- 5132302
38525           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38526                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38527 
38528       END IF;
38529 
38530       -- 4955764
38531       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38532       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38533 
38534 
38535       XLA_AE_LINES_PKG.ValidateCurrentLine;
38536       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38537 
38538       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38539                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38540                ,p_balance_type_code => l_balance_type_code);
38541 
38542    END IF;
38543 
38544    -----------------------------------------------------------------------------------------
38545    -- 4262811 Multiperiod Accounting
38546    -----------------------------------------------------------------------------------------
38547      -- No MPA option is assigned.
38548 
38549 
38550 END IF;
38551 END IF;
38552 --
38553 
38554 --
38555 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38556    trace
38557       (p_msg      => 'END of AcctLineType_85'
38558       ,p_level    => C_LEVEL_PROCEDURE
38559       ,p_module   => l_log_module);
38560 END IF;
38561 --
38562 EXCEPTION
38563   WHEN xla_exceptions_pkg.application_exception THEN
38564       RAISE;
38565   WHEN OTHERS THEN
38566        xla_exceptions_pkg.raise_message
38567            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_85');
38568 END AcctLineType_85;
38569 --
38570 
38571 ---------------------------------------
38572 --
38573 -- PRIVATE FUNCTION
38574 --         AcctLineType_86
38575 --
38576 ---------------------------------------
38577 PROCEDURE AcctLineType_86 (
38578   p_application_id        IN NUMBER
38579  ,p_event_id              IN NUMBER
38580  ,p_calculate_acctd_flag  IN VARCHAR2
38581  ,p_calculate_g_l_flag    IN VARCHAR2
38582  ,p_actual_flag           IN OUT VARCHAR2
38583  ,p_balance_type_code     OUT VARCHAR2
38584  ,p_gain_or_loss_ref      OUT VARCHAR2
38585  
38586 --Transaction Distribution GL Account
38587  , p_source_26            IN NUMBER
38588 --Bill To Customer Account Identifier
38589  , p_source_37            IN NUMBER
38590 --Bill To Customer Site Use Identifier
38591  , p_source_38            IN NUMBER
38592 --SLA Party Type
38593  , p_source_39            IN VARCHAR2
38594 --Transaction Distribution Account Class
38595  , p_source_43            IN VARCHAR2
38596 --Transaction Distribution Identifier
38597  , p_source_44            IN NUMBER
38598 --Transaction Distribution Type
38599  , p_source_45            IN VARCHAR2
38600 --Transaction Distribution Entered Amount
38601  , p_source_46            IN NUMBER
38602 --Transaction Currency Code
38603  , p_source_47            IN VARCHAR2
38604 --Transaction Exchange Date
38605  , p_source_48            IN DATE
38606 --Transaction Exchange Rate
38607  , p_source_49            IN NUMBER
38608 --Transaction Exchange Rate Type
38609  , p_source_50            IN VARCHAR2
38610 --Transaction Accounting Amount
38611  , p_source_51            IN NUMBER
38612 --Transaction Tax Line Identifier
38613  , p_source_86            IN NUMBER
38614 --Rounding Correction Flag
38615  , p_source_87            IN VARCHAR2
38616 )
38617 IS
38618 
38619 l_component_type              VARCHAR2(80);
38620 l_component_code              VARCHAR2(30);
38621 l_component_type_code         VARCHAR2(1);
38622 l_component_appl_id           INTEGER;
38623 l_amb_context_code            VARCHAR2(30);
38624 l_entity_code                 VARCHAR2(30);
38625 l_event_class_code            VARCHAR2(30);
38626 l_ae_header_id                NUMBER;
38627 l_event_type_code             VARCHAR2(30);
38628 l_line_definition_code        VARCHAR2(30);
38629 l_line_definition_owner_code  VARCHAR2(1);
38630 --
38631 -- adr variables
38632 l_segment                     VARCHAR2(30);
38633 l_ccid                        NUMBER;
38634 l_adr_transaction_coa_id      NUMBER;
38635 l_adr_accounting_coa_id       NUMBER;
38636 l_adr_flexfield_segment_code  VARCHAR2(30);
38637 l_adr_flex_value_set_id       NUMBER;
38638 l_adr_value_type_code         VARCHAR2(30);
38639 l_adr_value_combination_id    NUMBER;
38640 l_adr_value_segment_code      VARCHAR2(30);
38641 
38642 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38646 
38643 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38644 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38645 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38647 -- 4262811 Variables ------------------------------------------------------------------------------------------
38648 l_entered_amt_idx             NUMBER;
38649 l_accted_amt_idx              NUMBER;
38650 l_acc_rev_flag                VARCHAR2(1);
38651 l_accrual_line_num            NUMBER;
38652 l_tmp_amt                     NUMBER;
38653 l_acc_rev_natural_side_code   VARCHAR2(1);
38654 
38655 l_num_entries                 NUMBER;
38656 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38657 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38658 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38659 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38660 l_recog_line_1                NUMBER;
38661 l_recog_line_2                NUMBER;
38662 
38663 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38664 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38665 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38666 
38667 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38668 
38669 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38670 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38671 
38672 ---------------------------------------------------------------------------------------------------------------
38673 
38674 
38675 --
38676 -- bulk performance
38677 --
38678 l_balance_type_code           VARCHAR2(1);
38679 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38680 l_log_module                  VARCHAR2(240);
38681 
38682 --
38683 -- Upgrade strategy
38684 --
38685 l_actual_upg_option           VARCHAR2(1);
38686 l_enc_upg_option           VARCHAR2(1);
38687 
38688 --
38689 BEGIN
38690 --
38691 IF g_log_enabled THEN
38692       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_86';
38693 END IF;
38694 --
38695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38696 
38697       trace
38698          (p_msg      => 'BEGIN of AcctLineType_86'
38699          ,p_level    => C_LEVEL_PROCEDURE
38700          ,p_module   => l_log_module);
38701 
38702 END IF;
38703 --
38704 l_component_type             := 'AMB_JLT';
38705 l_component_code             := 'INV_UNBILL';
38706 l_component_type_code        := 'S';
38707 l_component_appl_id          :=  222;
38708 l_amb_context_code           := 'DEFAULT';
38709 l_entity_code                := 'TRANSACTIONS';
38710 l_event_class_code           := 'INVOICE';
38711 l_event_type_code            := 'INVOICE_ALL';
38712 l_line_definition_owner_code := 'S';
38713 l_line_definition_code       := 'JA_CN_AR_INV_DEFAULT_ACCRUAL';
38714 --
38715 l_balance_type_code          := 'A';
38716 l_segment                     := NULL;
38717 l_ccid                        := NULL;
38718 l_adr_transaction_coa_id      := NULL;
38719 l_adr_accounting_coa_id       := NULL;
38720 l_adr_flexfield_segment_code  := NULL;
38721 l_adr_flex_value_set_id       := NULL;
38722 l_adr_value_type_code         := NULL;
38723 l_adr_value_combination_id    := NULL;
38724 l_adr_value_segment_code      := NULL;
38725 
38726 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38727 l_bflow_class_code           := '';    -- 4219869 Business Flow
38728 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38729 l_budgetary_control_flag     := 'N';
38730 
38731 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38732 l_bflow_applied_to_amt       := NULL; -- 5132302
38733 l_entered_amt_idx            := NULL;          -- 4262811
38734 l_accted_amt_idx             := NULL;          -- 4262811
38735 l_acc_rev_flag               := NULL;          -- 4262811
38736 l_accrual_line_num           := NULL;          -- 4262811
38737 l_tmp_amt                    := NULL;          -- 4262811
38738 --
38739  
38740 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38741     l_balance_type_code <> 'B' THEN
38742 IF NVL(p_source_43,'
38743 ') =  'UNBILL' AND 
38744 p_source_87 IS NULL 
38745  THEN 
38746 
38747    --
38748    XLA_AE_LINES_PKG.SetNewLine;
38749 
38750    p_balance_type_code          := l_balance_type_code;
38751    -- set the flag so later we will know whether the gain loss line needs to be created
38752    
38753    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38754      p_actual_flag :='A';
38755    END IF;
38756 
38757    --
38758    -- bulk performance
38759    --
38760    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38761                                       p_header_num   => 0); -- 4262811
38762    --
38763    -- set accounting line options
38764    --
38765    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38766            p_natural_side_code          => 'C'
38767          , p_gain_or_loss_flag          => 'N'
38768          , p_gl_transfer_mode_code      => 'S'
38769          , p_acct_entry_type_code       => 'A'
38770          , p_switch_side_flag           => 'Y'
38771          , p_merge_duplicate_code       => 'A'
38772          );
38776    --
38773    --
38774    l_acc_rev_natural_side_code := 'D';  -- 4262811
38775    -- 
38777    -- set accounting line type info
38778    --
38779    xla_ae_lines_pkg.SetAcctLineType
38780       (p_component_type             => l_component_type
38781       ,p_event_type_code            => l_event_type_code
38782       ,p_line_definition_owner_code => l_line_definition_owner_code
38783       ,p_line_definition_code       => l_line_definition_code
38784       ,p_accounting_line_code       => l_component_code
38785       ,p_accounting_line_type_code  => l_component_type_code
38786       ,p_accounting_line_appl_id    => l_component_appl_id
38787       ,p_amb_context_code           => l_amb_context_code
38788       ,p_entity_code                => l_entity_code
38789       ,p_event_class_code           => l_event_class_code);
38790    --
38791    -- set accounting class
38792    --
38793    xla_ae_lines_pkg.SetAcctClass(
38794            p_accounting_class_code  => 'UNBILL'
38795          , p_ae_header_id           => l_ae_header_id
38796          );
38797 
38798    --
38799    -- set rounding class
38800    --
38801    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38802                       'UNBILL';
38803 
38804    --
38805    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38806    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38807    --
38808    -- bulk performance
38809    --
38810    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38811 
38812    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38813       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38814 
38815    -- 4955764
38816    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38817       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38818 
38819    -- 4458381 Public Sector Enh
38820    
38821    --
38822    -- set accounting attributes for the line type
38823    --
38824    l_entered_amt_idx := 3;
38825    l_accted_amt_idx  := 8;
38826    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38827    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
38828    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
38829    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
38830    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
38831    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
38832    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
38833    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
38834    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
38835    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
38836    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
38837    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
38838    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
38839    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
38840    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
38841    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
38842    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
38843    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
38844    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
38845    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
38846    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
38847    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
38848    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
38849    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
38850    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
38851 
38852    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38853    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38854 
38855    ---------------------------------------------------------------------------------------------------------------
38856    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38857    ---------------------------------------------------------------------------------------------------------------
38858    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38859 
38860    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38861    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38862 
38863    IF xla_accounting_cache_pkg.GetValueChar
38864          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38865          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38866    AND l_bflow_method_code = 'PRIOR_ENTRY'
38867 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38868    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38869          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38870        )
38871    THEN
38872          xla_ae_lines_pkg.BflowUpgEntry
38873            (p_business_method_code    => l_bflow_method_code
38874            ,p_business_class_code     => l_bflow_class_code
38875            ,p_balance_type            => l_balance_type_code);
38876    ELSE
38877       NULL;
38881    --
38878 -- No business flow processing for business flow method of NONE.
38879    END IF;
38880 
38882    -- call analytical criteria
38883    --
38884    
38885    --
38886    -- call description
38887    --
38888    -- No description or it is inherited.
38889    --
38890    -- call ADRs
38891    -- Bug 4922099
38892    --
38893    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38894         (NVL(l_actual_upg_option, 'N') = 'O') OR
38895         (NVL(l_enc_upg_option, 'N') = 'O')
38896       )
38897    THEN
38898    NULL;
38899    --
38900    --
38901    
38902   l_ccid := AcctDerRule_24(
38903            p_application_id           => p_application_id
38904          , p_ae_header_id             => l_ae_header_id 
38905 , p_source_26 => p_source_26
38906          , x_transaction_coa_id       => l_adr_transaction_coa_id
38907          , x_accounting_coa_id        => l_adr_accounting_coa_id
38908          , x_value_type_code          => l_adr_value_type_code
38909          , p_side                     => 'NA'
38910    );
38911 
38912    xla_ae_lines_pkg.set_ccid(
38913     p_code_combination_id          => l_ccid
38914   , p_value_type_code              => l_adr_value_type_code
38915   , p_transaction_coa_id           => l_adr_transaction_coa_id
38916   , p_accounting_coa_id            => l_adr_accounting_coa_id
38917   , p_adr_code                     => 'TRX_DIST_CCID'
38918   , p_adr_type_code                => 'S'
38919   , p_component_type               => l_component_type
38920   , p_component_code               => l_component_code
38921   , p_component_type_code          => l_component_type_code
38922   , p_component_appl_id            => l_component_appl_id
38923   , p_amb_context_code             => l_amb_context_code
38924   , p_side                         => 'NA'
38925   );
38926 
38927 
38928    --
38929    --
38930    END IF;
38931    --
38932    -- Bug 4922099
38933    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38934           (NVL(l_enc_upg_option, 'N') = 'O')
38935         ) AND
38936         (l_bflow_method_code = 'PRIOR_ENTRY')
38937       )
38938    THEN
38939       IF
38940       --
38941       1 = 2
38942       --
38943       THEN
38944       xla_accounting_err_pkg.build_message
38945                                     (p_appli_s_name            => 'XLA'
38946                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38947                                     ,p_token_1                 => 'LINE_NUMBER'
38948                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38949                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38950                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38951                                                                              l_component_type
38952                                                                             ,l_component_code
38953                                                                             ,l_component_type_code
38954                                                                             ,l_component_appl_id
38955                                                                             ,l_amb_context_code
38956                                                                             ,l_entity_code
38957                                                                             ,l_event_class_code
38958                                                                            )
38959                                     ,p_token_3                 => 'OWNER'
38960                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38961                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38962                                                                           ,p_lookup_code    => l_component_type_code
38963                                                                          )
38964                                     ,p_token_4                 => 'PRODUCT_NAME'
38965                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38966                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38967                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38968                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38969                                     ,p_ae_header_id            =>  NULL
38970                                        );
38971 
38972         IF (C_LEVEL_ERROR>= g_log_level) THEN
38973                  trace
38974                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38975                       ,p_level    => C_LEVEL_ERROR
38976                       ,p_module   => l_log_module);
38977         END IF;
38978       END IF;
38979    END IF;
38980    --
38981    --
38982    ------------------------------------------------------------------------------------------------
38983    -- 4219869 Business Flow
38984    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38985    -- Prior Entry.  Currently, the following code is always generated.
38986    ------------------------------------------------------------------------------------------------
38990    -- 4219869 Business Flow
38987    XLA_AE_LINES_PKG.ValidateCurrentLine;
38988 
38989    ------------------------------------------------------------------------------------
38991    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38992    ------------------------------------------------------------------------------------
38993    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38994 
38995    ----------------------------------------------------------------------------------
38996    -- 4219869 Business Flow
38997    -- Update journal entry status -- Need to generate this within IF <condition>
38998    ----------------------------------------------------------------------------------
38999    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39000          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39001          ,p_balance_type_code => l_balance_type_code
39002          );
39003 
39004    -------------------------------------------------------------------------------------------
39005    -- 4262811 - Generate the Accrual Reversal lines
39006    -------------------------------------------------------------------------------------------
39007    BEGIN
39008       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39009                               (g_array_event(p_event_id).array_value_num('header_index'));
39010       IF l_acc_rev_flag IS NULL THEN
39011          l_acc_rev_flag := 'N';
39012       END IF;
39013    EXCEPTION
39014       WHEN OTHERS THEN
39015          l_acc_rev_flag := 'N';
39016    END;
39017    --
39018    IF (l_acc_rev_flag = 'Y') THEN
39019 
39020        -- 4645092  ------------------------------------------------------------------------------
39021        -- To allow MPA report to determine if it should generate report process
39022        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39023        ------------------------------------------------------------------------------------------
39024 
39025        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39026        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39027    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
39028    -- call ADRs
39029    -- Bug 4922099
39030    --
39031    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39032         (NVL(l_actual_upg_option, 'N') = 'O') OR
39033         (NVL(l_enc_upg_option, 'N') = 'O')
39034       )
39035    THEN
39036    NULL;
39037    --
39038    --
39039    
39040   l_ccid := AcctDerRule_24(
39041            p_application_id           => p_application_id
39042          , p_ae_header_id             => l_ae_header_id 
39043 , p_source_26 => p_source_26
39044          , x_transaction_coa_id       => l_adr_transaction_coa_id
39045          , x_accounting_coa_id        => l_adr_accounting_coa_id
39046          , x_value_type_code          => l_adr_value_type_code
39047          , p_side                     => 'NA'
39048    );
39049 
39050    xla_ae_lines_pkg.set_ccid(
39051     p_code_combination_id          => l_ccid
39052   , p_value_type_code              => l_adr_value_type_code
39053   , p_transaction_coa_id           => l_adr_transaction_coa_id
39054   , p_accounting_coa_id            => l_adr_accounting_coa_id
39055   , p_adr_code                     => 'TRX_DIST_CCID'
39056   , p_adr_type_code                => 'S'
39057   , p_component_type               => l_component_type
39058   , p_component_code               => l_component_code
39059   , p_component_type_code          => l_component_type_code
39060   , p_component_appl_id            => l_component_appl_id
39061   , p_amb_context_code             => l_amb_context_code
39062   , p_side                         => 'NA'
39063   );
39064 
39065 
39066    --
39067    --
39068    END IF;
39069 
39070        --
39071        -- Update the line information that should be overwritten
39072        --
39073        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39074                                          p_header_num   => 1);
39075        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39076 
39077        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39078 
39079        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39080           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39081        END IF;
39082 
39083       --
39084       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39085       --
39086       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39087           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39088       ELSE
39089           ---------------------------------------------------------------------------------------------------
39090           -- 4262811a Switch Sign
39091           ---------------------------------------------------------------------------------------------------
39092           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39093           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39094                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39095           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39099                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39096                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39097           -- 5132302
39098           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39100 
39101       END IF;
39102 
39103       -- 4955764
39104       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39105       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39106 
39107 
39108       XLA_AE_LINES_PKG.ValidateCurrentLine;
39109       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39110 
39111       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39112                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39113                ,p_balance_type_code => l_balance_type_code);
39114 
39115    END IF;
39116 
39117    -----------------------------------------------------------------------------------------
39118    -- 4262811 Multiperiod Accounting
39119    -----------------------------------------------------------------------------------------
39120      -- No MPA option is assigned.
39121 
39122 
39123 END IF;
39124 END IF;
39125 --
39126 
39127 --
39128 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39129    trace
39130       (p_msg      => 'END of AcctLineType_86'
39131       ,p_level    => C_LEVEL_PROCEDURE
39132       ,p_module   => l_log_module);
39133 END IF;
39134 --
39135 EXCEPTION
39136   WHEN xla_exceptions_pkg.application_exception THEN
39137       RAISE;
39138   WHEN OTHERS THEN
39139        xla_exceptions_pkg.raise_message
39140            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_86');
39141 END AcctLineType_86;
39142 --
39143 
39144 ---------------------------------------
39145 --
39146 -- PRIVATE FUNCTION
39147 --         AcctLineType_87
39148 --
39149 ---------------------------------------
39150 PROCEDURE AcctLineType_87 (
39151   p_application_id        IN NUMBER
39152  ,p_event_id              IN NUMBER
39153  ,p_calculate_acctd_flag  IN VARCHAR2
39154  ,p_calculate_g_l_flag    IN VARCHAR2
39155  ,p_actual_flag           IN OUT VARCHAR2
39156  ,p_balance_type_code     OUT VARCHAR2
39157  ,p_gain_or_loss_ref      OUT VARCHAR2
39158  
39159 --Transaction Distribution GL Account
39160  , p_source_26            IN NUMBER
39161 --Bill To Customer Account Identifier
39162  , p_source_37            IN NUMBER
39163 --Bill To Customer Site Use Identifier
39164  , p_source_38            IN NUMBER
39165 --SLA Party Type
39166  , p_source_39            IN VARCHAR2
39167 --Transaction Distribution Account Class
39168  , p_source_43            IN VARCHAR2
39169 --Transaction Distribution Identifier
39170  , p_source_44            IN NUMBER
39171 --Transaction Distribution Type
39172  , p_source_45            IN VARCHAR2
39173 --Transaction Distribution Entered Amount
39174  , p_source_46            IN NUMBER
39175 --Transaction Currency Code
39176  , p_source_47            IN VARCHAR2
39177 --Transaction Exchange Date
39178  , p_source_48            IN DATE
39179 --Transaction Exchange Rate
39180  , p_source_49            IN NUMBER
39181 --Transaction Exchange Rate Type
39182  , p_source_50            IN VARCHAR2
39183 --Transaction Accounting Amount
39184  , p_source_51            IN NUMBER
39185 --Transaction Tax Line Identifier
39186  , p_source_86            IN NUMBER
39187 --Rounding Correction Flag
39188  , p_source_87            IN VARCHAR2
39189 )
39190 IS
39191 
39192 l_component_type              VARCHAR2(80);
39193 l_component_code              VARCHAR2(30);
39194 l_component_type_code         VARCHAR2(1);
39195 l_component_appl_id           INTEGER;
39196 l_amb_context_code            VARCHAR2(30);
39197 l_entity_code                 VARCHAR2(30);
39198 l_event_class_code            VARCHAR2(30);
39199 l_ae_header_id                NUMBER;
39200 l_event_type_code             VARCHAR2(30);
39201 l_line_definition_code        VARCHAR2(30);
39202 l_line_definition_owner_code  VARCHAR2(1);
39203 --
39204 -- adr variables
39205 l_segment                     VARCHAR2(30);
39206 l_ccid                        NUMBER;
39207 l_adr_transaction_coa_id      NUMBER;
39208 l_adr_accounting_coa_id       NUMBER;
39209 l_adr_flexfield_segment_code  VARCHAR2(30);
39210 l_adr_flex_value_set_id       NUMBER;
39211 l_adr_value_type_code         VARCHAR2(30);
39212 l_adr_value_combination_id    NUMBER;
39213 l_adr_value_segment_code      VARCHAR2(30);
39214 
39215 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39216 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39217 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39218 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39219 
39220 -- 4262811 Variables ------------------------------------------------------------------------------------------
39221 l_entered_amt_idx             NUMBER;
39222 l_accted_amt_idx              NUMBER;
39223 l_acc_rev_flag                VARCHAR2(1);
39224 l_accrual_line_num            NUMBER;
39225 l_tmp_amt                     NUMBER;
39226 l_acc_rev_natural_side_code   VARCHAR2(1);
39227 
39228 l_num_entries                 NUMBER;
39232 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39229 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39230 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39231 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39233 l_recog_line_1                NUMBER;
39234 l_recog_line_2                NUMBER;
39235 
39236 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39237 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39238 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39239 
39240 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39241 
39242 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39243 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39244 
39245 ---------------------------------------------------------------------------------------------------------------
39246 
39247 
39248 --
39249 -- bulk performance
39250 --
39251 l_balance_type_code           VARCHAR2(1);
39252 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39253 l_log_module                  VARCHAR2(240);
39254 
39255 --
39256 -- Upgrade strategy
39257 --
39258 l_actual_upg_option           VARCHAR2(1);
39259 l_enc_upg_option           VARCHAR2(1);
39260 
39261 --
39262 BEGIN
39263 --
39264 IF g_log_enabled THEN
39265       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_87';
39266 END IF;
39267 --
39268 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39269 
39270       trace
39271          (p_msg      => 'BEGIN of AcctLineType_87'
39272          ,p_level    => C_LEVEL_PROCEDURE
39273          ,p_module   => l_log_module);
39274 
39275 END IF;
39276 --
39277 l_component_type             := 'AMB_JLT';
39278 l_component_code             := 'INV_UNBILL_ROUND';
39279 l_component_type_code        := 'S';
39280 l_component_appl_id          :=  222;
39281 l_amb_context_code           := 'DEFAULT';
39282 l_entity_code                := 'TRANSACTIONS';
39283 l_event_class_code           := 'INVOICE';
39284 l_event_type_code            := 'INVOICE_ALL';
39285 l_line_definition_owner_code := 'S';
39286 l_line_definition_code       := 'JA_CN_AR_INV_DEFAULT_ACCRUAL';
39287 --
39288 l_balance_type_code          := 'A';
39289 l_segment                     := NULL;
39290 l_ccid                        := NULL;
39291 l_adr_transaction_coa_id      := NULL;
39292 l_adr_accounting_coa_id       := NULL;
39293 l_adr_flexfield_segment_code  := NULL;
39294 l_adr_flex_value_set_id       := NULL;
39295 l_adr_value_type_code         := NULL;
39296 l_adr_value_combination_id    := NULL;
39297 l_adr_value_segment_code      := NULL;
39298 
39299 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
39300 l_bflow_class_code           := '';    -- 4219869 Business Flow
39301 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39302 l_budgetary_control_flag     := 'N';
39303 
39304 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39305 l_bflow_applied_to_amt       := NULL; -- 5132302
39306 l_entered_amt_idx            := NULL;          -- 4262811
39307 l_accted_amt_idx             := NULL;          -- 4262811
39308 l_acc_rev_flag               := NULL;          -- 4262811
39309 l_accrual_line_num           := NULL;          -- 4262811
39310 l_tmp_amt                    := NULL;          -- 4262811
39311 --
39312  
39313 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39314     l_balance_type_code <> 'B' THEN
39315 IF NVL(p_source_43,'
39316 ') =  'UNBILL' AND 
39317 NVL(p_source_87,'
39318 ') =  'Y'
39319  THEN 
39320 
39321    --
39322    XLA_AE_LINES_PKG.SetNewLine;
39323 
39324    p_balance_type_code          := l_balance_type_code;
39325    -- set the flag so later we will know whether the gain loss line needs to be created
39326    
39327    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39328      p_actual_flag :='A';
39329    END IF;
39330 
39331    --
39332    -- bulk performance
39333    --
39334    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39335                                       p_header_num   => 0); -- 4262811
39336    --
39337    -- set accounting line options
39338    --
39339    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39340            p_natural_side_code          => 'C'
39341          , p_gain_or_loss_flag          => 'N'
39342          , p_gl_transfer_mode_code      => 'S'
39343          , p_acct_entry_type_code       => 'A'
39344          , p_switch_side_flag           => 'Y'
39345          , p_merge_duplicate_code       => 'N'
39346          );
39347    --
39348    l_acc_rev_natural_side_code := 'D';  -- 4262811
39349    -- 
39350    --
39351    -- set accounting line type info
39352    --
39353    xla_ae_lines_pkg.SetAcctLineType
39354       (p_component_type             => l_component_type
39355       ,p_event_type_code            => l_event_type_code
39356       ,p_line_definition_owner_code => l_line_definition_owner_code
39357       ,p_line_definition_code       => l_line_definition_code
39358       ,p_accounting_line_code       => l_component_code
39359       ,p_accounting_line_type_code  => l_component_type_code
39360       ,p_accounting_line_appl_id    => l_component_appl_id
39364    --
39361       ,p_amb_context_code           => l_amb_context_code
39362       ,p_entity_code                => l_entity_code
39363       ,p_event_class_code           => l_event_class_code);
39365    -- set accounting class
39366    --
39367    xla_ae_lines_pkg.SetAcctClass(
39368            p_accounting_class_code  => 'UNBILL'
39369          , p_ae_header_id           => l_ae_header_id
39370          );
39371 
39372    --
39373    -- set rounding class
39374    --
39375    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39376                       'UNBILL';
39377 
39378    --
39379    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39380    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39381    --
39382    -- bulk performance
39383    --
39384    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39385 
39386    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39387       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39388 
39389    -- 4955764
39390    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39391       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39392 
39393    -- 4458381 Public Sector Enh
39394    
39395    --
39396    -- set accounting attributes for the line type
39397    --
39398    l_entered_amt_idx := 3;
39399    l_accted_amt_idx  := 8;
39400    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39401    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39402    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
39403    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39404    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
39405    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39406    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
39407    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39408    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
39409    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39410    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
39411    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39412    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
39413    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39414    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
39415    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39416    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
39417    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
39418    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
39419    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
39420    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
39421    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
39422    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
39423    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
39424    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
39425 
39426    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39427    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39428 
39429    ---------------------------------------------------------------------------------------------------------------
39430    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39431    ---------------------------------------------------------------------------------------------------------------
39432    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39433 
39434    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39435    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39436 
39437    IF xla_accounting_cache_pkg.GetValueChar
39438          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39439          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39440    AND l_bflow_method_code = 'PRIOR_ENTRY'
39441 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39442    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39443          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39444        )
39445    THEN
39446          xla_ae_lines_pkg.BflowUpgEntry
39447            (p_business_method_code    => l_bflow_method_code
39448            ,p_business_class_code     => l_bflow_class_code
39449            ,p_balance_type            => l_balance_type_code);
39450    ELSE
39451       NULL;
39452 -- No business flow processing for business flow method of NONE.
39453    END IF;
39454 
39455    --
39456    -- call analytical criteria
39457    --
39458    
39459    --
39460    -- call description
39461    --
39462    -- No description or it is inherited.
39463    --
39464    -- call ADRs
39465    -- Bug 4922099
39466    --
39467    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39468         (NVL(l_actual_upg_option, 'N') = 'O') OR
39469         (NVL(l_enc_upg_option, 'N') = 'O')
39470       )
39471    THEN
39472    NULL;
39473    --
39477            p_application_id           => p_application_id
39474    --
39475    
39476   l_ccid := AcctDerRule_24(
39478          , p_ae_header_id             => l_ae_header_id 
39479 , p_source_26 => p_source_26
39480          , x_transaction_coa_id       => l_adr_transaction_coa_id
39481          , x_accounting_coa_id        => l_adr_accounting_coa_id
39482          , x_value_type_code          => l_adr_value_type_code
39483          , p_side                     => 'NA'
39484    );
39485 
39486    xla_ae_lines_pkg.set_ccid(
39487     p_code_combination_id          => l_ccid
39488   , p_value_type_code              => l_adr_value_type_code
39489   , p_transaction_coa_id           => l_adr_transaction_coa_id
39490   , p_accounting_coa_id            => l_adr_accounting_coa_id
39491   , p_adr_code                     => 'TRX_DIST_CCID'
39492   , p_adr_type_code                => 'S'
39493   , p_component_type               => l_component_type
39494   , p_component_code               => l_component_code
39495   , p_component_type_code          => l_component_type_code
39496   , p_component_appl_id            => l_component_appl_id
39497   , p_amb_context_code             => l_amb_context_code
39498   , p_side                         => 'NA'
39499   );
39500 
39501 
39502    --
39503    --
39504    END IF;
39505    --
39506    -- Bug 4922099
39507    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39508           (NVL(l_enc_upg_option, 'N') = 'O')
39509         ) AND
39510         (l_bflow_method_code = 'PRIOR_ENTRY')
39511       )
39512    THEN
39513       IF
39514       --
39515       1 = 2
39516       --
39517       THEN
39518       xla_accounting_err_pkg.build_message
39519                                     (p_appli_s_name            => 'XLA'
39520                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39521                                     ,p_token_1                 => 'LINE_NUMBER'
39522                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39523                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39524                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39525                                                                              l_component_type
39526                                                                             ,l_component_code
39527                                                                             ,l_component_type_code
39528                                                                             ,l_component_appl_id
39529                                                                             ,l_amb_context_code
39530                                                                             ,l_entity_code
39531                                                                             ,l_event_class_code
39532                                                                            )
39533                                     ,p_token_3                 => 'OWNER'
39534                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39535                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39536                                                                           ,p_lookup_code    => l_component_type_code
39537                                                                          )
39538                                     ,p_token_4                 => 'PRODUCT_NAME'
39539                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39540                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39541                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39542                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39543                                     ,p_ae_header_id            =>  NULL
39544                                        );
39545 
39546         IF (C_LEVEL_ERROR>= g_log_level) THEN
39547                  trace
39548                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39549                       ,p_level    => C_LEVEL_ERROR
39550                       ,p_module   => l_log_module);
39551         END IF;
39552       END IF;
39553    END IF;
39554    --
39555    --
39556    ------------------------------------------------------------------------------------------------
39557    -- 4219869 Business Flow
39558    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39559    -- Prior Entry.  Currently, the following code is always generated.
39560    ------------------------------------------------------------------------------------------------
39561    XLA_AE_LINES_PKG.ValidateCurrentLine;
39562 
39563    ------------------------------------------------------------------------------------
39564    -- 4219869 Business Flow
39565    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39566    ------------------------------------------------------------------------------------
39567    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39568 
39569    ----------------------------------------------------------------------------------
39570    -- 4219869 Business Flow
39571    -- Update journal entry status -- Need to generate this within IF <condition>
39575          ,p_balance_type_code => l_balance_type_code
39572    ----------------------------------------------------------------------------------
39573    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39574          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39576          );
39577 
39578    -------------------------------------------------------------------------------------------
39579    -- 4262811 - Generate the Accrual Reversal lines
39580    -------------------------------------------------------------------------------------------
39581    BEGIN
39582       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39583                               (g_array_event(p_event_id).array_value_num('header_index'));
39584       IF l_acc_rev_flag IS NULL THEN
39585          l_acc_rev_flag := 'N';
39586       END IF;
39587    EXCEPTION
39588       WHEN OTHERS THEN
39589          l_acc_rev_flag := 'N';
39590    END;
39591    --
39592    IF (l_acc_rev_flag = 'Y') THEN
39593 
39594        -- 4645092  ------------------------------------------------------------------------------
39595        -- To allow MPA report to determine if it should generate report process
39596        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39597        ------------------------------------------------------------------------------------------
39598 
39599        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39600        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39601    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
39602    -- call ADRs
39603    -- Bug 4922099
39604    --
39605    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39606         (NVL(l_actual_upg_option, 'N') = 'O') OR
39607         (NVL(l_enc_upg_option, 'N') = 'O')
39608       )
39609    THEN
39610    NULL;
39611    --
39612    --
39613    
39614   l_ccid := AcctDerRule_24(
39615            p_application_id           => p_application_id
39616          , p_ae_header_id             => l_ae_header_id 
39617 , p_source_26 => p_source_26
39618          , x_transaction_coa_id       => l_adr_transaction_coa_id
39619          , x_accounting_coa_id        => l_adr_accounting_coa_id
39620          , x_value_type_code          => l_adr_value_type_code
39621          , p_side                     => 'NA'
39622    );
39623 
39624    xla_ae_lines_pkg.set_ccid(
39625     p_code_combination_id          => l_ccid
39626   , p_value_type_code              => l_adr_value_type_code
39627   , p_transaction_coa_id           => l_adr_transaction_coa_id
39628   , p_accounting_coa_id            => l_adr_accounting_coa_id
39629   , p_adr_code                     => 'TRX_DIST_CCID'
39630   , p_adr_type_code                => 'S'
39631   , p_component_type               => l_component_type
39632   , p_component_code               => l_component_code
39633   , p_component_type_code          => l_component_type_code
39634   , p_component_appl_id            => l_component_appl_id
39635   , p_amb_context_code             => l_amb_context_code
39636   , p_side                         => 'NA'
39637   );
39638 
39639 
39640    --
39641    --
39642    END IF;
39643 
39644        --
39645        -- Update the line information that should be overwritten
39646        --
39647        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39648                                          p_header_num   => 1);
39649        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39650 
39651        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39652 
39653        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39654           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39655        END IF;
39656 
39657       --
39658       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39659       --
39660       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39661           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39662       ELSE
39663           ---------------------------------------------------------------------------------------------------
39664           -- 4262811a Switch Sign
39665           ---------------------------------------------------------------------------------------------------
39666           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39667           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39668                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39669           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39670                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39671           -- 5132302
39672           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39673                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39674 
39675       END IF;
39676 
39677       -- 4955764
39678       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39679       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39680 
39681 
39682       XLA_AE_LINES_PKG.ValidateCurrentLine;
39686                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39683       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39684 
39685       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39687                ,p_balance_type_code => l_balance_type_code);
39688 
39689    END IF;
39690 
39691    -----------------------------------------------------------------------------------------
39692    -- 4262811 Multiperiod Accounting
39693    -----------------------------------------------------------------------------------------
39694      -- No MPA option is assigned.
39695 
39696 
39697 END IF;
39698 END IF;
39699 --
39700 
39701 --
39702 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39703    trace
39704       (p_msg      => 'END of AcctLineType_87'
39705       ,p_level    => C_LEVEL_PROCEDURE
39706       ,p_module   => l_log_module);
39707 END IF;
39708 --
39709 EXCEPTION
39710   WHEN xla_exceptions_pkg.application_exception THEN
39711       RAISE;
39712   WHEN OTHERS THEN
39713        xla_exceptions_pkg.raise_message
39714            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_87');
39715 END AcctLineType_87;
39716 --
39717 
39718 ---------------------------------------
39719 --
39720 -- PRIVATE FUNCTION
39721 --         AcctLineType_88
39722 --
39723 ---------------------------------------
39724 PROCEDURE AcctLineType_88 (
39725   p_application_id        IN NUMBER
39726  ,p_event_id              IN NUMBER
39727  ,p_calculate_acctd_flag  IN VARCHAR2
39728  ,p_calculate_g_l_flag    IN VARCHAR2
39729  ,p_actual_flag           IN OUT VARCHAR2
39730  ,p_balance_type_code     OUT VARCHAR2
39731  ,p_gain_or_loss_ref      OUT VARCHAR2
39732  
39733 --Transaction Distribution GL Account
39734  , p_source_26            IN NUMBER
39735 --Bill To Customer Account Identifier
39736  , p_source_37            IN NUMBER
39737 --Bill To Customer Site Use Identifier
39738  , p_source_38            IN NUMBER
39739 --SLA Party Type
39740  , p_source_39            IN VARCHAR2
39741 --Transaction Distribution Account Class
39742  , p_source_43            IN VARCHAR2
39743 --Transaction Distribution Identifier
39744  , p_source_44            IN NUMBER
39745 --Transaction Distribution Type
39746  , p_source_45            IN VARCHAR2
39747 --Transaction Distribution Entered Amount
39748  , p_source_46            IN NUMBER
39749 --Transaction Currency Code
39750  , p_source_47            IN VARCHAR2
39751 --Transaction Exchange Date
39752  , p_source_48            IN DATE
39753 --Transaction Exchange Rate
39754  , p_source_49            IN NUMBER
39755 --Transaction Exchange Rate Type
39756  , p_source_50            IN VARCHAR2
39757 --Transaction Accounting Amount
39758  , p_source_51            IN NUMBER
39759 --Transaction Tax Line Identifier
39760  , p_source_86            IN NUMBER
39761 --Rounding Correction Flag
39762  , p_source_87            IN VARCHAR2
39763 )
39764 IS
39765 
39766 l_component_type              VARCHAR2(80);
39767 l_component_code              VARCHAR2(30);
39768 l_component_type_code         VARCHAR2(1);
39769 l_component_appl_id           INTEGER;
39770 l_amb_context_code            VARCHAR2(30);
39771 l_entity_code                 VARCHAR2(30);
39772 l_event_class_code            VARCHAR2(30);
39773 l_ae_header_id                NUMBER;
39774 l_event_type_code             VARCHAR2(30);
39775 l_line_definition_code        VARCHAR2(30);
39776 l_line_definition_owner_code  VARCHAR2(1);
39777 --
39778 -- adr variables
39779 l_segment                     VARCHAR2(30);
39780 l_ccid                        NUMBER;
39781 l_adr_transaction_coa_id      NUMBER;
39782 l_adr_accounting_coa_id       NUMBER;
39783 l_adr_flexfield_segment_code  VARCHAR2(30);
39784 l_adr_flex_value_set_id       NUMBER;
39785 l_adr_value_type_code         VARCHAR2(30);
39786 l_adr_value_combination_id    NUMBER;
39787 l_adr_value_segment_code      VARCHAR2(30);
39788 
39789 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39790 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39791 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39792 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39793 
39794 -- 4262811 Variables ------------------------------------------------------------------------------------------
39795 l_entered_amt_idx             NUMBER;
39796 l_accted_amt_idx              NUMBER;
39797 l_acc_rev_flag                VARCHAR2(1);
39798 l_accrual_line_num            NUMBER;
39799 l_tmp_amt                     NUMBER;
39800 l_acc_rev_natural_side_code   VARCHAR2(1);
39801 
39802 l_num_entries                 NUMBER;
39803 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39804 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39805 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39806 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39807 l_recog_line_1                NUMBER;
39808 l_recog_line_2                NUMBER;
39809 
39810 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39811 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39812 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39813 
39817 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39814 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39815 
39816 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39818 
39819 ---------------------------------------------------------------------------------------------------------------
39820 
39821 
39822 --
39823 -- bulk performance
39824 --
39825 l_balance_type_code           VARCHAR2(1);
39826 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39827 l_log_module                  VARCHAR2(240);
39828 
39829 --
39830 -- Upgrade strategy
39831 --
39832 l_actual_upg_option           VARCHAR2(1);
39833 l_enc_upg_option           VARCHAR2(1);
39834 
39835 --
39836 BEGIN
39837 --
39838 IF g_log_enabled THEN
39839       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_88';
39840 END IF;
39841 --
39842 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39843 
39844       trace
39845          (p_msg      => 'BEGIN of AcctLineType_88'
39846          ,p_level    => C_LEVEL_PROCEDURE
39847          ,p_module   => l_log_module);
39848 
39849 END IF;
39850 --
39851 l_component_type             := 'AMB_JLT';
39852 l_component_code             := 'INV_UNEARN';
39853 l_component_type_code        := 'S';
39854 l_component_appl_id          :=  222;
39855 l_amb_context_code           := 'DEFAULT';
39856 l_entity_code                := 'TRANSACTIONS';
39857 l_event_class_code           := 'INVOICE';
39858 l_event_type_code            := 'INVOICE_ALL';
39859 l_line_definition_owner_code := 'S';
39860 l_line_definition_code       := 'JA_CN_AR_INV_DEFAULT_ACCRUAL';
39861 --
39862 l_balance_type_code          := 'A';
39863 l_segment                     := NULL;
39864 l_ccid                        := NULL;
39865 l_adr_transaction_coa_id      := NULL;
39866 l_adr_accounting_coa_id       := NULL;
39867 l_adr_flexfield_segment_code  := NULL;
39868 l_adr_flex_value_set_id       := NULL;
39869 l_adr_value_type_code         := NULL;
39870 l_adr_value_combination_id    := NULL;
39871 l_adr_value_segment_code      := NULL;
39872 
39873 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
39874 l_bflow_class_code           := '';    -- 4219869 Business Flow
39875 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39876 l_budgetary_control_flag     := 'N';
39877 
39878 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39879 l_bflow_applied_to_amt       := NULL; -- 5132302
39880 l_entered_amt_idx            := NULL;          -- 4262811
39881 l_accted_amt_idx             := NULL;          -- 4262811
39882 l_acc_rev_flag               := NULL;          -- 4262811
39883 l_accrual_line_num           := NULL;          -- 4262811
39884 l_tmp_amt                    := NULL;          -- 4262811
39885 --
39886  
39887 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39888     l_balance_type_code <> 'B' THEN
39889 IF NVL(p_source_43,'
39890 ') =  'UNEARN' AND 
39891 p_source_87 IS NULL 
39892  THEN 
39893 
39894    --
39895    XLA_AE_LINES_PKG.SetNewLine;
39896 
39897    p_balance_type_code          := l_balance_type_code;
39898    -- set the flag so later we will know whether the gain loss line needs to be created
39899    
39900    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39901      p_actual_flag :='A';
39902    END IF;
39903 
39904    --
39905    -- bulk performance
39906    --
39907    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39908                                       p_header_num   => 0); -- 4262811
39909    --
39910    -- set accounting line options
39911    --
39912    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39913            p_natural_side_code          => 'C'
39914          , p_gain_or_loss_flag          => 'N'
39915          , p_gl_transfer_mode_code      => 'S'
39916          , p_acct_entry_type_code       => 'A'
39917          , p_switch_side_flag           => 'Y'
39918          , p_merge_duplicate_code       => 'A'
39919          );
39920    --
39921    l_acc_rev_natural_side_code := 'D';  -- 4262811
39922    -- 
39923    --
39924    -- set accounting line type info
39925    --
39926    xla_ae_lines_pkg.SetAcctLineType
39927       (p_component_type             => l_component_type
39928       ,p_event_type_code            => l_event_type_code
39929       ,p_line_definition_owner_code => l_line_definition_owner_code
39930       ,p_line_definition_code       => l_line_definition_code
39931       ,p_accounting_line_code       => l_component_code
39932       ,p_accounting_line_type_code  => l_component_type_code
39933       ,p_accounting_line_appl_id    => l_component_appl_id
39934       ,p_amb_context_code           => l_amb_context_code
39935       ,p_entity_code                => l_entity_code
39936       ,p_event_class_code           => l_event_class_code);
39937    --
39938    -- set accounting class
39939    --
39940    xla_ae_lines_pkg.SetAcctClass(
39941            p_accounting_class_code  => 'UNEARNED_REVENUE'
39942          , p_ae_header_id           => l_ae_header_id
39943          );
39944 
39945    --
39946    -- set rounding class
39947    --
39951    --
39948    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39949                       'RECEIVABLE';
39950 
39952    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39953    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39954    --
39955    -- bulk performance
39956    --
39957    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39958 
39959    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39960       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39961 
39962    -- 4955764
39963    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39964       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39965 
39966    -- 4458381 Public Sector Enh
39967    
39968    --
39969    -- set accounting attributes for the line type
39970    --
39971    l_entered_amt_idx := 3;
39972    l_accted_amt_idx  := 8;
39973    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39974    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39975    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
39976    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39977    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
39978    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39979    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
39980    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39981    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
39982    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39983    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
39984    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39985    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
39986    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39987    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
39988    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39989    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
39990    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
39991    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
39992    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
39993    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
39994    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
39995    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
39996    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
39997    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
39998 
39999    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40000    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40001 
40002    ---------------------------------------------------------------------------------------------------------------
40003    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40004    ---------------------------------------------------------------------------------------------------------------
40005    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40006 
40007    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40008    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40009 
40010    IF xla_accounting_cache_pkg.GetValueChar
40011          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40012          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40013    AND l_bflow_method_code = 'PRIOR_ENTRY'
40014 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40015    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40016          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40017        )
40018    THEN
40019          xla_ae_lines_pkg.BflowUpgEntry
40020            (p_business_method_code    => l_bflow_method_code
40021            ,p_business_class_code     => l_bflow_class_code
40022            ,p_balance_type            => l_balance_type_code);
40023    ELSE
40024       NULL;
40025 -- No business flow processing for business flow method of NONE.
40026    END IF;
40027 
40028    --
40029    -- call analytical criteria
40030    --
40031    
40032    --
40033    -- call description
40034    --
40035    -- No description or it is inherited.
40036    --
40037    -- call ADRs
40038    -- Bug 4922099
40039    --
40040    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40041         (NVL(l_actual_upg_option, 'N') = 'O') OR
40042         (NVL(l_enc_upg_option, 'N') = 'O')
40043       )
40044    THEN
40045    NULL;
40046    --
40047    --
40048    
40049   l_ccid := AcctDerRule_24(
40050            p_application_id           => p_application_id
40051          , p_ae_header_id             => l_ae_header_id 
40052 , p_source_26 => p_source_26
40053          , x_transaction_coa_id       => l_adr_transaction_coa_id
40054          , x_accounting_coa_id        => l_adr_accounting_coa_id
40055          , x_value_type_code          => l_adr_value_type_code
40056          , p_side                     => 'NA'
40057    );
40058 
40062   , p_transaction_coa_id           => l_adr_transaction_coa_id
40059    xla_ae_lines_pkg.set_ccid(
40060     p_code_combination_id          => l_ccid
40061   , p_value_type_code              => l_adr_value_type_code
40063   , p_accounting_coa_id            => l_adr_accounting_coa_id
40064   , p_adr_code                     => 'TRX_DIST_CCID'
40065   , p_adr_type_code                => 'S'
40066   , p_component_type               => l_component_type
40067   , p_component_code               => l_component_code
40068   , p_component_type_code          => l_component_type_code
40069   , p_component_appl_id            => l_component_appl_id
40070   , p_amb_context_code             => l_amb_context_code
40071   , p_side                         => 'NA'
40072   );
40073 
40074 
40075    --
40076    --
40077    END IF;
40078    --
40079    -- Bug 4922099
40080    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40081           (NVL(l_enc_upg_option, 'N') = 'O')
40082         ) AND
40083         (l_bflow_method_code = 'PRIOR_ENTRY')
40084       )
40085    THEN
40086       IF
40087       --
40088       1 = 2
40089       --
40090       THEN
40091       xla_accounting_err_pkg.build_message
40092                                     (p_appli_s_name            => 'XLA'
40093                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40094                                     ,p_token_1                 => 'LINE_NUMBER'
40095                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40096                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40097                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40098                                                                              l_component_type
40099                                                                             ,l_component_code
40100                                                                             ,l_component_type_code
40101                                                                             ,l_component_appl_id
40102                                                                             ,l_amb_context_code
40103                                                                             ,l_entity_code
40104                                                                             ,l_event_class_code
40105                                                                            )
40106                                     ,p_token_3                 => 'OWNER'
40107                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40108                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40109                                                                           ,p_lookup_code    => l_component_type_code
40110                                                                          )
40111                                     ,p_token_4                 => 'PRODUCT_NAME'
40112                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40113                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40114                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40115                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40116                                     ,p_ae_header_id            =>  NULL
40117                                        );
40118 
40119         IF (C_LEVEL_ERROR>= g_log_level) THEN
40120                  trace
40121                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40122                       ,p_level    => C_LEVEL_ERROR
40123                       ,p_module   => l_log_module);
40124         END IF;
40125       END IF;
40126    END IF;
40127    --
40128    --
40129    ------------------------------------------------------------------------------------------------
40130    -- 4219869 Business Flow
40131    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40132    -- Prior Entry.  Currently, the following code is always generated.
40133    ------------------------------------------------------------------------------------------------
40134    XLA_AE_LINES_PKG.ValidateCurrentLine;
40135 
40136    ------------------------------------------------------------------------------------
40137    -- 4219869 Business Flow
40138    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40139    ------------------------------------------------------------------------------------
40140    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40141 
40142    ----------------------------------------------------------------------------------
40143    -- 4219869 Business Flow
40144    -- Update journal entry status -- Need to generate this within IF <condition>
40145    ----------------------------------------------------------------------------------
40146    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40147          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40148          ,p_balance_type_code => l_balance_type_code
40149          );
40150 
40151    -------------------------------------------------------------------------------------------
40152    -- 4262811 - Generate the Accrual Reversal lines
40153    -------------------------------------------------------------------------------------------
40154    BEGIN
40155       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40159       END IF;
40156                               (g_array_event(p_event_id).array_value_num('header_index'));
40157       IF l_acc_rev_flag IS NULL THEN
40158          l_acc_rev_flag := 'N';
40160    EXCEPTION
40161       WHEN OTHERS THEN
40162          l_acc_rev_flag := 'N';
40163    END;
40164    --
40165    IF (l_acc_rev_flag = 'Y') THEN
40166 
40167        -- 4645092  ------------------------------------------------------------------------------
40168        -- To allow MPA report to determine if it should generate report process
40169        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40170        ------------------------------------------------------------------------------------------
40171 
40172        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40173        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40174    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
40175    -- call ADRs
40176    -- Bug 4922099
40177    --
40178    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40179         (NVL(l_actual_upg_option, 'N') = 'O') OR
40180         (NVL(l_enc_upg_option, 'N') = 'O')
40181       )
40182    THEN
40183    NULL;
40184    --
40185    --
40186    
40187   l_ccid := AcctDerRule_24(
40188            p_application_id           => p_application_id
40189          , p_ae_header_id             => l_ae_header_id 
40190 , p_source_26 => p_source_26
40191          , x_transaction_coa_id       => l_adr_transaction_coa_id
40192          , x_accounting_coa_id        => l_adr_accounting_coa_id
40193          , x_value_type_code          => l_adr_value_type_code
40194          , p_side                     => 'NA'
40195    );
40196 
40197    xla_ae_lines_pkg.set_ccid(
40198     p_code_combination_id          => l_ccid
40199   , p_value_type_code              => l_adr_value_type_code
40200   , p_transaction_coa_id           => l_adr_transaction_coa_id
40201   , p_accounting_coa_id            => l_adr_accounting_coa_id
40202   , p_adr_code                     => 'TRX_DIST_CCID'
40203   , p_adr_type_code                => 'S'
40204   , p_component_type               => l_component_type
40205   , p_component_code               => l_component_code
40206   , p_component_type_code          => l_component_type_code
40207   , p_component_appl_id            => l_component_appl_id
40208   , p_amb_context_code             => l_amb_context_code
40209   , p_side                         => 'NA'
40210   );
40211 
40212 
40213    --
40214    --
40215    END IF;
40216 
40217        --
40218        -- Update the line information that should be overwritten
40219        --
40220        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40221                                          p_header_num   => 1);
40222        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40223 
40224        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40225 
40226        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40227           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40228        END IF;
40229 
40230       --
40231       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40232       --
40233       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40234           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40235       ELSE
40236           ---------------------------------------------------------------------------------------------------
40237           -- 4262811a Switch Sign
40238           ---------------------------------------------------------------------------------------------------
40239           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40240           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40241                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40242           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40243                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40244           -- 5132302
40245           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40246                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40247 
40248       END IF;
40249 
40250       -- 4955764
40251       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40252       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40253 
40254 
40255       XLA_AE_LINES_PKG.ValidateCurrentLine;
40256       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40257 
40258       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40259                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40260                ,p_balance_type_code => l_balance_type_code);
40261 
40262    END IF;
40263 
40264    -----------------------------------------------------------------------------------------
40265    -- 4262811 Multiperiod Accounting
40266    -----------------------------------------------------------------------------------------
40267      -- No MPA option is assigned.
40271 END IF;
40268 
40269 
40270 END IF;
40272 --
40273 
40274 --
40275 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40276    trace
40277       (p_msg      => 'END of AcctLineType_88'
40278       ,p_level    => C_LEVEL_PROCEDURE
40279       ,p_module   => l_log_module);
40280 END IF;
40281 --
40282 EXCEPTION
40283   WHEN xla_exceptions_pkg.application_exception THEN
40284       RAISE;
40285   WHEN OTHERS THEN
40286        xla_exceptions_pkg.raise_message
40287            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_88');
40288 END AcctLineType_88;
40289 --
40290 
40291 ---------------------------------------
40292 --
40293 -- PRIVATE FUNCTION
40294 --         AcctLineType_89
40295 --
40296 ---------------------------------------
40297 PROCEDURE AcctLineType_89 (
40298   p_application_id        IN NUMBER
40299  ,p_event_id              IN NUMBER
40300  ,p_calculate_acctd_flag  IN VARCHAR2
40301  ,p_calculate_g_l_flag    IN VARCHAR2
40302  ,p_actual_flag           IN OUT VARCHAR2
40303  ,p_balance_type_code     OUT VARCHAR2
40304  ,p_gain_or_loss_ref      OUT VARCHAR2
40305  
40306 --Transaction Distribution GL Account
40307  , p_source_26            IN NUMBER
40308 --Bill To Customer Account Identifier
40309  , p_source_37            IN NUMBER
40310 --Bill To Customer Site Use Identifier
40311  , p_source_38            IN NUMBER
40312 --SLA Party Type
40313  , p_source_39            IN VARCHAR2
40314 --Transaction Distribution Account Class
40315  , p_source_43            IN VARCHAR2
40316 --Transaction Distribution Identifier
40317  , p_source_44            IN NUMBER
40318 --Transaction Distribution Type
40319  , p_source_45            IN VARCHAR2
40320 --Transaction Distribution Entered Amount
40321  , p_source_46            IN NUMBER
40322 --Transaction Currency Code
40323  , p_source_47            IN VARCHAR2
40324 --Transaction Exchange Date
40325  , p_source_48            IN DATE
40326 --Transaction Exchange Rate
40327  , p_source_49            IN NUMBER
40328 --Transaction Exchange Rate Type
40329  , p_source_50            IN VARCHAR2
40330 --Transaction Accounting Amount
40331  , p_source_51            IN NUMBER
40332 --Transaction Tax Line Identifier
40333  , p_source_86            IN NUMBER
40334 --Rounding Correction Flag
40335  , p_source_87            IN VARCHAR2
40336 )
40337 IS
40338 
40339 l_component_type              VARCHAR2(80);
40340 l_component_code              VARCHAR2(30);
40341 l_component_type_code         VARCHAR2(1);
40342 l_component_appl_id           INTEGER;
40343 l_amb_context_code            VARCHAR2(30);
40344 l_entity_code                 VARCHAR2(30);
40345 l_event_class_code            VARCHAR2(30);
40346 l_ae_header_id                NUMBER;
40347 l_event_type_code             VARCHAR2(30);
40348 l_line_definition_code        VARCHAR2(30);
40349 l_line_definition_owner_code  VARCHAR2(1);
40350 --
40351 -- adr variables
40352 l_segment                     VARCHAR2(30);
40353 l_ccid                        NUMBER;
40354 l_adr_transaction_coa_id      NUMBER;
40355 l_adr_accounting_coa_id       NUMBER;
40356 l_adr_flexfield_segment_code  VARCHAR2(30);
40357 l_adr_flex_value_set_id       NUMBER;
40358 l_adr_value_type_code         VARCHAR2(30);
40359 l_adr_value_combination_id    NUMBER;
40360 l_adr_value_segment_code      VARCHAR2(30);
40361 
40362 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40363 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40364 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40365 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40366 
40367 -- 4262811 Variables ------------------------------------------------------------------------------------------
40368 l_entered_amt_idx             NUMBER;
40369 l_accted_amt_idx              NUMBER;
40370 l_acc_rev_flag                VARCHAR2(1);
40371 l_accrual_line_num            NUMBER;
40372 l_tmp_amt                     NUMBER;
40373 l_acc_rev_natural_side_code   VARCHAR2(1);
40374 
40375 l_num_entries                 NUMBER;
40376 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40377 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40378 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40379 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40380 l_recog_line_1                NUMBER;
40381 l_recog_line_2                NUMBER;
40382 
40383 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40384 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40385 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40386 
40387 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40388 
40389 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40390 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40391 
40392 ---------------------------------------------------------------------------------------------------------------
40393 
40394 
40395 --
40396 -- bulk performance
40397 --
40398 l_balance_type_code           VARCHAR2(1);
40399 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40403 -- Upgrade strategy
40400 l_log_module                  VARCHAR2(240);
40401 
40402 --
40404 --
40405 l_actual_upg_option           VARCHAR2(1);
40406 l_enc_upg_option           VARCHAR2(1);
40407 
40408 --
40409 BEGIN
40410 --
40411 IF g_log_enabled THEN
40412       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_89';
40413 END IF;
40414 --
40415 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40416 
40417       trace
40418          (p_msg      => 'BEGIN of AcctLineType_89'
40419          ,p_level    => C_LEVEL_PROCEDURE
40420          ,p_module   => l_log_module);
40421 
40422 END IF;
40423 --
40424 l_component_type             := 'AMB_JLT';
40425 l_component_code             := 'INV_UNEARN_ROUND';
40426 l_component_type_code        := 'S';
40427 l_component_appl_id          :=  222;
40428 l_amb_context_code           := 'DEFAULT';
40429 l_entity_code                := 'TRANSACTIONS';
40430 l_event_class_code           := 'INVOICE';
40431 l_event_type_code            := 'INVOICE_ALL';
40432 l_line_definition_owner_code := 'S';
40433 l_line_definition_code       := 'JA_CN_AR_INV_DEFAULT_ACCRUAL';
40434 --
40435 l_balance_type_code          := 'A';
40436 l_segment                     := NULL;
40437 l_ccid                        := NULL;
40438 l_adr_transaction_coa_id      := NULL;
40439 l_adr_accounting_coa_id       := NULL;
40440 l_adr_flexfield_segment_code  := NULL;
40441 l_adr_flex_value_set_id       := NULL;
40442 l_adr_value_type_code         := NULL;
40443 l_adr_value_combination_id    := NULL;
40444 l_adr_value_segment_code      := NULL;
40445 
40446 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40447 l_bflow_class_code           := '';    -- 4219869 Business Flow
40448 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40449 l_budgetary_control_flag     := 'N';
40450 
40451 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40452 l_bflow_applied_to_amt       := NULL; -- 5132302
40453 l_entered_amt_idx            := NULL;          -- 4262811
40454 l_accted_amt_idx             := NULL;          -- 4262811
40455 l_acc_rev_flag               := NULL;          -- 4262811
40456 l_accrual_line_num           := NULL;          -- 4262811
40457 l_tmp_amt                    := NULL;          -- 4262811
40458 --
40459  
40460 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40461     l_balance_type_code <> 'B' THEN
40462 IF NVL(p_source_43,'
40463 ') =  'UNEARN' AND 
40464 NVL(p_source_87,'
40465 ') =  'Y'
40466  THEN 
40467 
40468    --
40469    XLA_AE_LINES_PKG.SetNewLine;
40470 
40471    p_balance_type_code          := l_balance_type_code;
40472    -- set the flag so later we will know whether the gain loss line needs to be created
40473    
40474    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40475      p_actual_flag :='A';
40476    END IF;
40477 
40478    --
40479    -- bulk performance
40480    --
40481    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40482                                       p_header_num   => 0); -- 4262811
40483    --
40484    -- set accounting line options
40485    --
40486    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40487            p_natural_side_code          => 'C'
40488          , p_gain_or_loss_flag          => 'N'
40489          , p_gl_transfer_mode_code      => 'S'
40490          , p_acct_entry_type_code       => 'A'
40491          , p_switch_side_flag           => 'Y'
40492          , p_merge_duplicate_code       => 'N'
40493          );
40494    --
40495    l_acc_rev_natural_side_code := 'D';  -- 4262811
40496    -- 
40497    --
40498    -- set accounting line type info
40499    --
40500    xla_ae_lines_pkg.SetAcctLineType
40501       (p_component_type             => l_component_type
40502       ,p_event_type_code            => l_event_type_code
40503       ,p_line_definition_owner_code => l_line_definition_owner_code
40504       ,p_line_definition_code       => l_line_definition_code
40505       ,p_accounting_line_code       => l_component_code
40506       ,p_accounting_line_type_code  => l_component_type_code
40507       ,p_accounting_line_appl_id    => l_component_appl_id
40508       ,p_amb_context_code           => l_amb_context_code
40509       ,p_entity_code                => l_entity_code
40510       ,p_event_class_code           => l_event_class_code);
40511    --
40512    -- set accounting class
40513    --
40514    xla_ae_lines_pkg.SetAcctClass(
40515            p_accounting_class_code  => 'UNEARNED_REVENUE'
40516          , p_ae_header_id           => l_ae_header_id
40517          );
40518 
40519    --
40520    -- set rounding class
40521    --
40522    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40523                       'RECEIVABLE';
40524 
40525    --
40526    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40527    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40528    --
40529    -- bulk performance
40530    --
40531    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40532 
40533    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40537    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40534       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40535 
40536    -- 4955764
40538       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40539 
40540    -- 4458381 Public Sector Enh
40541    
40542    --
40543    -- set accounting attributes for the line type
40544    --
40545    l_entered_amt_idx := 3;
40546    l_accted_amt_idx  := 8;
40547    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40548    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40549    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_44);
40550    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40551    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
40552    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40553    l_rec_acct_attrs.array_num_value(3)  := p_source_46;
40554    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40555    l_rec_acct_attrs.array_char_value(4)  := p_source_47;
40556    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40557    l_rec_acct_attrs.array_date_value(5)  := p_source_48;
40558    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40559    l_rec_acct_attrs.array_num_value(6)  := p_source_49;
40560    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40561    l_rec_acct_attrs.array_char_value(7)  := p_source_50;
40562    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40563    l_rec_acct_attrs.array_num_value(8)  := p_source_51;
40564    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
40565    l_rec_acct_attrs.array_num_value(9)  := p_source_37;
40566    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
40567    l_rec_acct_attrs.array_num_value(10)  := p_source_38;
40568    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
40569    l_rec_acct_attrs.array_char_value(11)  := p_source_39;
40570    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
40571    l_rec_acct_attrs.array_num_value(12)  := p_source_86;
40572 
40573    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40574    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40575 
40576    ---------------------------------------------------------------------------------------------------------------
40577    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40578    ---------------------------------------------------------------------------------------------------------------
40579    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40580 
40581    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40582    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40583 
40584    IF xla_accounting_cache_pkg.GetValueChar
40585          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40586          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40587    AND l_bflow_method_code = 'PRIOR_ENTRY'
40588 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40589    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40590          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40591        )
40592    THEN
40593          xla_ae_lines_pkg.BflowUpgEntry
40594            (p_business_method_code    => l_bflow_method_code
40595            ,p_business_class_code     => l_bflow_class_code
40596            ,p_balance_type            => l_balance_type_code);
40597    ELSE
40598       NULL;
40599 -- No business flow processing for business flow method of NONE.
40600    END IF;
40601 
40602    --
40603    -- call analytical criteria
40604    --
40605    
40606    --
40607    -- call description
40608    --
40609    -- No description or it is inherited.
40610    --
40611    -- call ADRs
40612    -- Bug 4922099
40613    --
40614    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40615         (NVL(l_actual_upg_option, 'N') = 'O') OR
40616         (NVL(l_enc_upg_option, 'N') = 'O')
40617       )
40618    THEN
40619    NULL;
40620    --
40621    --
40622    
40623   l_ccid := AcctDerRule_24(
40624            p_application_id           => p_application_id
40625          , p_ae_header_id             => l_ae_header_id 
40626 , p_source_26 => p_source_26
40627          , x_transaction_coa_id       => l_adr_transaction_coa_id
40628          , x_accounting_coa_id        => l_adr_accounting_coa_id
40629          , x_value_type_code          => l_adr_value_type_code
40630          , p_side                     => 'NA'
40631    );
40632 
40633    xla_ae_lines_pkg.set_ccid(
40634     p_code_combination_id          => l_ccid
40635   , p_value_type_code              => l_adr_value_type_code
40636   , p_transaction_coa_id           => l_adr_transaction_coa_id
40637   , p_accounting_coa_id            => l_adr_accounting_coa_id
40638   , p_adr_code                     => 'TRX_DIST_CCID'
40639   , p_adr_type_code                => 'S'
40640   , p_component_type               => l_component_type
40641   , p_component_code               => l_component_code
40642   , p_component_type_code          => l_component_type_code
40643   , p_component_appl_id            => l_component_appl_id
40644   , p_amb_context_code             => l_amb_context_code
40645   , p_side                         => 'NA'
40646   );
40650    --
40647 
40648 
40649    --
40651    END IF;
40652    --
40653    -- Bug 4922099
40654    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40655           (NVL(l_enc_upg_option, 'N') = 'O')
40656         ) AND
40657         (l_bflow_method_code = 'PRIOR_ENTRY')
40658       )
40659    THEN
40660       IF
40661       --
40662       1 = 2
40663       --
40664       THEN
40665       xla_accounting_err_pkg.build_message
40666                                     (p_appli_s_name            => 'XLA'
40667                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40668                                     ,p_token_1                 => 'LINE_NUMBER'
40669                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40670                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40671                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40672                                                                              l_component_type
40673                                                                             ,l_component_code
40674                                                                             ,l_component_type_code
40675                                                                             ,l_component_appl_id
40676                                                                             ,l_amb_context_code
40677                                                                             ,l_entity_code
40678                                                                             ,l_event_class_code
40679                                                                            )
40680                                     ,p_token_3                 => 'OWNER'
40681                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40682                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40683                                                                           ,p_lookup_code    => l_component_type_code
40684                                                                          )
40685                                     ,p_token_4                 => 'PRODUCT_NAME'
40686                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40687                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40688                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40689                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40690                                     ,p_ae_header_id            =>  NULL
40691                                        );
40692 
40693         IF (C_LEVEL_ERROR>= g_log_level) THEN
40694                  trace
40695                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40696                       ,p_level    => C_LEVEL_ERROR
40697                       ,p_module   => l_log_module);
40698         END IF;
40699       END IF;
40700    END IF;
40701    --
40702    --
40703    ------------------------------------------------------------------------------------------------
40704    -- 4219869 Business Flow
40705    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40706    -- Prior Entry.  Currently, the following code is always generated.
40707    ------------------------------------------------------------------------------------------------
40708    XLA_AE_LINES_PKG.ValidateCurrentLine;
40709 
40710    ------------------------------------------------------------------------------------
40711    -- 4219869 Business Flow
40712    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40713    ------------------------------------------------------------------------------------
40714    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40715 
40716    ----------------------------------------------------------------------------------
40717    -- 4219869 Business Flow
40718    -- Update journal entry status -- Need to generate this within IF <condition>
40719    ----------------------------------------------------------------------------------
40720    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40721          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40722          ,p_balance_type_code => l_balance_type_code
40723          );
40724 
40725    -------------------------------------------------------------------------------------------
40726    -- 4262811 - Generate the Accrual Reversal lines
40727    -------------------------------------------------------------------------------------------
40728    BEGIN
40729       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40730                               (g_array_event(p_event_id).array_value_num('header_index'));
40731       IF l_acc_rev_flag IS NULL THEN
40732          l_acc_rev_flag := 'N';
40733       END IF;
40734    EXCEPTION
40735       WHEN OTHERS THEN
40736          l_acc_rev_flag := 'N';
40737    END;
40738    --
40739    IF (l_acc_rev_flag = 'Y') THEN
40740 
40741        -- 4645092  ------------------------------------------------------------------------------
40742        -- To allow MPA report to determine if it should generate report process
40743        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40744        ------------------------------------------------------------------------------------------
40748    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
40745 
40746        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40747        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40749    -- call ADRs
40750    -- Bug 4922099
40751    --
40752    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40753         (NVL(l_actual_upg_option, 'N') = 'O') OR
40754         (NVL(l_enc_upg_option, 'N') = 'O')
40755       )
40756    THEN
40757    NULL;
40758    --
40759    --
40760    
40761   l_ccid := AcctDerRule_24(
40762            p_application_id           => p_application_id
40763          , p_ae_header_id             => l_ae_header_id 
40764 , p_source_26 => p_source_26
40765          , x_transaction_coa_id       => l_adr_transaction_coa_id
40766          , x_accounting_coa_id        => l_adr_accounting_coa_id
40767          , x_value_type_code          => l_adr_value_type_code
40768          , p_side                     => 'NA'
40769    );
40770 
40771    xla_ae_lines_pkg.set_ccid(
40772     p_code_combination_id          => l_ccid
40773   , p_value_type_code              => l_adr_value_type_code
40774   , p_transaction_coa_id           => l_adr_transaction_coa_id
40775   , p_accounting_coa_id            => l_adr_accounting_coa_id
40776   , p_adr_code                     => 'TRX_DIST_CCID'
40777   , p_adr_type_code                => 'S'
40778   , p_component_type               => l_component_type
40779   , p_component_code               => l_component_code
40780   , p_component_type_code          => l_component_type_code
40781   , p_component_appl_id            => l_component_appl_id
40782   , p_amb_context_code             => l_amb_context_code
40783   , p_side                         => 'NA'
40784   );
40785 
40786 
40787    --
40788    --
40789    END IF;
40790 
40791        --
40792        -- Update the line information that should be overwritten
40793        --
40794        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40795                                          p_header_num   => 1);
40796        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40797 
40798        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40799 
40800        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40801           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40802        END IF;
40803 
40804       --
40805       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40806       --
40807       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40808           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40809       ELSE
40810           ---------------------------------------------------------------------------------------------------
40811           -- 4262811a Switch Sign
40812           ---------------------------------------------------------------------------------------------------
40813           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40814           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40815                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40816           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40817                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40818           -- 5132302
40819           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40820                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40821 
40822       END IF;
40823 
40824       -- 4955764
40825       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40826       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40827 
40828 
40829       XLA_AE_LINES_PKG.ValidateCurrentLine;
40830       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40831 
40832       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40833                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40834                ,p_balance_type_code => l_balance_type_code);
40835 
40836    END IF;
40837 
40838    -----------------------------------------------------------------------------------------
40839    -- 4262811 Multiperiod Accounting
40840    -----------------------------------------------------------------------------------------
40841      -- No MPA option is assigned.
40842 
40843 
40844 END IF;
40845 END IF;
40846 --
40847 
40848 --
40849 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40850    trace
40851       (p_msg      => 'END of AcctLineType_89'
40852       ,p_level    => C_LEVEL_PROCEDURE
40853       ,p_module   => l_log_module);
40854 END IF;
40855 --
40856 EXCEPTION
40857   WHEN xla_exceptions_pkg.application_exception THEN
40858       RAISE;
40859   WHEN OTHERS THEN
40860        xla_exceptions_pkg.raise_message
40861            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_89');
40862 END AcctLineType_89;
40863 --
40864 
40868 --         AcctLineType_90
40865 ---------------------------------------
40866 --
40867 -- PRIVATE FUNCTION
40869 --
40870 ---------------------------------------
40871 PROCEDURE AcctLineType_90 (
40872   p_application_id        IN NUMBER
40873  ,p_event_id              IN NUMBER
40874  ,p_calculate_acctd_flag  IN VARCHAR2
40875  ,p_calculate_g_l_flag    IN VARCHAR2
40876  ,p_actual_flag           IN OUT VARCHAR2
40877  ,p_balance_type_code     OUT VARCHAR2
40878  ,p_gain_or_loss_ref      OUT VARCHAR2
40879  
40880 --Distribution GL Account
40881  , p_source_22            IN NUMBER
40882 --Distribution Source Type
40883  , p_source_27            IN VARCHAR2
40884 --Distribution Line Identifier
40885  , p_source_29            IN NUMBER
40886 --Distribution Type
40887  , p_source_30            IN VARCHAR2
40888 --Entered Amount
40889  , p_source_31            IN NUMBER
40890 --Currency Code
40891  , p_source_32            IN VARCHAR2
40892 --Exchange Rate
40893  , p_source_34            IN NUMBER
40894 --Exchange Rate Type
40895  , p_source_35            IN VARCHAR2
40896 --Applied To Document Accounting Amount
40897  , p_source_36            IN NUMBER
40898 --Distribution Multi Fund Additional Entry
40899  , p_source_88            IN VARCHAR2
40900 --Applied To Document Exchange Date
40901  , p_source_89            IN DATE
40902 --Cash Receipt Identifier
40903  , p_source_90            IN NUMBER
40904 )
40905 IS
40906 
40907 l_component_type              VARCHAR2(80);
40908 l_component_code              VARCHAR2(30);
40909 l_component_type_code         VARCHAR2(1);
40910 l_component_appl_id           INTEGER;
40911 l_amb_context_code            VARCHAR2(30);
40912 l_entity_code                 VARCHAR2(30);
40913 l_event_class_code            VARCHAR2(30);
40914 l_ae_header_id                NUMBER;
40915 l_event_type_code             VARCHAR2(30);
40916 l_line_definition_code        VARCHAR2(30);
40917 l_line_definition_owner_code  VARCHAR2(1);
40918 --
40919 -- adr variables
40920 l_segment                     VARCHAR2(30);
40921 l_ccid                        NUMBER;
40922 l_adr_transaction_coa_id      NUMBER;
40923 l_adr_accounting_coa_id       NUMBER;
40924 l_adr_flexfield_segment_code  VARCHAR2(30);
40925 l_adr_flex_value_set_id       NUMBER;
40926 l_adr_value_type_code         VARCHAR2(30);
40927 l_adr_value_combination_id    NUMBER;
40928 l_adr_value_segment_code      VARCHAR2(30);
40929 
40930 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40931 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40932 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40933 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40934 
40935 -- 4262811 Variables ------------------------------------------------------------------------------------------
40936 l_entered_amt_idx             NUMBER;
40937 l_accted_amt_idx              NUMBER;
40938 l_acc_rev_flag                VARCHAR2(1);
40939 l_accrual_line_num            NUMBER;
40940 l_tmp_amt                     NUMBER;
40941 l_acc_rev_natural_side_code   VARCHAR2(1);
40942 
40943 l_num_entries                 NUMBER;
40944 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40945 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40946 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40947 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40948 l_recog_line_1                NUMBER;
40949 l_recog_line_2                NUMBER;
40950 
40951 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40952 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40953 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40954 
40955 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40956 
40957 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40958 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40959 
40960 ---------------------------------------------------------------------------------------------------------------
40961 
40962 
40963 --
40964 -- bulk performance
40965 --
40966 l_balance_type_code           VARCHAR2(1);
40967 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40968 l_log_module                  VARCHAR2(240);
40969 
40970 --
40971 -- Upgrade strategy
40972 --
40973 l_actual_upg_option           VARCHAR2(1);
40974 l_enc_upg_option           VARCHAR2(1);
40975 
40976 --
40977 BEGIN
40978 --
40979 IF g_log_enabled THEN
40980       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_90';
40981 END IF;
40982 --
40983 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40984 
40985       trace
40986          (p_msg      => 'BEGIN of AcctLineType_90'
40987          ,p_level    => C_LEVEL_PROCEDURE
40988          ,p_module   => l_log_module);
40989 
40990 END IF;
40991 --
40992 l_component_type             := 'AMB_JLT';
40993 l_component_code             := 'MISC_RCT_BNK_CHG';
40994 l_component_type_code        := 'S';
40995 l_component_appl_id          :=  222;
40996 l_amb_context_code           := 'DEFAULT';
40997 l_entity_code                := 'RECEIPTS';
41001 l_line_definition_code       := 'JA_CN_AR_MISC_RECEIPTS';
40998 l_event_class_code           := 'MISC_RECEIPT';
40999 l_event_type_code            := 'MISC_RECEIPT_ALL';
41000 l_line_definition_owner_code := 'S';
41002 --
41003 l_balance_type_code          := 'A';
41004 l_segment                     := NULL;
41005 l_ccid                        := NULL;
41006 l_adr_transaction_coa_id      := NULL;
41007 l_adr_accounting_coa_id       := NULL;
41008 l_adr_flexfield_segment_code  := NULL;
41009 l_adr_flex_value_set_id       := NULL;
41010 l_adr_value_type_code         := NULL;
41011 l_adr_value_combination_id    := NULL;
41012 l_adr_value_segment_code      := NULL;
41013 
41014 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41015 l_bflow_class_code           := '';    -- 4219869 Business Flow
41016 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41017 l_budgetary_control_flag     := 'N';
41018 
41019 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41020 l_bflow_applied_to_amt       := NULL; -- 5132302
41021 l_entered_amt_idx            := NULL;          -- 4262811
41022 l_accted_amt_idx             := NULL;          -- 4262811
41023 l_acc_rev_flag               := NULL;          -- 4262811
41024 l_accrual_line_num           := NULL;          -- 4262811
41025 l_tmp_amt                    := NULL;          -- 4262811
41026 --
41027  
41028 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41029     l_balance_type_code <> 'B' THEN
41030 IF NVL(p_source_27,'
41031 ') =  'BANK_CHARGES' AND 
41032 NVL(p_source_88,'
41033 ') =  'N'
41034  THEN 
41035 
41036    --
41037    XLA_AE_LINES_PKG.SetNewLine;
41038 
41039    p_balance_type_code          := l_balance_type_code;
41040    -- set the flag so later we will know whether the gain loss line needs to be created
41041    
41042    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41043      p_actual_flag :='A';
41044    END IF;
41045 
41046    --
41047    -- bulk performance
41048    --
41049    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41050                                       p_header_num   => 0); -- 4262811
41051    --
41052    -- set accounting line options
41053    --
41054    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41055            p_natural_side_code          => 'C'
41056          , p_gain_or_loss_flag          => 'N'
41057          , p_gl_transfer_mode_code      => 'S'
41058          , p_acct_entry_type_code       => 'A'
41059          , p_switch_side_flag           => 'Y'
41060          , p_merge_duplicate_code       => 'A'
41061          );
41062    --
41063    l_acc_rev_natural_side_code := 'D';  -- 4262811
41064    -- 
41065    --
41066    -- set accounting line type info
41067    --
41068    xla_ae_lines_pkg.SetAcctLineType
41069       (p_component_type             => l_component_type
41070       ,p_event_type_code            => l_event_type_code
41071       ,p_line_definition_owner_code => l_line_definition_owner_code
41072       ,p_line_definition_code       => l_line_definition_code
41073       ,p_accounting_line_code       => l_component_code
41074       ,p_accounting_line_type_code  => l_component_type_code
41075       ,p_accounting_line_appl_id    => l_component_appl_id
41076       ,p_amb_context_code           => l_amb_context_code
41077       ,p_entity_code                => l_entity_code
41078       ,p_event_class_code           => l_event_class_code);
41079    --
41080    -- set accounting class
41081    --
41082    xla_ae_lines_pkg.SetAcctClass(
41083            p_accounting_class_code  => 'BANK_CHG'
41084          , p_ae_header_id           => l_ae_header_id
41085          );
41086 
41087    --
41088    -- set rounding class
41089    --
41090    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41091                       'RECEIVABLE';
41092 
41093    --
41094    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41095    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41096    --
41097    -- bulk performance
41098    --
41099    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41100 
41101    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41102       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41103 
41104    -- 4955764
41105    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41106       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41107 
41108    -- 4458381 Public Sector Enh
41109    
41110    --
41111    -- set accounting attributes for the line type
41112    --
41113    l_entered_amt_idx := 3;
41114    l_accted_amt_idx  := 8;
41115    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41116    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41117    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
41118    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41119    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
41120    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41121    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
41122    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41126    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41123    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
41124    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41125    l_rec_acct_attrs.array_date_value(5)  := p_source_89;
41127    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
41128    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41129    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
41130    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41131    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
41132 
41133    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41134    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41135 
41136    ---------------------------------------------------------------------------------------------------------------
41137    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41138    ---------------------------------------------------------------------------------------------------------------
41139    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41140 
41141    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41142    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41143 
41144    IF xla_accounting_cache_pkg.GetValueChar
41145          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41146          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41147    AND l_bflow_method_code = 'PRIOR_ENTRY'
41148 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41149    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41150          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41151        )
41152    THEN
41153          xla_ae_lines_pkg.BflowUpgEntry
41154            (p_business_method_code    => l_bflow_method_code
41155            ,p_business_class_code     => l_bflow_class_code
41156            ,p_balance_type            => l_balance_type_code);
41157    ELSE
41158       NULL;
41159 -- No business flow processing for business flow method of NONE.
41160    END IF;
41161 
41162    --
41163    -- call analytical criteria
41164    --
41165    
41166 
41167 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
41168 xla_ae_lines_pkg.SetAnalyticalCriteria(
41169    p_analytical_criterion_name    => 'Check Id'
41170  , p_analytical_criterion_owner   => 'S'
41171  , p_analytical_criterion_code    => 'CHECK_ID'
41172  , p_amb_context_code             => 'DEFAULT'
41173  , p_balancing_flag               => 'N'
41174  
41175  , p_analytical_detail_char_1    =>  NULL
41176  , p_analytical_detail_num_1     =>  p_source_90
41177  , p_analytical_detail_date_1    =>  NULL
41178 
41179  , p_ae_header_id                 => l_ae_header_id
41180 )
41181 ;
41182 --
41183 
41184    --
41185    -- call description
41186    --
41187    -- No description or it is inherited.
41188    --
41189    -- call ADRs
41190    -- Bug 4922099
41191    --
41192    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41193         (NVL(l_actual_upg_option, 'N') = 'O') OR
41194         (NVL(l_enc_upg_option, 'N') = 'O')
41195       )
41196    THEN
41197    NULL;
41198    --
41199    --
41200    
41201   l_ccid := AcctDerRule_20(
41202            p_application_id           => p_application_id
41203          , p_ae_header_id             => l_ae_header_id 
41204 , p_source_22 => p_source_22
41205          , x_transaction_coa_id       => l_adr_transaction_coa_id
41206          , x_accounting_coa_id        => l_adr_accounting_coa_id
41207          , x_value_type_code          => l_adr_value_type_code
41208          , p_side                     => 'NA'
41209    );
41210 
41211    xla_ae_lines_pkg.set_ccid(
41212     p_code_combination_id          => l_ccid
41213   , p_value_type_code              => l_adr_value_type_code
41214   , p_transaction_coa_id           => l_adr_transaction_coa_id
41215   , p_accounting_coa_id            => l_adr_accounting_coa_id
41216   , p_adr_code                     => 'DIST_CCID'
41217   , p_adr_type_code                => 'S'
41218   , p_component_type               => l_component_type
41219   , p_component_code               => l_component_code
41220   , p_component_type_code          => l_component_type_code
41221   , p_component_appl_id            => l_component_appl_id
41222   , p_amb_context_code             => l_amb_context_code
41223   , p_side                         => 'NA'
41224   );
41225 
41226 
41227    --
41228    --
41229    END IF;
41230    --
41231    -- Bug 4922099
41232    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41233           (NVL(l_enc_upg_option, 'N') = 'O')
41234         ) AND
41235         (l_bflow_method_code = 'PRIOR_ENTRY')
41236       )
41237    THEN
41238       IF
41239       --
41240       1 = 2
41241       --
41242       THEN
41243       xla_accounting_err_pkg.build_message
41244                                     (p_appli_s_name            => 'XLA'
41245                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41246                                     ,p_token_1                 => 'LINE_NUMBER'
41250                                                                              l_component_type
41247                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41248                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41249                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41251                                                                             ,l_component_code
41252                                                                             ,l_component_type_code
41253                                                                             ,l_component_appl_id
41254                                                                             ,l_amb_context_code
41255                                                                             ,l_entity_code
41256                                                                             ,l_event_class_code
41257                                                                            )
41258                                     ,p_token_3                 => 'OWNER'
41259                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41260                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41261                                                                           ,p_lookup_code    => l_component_type_code
41262                                                                          )
41263                                     ,p_token_4                 => 'PRODUCT_NAME'
41264                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41265                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41266                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41267                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41268                                     ,p_ae_header_id            =>  NULL
41269                                        );
41270 
41271         IF (C_LEVEL_ERROR>= g_log_level) THEN
41272                  trace
41273                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41274                       ,p_level    => C_LEVEL_ERROR
41275                       ,p_module   => l_log_module);
41276         END IF;
41277       END IF;
41278    END IF;
41279    --
41280    --
41281    ------------------------------------------------------------------------------------------------
41282    -- 4219869 Business Flow
41283    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41284    -- Prior Entry.  Currently, the following code is always generated.
41285    ------------------------------------------------------------------------------------------------
41286    XLA_AE_LINES_PKG.ValidateCurrentLine;
41287 
41288    ------------------------------------------------------------------------------------
41289    -- 4219869 Business Flow
41290    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41291    ------------------------------------------------------------------------------------
41292    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41293 
41294    ----------------------------------------------------------------------------------
41295    -- 4219869 Business Flow
41296    -- Update journal entry status -- Need to generate this within IF <condition>
41297    ----------------------------------------------------------------------------------
41298    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41299          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41300          ,p_balance_type_code => l_balance_type_code
41301          );
41302 
41303    -------------------------------------------------------------------------------------------
41304    -- 4262811 - Generate the Accrual Reversal lines
41305    -------------------------------------------------------------------------------------------
41306    BEGIN
41307       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41308                               (g_array_event(p_event_id).array_value_num('header_index'));
41309       IF l_acc_rev_flag IS NULL THEN
41310          l_acc_rev_flag := 'N';
41311       END IF;
41312    EXCEPTION
41313       WHEN OTHERS THEN
41314          l_acc_rev_flag := 'N';
41315    END;
41316    --
41317    IF (l_acc_rev_flag = 'Y') THEN
41318 
41319        -- 4645092  ------------------------------------------------------------------------------
41320        -- To allow MPA report to determine if it should generate report process
41321        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41322        ------------------------------------------------------------------------------------------
41323 
41324        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41325        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41326    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
41327    -- call ADRs
41328    -- Bug 4922099
41329    --
41330    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41331         (NVL(l_actual_upg_option, 'N') = 'O') OR
41332         (NVL(l_enc_upg_option, 'N') = 'O')
41333       )
41334    THEN
41335    NULL;
41336    --
41337    --
41338    
41339   l_ccid := AcctDerRule_20(
41340            p_application_id           => p_application_id
41341          , p_ae_header_id             => l_ae_header_id 
41345          , x_value_type_code          => l_adr_value_type_code
41342 , p_source_22 => p_source_22
41343          , x_transaction_coa_id       => l_adr_transaction_coa_id
41344          , x_accounting_coa_id        => l_adr_accounting_coa_id
41346          , p_side                     => 'NA'
41347    );
41348 
41349    xla_ae_lines_pkg.set_ccid(
41350     p_code_combination_id          => l_ccid
41351   , p_value_type_code              => l_adr_value_type_code
41352   , p_transaction_coa_id           => l_adr_transaction_coa_id
41353   , p_accounting_coa_id            => l_adr_accounting_coa_id
41354   , p_adr_code                     => 'DIST_CCID'
41355   , p_adr_type_code                => 'S'
41356   , p_component_type               => l_component_type
41357   , p_component_code               => l_component_code
41358   , p_component_type_code          => l_component_type_code
41359   , p_component_appl_id            => l_component_appl_id
41360   , p_amb_context_code             => l_amb_context_code
41361   , p_side                         => 'NA'
41362   );
41363 
41364 
41365    --
41366    --
41367    END IF;
41368 
41369        --
41370        -- Update the line information that should be overwritten
41371        --
41372        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41373                                          p_header_num   => 1);
41374        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41375 
41376        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41377 
41378        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41379           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41380        END IF;
41381 
41382       --
41383       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41384       --
41385       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41386           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41387       ELSE
41388           ---------------------------------------------------------------------------------------------------
41389           -- 4262811a Switch Sign
41390           ---------------------------------------------------------------------------------------------------
41391           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41392           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41393                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41394           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41395                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41396           -- 5132302
41397           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41398                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41399 
41400       END IF;
41401 
41402       -- 4955764
41403       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41404       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41405 
41406 
41407       XLA_AE_LINES_PKG.ValidateCurrentLine;
41408       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41409 
41410       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41411                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41412                ,p_balance_type_code => l_balance_type_code);
41413 
41414    END IF;
41415 
41416    -----------------------------------------------------------------------------------------
41417    -- 4262811 Multiperiod Accounting
41418    -----------------------------------------------------------------------------------------
41419      -- No MPA option is assigned.
41420 
41421 
41422 END IF;
41423 END IF;
41424 --
41425 
41426 --
41427 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41428    trace
41429       (p_msg      => 'END of AcctLineType_90'
41430       ,p_level    => C_LEVEL_PROCEDURE
41431       ,p_module   => l_log_module);
41432 END IF;
41433 --
41434 EXCEPTION
41435   WHEN xla_exceptions_pkg.application_exception THEN
41436       RAISE;
41437   WHEN OTHERS THEN
41438        xla_exceptions_pkg.raise_message
41439            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_90');
41440 END AcctLineType_90;
41441 --
41442 
41443 ---------------------------------------
41444 --
41445 -- PRIVATE FUNCTION
41446 --         AcctLineType_91
41447 --
41448 ---------------------------------------
41449 PROCEDURE AcctLineType_91 (
41450   p_application_id        IN NUMBER
41451  ,p_event_id              IN NUMBER
41452  ,p_calculate_acctd_flag  IN VARCHAR2
41453  ,p_calculate_g_l_flag    IN VARCHAR2
41454  ,p_actual_flag           IN OUT VARCHAR2
41455  ,p_balance_type_code     OUT VARCHAR2
41456  ,p_gain_or_loss_ref      OUT VARCHAR2
41457  
41458 --Distribution GL Account
41459  , p_source_22            IN NUMBER
41460 --Distribution Source Type
41461  , p_source_27            IN VARCHAR2
41465  , p_source_30            IN VARCHAR2
41462 --Distribution Line Identifier
41463  , p_source_29            IN NUMBER
41464 --Distribution Type
41466 --Entered Amount
41467  , p_source_31            IN NUMBER
41468 --Currency Code
41469  , p_source_32            IN VARCHAR2
41470 --Exchange Rate
41471  , p_source_34            IN NUMBER
41472 --Exchange Rate Type
41473  , p_source_35            IN VARCHAR2
41474 --Applied To Document Accounting Amount
41475  , p_source_36            IN NUMBER
41476 --Distribution Multi Fund Additional Entry
41477  , p_source_88            IN VARCHAR2
41478 --Applied To Document Exchange Date
41479  , p_source_89            IN DATE
41480 --Cash Receipt Identifier
41481  , p_source_90            IN NUMBER
41482 )
41483 IS
41484 
41485 l_component_type              VARCHAR2(80);
41486 l_component_code              VARCHAR2(30);
41487 l_component_type_code         VARCHAR2(1);
41488 l_component_appl_id           INTEGER;
41489 l_amb_context_code            VARCHAR2(30);
41490 l_entity_code                 VARCHAR2(30);
41491 l_event_class_code            VARCHAR2(30);
41492 l_ae_header_id                NUMBER;
41493 l_event_type_code             VARCHAR2(30);
41494 l_line_definition_code        VARCHAR2(30);
41495 l_line_definition_owner_code  VARCHAR2(1);
41496 --
41497 -- adr variables
41498 l_segment                     VARCHAR2(30);
41499 l_ccid                        NUMBER;
41500 l_adr_transaction_coa_id      NUMBER;
41501 l_adr_accounting_coa_id       NUMBER;
41502 l_adr_flexfield_segment_code  VARCHAR2(30);
41503 l_adr_flex_value_set_id       NUMBER;
41504 l_adr_value_type_code         VARCHAR2(30);
41505 l_adr_value_combination_id    NUMBER;
41506 l_adr_value_segment_code      VARCHAR2(30);
41507 
41508 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41509 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41510 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41511 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41512 
41513 -- 4262811 Variables ------------------------------------------------------------------------------------------
41514 l_entered_amt_idx             NUMBER;
41515 l_accted_amt_idx              NUMBER;
41516 l_acc_rev_flag                VARCHAR2(1);
41517 l_accrual_line_num            NUMBER;
41518 l_tmp_amt                     NUMBER;
41519 l_acc_rev_natural_side_code   VARCHAR2(1);
41520 
41521 l_num_entries                 NUMBER;
41522 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41523 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41524 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41525 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41526 l_recog_line_1                NUMBER;
41527 l_recog_line_2                NUMBER;
41528 
41529 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41530 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41531 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41532 
41533 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41534 
41535 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41536 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41537 
41538 ---------------------------------------------------------------------------------------------------------------
41539 
41540 
41541 --
41542 -- bulk performance
41543 --
41544 l_balance_type_code           VARCHAR2(1);
41545 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41546 l_log_module                  VARCHAR2(240);
41547 
41548 --
41549 -- Upgrade strategy
41550 --
41551 l_actual_upg_option           VARCHAR2(1);
41552 l_enc_upg_option           VARCHAR2(1);
41553 
41554 --
41555 BEGIN
41556 --
41557 IF g_log_enabled THEN
41558       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_91';
41559 END IF;
41560 --
41561 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41562 
41563       trace
41564          (p_msg      => 'BEGIN of AcctLineType_91'
41565          ,p_level    => C_LEVEL_PROCEDURE
41566          ,p_module   => l_log_module);
41567 
41568 END IF;
41569 --
41570 l_component_type             := 'AMB_JLT';
41571 l_component_code             := 'MISC_RCT_CASH';
41572 l_component_type_code        := 'S';
41573 l_component_appl_id          :=  222;
41574 l_amb_context_code           := 'DEFAULT';
41575 l_entity_code                := 'RECEIPTS';
41576 l_event_class_code           := 'MISC_RECEIPT';
41577 l_event_type_code            := 'MISC_RECEIPT_ALL';
41578 l_line_definition_owner_code := 'S';
41579 l_line_definition_code       := 'JA_CN_AR_MISC_RECEIPTS';
41580 --
41581 l_balance_type_code          := 'A';
41582 l_segment                     := NULL;
41583 l_ccid                        := NULL;
41584 l_adr_transaction_coa_id      := NULL;
41585 l_adr_accounting_coa_id       := NULL;
41586 l_adr_flexfield_segment_code  := NULL;
41587 l_adr_flex_value_set_id       := NULL;
41588 l_adr_value_type_code         := NULL;
41589 l_adr_value_combination_id    := NULL;
41590 l_adr_value_segment_code      := NULL;
41591 
41592 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41596 
41593 l_bflow_class_code           := '';    -- 4219869 Business Flow
41594 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41595 l_budgetary_control_flag     := 'N';
41597 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41598 l_bflow_applied_to_amt       := NULL; -- 5132302
41599 l_entered_amt_idx            := NULL;          -- 4262811
41600 l_accted_amt_idx             := NULL;          -- 4262811
41601 l_acc_rev_flag               := NULL;          -- 4262811
41602 l_accrual_line_num           := NULL;          -- 4262811
41603 l_tmp_amt                    := NULL;          -- 4262811
41604 --
41605  
41606 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41607     l_balance_type_code <> 'B' THEN
41608 IF NVL(p_source_27,'
41609 ') =  'CASH' AND 
41610 NVL(p_source_88,'
41611 ') =  'N'
41612  THEN 
41613 
41614    --
41615    XLA_AE_LINES_PKG.SetNewLine;
41616 
41617    p_balance_type_code          := l_balance_type_code;
41618    -- set the flag so later we will know whether the gain loss line needs to be created
41619    
41620    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41621      p_actual_flag :='A';
41622    END IF;
41623 
41624    --
41625    -- bulk performance
41626    --
41627    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41628                                       p_header_num   => 0); -- 4262811
41629    --
41630    -- set accounting line options
41631    --
41632    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41633            p_natural_side_code          => 'C'
41634          , p_gain_or_loss_flag          => 'N'
41635          , p_gl_transfer_mode_code      => 'S'
41636          , p_acct_entry_type_code       => 'A'
41637          , p_switch_side_flag           => 'Y'
41638          , p_merge_duplicate_code       => 'A'
41639          );
41640    --
41641    l_acc_rev_natural_side_code := 'D';  -- 4262811
41642    -- 
41643    --
41644    -- set accounting line type info
41645    --
41646    xla_ae_lines_pkg.SetAcctLineType
41647       (p_component_type             => l_component_type
41648       ,p_event_type_code            => l_event_type_code
41649       ,p_line_definition_owner_code => l_line_definition_owner_code
41650       ,p_line_definition_code       => l_line_definition_code
41651       ,p_accounting_line_code       => l_component_code
41652       ,p_accounting_line_type_code  => l_component_type_code
41653       ,p_accounting_line_appl_id    => l_component_appl_id
41654       ,p_amb_context_code           => l_amb_context_code
41655       ,p_entity_code                => l_entity_code
41656       ,p_event_class_code           => l_event_class_code);
41657    --
41658    -- set accounting class
41659    --
41660    xla_ae_lines_pkg.SetAcctClass(
41661            p_accounting_class_code  => 'CASH'
41662          , p_ae_header_id           => l_ae_header_id
41663          );
41664 
41665    --
41666    -- set rounding class
41667    --
41668    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41669                       'RECEIVABLE';
41670 
41671    --
41672    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41673    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41674    --
41675    -- bulk performance
41676    --
41677    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41678 
41679    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41680       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41681 
41682    -- 4955764
41683    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41684       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41685 
41686    -- 4458381 Public Sector Enh
41687    
41688    --
41689    -- set accounting attributes for the line type
41690    --
41691    l_entered_amt_idx := 3;
41692    l_accted_amt_idx  := 8;
41693    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41694    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41695    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
41696    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41697    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
41698    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41699    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
41700    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41701    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
41702    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41703    l_rec_acct_attrs.array_date_value(5)  := p_source_89;
41704    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41705    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
41706    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41707    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
41708    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41709    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
41710 
41711    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41712    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41713 
41717    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41714    ---------------------------------------------------------------------------------------------------------------
41715    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41716    ---------------------------------------------------------------------------------------------------------------
41718 
41719    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41720    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41721 
41722    IF xla_accounting_cache_pkg.GetValueChar
41723          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41724          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41725    AND l_bflow_method_code = 'PRIOR_ENTRY'
41726 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41727    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41728          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41729        )
41730    THEN
41731          xla_ae_lines_pkg.BflowUpgEntry
41732            (p_business_method_code    => l_bflow_method_code
41733            ,p_business_class_code     => l_bflow_class_code
41734            ,p_balance_type            => l_balance_type_code);
41735    ELSE
41736       NULL;
41737 -- No business flow processing for business flow method of NONE.
41738    END IF;
41739 
41740    --
41741    -- call analytical criteria
41742    --
41743    
41744 
41745 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
41746 xla_ae_lines_pkg.SetAnalyticalCriteria(
41747    p_analytical_criterion_name    => 'Check Id'
41748  , p_analytical_criterion_owner   => 'S'
41749  , p_analytical_criterion_code    => 'CHECK_ID'
41750  , p_amb_context_code             => 'DEFAULT'
41751  , p_balancing_flag               => 'N'
41752  
41753  , p_analytical_detail_char_1    =>  NULL
41754  , p_analytical_detail_num_1     =>  p_source_90
41755  , p_analytical_detail_date_1    =>  NULL
41756 
41757  , p_ae_header_id                 => l_ae_header_id
41758 )
41759 ;
41760 --
41761 
41762    --
41763    -- call description
41764    --
41765    -- No description or it is inherited.
41766    --
41767    -- call ADRs
41768    -- Bug 4922099
41769    --
41770    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41771         (NVL(l_actual_upg_option, 'N') = 'O') OR
41772         (NVL(l_enc_upg_option, 'N') = 'O')
41773       )
41774    THEN
41775    NULL;
41776    --
41777    --
41778    
41779   l_ccid := AcctDerRule_20(
41780            p_application_id           => p_application_id
41781          , p_ae_header_id             => l_ae_header_id 
41782 , p_source_22 => p_source_22
41783          , x_transaction_coa_id       => l_adr_transaction_coa_id
41784          , x_accounting_coa_id        => l_adr_accounting_coa_id
41785          , x_value_type_code          => l_adr_value_type_code
41786          , p_side                     => 'NA'
41787    );
41788 
41789    xla_ae_lines_pkg.set_ccid(
41790     p_code_combination_id          => l_ccid
41791   , p_value_type_code              => l_adr_value_type_code
41792   , p_transaction_coa_id           => l_adr_transaction_coa_id
41793   , p_accounting_coa_id            => l_adr_accounting_coa_id
41794   , p_adr_code                     => 'DIST_CCID'
41795   , p_adr_type_code                => 'S'
41796   , p_component_type               => l_component_type
41797   , p_component_code               => l_component_code
41798   , p_component_type_code          => l_component_type_code
41799   , p_component_appl_id            => l_component_appl_id
41800   , p_amb_context_code             => l_amb_context_code
41801   , p_side                         => 'NA'
41802   );
41803 
41804 
41805    --
41806    --
41807    END IF;
41808    --
41809    -- Bug 4922099
41810    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41811           (NVL(l_enc_upg_option, 'N') = 'O')
41812         ) AND
41813         (l_bflow_method_code = 'PRIOR_ENTRY')
41814       )
41815    THEN
41816       IF
41817       --
41818       1 = 2
41819       --
41820       THEN
41821       xla_accounting_err_pkg.build_message
41822                                     (p_appli_s_name            => 'XLA'
41823                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41824                                     ,p_token_1                 => 'LINE_NUMBER'
41825                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41826                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41827                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41828                                                                              l_component_type
41829                                                                             ,l_component_code
41830                                                                             ,l_component_type_code
41831                                                                             ,l_component_appl_id
41832                                                                             ,l_amb_context_code
41833                                                                             ,l_entity_code
41837                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41834                                                                             ,l_event_class_code
41835                                                                            )
41836                                     ,p_token_3                 => 'OWNER'
41838                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41839                                                                           ,p_lookup_code    => l_component_type_code
41840                                                                          )
41841                                     ,p_token_4                 => 'PRODUCT_NAME'
41842                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41843                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41844                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41845                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41846                                     ,p_ae_header_id            =>  NULL
41847                                        );
41848 
41849         IF (C_LEVEL_ERROR>= g_log_level) THEN
41850                  trace
41851                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41852                       ,p_level    => C_LEVEL_ERROR
41853                       ,p_module   => l_log_module);
41854         END IF;
41855       END IF;
41856    END IF;
41857    --
41858    --
41859    ------------------------------------------------------------------------------------------------
41860    -- 4219869 Business Flow
41861    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41862    -- Prior Entry.  Currently, the following code is always generated.
41863    ------------------------------------------------------------------------------------------------
41864    XLA_AE_LINES_PKG.ValidateCurrentLine;
41865 
41866    ------------------------------------------------------------------------------------
41867    -- 4219869 Business Flow
41868    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41869    ------------------------------------------------------------------------------------
41870    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41871 
41872    ----------------------------------------------------------------------------------
41873    -- 4219869 Business Flow
41874    -- Update journal entry status -- Need to generate this within IF <condition>
41875    ----------------------------------------------------------------------------------
41876    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41877          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41878          ,p_balance_type_code => l_balance_type_code
41879          );
41880 
41881    -------------------------------------------------------------------------------------------
41882    -- 4262811 - Generate the Accrual Reversal lines
41883    -------------------------------------------------------------------------------------------
41884    BEGIN
41885       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41886                               (g_array_event(p_event_id).array_value_num('header_index'));
41887       IF l_acc_rev_flag IS NULL THEN
41888          l_acc_rev_flag := 'N';
41889       END IF;
41890    EXCEPTION
41891       WHEN OTHERS THEN
41892          l_acc_rev_flag := 'N';
41893    END;
41894    --
41895    IF (l_acc_rev_flag = 'Y') THEN
41896 
41897        -- 4645092  ------------------------------------------------------------------------------
41898        -- To allow MPA report to determine if it should generate report process
41899        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41900        ------------------------------------------------------------------------------------------
41901 
41902        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41903        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41904    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
41905    -- call ADRs
41906    -- Bug 4922099
41907    --
41908    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41909         (NVL(l_actual_upg_option, 'N') = 'O') OR
41910         (NVL(l_enc_upg_option, 'N') = 'O')
41911       )
41912    THEN
41913    NULL;
41914    --
41915    --
41916    
41917   l_ccid := AcctDerRule_20(
41918            p_application_id           => p_application_id
41919          , p_ae_header_id             => l_ae_header_id 
41920 , p_source_22 => p_source_22
41921          , x_transaction_coa_id       => l_adr_transaction_coa_id
41922          , x_accounting_coa_id        => l_adr_accounting_coa_id
41923          , x_value_type_code          => l_adr_value_type_code
41924          , p_side                     => 'NA'
41925    );
41926 
41927    xla_ae_lines_pkg.set_ccid(
41928     p_code_combination_id          => l_ccid
41929   , p_value_type_code              => l_adr_value_type_code
41930   , p_transaction_coa_id           => l_adr_transaction_coa_id
41931   , p_accounting_coa_id            => l_adr_accounting_coa_id
41932   , p_adr_code                     => 'DIST_CCID'
41933   , p_adr_type_code                => 'S'
41934   , p_component_type               => l_component_type
41938   , p_amb_context_code             => l_amb_context_code
41935   , p_component_code               => l_component_code
41936   , p_component_type_code          => l_component_type_code
41937   , p_component_appl_id            => l_component_appl_id
41939   , p_side                         => 'NA'
41940   );
41941 
41942 
41943    --
41944    --
41945    END IF;
41946 
41947        --
41948        -- Update the line information that should be overwritten
41949        --
41950        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41951                                          p_header_num   => 1);
41952        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41953 
41954        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41955 
41956        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41957           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41958        END IF;
41959 
41960       --
41961       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41962       --
41963       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41964           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41965       ELSE
41966           ---------------------------------------------------------------------------------------------------
41967           -- 4262811a Switch Sign
41968           ---------------------------------------------------------------------------------------------------
41969           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41970           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41971                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41972           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41973                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41974           -- 5132302
41975           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41976                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41977 
41978       END IF;
41979 
41980       -- 4955764
41981       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41982       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41983 
41984 
41985       XLA_AE_LINES_PKG.ValidateCurrentLine;
41986       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41987 
41988       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41989                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41990                ,p_balance_type_code => l_balance_type_code);
41991 
41992    END IF;
41993 
41994    -----------------------------------------------------------------------------------------
41995    -- 4262811 Multiperiod Accounting
41996    -----------------------------------------------------------------------------------------
41997      -- No MPA option is assigned.
41998 
41999 
42000 END IF;
42001 END IF;
42002 --
42003 
42004 --
42005 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42006    trace
42007       (p_msg      => 'END of AcctLineType_91'
42008       ,p_level    => C_LEVEL_PROCEDURE
42009       ,p_module   => l_log_module);
42010 END IF;
42011 --
42012 EXCEPTION
42013   WHEN xla_exceptions_pkg.application_exception THEN
42014       RAISE;
42015   WHEN OTHERS THEN
42016        xla_exceptions_pkg.raise_message
42017            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_91');
42018 END AcctLineType_91;
42019 --
42020 
42021 ---------------------------------------
42022 --
42023 -- PRIVATE FUNCTION
42024 --         AcctLineType_92
42025 --
42026 ---------------------------------------
42027 PROCEDURE AcctLineType_92 (
42028   p_application_id        IN NUMBER
42029  ,p_event_id              IN NUMBER
42030  ,p_calculate_acctd_flag  IN VARCHAR2
42031  ,p_calculate_g_l_flag    IN VARCHAR2
42032  ,p_actual_flag           IN OUT VARCHAR2
42033  ,p_balance_type_code     OUT VARCHAR2
42034  ,p_gain_or_loss_ref      OUT VARCHAR2
42035  
42036 --Distribution GL Account
42037  , p_source_22            IN NUMBER
42038 --Distribution Source Type
42039  , p_source_27            IN VARCHAR2
42040 --Distribution Line Identifier
42041  , p_source_29            IN NUMBER
42042 --Distribution Type
42043  , p_source_30            IN VARCHAR2
42044 --Entered Amount
42045  , p_source_31            IN NUMBER
42046 --Currency Code
42047  , p_source_32            IN VARCHAR2
42048 --Exchange Rate
42049  , p_source_34            IN NUMBER
42050 --Exchange Rate Type
42051  , p_source_35            IN VARCHAR2
42052 --Applied To Document Accounting Amount
42053  , p_source_36            IN NUMBER
42054 --Distribution Multi Fund Additional Entry
42055  , p_source_88            IN VARCHAR2
42056 --Applied To Document Exchange Date
42057  , p_source_89            IN DATE
42058 --Cash Receipt Identifier
42059  , p_source_90            IN NUMBER
42063 l_component_type              VARCHAR2(80);
42060 )
42061 IS
42062 
42064 l_component_code              VARCHAR2(30);
42065 l_component_type_code         VARCHAR2(1);
42066 l_component_appl_id           INTEGER;
42067 l_amb_context_code            VARCHAR2(30);
42068 l_entity_code                 VARCHAR2(30);
42069 l_event_class_code            VARCHAR2(30);
42070 l_ae_header_id                NUMBER;
42071 l_event_type_code             VARCHAR2(30);
42072 l_line_definition_code        VARCHAR2(30);
42073 l_line_definition_owner_code  VARCHAR2(1);
42074 --
42075 -- adr variables
42076 l_segment                     VARCHAR2(30);
42077 l_ccid                        NUMBER;
42078 l_adr_transaction_coa_id      NUMBER;
42079 l_adr_accounting_coa_id       NUMBER;
42080 l_adr_flexfield_segment_code  VARCHAR2(30);
42081 l_adr_flex_value_set_id       NUMBER;
42082 l_adr_value_type_code         VARCHAR2(30);
42083 l_adr_value_combination_id    NUMBER;
42084 l_adr_value_segment_code      VARCHAR2(30);
42085 
42086 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42087 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42088 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42089 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42090 
42091 -- 4262811 Variables ------------------------------------------------------------------------------------------
42092 l_entered_amt_idx             NUMBER;
42093 l_accted_amt_idx              NUMBER;
42094 l_acc_rev_flag                VARCHAR2(1);
42095 l_accrual_line_num            NUMBER;
42096 l_tmp_amt                     NUMBER;
42097 l_acc_rev_natural_side_code   VARCHAR2(1);
42098 
42099 l_num_entries                 NUMBER;
42100 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42101 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42102 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42103 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42104 l_recog_line_1                NUMBER;
42105 l_recog_line_2                NUMBER;
42106 
42107 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42108 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42109 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42110 
42111 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42112 
42113 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42114 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42115 
42116 ---------------------------------------------------------------------------------------------------------------
42117 
42118 
42119 --
42120 -- bulk performance
42121 --
42122 l_balance_type_code           VARCHAR2(1);
42123 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42124 l_log_module                  VARCHAR2(240);
42125 
42126 --
42127 -- Upgrade strategy
42128 --
42129 l_actual_upg_option           VARCHAR2(1);
42130 l_enc_upg_option           VARCHAR2(1);
42131 
42132 --
42133 BEGIN
42134 --
42135 IF g_log_enabled THEN
42136       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_92';
42137 END IF;
42138 --
42139 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42140 
42141       trace
42142          (p_msg      => 'BEGIN of AcctLineType_92'
42143          ,p_level    => C_LEVEL_PROCEDURE
42144          ,p_module   => l_log_module);
42145 
42146 END IF;
42147 --
42148 l_component_type             := 'AMB_JLT';
42149 l_component_code             := 'MISC_RCT_CONFIRM';
42150 l_component_type_code        := 'S';
42151 l_component_appl_id          :=  222;
42152 l_amb_context_code           := 'DEFAULT';
42153 l_entity_code                := 'RECEIPTS';
42154 l_event_class_code           := 'MISC_RECEIPT';
42155 l_event_type_code            := 'MISC_RECEIPT_ALL';
42156 l_line_definition_owner_code := 'S';
42157 l_line_definition_code       := 'JA_CN_AR_MISC_RECEIPTS';
42158 --
42159 l_balance_type_code          := 'A';
42160 l_segment                     := NULL;
42161 l_ccid                        := NULL;
42162 l_adr_transaction_coa_id      := NULL;
42163 l_adr_accounting_coa_id       := NULL;
42164 l_adr_flexfield_segment_code  := NULL;
42165 l_adr_flex_value_set_id       := NULL;
42166 l_adr_value_type_code         := NULL;
42167 l_adr_value_combination_id    := NULL;
42168 l_adr_value_segment_code      := NULL;
42169 
42170 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
42171 l_bflow_class_code           := '';    -- 4219869 Business Flow
42172 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42173 l_budgetary_control_flag     := 'N';
42174 
42175 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42176 l_bflow_applied_to_amt       := NULL; -- 5132302
42177 l_entered_amt_idx            := NULL;          -- 4262811
42178 l_accted_amt_idx             := NULL;          -- 4262811
42179 l_acc_rev_flag               := NULL;          -- 4262811
42180 l_accrual_line_num           := NULL;          -- 4262811
42181 l_tmp_amt                    := NULL;          -- 4262811
42182 --
42183  
42184 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42185     l_balance_type_code <> 'B' THEN
42186 IF NVL(p_source_27,'
42187 ') =  'CONFIRMATION' AND 
42188 NVL(p_source_88,'
42192    --
42189 ') =  'N'
42190  THEN 
42191 
42193    XLA_AE_LINES_PKG.SetNewLine;
42194 
42195    p_balance_type_code          := l_balance_type_code;
42196    -- set the flag so later we will know whether the gain loss line needs to be created
42197    
42198    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42199      p_actual_flag :='A';
42200    END IF;
42201 
42202    --
42203    -- bulk performance
42204    --
42205    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42206                                       p_header_num   => 0); -- 4262811
42207    --
42208    -- set accounting line options
42209    --
42210    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42211            p_natural_side_code          => 'C'
42212          , p_gain_or_loss_flag          => 'N'
42213          , p_gl_transfer_mode_code      => 'S'
42214          , p_acct_entry_type_code       => 'A'
42215          , p_switch_side_flag           => 'Y'
42216          , p_merge_duplicate_code       => 'A'
42217          );
42218    --
42219    l_acc_rev_natural_side_code := 'D';  -- 4262811
42220    -- 
42221    --
42222    -- set accounting line type info
42223    --
42224    xla_ae_lines_pkg.SetAcctLineType
42225       (p_component_type             => l_component_type
42226       ,p_event_type_code            => l_event_type_code
42227       ,p_line_definition_owner_code => l_line_definition_owner_code
42228       ,p_line_definition_code       => l_line_definition_code
42229       ,p_accounting_line_code       => l_component_code
42230       ,p_accounting_line_type_code  => l_component_type_code
42231       ,p_accounting_line_appl_id    => l_component_appl_id
42232       ,p_amb_context_code           => l_amb_context_code
42233       ,p_entity_code                => l_entity_code
42234       ,p_event_class_code           => l_event_class_code);
42235    --
42236    -- set accounting class
42237    --
42238    xla_ae_lines_pkg.SetAcctClass(
42239            p_accounting_class_code  => 'CONFIRMATION'
42240          , p_ae_header_id           => l_ae_header_id
42241          );
42242 
42243    --
42244    -- set rounding class
42245    --
42246    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42247                       'RECEIVABLE';
42248 
42249    --
42250    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42251    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42252    --
42253    -- bulk performance
42254    --
42255    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42256 
42257    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42258       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42259 
42260    -- 4955764
42261    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42262       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42263 
42264    -- 4458381 Public Sector Enh
42265    
42266    --
42267    -- set accounting attributes for the line type
42268    --
42269    l_entered_amt_idx := 3;
42270    l_accted_amt_idx  := 8;
42271    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
42272    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
42273    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
42274    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
42275    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
42276    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
42277    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
42278    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
42279    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
42280    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
42281    l_rec_acct_attrs.array_date_value(5)  := p_source_89;
42282    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
42283    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
42284    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
42285    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
42286    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
42287    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
42288 
42289    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42290    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42291 
42292    ---------------------------------------------------------------------------------------------------------------
42293    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42294    ---------------------------------------------------------------------------------------------------------------
42295    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42296 
42297    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42298    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42299 
42300    IF xla_accounting_cache_pkg.GetValueChar
42301          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42305    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42302          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42303    AND l_bflow_method_code = 'PRIOR_ENTRY'
42304 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42306          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42307        )
42308    THEN
42309          xla_ae_lines_pkg.BflowUpgEntry
42310            (p_business_method_code    => l_bflow_method_code
42311            ,p_business_class_code     => l_bflow_class_code
42312            ,p_balance_type            => l_balance_type_code);
42313    ELSE
42314       NULL;
42315 -- No business flow processing for business flow method of NONE.
42316    END IF;
42317 
42318    --
42319    -- call analytical criteria
42320    --
42321    
42322 
42323 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
42324 xla_ae_lines_pkg.SetAnalyticalCriteria(
42325    p_analytical_criterion_name    => 'Check Id'
42326  , p_analytical_criterion_owner   => 'S'
42327  , p_analytical_criterion_code    => 'CHECK_ID'
42328  , p_amb_context_code             => 'DEFAULT'
42329  , p_balancing_flag               => 'N'
42330  
42331  , p_analytical_detail_char_1    =>  NULL
42332  , p_analytical_detail_num_1     =>  p_source_90
42333  , p_analytical_detail_date_1    =>  NULL
42334 
42335  , p_ae_header_id                 => l_ae_header_id
42336 )
42337 ;
42338 --
42339 
42340    --
42341    -- call description
42342    --
42343    -- No description or it is inherited.
42344    --
42345    -- call ADRs
42346    -- Bug 4922099
42347    --
42348    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42349         (NVL(l_actual_upg_option, 'N') = 'O') OR
42350         (NVL(l_enc_upg_option, 'N') = 'O')
42351       )
42352    THEN
42353    NULL;
42354    --
42355    --
42356    
42357   l_ccid := AcctDerRule_20(
42358            p_application_id           => p_application_id
42359          , p_ae_header_id             => l_ae_header_id 
42360 , p_source_22 => p_source_22
42361          , x_transaction_coa_id       => l_adr_transaction_coa_id
42362          , x_accounting_coa_id        => l_adr_accounting_coa_id
42363          , x_value_type_code          => l_adr_value_type_code
42364          , p_side                     => 'NA'
42365    );
42366 
42367    xla_ae_lines_pkg.set_ccid(
42368     p_code_combination_id          => l_ccid
42369   , p_value_type_code              => l_adr_value_type_code
42370   , p_transaction_coa_id           => l_adr_transaction_coa_id
42371   , p_accounting_coa_id            => l_adr_accounting_coa_id
42372   , p_adr_code                     => 'DIST_CCID'
42373   , p_adr_type_code                => 'S'
42374   , p_component_type               => l_component_type
42375   , p_component_code               => l_component_code
42376   , p_component_type_code          => l_component_type_code
42377   , p_component_appl_id            => l_component_appl_id
42378   , p_amb_context_code             => l_amb_context_code
42379   , p_side                         => 'NA'
42380   );
42381 
42382 
42383    --
42384    --
42385    END IF;
42386    --
42387    -- Bug 4922099
42388    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42389           (NVL(l_enc_upg_option, 'N') = 'O')
42390         ) AND
42391         (l_bflow_method_code = 'PRIOR_ENTRY')
42392       )
42393    THEN
42394       IF
42395       --
42396       1 = 2
42397       --
42398       THEN
42399       xla_accounting_err_pkg.build_message
42400                                     (p_appli_s_name            => 'XLA'
42401                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42402                                     ,p_token_1                 => 'LINE_NUMBER'
42403                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42404                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42405                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42406                                                                              l_component_type
42407                                                                             ,l_component_code
42408                                                                             ,l_component_type_code
42409                                                                             ,l_component_appl_id
42410                                                                             ,l_amb_context_code
42411                                                                             ,l_entity_code
42412                                                                             ,l_event_class_code
42413                                                                            )
42414                                     ,p_token_3                 => 'OWNER'
42415                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42416                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42417                                                                           ,p_lookup_code    => l_component_type_code
42418                                                                          )
42419                                     ,p_token_4                 => 'PRODUCT_NAME'
42423                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42420                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42421                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42422                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42424                                     ,p_ae_header_id            =>  NULL
42425                                        );
42426 
42427         IF (C_LEVEL_ERROR>= g_log_level) THEN
42428                  trace
42429                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42430                       ,p_level    => C_LEVEL_ERROR
42431                       ,p_module   => l_log_module);
42432         END IF;
42433       END IF;
42434    END IF;
42435    --
42436    --
42437    ------------------------------------------------------------------------------------------------
42438    -- 4219869 Business Flow
42439    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42440    -- Prior Entry.  Currently, the following code is always generated.
42441    ------------------------------------------------------------------------------------------------
42442    XLA_AE_LINES_PKG.ValidateCurrentLine;
42443 
42444    ------------------------------------------------------------------------------------
42445    -- 4219869 Business Flow
42446    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42447    ------------------------------------------------------------------------------------
42448    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42449 
42450    ----------------------------------------------------------------------------------
42451    -- 4219869 Business Flow
42452    -- Update journal entry status -- Need to generate this within IF <condition>
42453    ----------------------------------------------------------------------------------
42454    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42455          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42456          ,p_balance_type_code => l_balance_type_code
42457          );
42458 
42459    -------------------------------------------------------------------------------------------
42460    -- 4262811 - Generate the Accrual Reversal lines
42461    -------------------------------------------------------------------------------------------
42462    BEGIN
42463       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42464                               (g_array_event(p_event_id).array_value_num('header_index'));
42465       IF l_acc_rev_flag IS NULL THEN
42466          l_acc_rev_flag := 'N';
42467       END IF;
42468    EXCEPTION
42469       WHEN OTHERS THEN
42470          l_acc_rev_flag := 'N';
42471    END;
42472    --
42473    IF (l_acc_rev_flag = 'Y') THEN
42474 
42475        -- 4645092  ------------------------------------------------------------------------------
42476        -- To allow MPA report to determine if it should generate report process
42477        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42478        ------------------------------------------------------------------------------------------
42479 
42480        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42481        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42482    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
42483    -- call ADRs
42484    -- Bug 4922099
42485    --
42486    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42487         (NVL(l_actual_upg_option, 'N') = 'O') OR
42488         (NVL(l_enc_upg_option, 'N') = 'O')
42489       )
42490    THEN
42491    NULL;
42492    --
42493    --
42494    
42495   l_ccid := AcctDerRule_20(
42496            p_application_id           => p_application_id
42497          , p_ae_header_id             => l_ae_header_id 
42498 , p_source_22 => p_source_22
42499          , x_transaction_coa_id       => l_adr_transaction_coa_id
42500          , x_accounting_coa_id        => l_adr_accounting_coa_id
42501          , x_value_type_code          => l_adr_value_type_code
42502          , p_side                     => 'NA'
42503    );
42504 
42505    xla_ae_lines_pkg.set_ccid(
42506     p_code_combination_id          => l_ccid
42507   , p_value_type_code              => l_adr_value_type_code
42508   , p_transaction_coa_id           => l_adr_transaction_coa_id
42509   , p_accounting_coa_id            => l_adr_accounting_coa_id
42510   , p_adr_code                     => 'DIST_CCID'
42511   , p_adr_type_code                => 'S'
42512   , p_component_type               => l_component_type
42513   , p_component_code               => l_component_code
42514   , p_component_type_code          => l_component_type_code
42515   , p_component_appl_id            => l_component_appl_id
42516   , p_amb_context_code             => l_amb_context_code
42517   , p_side                         => 'NA'
42518   );
42519 
42520 
42521    --
42522    --
42523    END IF;
42524 
42525        --
42526        -- Update the line information that should be overwritten
42527        --
42528        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42529                                          p_header_num   => 1);
42533 
42530        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42531 
42532        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42534        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42535           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42536        END IF;
42537 
42538       --
42539       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42540       --
42541       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42542           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42543       ELSE
42544           ---------------------------------------------------------------------------------------------------
42545           -- 4262811a Switch Sign
42546           ---------------------------------------------------------------------------------------------------
42547           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42548           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42549                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42550           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42551                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42552           -- 5132302
42553           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42554                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42555 
42556       END IF;
42557 
42558       -- 4955764
42559       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42560       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42561 
42562 
42563       XLA_AE_LINES_PKG.ValidateCurrentLine;
42564       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42565 
42566       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42567                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42568                ,p_balance_type_code => l_balance_type_code);
42569 
42570    END IF;
42571 
42572    -----------------------------------------------------------------------------------------
42573    -- 4262811 Multiperiod Accounting
42574    -----------------------------------------------------------------------------------------
42575      -- No MPA option is assigned.
42576 
42577 
42578 END IF;
42579 END IF;
42580 --
42581 
42582 --
42583 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42584    trace
42585       (p_msg      => 'END of AcctLineType_92'
42586       ,p_level    => C_LEVEL_PROCEDURE
42587       ,p_module   => l_log_module);
42588 END IF;
42589 --
42590 EXCEPTION
42591   WHEN xla_exceptions_pkg.application_exception THEN
42592       RAISE;
42593   WHEN OTHERS THEN
42594        xla_exceptions_pkg.raise_message
42595            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_92');
42596 END AcctLineType_92;
42597 --
42598 
42599 ---------------------------------------
42600 --
42601 -- PRIVATE FUNCTION
42602 --         AcctLineType_93
42603 --
42604 ---------------------------------------
42605 PROCEDURE AcctLineType_93 (
42606   p_application_id        IN NUMBER
42607  ,p_event_id              IN NUMBER
42608  ,p_calculate_acctd_flag  IN VARCHAR2
42609  ,p_calculate_g_l_flag    IN VARCHAR2
42610  ,p_actual_flag           IN OUT VARCHAR2
42611  ,p_balance_type_code     OUT VARCHAR2
42612  ,p_gain_or_loss_ref      OUT VARCHAR2
42613  
42614 --Distribution GL Account
42615  , p_source_22            IN NUMBER
42616 --Distribution Source Type
42617  , p_source_27            IN VARCHAR2
42618 --Distribution Line Identifier
42619  , p_source_29            IN NUMBER
42620 --Distribution Type
42621  , p_source_30            IN VARCHAR2
42622 --Entered Amount
42623  , p_source_31            IN NUMBER
42624 --Currency Code
42625  , p_source_32            IN VARCHAR2
42626 --Exchange Rate
42627  , p_source_34            IN NUMBER
42628 --Exchange Rate Type
42629  , p_source_35            IN VARCHAR2
42630 --Applied To Document Accounting Amount
42631  , p_source_36            IN NUMBER
42632 --Distribution Multi Fund Additional Entry
42633  , p_source_88            IN VARCHAR2
42634 --Applied To Document Exchange Date
42635  , p_source_89            IN DATE
42636 --Cash Receipt Identifier
42637  , p_source_90            IN NUMBER
42638 )
42639 IS
42640 
42641 l_component_type              VARCHAR2(80);
42642 l_component_code              VARCHAR2(30);
42643 l_component_type_code         VARCHAR2(1);
42644 l_component_appl_id           INTEGER;
42645 l_amb_context_code            VARCHAR2(30);
42646 l_entity_code                 VARCHAR2(30);
42647 l_event_class_code            VARCHAR2(30);
42648 l_ae_header_id                NUMBER;
42649 l_event_type_code             VARCHAR2(30);
42650 l_line_definition_code        VARCHAR2(30);
42651 l_line_definition_owner_code  VARCHAR2(1);
42652 --
42653 -- adr variables
42654 l_segment                     VARCHAR2(30);
42658 l_adr_flexfield_segment_code  VARCHAR2(30);
42655 l_ccid                        NUMBER;
42656 l_adr_transaction_coa_id      NUMBER;
42657 l_adr_accounting_coa_id       NUMBER;
42659 l_adr_flex_value_set_id       NUMBER;
42660 l_adr_value_type_code         VARCHAR2(30);
42661 l_adr_value_combination_id    NUMBER;
42662 l_adr_value_segment_code      VARCHAR2(30);
42663 
42664 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42665 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42666 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42667 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42668 
42669 -- 4262811 Variables ------------------------------------------------------------------------------------------
42670 l_entered_amt_idx             NUMBER;
42671 l_accted_amt_idx              NUMBER;
42672 l_acc_rev_flag                VARCHAR2(1);
42673 l_accrual_line_num            NUMBER;
42674 l_tmp_amt                     NUMBER;
42675 l_acc_rev_natural_side_code   VARCHAR2(1);
42676 
42677 l_num_entries                 NUMBER;
42678 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42679 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42680 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42681 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42682 l_recog_line_1                NUMBER;
42683 l_recog_line_2                NUMBER;
42684 
42685 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42686 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42687 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42688 
42689 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42690 
42691 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42692 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42693 
42694 ---------------------------------------------------------------------------------------------------------------
42695 
42696 
42697 --
42698 -- bulk performance
42699 --
42700 l_balance_type_code           VARCHAR2(1);
42701 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42702 l_log_module                  VARCHAR2(240);
42703 
42704 --
42705 -- Upgrade strategy
42706 --
42707 l_actual_upg_option           VARCHAR2(1);
42708 l_enc_upg_option           VARCHAR2(1);
42709 
42710 --
42711 BEGIN
42712 --
42713 IF g_log_enabled THEN
42714       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_93';
42715 END IF;
42716 --
42717 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42718 
42719       trace
42720          (p_msg      => 'BEGIN of AcctLineType_93'
42721          ,p_level    => C_LEVEL_PROCEDURE
42722          ,p_module   => l_log_module);
42723 
42724 END IF;
42725 --
42726 l_component_type             := 'AMB_JLT';
42727 l_component_code             := 'MISC_RCT_DEBT';
42728 l_component_type_code        := 'S';
42729 l_component_appl_id          :=  222;
42730 l_amb_context_code           := 'DEFAULT';
42731 l_entity_code                := 'RECEIPTS';
42732 l_event_class_code           := 'MISC_RECEIPT';
42733 l_event_type_code            := 'MISC_RECEIPT_ALL';
42734 l_line_definition_owner_code := 'S';
42735 l_line_definition_code       := 'JA_CN_AR_MISC_RECEIPTS';
42736 --
42737 l_balance_type_code          := 'A';
42738 l_segment                     := NULL;
42739 l_ccid                        := NULL;
42740 l_adr_transaction_coa_id      := NULL;
42741 l_adr_accounting_coa_id       := NULL;
42742 l_adr_flexfield_segment_code  := NULL;
42743 l_adr_flex_value_set_id       := NULL;
42744 l_adr_value_type_code         := NULL;
42745 l_adr_value_combination_id    := NULL;
42746 l_adr_value_segment_code      := NULL;
42747 
42748 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
42749 l_bflow_class_code           := '';    -- 4219869 Business Flow
42750 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42751 l_budgetary_control_flag     := 'N';
42752 
42753 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42754 l_bflow_applied_to_amt       := NULL; -- 5132302
42755 l_entered_amt_idx            := NULL;          -- 4262811
42756 l_accted_amt_idx             := NULL;          -- 4262811
42757 l_acc_rev_flag               := NULL;          -- 4262811
42758 l_accrual_line_num           := NULL;          -- 4262811
42759 l_tmp_amt                    := NULL;          -- 4262811
42760 --
42761  
42762 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42763     l_balance_type_code <> 'B' THEN
42764 IF NVL(p_source_27,'
42765 ') =  'SHORT_TERM_DEBT' AND 
42766 NVL(p_source_88,'
42767 ') =  'N'
42768  THEN 
42769 
42770    --
42771    XLA_AE_LINES_PKG.SetNewLine;
42772 
42773    p_balance_type_code          := l_balance_type_code;
42774    -- set the flag so later we will know whether the gain loss line needs to be created
42775    
42776    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42777      p_actual_flag :='A';
42778    END IF;
42779 
42780    --
42781    -- bulk performance
42782    --
42783    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42784                                       p_header_num   => 0); -- 4262811
42785    --
42789            p_natural_side_code          => 'C'
42786    -- set accounting line options
42787    --
42788    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42790          , p_gain_or_loss_flag          => 'N'
42791          , p_gl_transfer_mode_code      => 'S'
42792          , p_acct_entry_type_code       => 'A'
42793          , p_switch_side_flag           => 'Y'
42794          , p_merge_duplicate_code       => 'A'
42795          );
42796    --
42797    l_acc_rev_natural_side_code := 'D';  -- 4262811
42798    -- 
42799    --
42800    -- set accounting line type info
42801    --
42802    xla_ae_lines_pkg.SetAcctLineType
42803       (p_component_type             => l_component_type
42804       ,p_event_type_code            => l_event_type_code
42805       ,p_line_definition_owner_code => l_line_definition_owner_code
42806       ,p_line_definition_code       => l_line_definition_code
42807       ,p_accounting_line_code       => l_component_code
42808       ,p_accounting_line_type_code  => l_component_type_code
42809       ,p_accounting_line_appl_id    => l_component_appl_id
42810       ,p_amb_context_code           => l_amb_context_code
42811       ,p_entity_code                => l_entity_code
42812       ,p_event_class_code           => l_event_class_code);
42813    --
42814    -- set accounting class
42815    --
42816    xla_ae_lines_pkg.SetAcctClass(
42817            p_accounting_class_code  => 'SHORT_TERM_DEBT'
42818          , p_ae_header_id           => l_ae_header_id
42819          );
42820 
42821    --
42822    -- set rounding class
42823    --
42824    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42825                       'RECEIVABLE';
42826 
42827    --
42828    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42829    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42830    --
42831    -- bulk performance
42832    --
42833    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42834 
42835    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42836       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42837 
42838    -- 4955764
42839    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42840       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42841 
42842    -- 4458381 Public Sector Enh
42843    
42844    --
42845    -- set accounting attributes for the line type
42846    --
42847    l_entered_amt_idx := 3;
42848    l_accted_amt_idx  := 8;
42849    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
42850    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
42851    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
42852    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
42853    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
42854    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
42855    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
42856    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
42857    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
42858    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
42859    l_rec_acct_attrs.array_date_value(5)  := p_source_89;
42860    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
42861    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
42862    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
42863    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
42864    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
42865    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
42866 
42867    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42868    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42869 
42870    ---------------------------------------------------------------------------------------------------------------
42871    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42872    ---------------------------------------------------------------------------------------------------------------
42873    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42874 
42875    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42876    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42877 
42878    IF xla_accounting_cache_pkg.GetValueChar
42879          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42880          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42881    AND l_bflow_method_code = 'PRIOR_ENTRY'
42882 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42883    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42884          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42885        )
42886    THEN
42887          xla_ae_lines_pkg.BflowUpgEntry
42888            (p_business_method_code    => l_bflow_method_code
42889            ,p_business_class_code     => l_bflow_class_code
42890            ,p_balance_type            => l_balance_type_code);
42891    ELSE
42892       NULL;
42893 -- No business flow processing for business flow method of NONE.
42894    END IF;
42895 
42896    --
42900 
42897    -- call analytical criteria
42898    --
42899    
42901 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
42902 xla_ae_lines_pkg.SetAnalyticalCriteria(
42903    p_analytical_criterion_name    => 'Check Id'
42904  , p_analytical_criterion_owner   => 'S'
42905  , p_analytical_criterion_code    => 'CHECK_ID'
42906  , p_amb_context_code             => 'DEFAULT'
42907  , p_balancing_flag               => 'N'
42908  
42909  , p_analytical_detail_char_1    =>  NULL
42910  , p_analytical_detail_num_1     =>  p_source_90
42911  , p_analytical_detail_date_1    =>  NULL
42912 
42913  , p_ae_header_id                 => l_ae_header_id
42914 )
42915 ;
42916 --
42917 
42918    --
42919    -- call description
42920    --
42921    -- No description or it is inherited.
42922    --
42923    -- call ADRs
42924    -- Bug 4922099
42925    --
42926    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42927         (NVL(l_actual_upg_option, 'N') = 'O') OR
42928         (NVL(l_enc_upg_option, 'N') = 'O')
42929       )
42930    THEN
42931    NULL;
42932    --
42933    --
42934    
42935   l_ccid := AcctDerRule_20(
42936            p_application_id           => p_application_id
42937          , p_ae_header_id             => l_ae_header_id 
42938 , p_source_22 => p_source_22
42939          , x_transaction_coa_id       => l_adr_transaction_coa_id
42940          , x_accounting_coa_id        => l_adr_accounting_coa_id
42941          , x_value_type_code          => l_adr_value_type_code
42942          , p_side                     => 'NA'
42943    );
42944 
42945    xla_ae_lines_pkg.set_ccid(
42946     p_code_combination_id          => l_ccid
42947   , p_value_type_code              => l_adr_value_type_code
42948   , p_transaction_coa_id           => l_adr_transaction_coa_id
42949   , p_accounting_coa_id            => l_adr_accounting_coa_id
42950   , p_adr_code                     => 'DIST_CCID'
42951   , p_adr_type_code                => 'S'
42952   , p_component_type               => l_component_type
42953   , p_component_code               => l_component_code
42954   , p_component_type_code          => l_component_type_code
42955   , p_component_appl_id            => l_component_appl_id
42956   , p_amb_context_code             => l_amb_context_code
42957   , p_side                         => 'NA'
42958   );
42959 
42960 
42961    --
42962    --
42963    END IF;
42964    --
42965    -- Bug 4922099
42966    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42967           (NVL(l_enc_upg_option, 'N') = 'O')
42968         ) AND
42969         (l_bflow_method_code = 'PRIOR_ENTRY')
42970       )
42971    THEN
42972       IF
42973       --
42974       1 = 2
42975       --
42976       THEN
42977       xla_accounting_err_pkg.build_message
42978                                     (p_appli_s_name            => 'XLA'
42979                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42980                                     ,p_token_1                 => 'LINE_NUMBER'
42981                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42982                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42983                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42984                                                                              l_component_type
42985                                                                             ,l_component_code
42986                                                                             ,l_component_type_code
42987                                                                             ,l_component_appl_id
42988                                                                             ,l_amb_context_code
42989                                                                             ,l_entity_code
42990                                                                             ,l_event_class_code
42991                                                                            )
42992                                     ,p_token_3                 => 'OWNER'
42993                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42994                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42995                                                                           ,p_lookup_code    => l_component_type_code
42996                                                                          )
42997                                     ,p_token_4                 => 'PRODUCT_NAME'
42998                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42999                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43000                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43001                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43002                                     ,p_ae_header_id            =>  NULL
43003                                        );
43004 
43005         IF (C_LEVEL_ERROR>= g_log_level) THEN
43006                  trace
43007                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43008                       ,p_level    => C_LEVEL_ERROR
43012    END IF;
43009                       ,p_module   => l_log_module);
43010         END IF;
43011       END IF;
43013    --
43014    --
43015    ------------------------------------------------------------------------------------------------
43016    -- 4219869 Business Flow
43017    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43018    -- Prior Entry.  Currently, the following code is always generated.
43019    ------------------------------------------------------------------------------------------------
43020    XLA_AE_LINES_PKG.ValidateCurrentLine;
43021 
43022    ------------------------------------------------------------------------------------
43023    -- 4219869 Business Flow
43024    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43025    ------------------------------------------------------------------------------------
43026    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43027 
43028    ----------------------------------------------------------------------------------
43029    -- 4219869 Business Flow
43030    -- Update journal entry status -- Need to generate this within IF <condition>
43031    ----------------------------------------------------------------------------------
43032    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43033          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43034          ,p_balance_type_code => l_balance_type_code
43035          );
43036 
43037    -------------------------------------------------------------------------------------------
43038    -- 4262811 - Generate the Accrual Reversal lines
43039    -------------------------------------------------------------------------------------------
43040    BEGIN
43041       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43042                               (g_array_event(p_event_id).array_value_num('header_index'));
43043       IF l_acc_rev_flag IS NULL THEN
43044          l_acc_rev_flag := 'N';
43045       END IF;
43046    EXCEPTION
43047       WHEN OTHERS THEN
43048          l_acc_rev_flag := 'N';
43049    END;
43050    --
43051    IF (l_acc_rev_flag = 'Y') THEN
43052 
43053        -- 4645092  ------------------------------------------------------------------------------
43054        -- To allow MPA report to determine if it should generate report process
43055        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43056        ------------------------------------------------------------------------------------------
43057 
43058        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43059        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43060    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
43061    -- call ADRs
43062    -- Bug 4922099
43063    --
43064    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43065         (NVL(l_actual_upg_option, 'N') = 'O') OR
43066         (NVL(l_enc_upg_option, 'N') = 'O')
43067       )
43068    THEN
43069    NULL;
43070    --
43071    --
43072    
43073   l_ccid := AcctDerRule_20(
43074            p_application_id           => p_application_id
43075          , p_ae_header_id             => l_ae_header_id 
43076 , p_source_22 => p_source_22
43077          , x_transaction_coa_id       => l_adr_transaction_coa_id
43078          , x_accounting_coa_id        => l_adr_accounting_coa_id
43079          , x_value_type_code          => l_adr_value_type_code
43080          , p_side                     => 'NA'
43081    );
43082 
43083    xla_ae_lines_pkg.set_ccid(
43084     p_code_combination_id          => l_ccid
43085   , p_value_type_code              => l_adr_value_type_code
43086   , p_transaction_coa_id           => l_adr_transaction_coa_id
43087   , p_accounting_coa_id            => l_adr_accounting_coa_id
43088   , p_adr_code                     => 'DIST_CCID'
43089   , p_adr_type_code                => 'S'
43090   , p_component_type               => l_component_type
43091   , p_component_code               => l_component_code
43092   , p_component_type_code          => l_component_type_code
43093   , p_component_appl_id            => l_component_appl_id
43094   , p_amb_context_code             => l_amb_context_code
43095   , p_side                         => 'NA'
43096   );
43097 
43098 
43099    --
43100    --
43101    END IF;
43102 
43103        --
43104        -- Update the line information that should be overwritten
43105        --
43106        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43107                                          p_header_num   => 1);
43108        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43109 
43110        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43111 
43112        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43113           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43114        END IF;
43115 
43116       --
43117       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43118       --
43119       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43120           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43121       ELSE
43125           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43122           ---------------------------------------------------------------------------------------------------
43123           -- 4262811a Switch Sign
43124           ---------------------------------------------------------------------------------------------------
43126           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43127                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43128           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43129                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43130           -- 5132302
43131           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43132                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43133 
43134       END IF;
43135 
43136       -- 4955764
43137       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43138       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43139 
43140 
43141       XLA_AE_LINES_PKG.ValidateCurrentLine;
43142       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43143 
43144       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43145                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43146                ,p_balance_type_code => l_balance_type_code);
43147 
43148    END IF;
43149 
43150    -----------------------------------------------------------------------------------------
43151    -- 4262811 Multiperiod Accounting
43152    -----------------------------------------------------------------------------------------
43153      -- No MPA option is assigned.
43154 
43155 
43156 END IF;
43157 END IF;
43158 --
43159 
43160 --
43161 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43162    trace
43163       (p_msg      => 'END of AcctLineType_93'
43164       ,p_level    => C_LEVEL_PROCEDURE
43165       ,p_module   => l_log_module);
43166 END IF;
43167 --
43168 EXCEPTION
43169   WHEN xla_exceptions_pkg.application_exception THEN
43170       RAISE;
43171   WHEN OTHERS THEN
43172        xla_exceptions_pkg.raise_message
43173            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_93');
43174 END AcctLineType_93;
43175 --
43176 
43177 ---------------------------------------
43178 --
43179 -- PRIVATE FUNCTION
43180 --         AcctLineType_94
43181 --
43182 ---------------------------------------
43183 PROCEDURE AcctLineType_94 (
43184   p_application_id        IN NUMBER
43185  ,p_event_id              IN NUMBER
43186  ,p_calculate_acctd_flag  IN VARCHAR2
43187  ,p_calculate_g_l_flag    IN VARCHAR2
43188  ,p_actual_flag           IN OUT VARCHAR2
43189  ,p_balance_type_code     OUT VARCHAR2
43190  ,p_gain_or_loss_ref      OUT VARCHAR2
43191  
43192 --Distribution GL Account
43193  , p_source_22            IN NUMBER
43194 --Distribution Source Type
43195  , p_source_27            IN VARCHAR2
43196 --Distribution Line Identifier
43197  , p_source_29            IN NUMBER
43198 --Distribution Type
43199  , p_source_30            IN VARCHAR2
43200 --Entered Amount
43201  , p_source_31            IN NUMBER
43202 --Currency Code
43203  , p_source_32            IN VARCHAR2
43204 --Exchange Rate
43205  , p_source_34            IN NUMBER
43206 --Exchange Rate Type
43207  , p_source_35            IN VARCHAR2
43208 --Applied To Document Accounting Amount
43209  , p_source_36            IN NUMBER
43210 --Distribution Multi Fund Additional Entry
43211  , p_source_88            IN VARCHAR2
43212 --Applied To Document Exchange Date
43213  , p_source_89            IN DATE
43214 --Cash Receipt Identifier
43215  , p_source_90            IN NUMBER
43216 )
43217 IS
43218 
43219 l_component_type              VARCHAR2(80);
43220 l_component_code              VARCHAR2(30);
43221 l_component_type_code         VARCHAR2(1);
43222 l_component_appl_id           INTEGER;
43223 l_amb_context_code            VARCHAR2(30);
43224 l_entity_code                 VARCHAR2(30);
43225 l_event_class_code            VARCHAR2(30);
43226 l_ae_header_id                NUMBER;
43227 l_event_type_code             VARCHAR2(30);
43228 l_line_definition_code        VARCHAR2(30);
43229 l_line_definition_owner_code  VARCHAR2(1);
43230 --
43231 -- adr variables
43232 l_segment                     VARCHAR2(30);
43233 l_ccid                        NUMBER;
43234 l_adr_transaction_coa_id      NUMBER;
43235 l_adr_accounting_coa_id       NUMBER;
43236 l_adr_flexfield_segment_code  VARCHAR2(30);
43237 l_adr_flex_value_set_id       NUMBER;
43238 l_adr_value_type_code         VARCHAR2(30);
43239 l_adr_value_combination_id    NUMBER;
43240 l_adr_value_segment_code      VARCHAR2(30);
43241 
43242 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43243 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43244 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43245 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43246 
43247 -- 4262811 Variables ------------------------------------------------------------------------------------------
43248 l_entered_amt_idx             NUMBER;
43249 l_accted_amt_idx              NUMBER;
43253 l_acc_rev_natural_side_code   VARCHAR2(1);
43250 l_acc_rev_flag                VARCHAR2(1);
43251 l_accrual_line_num            NUMBER;
43252 l_tmp_amt                     NUMBER;
43254 
43255 l_num_entries                 NUMBER;
43256 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43257 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43258 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43259 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43260 l_recog_line_1                NUMBER;
43261 l_recog_line_2                NUMBER;
43262 
43263 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43264 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43265 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43266 
43267 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43268 
43269 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43270 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43271 
43272 ---------------------------------------------------------------------------------------------------------------
43273 
43274 
43275 --
43276 -- bulk performance
43277 --
43278 l_balance_type_code           VARCHAR2(1);
43279 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43280 l_log_module                  VARCHAR2(240);
43281 
43282 --
43283 -- Upgrade strategy
43284 --
43285 l_actual_upg_option           VARCHAR2(1);
43286 l_enc_upg_option           VARCHAR2(1);
43287 
43288 --
43289 BEGIN
43290 --
43291 IF g_log_enabled THEN
43292       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_94';
43293 END IF;
43294 --
43295 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43296 
43297       trace
43298          (p_msg      => 'BEGIN of AcctLineType_94'
43299          ,p_level    => C_LEVEL_PROCEDURE
43300          ,p_module   => l_log_module);
43301 
43302 END IF;
43303 --
43304 l_component_type             := 'AMB_JLT';
43305 l_component_code             := 'MISC_RCT_FACTOR';
43306 l_component_type_code        := 'S';
43307 l_component_appl_id          :=  222;
43308 l_amb_context_code           := 'DEFAULT';
43309 l_entity_code                := 'RECEIPTS';
43310 l_event_class_code           := 'MISC_RECEIPT';
43311 l_event_type_code            := 'MISC_RECEIPT_ALL';
43312 l_line_definition_owner_code := 'S';
43313 l_line_definition_code       := 'JA_CN_AR_MISC_RECEIPTS';
43314 --
43315 l_balance_type_code          := 'A';
43316 l_segment                     := NULL;
43317 l_ccid                        := NULL;
43318 l_adr_transaction_coa_id      := NULL;
43319 l_adr_accounting_coa_id       := NULL;
43320 l_adr_flexfield_segment_code  := NULL;
43321 l_adr_flex_value_set_id       := NULL;
43322 l_adr_value_type_code         := NULL;
43323 l_adr_value_combination_id    := NULL;
43324 l_adr_value_segment_code      := NULL;
43325 
43326 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
43327 l_bflow_class_code           := '';    -- 4219869 Business Flow
43328 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
43329 l_budgetary_control_flag     := 'N';
43330 
43331 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43332 l_bflow_applied_to_amt       := NULL; -- 5132302
43333 l_entered_amt_idx            := NULL;          -- 4262811
43334 l_accted_amt_idx             := NULL;          -- 4262811
43335 l_acc_rev_flag               := NULL;          -- 4262811
43336 l_accrual_line_num           := NULL;          -- 4262811
43337 l_tmp_amt                    := NULL;          -- 4262811
43338 --
43339  
43340 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43341     l_balance_type_code <> 'B' THEN
43342 IF NVL(p_source_27,'
43343 ') =  'FACTOR' AND 
43344 NVL(p_source_88,'
43345 ') =  'N'
43346  THEN 
43347 
43348    --
43349    XLA_AE_LINES_PKG.SetNewLine;
43350 
43351    p_balance_type_code          := l_balance_type_code;
43352    -- set the flag so later we will know whether the gain loss line needs to be created
43353    
43354    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43355      p_actual_flag :='A';
43356    END IF;
43357 
43358    --
43359    -- bulk performance
43360    --
43361    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43362                                       p_header_num   => 0); -- 4262811
43363    --
43364    -- set accounting line options
43365    --
43366    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43367            p_natural_side_code          => 'C'
43368          , p_gain_or_loss_flag          => 'N'
43369          , p_gl_transfer_mode_code      => 'S'
43370          , p_acct_entry_type_code       => 'A'
43371          , p_switch_side_flag           => 'Y'
43372          , p_merge_duplicate_code       => 'A'
43373          );
43374    --
43375    l_acc_rev_natural_side_code := 'D';  -- 4262811
43376    -- 
43377    --
43378    -- set accounting line type info
43379    --
43380    xla_ae_lines_pkg.SetAcctLineType
43381       (p_component_type             => l_component_type
43382       ,p_event_type_code            => l_event_type_code
43386       ,p_accounting_line_type_code  => l_component_type_code
43383       ,p_line_definition_owner_code => l_line_definition_owner_code
43384       ,p_line_definition_code       => l_line_definition_code
43385       ,p_accounting_line_code       => l_component_code
43387       ,p_accounting_line_appl_id    => l_component_appl_id
43388       ,p_amb_context_code           => l_amb_context_code
43389       ,p_entity_code                => l_entity_code
43390       ,p_event_class_code           => l_event_class_code);
43391    --
43392    -- set accounting class
43393    --
43394    xla_ae_lines_pkg.SetAcctClass(
43395            p_accounting_class_code  => 'FACTOR'
43396          , p_ae_header_id           => l_ae_header_id
43397          );
43398 
43399    --
43400    -- set rounding class
43401    --
43402    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43403                       'RECEIVABLE';
43404 
43405    --
43406    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43407    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43408    --
43409    -- bulk performance
43410    --
43411    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43412 
43413    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43414       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43415 
43416    -- 4955764
43417    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43418       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43419 
43420    -- 4458381 Public Sector Enh
43421    
43422    --
43423    -- set accounting attributes for the line type
43424    --
43425    l_entered_amt_idx := 3;
43426    l_accted_amt_idx  := 8;
43427    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43428    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
43429    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
43430    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
43431    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
43432    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
43433    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
43434    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
43435    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
43436    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
43437    l_rec_acct_attrs.array_date_value(5)  := p_source_89;
43438    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
43439    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
43440    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
43441    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
43442    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
43443    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
43444 
43445    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43446    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43447 
43448    ---------------------------------------------------------------------------------------------------------------
43449    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43450    ---------------------------------------------------------------------------------------------------------------
43451    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43452 
43453    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43454    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43455 
43456    IF xla_accounting_cache_pkg.GetValueChar
43457          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43458          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43459    AND l_bflow_method_code = 'PRIOR_ENTRY'
43460 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43461    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43462          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43463        )
43464    THEN
43465          xla_ae_lines_pkg.BflowUpgEntry
43466            (p_business_method_code    => l_bflow_method_code
43467            ,p_business_class_code     => l_bflow_class_code
43468            ,p_balance_type            => l_balance_type_code);
43469    ELSE
43470       NULL;
43471 -- No business flow processing for business flow method of NONE.
43472    END IF;
43473 
43474    --
43475    -- call analytical criteria
43476    --
43477    
43478 
43479 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
43480 xla_ae_lines_pkg.SetAnalyticalCriteria(
43481    p_analytical_criterion_name    => 'Check Id'
43482  , p_analytical_criterion_owner   => 'S'
43483  , p_analytical_criterion_code    => 'CHECK_ID'
43484  , p_amb_context_code             => 'DEFAULT'
43485  , p_balancing_flag               => 'N'
43486  
43487  , p_analytical_detail_char_1    =>  NULL
43488  , p_analytical_detail_num_1     =>  p_source_90
43489  , p_analytical_detail_date_1    =>  NULL
43490 
43491  , p_ae_header_id                 => l_ae_header_id
43492 )
43493 ;
43494 --
43495 
43499    -- No description or it is inherited.
43496    --
43497    -- call description
43498    --
43500    --
43501    -- call ADRs
43502    -- Bug 4922099
43503    --
43504    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43505         (NVL(l_actual_upg_option, 'N') = 'O') OR
43506         (NVL(l_enc_upg_option, 'N') = 'O')
43507       )
43508    THEN
43509    NULL;
43510    --
43511    --
43512    
43513   l_ccid := AcctDerRule_20(
43514            p_application_id           => p_application_id
43515          , p_ae_header_id             => l_ae_header_id 
43516 , p_source_22 => p_source_22
43517          , x_transaction_coa_id       => l_adr_transaction_coa_id
43518          , x_accounting_coa_id        => l_adr_accounting_coa_id
43519          , x_value_type_code          => l_adr_value_type_code
43520          , p_side                     => 'NA'
43521    );
43522 
43523    xla_ae_lines_pkg.set_ccid(
43524     p_code_combination_id          => l_ccid
43525   , p_value_type_code              => l_adr_value_type_code
43526   , p_transaction_coa_id           => l_adr_transaction_coa_id
43527   , p_accounting_coa_id            => l_adr_accounting_coa_id
43528   , p_adr_code                     => 'DIST_CCID'
43529   , p_adr_type_code                => 'S'
43530   , p_component_type               => l_component_type
43531   , p_component_code               => l_component_code
43532   , p_component_type_code          => l_component_type_code
43533   , p_component_appl_id            => l_component_appl_id
43534   , p_amb_context_code             => l_amb_context_code
43535   , p_side                         => 'NA'
43536   );
43537 
43538 
43539    --
43540    --
43541    END IF;
43542    --
43543    -- Bug 4922099
43544    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43545           (NVL(l_enc_upg_option, 'N') = 'O')
43546         ) AND
43547         (l_bflow_method_code = 'PRIOR_ENTRY')
43548       )
43549    THEN
43550       IF
43551       --
43552       1 = 2
43553       --
43554       THEN
43555       xla_accounting_err_pkg.build_message
43556                                     (p_appli_s_name            => 'XLA'
43557                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43558                                     ,p_token_1                 => 'LINE_NUMBER'
43559                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43560                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43561                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43562                                                                              l_component_type
43563                                                                             ,l_component_code
43564                                                                             ,l_component_type_code
43565                                                                             ,l_component_appl_id
43566                                                                             ,l_amb_context_code
43567                                                                             ,l_entity_code
43568                                                                             ,l_event_class_code
43569                                                                            )
43570                                     ,p_token_3                 => 'OWNER'
43571                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43572                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43573                                                                           ,p_lookup_code    => l_component_type_code
43574                                                                          )
43575                                     ,p_token_4                 => 'PRODUCT_NAME'
43576                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43577                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43578                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43579                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43580                                     ,p_ae_header_id            =>  NULL
43581                                        );
43582 
43583         IF (C_LEVEL_ERROR>= g_log_level) THEN
43584                  trace
43585                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43586                       ,p_level    => C_LEVEL_ERROR
43587                       ,p_module   => l_log_module);
43588         END IF;
43589       END IF;
43590    END IF;
43591    --
43592    --
43593    ------------------------------------------------------------------------------------------------
43594    -- 4219869 Business Flow
43595    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43596    -- Prior Entry.  Currently, the following code is always generated.
43597    ------------------------------------------------------------------------------------------------
43598    XLA_AE_LINES_PKG.ValidateCurrentLine;
43599 
43600    ------------------------------------------------------------------------------------
43601    -- 4219869 Business Flow
43605 
43602    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43603    ------------------------------------------------------------------------------------
43604    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43606    ----------------------------------------------------------------------------------
43607    -- 4219869 Business Flow
43608    -- Update journal entry status -- Need to generate this within IF <condition>
43609    ----------------------------------------------------------------------------------
43610    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43611          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43612          ,p_balance_type_code => l_balance_type_code
43613          );
43614 
43615    -------------------------------------------------------------------------------------------
43616    -- 4262811 - Generate the Accrual Reversal lines
43617    -------------------------------------------------------------------------------------------
43618    BEGIN
43619       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43620                               (g_array_event(p_event_id).array_value_num('header_index'));
43621       IF l_acc_rev_flag IS NULL THEN
43622          l_acc_rev_flag := 'N';
43623       END IF;
43624    EXCEPTION
43625       WHEN OTHERS THEN
43626          l_acc_rev_flag := 'N';
43627    END;
43628    --
43629    IF (l_acc_rev_flag = 'Y') THEN
43630 
43631        -- 4645092  ------------------------------------------------------------------------------
43632        -- To allow MPA report to determine if it should generate report process
43633        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43634        ------------------------------------------------------------------------------------------
43635 
43636        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43637        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43638    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
43639    -- call ADRs
43640    -- Bug 4922099
43641    --
43642    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43643         (NVL(l_actual_upg_option, 'N') = 'O') OR
43644         (NVL(l_enc_upg_option, 'N') = 'O')
43645       )
43646    THEN
43647    NULL;
43648    --
43649    --
43650    
43651   l_ccid := AcctDerRule_20(
43652            p_application_id           => p_application_id
43653          , p_ae_header_id             => l_ae_header_id 
43654 , p_source_22 => p_source_22
43655          , x_transaction_coa_id       => l_adr_transaction_coa_id
43656          , x_accounting_coa_id        => l_adr_accounting_coa_id
43657          , x_value_type_code          => l_adr_value_type_code
43658          , p_side                     => 'NA'
43659    );
43660 
43661    xla_ae_lines_pkg.set_ccid(
43662     p_code_combination_id          => l_ccid
43663   , p_value_type_code              => l_adr_value_type_code
43664   , p_transaction_coa_id           => l_adr_transaction_coa_id
43665   , p_accounting_coa_id            => l_adr_accounting_coa_id
43666   , p_adr_code                     => 'DIST_CCID'
43667   , p_adr_type_code                => 'S'
43668   , p_component_type               => l_component_type
43669   , p_component_code               => l_component_code
43670   , p_component_type_code          => l_component_type_code
43671   , p_component_appl_id            => l_component_appl_id
43672   , p_amb_context_code             => l_amb_context_code
43673   , p_side                         => 'NA'
43674   );
43675 
43676 
43677    --
43678    --
43679    END IF;
43680 
43681        --
43682        -- Update the line information that should be overwritten
43683        --
43684        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43685                                          p_header_num   => 1);
43686        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43687 
43688        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43689 
43690        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43691           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43692        END IF;
43693 
43694       --
43695       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43696       --
43697       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43698           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43699       ELSE
43700           ---------------------------------------------------------------------------------------------------
43701           -- 4262811a Switch Sign
43702           ---------------------------------------------------------------------------------------------------
43703           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43704           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43705                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43706           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43707                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43708           -- 5132302
43712       END IF;
43709           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43710                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43711 
43713 
43714       -- 4955764
43715       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43716       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43717 
43718 
43719       XLA_AE_LINES_PKG.ValidateCurrentLine;
43720       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43721 
43722       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43723                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43724                ,p_balance_type_code => l_balance_type_code);
43725 
43726    END IF;
43727 
43728    -----------------------------------------------------------------------------------------
43729    -- 4262811 Multiperiod Accounting
43730    -----------------------------------------------------------------------------------------
43731      -- No MPA option is assigned.
43732 
43733 
43734 END IF;
43735 END IF;
43736 --
43737 
43738 --
43739 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43740    trace
43741       (p_msg      => 'END of AcctLineType_94'
43742       ,p_level    => C_LEVEL_PROCEDURE
43743       ,p_module   => l_log_module);
43744 END IF;
43745 --
43746 EXCEPTION
43747   WHEN xla_exceptions_pkg.application_exception THEN
43748       RAISE;
43749   WHEN OTHERS THEN
43750        xla_exceptions_pkg.raise_message
43751            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_94');
43752 END AcctLineType_94;
43753 --
43754 
43755 ---------------------------------------
43756 --
43757 -- PRIVATE FUNCTION
43758 --         AcctLineType_95
43759 --
43760 ---------------------------------------
43761 PROCEDURE AcctLineType_95 (
43762   p_application_id        IN NUMBER
43763  ,p_event_id              IN NUMBER
43764  ,p_calculate_acctd_flag  IN VARCHAR2
43765  ,p_calculate_g_l_flag    IN VARCHAR2
43766  ,p_actual_flag           IN OUT VARCHAR2
43767  ,p_balance_type_code     OUT VARCHAR2
43768  ,p_gain_or_loss_ref      OUT VARCHAR2
43769  
43770 --Distribution GL Account
43771  , p_source_22            IN NUMBER
43772 --Distribution Source Type
43773  , p_source_27            IN VARCHAR2
43774 --Distribution Line Identifier
43775  , p_source_29            IN NUMBER
43776 --Distribution Type
43777  , p_source_30            IN VARCHAR2
43778 --Entered Amount
43779  , p_source_31            IN NUMBER
43780 --Currency Code
43781  , p_source_32            IN VARCHAR2
43782 --Exchange Rate
43783  , p_source_34            IN NUMBER
43784 --Exchange Rate Type
43785  , p_source_35            IN VARCHAR2
43786 --Applied To Document Accounting Amount
43787  , p_source_36            IN NUMBER
43788 --Distribution Multi Fund Additional Entry
43789  , p_source_88            IN VARCHAR2
43790 --Applied To Document Exchange Date
43791  , p_source_89            IN DATE
43792 --Cash Receipt Identifier
43793  , p_source_90            IN NUMBER
43794 --Miscellaneous Cash Activity Name
43795  , p_source_91            IN VARCHAR2
43796 )
43797 IS
43798 
43799 l_component_type              VARCHAR2(80);
43800 l_component_code              VARCHAR2(30);
43801 l_component_type_code         VARCHAR2(1);
43802 l_component_appl_id           INTEGER;
43803 l_amb_context_code            VARCHAR2(30);
43804 l_entity_code                 VARCHAR2(30);
43805 l_event_class_code            VARCHAR2(30);
43806 l_ae_header_id                NUMBER;
43807 l_event_type_code             VARCHAR2(30);
43808 l_line_definition_code        VARCHAR2(30);
43809 l_line_definition_owner_code  VARCHAR2(1);
43810 --
43811 -- adr variables
43812 l_segment                     VARCHAR2(30);
43813 l_ccid                        NUMBER;
43814 l_adr_transaction_coa_id      NUMBER;
43815 l_adr_accounting_coa_id       NUMBER;
43816 l_adr_flexfield_segment_code  VARCHAR2(30);
43817 l_adr_flex_value_set_id       NUMBER;
43818 l_adr_value_type_code         VARCHAR2(30);
43819 l_adr_value_combination_id    NUMBER;
43820 l_adr_value_segment_code      VARCHAR2(30);
43821 
43822 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43823 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43824 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43825 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43826 
43827 -- 4262811 Variables ------------------------------------------------------------------------------------------
43828 l_entered_amt_idx             NUMBER;
43829 l_accted_amt_idx              NUMBER;
43830 l_acc_rev_flag                VARCHAR2(1);
43831 l_accrual_line_num            NUMBER;
43832 l_tmp_amt                     NUMBER;
43833 l_acc_rev_natural_side_code   VARCHAR2(1);
43834 
43835 l_num_entries                 NUMBER;
43836 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43837 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43838 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43839 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43840 l_recog_line_1                NUMBER;
43841 l_recog_line_2                NUMBER;
43842 
43843 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43847 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43844 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43845 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43846 
43848 
43849 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43850 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43851 
43852 ---------------------------------------------------------------------------------------------------------------
43853 
43854 
43855 --
43856 -- bulk performance
43857 --
43858 l_balance_type_code           VARCHAR2(1);
43859 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43860 l_log_module                  VARCHAR2(240);
43861 
43862 --
43863 -- Upgrade strategy
43864 --
43865 l_actual_upg_option           VARCHAR2(1);
43866 l_enc_upg_option           VARCHAR2(1);
43867 
43868 --
43869 BEGIN
43870 --
43871 IF g_log_enabled THEN
43872       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_95';
43873 END IF;
43874 --
43875 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43876 
43877       trace
43878          (p_msg      => 'BEGIN of AcctLineType_95'
43879          ,p_level    => C_LEVEL_PROCEDURE
43880          ,p_module   => l_log_module);
43881 
43882 END IF;
43883 --
43884 l_component_type             := 'AMB_JLT';
43885 l_component_code             := 'MISC_RCT_MISCCASH';
43886 l_component_type_code        := 'S';
43887 l_component_appl_id          :=  222;
43888 l_amb_context_code           := 'DEFAULT';
43889 l_entity_code                := 'RECEIPTS';
43890 l_event_class_code           := 'MISC_RECEIPT';
43891 l_event_type_code            := 'MISC_RECEIPT_ALL';
43892 l_line_definition_owner_code := 'S';
43893 l_line_definition_code       := 'JA_CN_AR_MISC_RECEIPTS';
43894 --
43895 l_balance_type_code          := 'A';
43896 l_segment                     := NULL;
43897 l_ccid                        := NULL;
43898 l_adr_transaction_coa_id      := NULL;
43899 l_adr_accounting_coa_id       := NULL;
43900 l_adr_flexfield_segment_code  := NULL;
43901 l_adr_flex_value_set_id       := NULL;
43902 l_adr_value_type_code         := NULL;
43903 l_adr_value_combination_id    := NULL;
43904 l_adr_value_segment_code      := NULL;
43905 
43906 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
43907 l_bflow_class_code           := '';    -- 4219869 Business Flow
43908 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
43909 l_budgetary_control_flag     := 'N';
43910 
43911 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43912 l_bflow_applied_to_amt       := NULL; -- 5132302
43913 l_entered_amt_idx            := NULL;          -- 4262811
43914 l_accted_amt_idx             := NULL;          -- 4262811
43915 l_acc_rev_flag               := NULL;          -- 4262811
43916 l_accrual_line_num           := NULL;          -- 4262811
43917 l_tmp_amt                    := NULL;          -- 4262811
43918 --
43919  
43920 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43921     l_balance_type_code <> 'B' THEN
43922 IF NVL(p_source_27,'
43923 ') =  'MISCCASH' AND 
43924 NVL(p_source_88,'
43925 ') =  'N'
43926  THEN 
43927 
43928    --
43929    XLA_AE_LINES_PKG.SetNewLine;
43930 
43931    p_balance_type_code          := l_balance_type_code;
43932    -- set the flag so later we will know whether the gain loss line needs to be created
43933    
43934    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43935      p_actual_flag :='A';
43936    END IF;
43937 
43938    --
43939    -- bulk performance
43940    --
43941    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43942                                       p_header_num   => 0); -- 4262811
43943    --
43944    -- set accounting line options
43945    --
43946    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43947            p_natural_side_code          => 'C'
43948          , p_gain_or_loss_flag          => 'N'
43949          , p_gl_transfer_mode_code      => 'S'
43950          , p_acct_entry_type_code       => 'A'
43951          , p_switch_side_flag           => 'Y'
43952          , p_merge_duplicate_code       => 'A'
43953          );
43954    --
43955    l_acc_rev_natural_side_code := 'D';  -- 4262811
43956    -- 
43957    --
43958    -- set accounting line type info
43959    --
43960    xla_ae_lines_pkg.SetAcctLineType
43961       (p_component_type             => l_component_type
43962       ,p_event_type_code            => l_event_type_code
43963       ,p_line_definition_owner_code => l_line_definition_owner_code
43964       ,p_line_definition_code       => l_line_definition_code
43965       ,p_accounting_line_code       => l_component_code
43966       ,p_accounting_line_type_code  => l_component_type_code
43967       ,p_accounting_line_appl_id    => l_component_appl_id
43968       ,p_amb_context_code           => l_amb_context_code
43969       ,p_entity_code                => l_entity_code
43970       ,p_event_class_code           => l_event_class_code);
43971    --
43972    -- set accounting class
43973    --
43974    xla_ae_lines_pkg.SetAcctClass(
43975            p_accounting_class_code  => 'MISC_CASH'
43976          , p_ae_header_id           => l_ae_header_id
43980    -- set rounding class
43977          );
43978 
43979    --
43981    --
43982    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43983                       'RECEIVABLE';
43984 
43985    --
43986    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43987    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43988    --
43989    -- bulk performance
43990    --
43991    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43992 
43993    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43994       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43995 
43996    -- 4955764
43997    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43998       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43999 
44000    -- 4458381 Public Sector Enh
44001    
44002    --
44003    -- set accounting attributes for the line type
44004    --
44005    l_entered_amt_idx := 3;
44006    l_accted_amt_idx  := 8;
44007    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44008    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44009    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
44010    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44011    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
44012    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44013    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
44014    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44015    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
44016    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44017    l_rec_acct_attrs.array_date_value(5)  := p_source_89;
44018    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44019    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
44020    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44021    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
44022    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44023    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
44024 
44025    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44026    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44027 
44028    ---------------------------------------------------------------------------------------------------------------
44029    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44030    ---------------------------------------------------------------------------------------------------------------
44031    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44032 
44033    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44034    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44035 
44036    IF xla_accounting_cache_pkg.GetValueChar
44037          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44038          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44039    AND l_bflow_method_code = 'PRIOR_ENTRY'
44040 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44041    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44042          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44043        )
44044    THEN
44045          xla_ae_lines_pkg.BflowUpgEntry
44046            (p_business_method_code    => l_bflow_method_code
44047            ,p_business_class_code     => l_bflow_class_code
44048            ,p_balance_type            => l_balance_type_code);
44049    ELSE
44050       NULL;
44051 -- No business flow processing for business flow method of NONE.
44052    END IF;
44053 
44054    --
44055    -- call analytical criteria
44056    --
44057    
44058 
44059 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
44060 xla_ae_lines_pkg.SetAnalyticalCriteria(
44061    p_analytical_criterion_name    => 'Check Id'
44062  , p_analytical_criterion_owner   => 'S'
44063  , p_analytical_criterion_code    => 'CHECK_ID'
44064  , p_amb_context_code             => 'DEFAULT'
44065  , p_balancing_flag               => 'N'
44066  
44067  , p_analytical_detail_char_1    =>  NULL
44068  , p_analytical_detail_num_1     =>  p_source_90
44069  , p_analytical_detail_date_1    =>  NULL
44070 
44071  , p_ae_header_id                 => l_ae_header_id
44072 )
44073 ;
44074 --
44075 
44076 
44077 xla_ae_lines_pkg.g_rec_lines.array_anc_id_2(xla_ae_lines_pkg.g_LineNumber) :=
44078 xla_ae_lines_pkg.SetAnalyticalCriteria(
44079    p_analytical_criterion_name    => 'Miscellaneous Cash Activity'
44080  , p_analytical_criterion_owner   => 'S'
44081  , p_analytical_criterion_code    => 'MISCELLANEOUS_CASH_ACTIVITY'
44082  , p_amb_context_code             => 'DEFAULT'
44083  , p_balancing_flag               => 'N'
44084  
44085  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_91)
44086  , p_analytical_detail_num_1     =>  NULL
44087  , p_analytical_detail_date_1    =>  NULL
44088 
44089  , p_ae_header_id                 => l_ae_header_id
44090 )
44091 ;
44092 --
44096    --
44093 
44094    --
44095    -- call description
44097    -- No description or it is inherited.
44098    --
44099    -- call ADRs
44100    -- Bug 4922099
44101    --
44102    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44103         (NVL(l_actual_upg_option, 'N') = 'O') OR
44104         (NVL(l_enc_upg_option, 'N') = 'O')
44105       )
44106    THEN
44107    NULL;
44108    --
44109    --
44110    
44111   l_ccid := AcctDerRule_20(
44112            p_application_id           => p_application_id
44113          , p_ae_header_id             => l_ae_header_id 
44114 , p_source_22 => p_source_22
44115          , x_transaction_coa_id       => l_adr_transaction_coa_id
44116          , x_accounting_coa_id        => l_adr_accounting_coa_id
44117          , x_value_type_code          => l_adr_value_type_code
44118          , p_side                     => 'NA'
44119    );
44120 
44121    xla_ae_lines_pkg.set_ccid(
44122     p_code_combination_id          => l_ccid
44123   , p_value_type_code              => l_adr_value_type_code
44124   , p_transaction_coa_id           => l_adr_transaction_coa_id
44125   , p_accounting_coa_id            => l_adr_accounting_coa_id
44126   , p_adr_code                     => 'DIST_CCID'
44127   , p_adr_type_code                => 'S'
44128   , p_component_type               => l_component_type
44129   , p_component_code               => l_component_code
44130   , p_component_type_code          => l_component_type_code
44131   , p_component_appl_id            => l_component_appl_id
44132   , p_amb_context_code             => l_amb_context_code
44133   , p_side                         => 'NA'
44134   );
44135 
44136 
44137    --
44138    --
44139    END IF;
44140    --
44141    -- Bug 4922099
44142    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44143           (NVL(l_enc_upg_option, 'N') = 'O')
44144         ) AND
44145         (l_bflow_method_code = 'PRIOR_ENTRY')
44146       )
44147    THEN
44148       IF
44149       --
44150       1 = 2
44151       --
44152       THEN
44153       xla_accounting_err_pkg.build_message
44154                                     (p_appli_s_name            => 'XLA'
44155                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44156                                     ,p_token_1                 => 'LINE_NUMBER'
44157                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44158                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44159                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44160                                                                              l_component_type
44161                                                                             ,l_component_code
44162                                                                             ,l_component_type_code
44163                                                                             ,l_component_appl_id
44164                                                                             ,l_amb_context_code
44165                                                                             ,l_entity_code
44166                                                                             ,l_event_class_code
44167                                                                            )
44168                                     ,p_token_3                 => 'OWNER'
44169                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44170                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44171                                                                           ,p_lookup_code    => l_component_type_code
44172                                                                          )
44173                                     ,p_token_4                 => 'PRODUCT_NAME'
44174                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44175                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44176                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44177                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44178                                     ,p_ae_header_id            =>  NULL
44179                                        );
44180 
44181         IF (C_LEVEL_ERROR>= g_log_level) THEN
44182                  trace
44183                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44184                       ,p_level    => C_LEVEL_ERROR
44185                       ,p_module   => l_log_module);
44186         END IF;
44187       END IF;
44188    END IF;
44189    --
44190    --
44191    ------------------------------------------------------------------------------------------------
44192    -- 4219869 Business Flow
44193    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44194    -- Prior Entry.  Currently, the following code is always generated.
44195    ------------------------------------------------------------------------------------------------
44196    XLA_AE_LINES_PKG.ValidateCurrentLine;
44197 
44198    ------------------------------------------------------------------------------------
44199    -- 4219869 Business Flow
44203 
44200    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44201    ------------------------------------------------------------------------------------
44202    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44204    ----------------------------------------------------------------------------------
44205    -- 4219869 Business Flow
44206    -- Update journal entry status -- Need to generate this within IF <condition>
44207    ----------------------------------------------------------------------------------
44208    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44209          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44210          ,p_balance_type_code => l_balance_type_code
44211          );
44212 
44213    -------------------------------------------------------------------------------------------
44214    -- 4262811 - Generate the Accrual Reversal lines
44215    -------------------------------------------------------------------------------------------
44216    BEGIN
44217       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44218                               (g_array_event(p_event_id).array_value_num('header_index'));
44219       IF l_acc_rev_flag IS NULL THEN
44220          l_acc_rev_flag := 'N';
44221       END IF;
44222    EXCEPTION
44223       WHEN OTHERS THEN
44224          l_acc_rev_flag := 'N';
44225    END;
44226    --
44227    IF (l_acc_rev_flag = 'Y') THEN
44228 
44229        -- 4645092  ------------------------------------------------------------------------------
44230        -- To allow MPA report to determine if it should generate report process
44231        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44232        ------------------------------------------------------------------------------------------
44233 
44234        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44235        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44236    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
44237    -- call ADRs
44238    -- Bug 4922099
44239    --
44240    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44241         (NVL(l_actual_upg_option, 'N') = 'O') OR
44242         (NVL(l_enc_upg_option, 'N') = 'O')
44243       )
44244    THEN
44245    NULL;
44246    --
44247    --
44248    
44249   l_ccid := AcctDerRule_20(
44250            p_application_id           => p_application_id
44251          , p_ae_header_id             => l_ae_header_id 
44252 , p_source_22 => p_source_22
44253          , x_transaction_coa_id       => l_adr_transaction_coa_id
44254          , x_accounting_coa_id        => l_adr_accounting_coa_id
44255          , x_value_type_code          => l_adr_value_type_code
44256          , p_side                     => 'NA'
44257    );
44258 
44259    xla_ae_lines_pkg.set_ccid(
44260     p_code_combination_id          => l_ccid
44261   , p_value_type_code              => l_adr_value_type_code
44262   , p_transaction_coa_id           => l_adr_transaction_coa_id
44263   , p_accounting_coa_id            => l_adr_accounting_coa_id
44264   , p_adr_code                     => 'DIST_CCID'
44265   , p_adr_type_code                => 'S'
44266   , p_component_type               => l_component_type
44267   , p_component_code               => l_component_code
44268   , p_component_type_code          => l_component_type_code
44269   , p_component_appl_id            => l_component_appl_id
44270   , p_amb_context_code             => l_amb_context_code
44271   , p_side                         => 'NA'
44272   );
44273 
44274 
44275    --
44276    --
44277    END IF;
44278 
44279        --
44280        -- Update the line information that should be overwritten
44281        --
44282        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44283                                          p_header_num   => 1);
44284        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44285 
44286        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44287 
44288        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44289           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44290        END IF;
44291 
44292       --
44293       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44294       --
44295       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44296           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44297       ELSE
44298           ---------------------------------------------------------------------------------------------------
44299           -- 4262811a Switch Sign
44300           ---------------------------------------------------------------------------------------------------
44301           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44302           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44303                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44304           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44305                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44306           -- 5132302
44310       END IF;
44307           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44308                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44309 
44311 
44312       -- 4955764
44313       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44314       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44315 
44316 
44317       XLA_AE_LINES_PKG.ValidateCurrentLine;
44318       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44319 
44320       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44321                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44322                ,p_balance_type_code => l_balance_type_code);
44323 
44324    END IF;
44325 
44326    -----------------------------------------------------------------------------------------
44327    -- 4262811 Multiperiod Accounting
44328    -----------------------------------------------------------------------------------------
44329      -- No MPA option is assigned.
44330 
44331 
44332 END IF;
44333 END IF;
44334 --
44335 
44336 --
44337 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44338    trace
44339       (p_msg      => 'END of AcctLineType_95'
44340       ,p_level    => C_LEVEL_PROCEDURE
44341       ,p_module   => l_log_module);
44342 END IF;
44343 --
44344 EXCEPTION
44345   WHEN xla_exceptions_pkg.application_exception THEN
44346       RAISE;
44347   WHEN OTHERS THEN
44348        xla_exceptions_pkg.raise_message
44349            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_95');
44350 END AcctLineType_95;
44351 --
44352 
44353 ---------------------------------------
44354 --
44355 -- PRIVATE FUNCTION
44356 --         AcctLineType_96
44357 --
44358 ---------------------------------------
44359 PROCEDURE AcctLineType_96 (
44360   p_application_id        IN NUMBER
44361  ,p_event_id              IN NUMBER
44362  ,p_calculate_acctd_flag  IN VARCHAR2
44363  ,p_calculate_g_l_flag    IN VARCHAR2
44364  ,p_actual_flag           IN OUT VARCHAR2
44365  ,p_balance_type_code     OUT VARCHAR2
44366  ,p_gain_or_loss_ref      OUT VARCHAR2
44367  
44368 --Distribution GL Account
44369  , p_source_22            IN NUMBER
44370 --Distribution Source Type
44371  , p_source_27            IN VARCHAR2
44372 --Distribution Line Identifier
44373  , p_source_29            IN NUMBER
44374 --Distribution Type
44375  , p_source_30            IN VARCHAR2
44376 --Entered Amount
44377  , p_source_31            IN NUMBER
44378 --Currency Code
44379  , p_source_32            IN VARCHAR2
44380 --Exchange Rate
44381  , p_source_34            IN NUMBER
44382 --Exchange Rate Type
44383  , p_source_35            IN VARCHAR2
44384 --Applied To Document Accounting Amount
44385  , p_source_36            IN NUMBER
44386 --Distribution Multi Fund Additional Entry
44387  , p_source_88            IN VARCHAR2
44388 --Applied To Document Exchange Date
44389  , p_source_89            IN DATE
44390 --Cash Receipt Identifier
44391  , p_source_90            IN NUMBER
44392 )
44393 IS
44394 
44395 l_component_type              VARCHAR2(80);
44396 l_component_code              VARCHAR2(30);
44397 l_component_type_code         VARCHAR2(1);
44398 l_component_appl_id           INTEGER;
44399 l_amb_context_code            VARCHAR2(30);
44400 l_entity_code                 VARCHAR2(30);
44401 l_event_class_code            VARCHAR2(30);
44402 l_ae_header_id                NUMBER;
44403 l_event_type_code             VARCHAR2(30);
44404 l_line_definition_code        VARCHAR2(30);
44405 l_line_definition_owner_code  VARCHAR2(1);
44406 --
44407 -- adr variables
44408 l_segment                     VARCHAR2(30);
44409 l_ccid                        NUMBER;
44410 l_adr_transaction_coa_id      NUMBER;
44411 l_adr_accounting_coa_id       NUMBER;
44412 l_adr_flexfield_segment_code  VARCHAR2(30);
44413 l_adr_flex_value_set_id       NUMBER;
44414 l_adr_value_type_code         VARCHAR2(30);
44415 l_adr_value_combination_id    NUMBER;
44416 l_adr_value_segment_code      VARCHAR2(30);
44417 
44418 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44419 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44420 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44421 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44422 
44423 -- 4262811 Variables ------------------------------------------------------------------------------------------
44424 l_entered_amt_idx             NUMBER;
44425 l_accted_amt_idx              NUMBER;
44426 l_acc_rev_flag                VARCHAR2(1);
44427 l_accrual_line_num            NUMBER;
44428 l_tmp_amt                     NUMBER;
44429 l_acc_rev_natural_side_code   VARCHAR2(1);
44430 
44431 l_num_entries                 NUMBER;
44432 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44433 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44434 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44435 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44436 l_recog_line_1                NUMBER;
44437 l_recog_line_2                NUMBER;
44438 
44439 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44440 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44444 
44441 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44442 
44443 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44445 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44446 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44447 
44448 ---------------------------------------------------------------------------------------------------------------
44449 
44450 
44451 --
44452 -- bulk performance
44453 --
44454 l_balance_type_code           VARCHAR2(1);
44455 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44456 l_log_module                  VARCHAR2(240);
44457 
44458 --
44459 -- Upgrade strategy
44460 --
44461 l_actual_upg_option           VARCHAR2(1);
44462 l_enc_upg_option           VARCHAR2(1);
44463 
44464 --
44465 BEGIN
44466 --
44467 IF g_log_enabled THEN
44468       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_96';
44469 END IF;
44470 --
44471 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44472 
44473       trace
44474          (p_msg      => 'BEGIN of AcctLineType_96'
44475          ,p_level    => C_LEVEL_PROCEDURE
44476          ,p_module   => l_log_module);
44477 
44478 END IF;
44479 --
44480 l_component_type             := 'AMB_JLT';
44481 l_component_code             := 'MISC_RCT_REMIT';
44482 l_component_type_code        := 'S';
44483 l_component_appl_id          :=  222;
44484 l_amb_context_code           := 'DEFAULT';
44485 l_entity_code                := 'RECEIPTS';
44486 l_event_class_code           := 'MISC_RECEIPT';
44487 l_event_type_code            := 'MISC_RECEIPT_ALL';
44488 l_line_definition_owner_code := 'S';
44489 l_line_definition_code       := 'JA_CN_AR_MISC_RECEIPTS';
44490 --
44491 l_balance_type_code          := 'A';
44492 l_segment                     := NULL;
44493 l_ccid                        := NULL;
44494 l_adr_transaction_coa_id      := NULL;
44495 l_adr_accounting_coa_id       := NULL;
44496 l_adr_flexfield_segment_code  := NULL;
44497 l_adr_flex_value_set_id       := NULL;
44498 l_adr_value_type_code         := NULL;
44499 l_adr_value_combination_id    := NULL;
44500 l_adr_value_segment_code      := NULL;
44501 
44502 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44503 l_bflow_class_code           := '';    -- 4219869 Business Flow
44504 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44505 l_budgetary_control_flag     := 'N';
44506 
44507 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44508 l_bflow_applied_to_amt       := NULL; -- 5132302
44509 l_entered_amt_idx            := NULL;          -- 4262811
44510 l_accted_amt_idx             := NULL;          -- 4262811
44511 l_acc_rev_flag               := NULL;          -- 4262811
44512 l_accrual_line_num           := NULL;          -- 4262811
44513 l_tmp_amt                    := NULL;          -- 4262811
44514 --
44515  
44516 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44517     l_balance_type_code <> 'B' THEN
44518 IF NVL(p_source_27,'
44519 ') =  'REMITTANCE' AND 
44520 NVL(p_source_88,'
44521 ') =  'N'
44522  THEN 
44523 
44524    --
44525    XLA_AE_LINES_PKG.SetNewLine;
44526 
44527    p_balance_type_code          := l_balance_type_code;
44528    -- set the flag so later we will know whether the gain loss line needs to be created
44529    
44530    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44531      p_actual_flag :='A';
44532    END IF;
44533 
44534    --
44535    -- bulk performance
44536    --
44537    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44538                                       p_header_num   => 0); -- 4262811
44539    --
44540    -- set accounting line options
44541    --
44542    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44543            p_natural_side_code          => 'C'
44544          , p_gain_or_loss_flag          => 'N'
44545          , p_gl_transfer_mode_code      => 'S'
44546          , p_acct_entry_type_code       => 'A'
44547          , p_switch_side_flag           => 'Y'
44548          , p_merge_duplicate_code       => 'A'
44549          );
44550    --
44551    l_acc_rev_natural_side_code := 'D';  -- 4262811
44552    -- 
44553    --
44554    -- set accounting line type info
44555    --
44556    xla_ae_lines_pkg.SetAcctLineType
44557       (p_component_type             => l_component_type
44558       ,p_event_type_code            => l_event_type_code
44559       ,p_line_definition_owner_code => l_line_definition_owner_code
44560       ,p_line_definition_code       => l_line_definition_code
44561       ,p_accounting_line_code       => l_component_code
44562       ,p_accounting_line_type_code  => l_component_type_code
44563       ,p_accounting_line_appl_id    => l_component_appl_id
44564       ,p_amb_context_code           => l_amb_context_code
44565       ,p_entity_code                => l_entity_code
44566       ,p_event_class_code           => l_event_class_code);
44567    --
44568    -- set accounting class
44569    --
44570    xla_ae_lines_pkg.SetAcctClass(
44571            p_accounting_class_code  => 'REMITTANCE'
44572          , p_ae_header_id           => l_ae_header_id
44573          );
44574 
44575    --
44576    -- set rounding class
44577    --
44581    --
44578    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44579                       'RECEIVABLE';
44580 
44582    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44583    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44584    --
44585    -- bulk performance
44586    --
44587    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44588 
44589    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44590       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44591 
44592    -- 4955764
44593    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44594       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44595 
44596    -- 4458381 Public Sector Enh
44597    
44598    --
44599    -- set accounting attributes for the line type
44600    --
44601    l_entered_amt_idx := 3;
44602    l_accted_amt_idx  := 8;
44603    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44604    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44605    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
44606    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44607    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
44608    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44609    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
44610    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44611    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
44612    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44613    l_rec_acct_attrs.array_date_value(5)  := p_source_89;
44614    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44615    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
44616    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44617    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
44618    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44619    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
44620 
44621    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44622    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44623 
44624    ---------------------------------------------------------------------------------------------------------------
44625    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44626    ---------------------------------------------------------------------------------------------------------------
44627    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44628 
44629    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44630    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44631 
44632    IF xla_accounting_cache_pkg.GetValueChar
44633          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44634          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44635    AND l_bflow_method_code = 'PRIOR_ENTRY'
44636 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44637    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44638          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44639        )
44640    THEN
44641          xla_ae_lines_pkg.BflowUpgEntry
44642            (p_business_method_code    => l_bflow_method_code
44643            ,p_business_class_code     => l_bflow_class_code
44644            ,p_balance_type            => l_balance_type_code);
44645    ELSE
44646       NULL;
44647 -- No business flow processing for business flow method of NONE.
44648    END IF;
44649 
44650    --
44651    -- call analytical criteria
44652    --
44653    
44654 
44655 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
44656 xla_ae_lines_pkg.SetAnalyticalCriteria(
44657    p_analytical_criterion_name    => 'Check Id'
44658  , p_analytical_criterion_owner   => 'S'
44659  , p_analytical_criterion_code    => 'CHECK_ID'
44660  , p_amb_context_code             => 'DEFAULT'
44661  , p_balancing_flag               => 'N'
44662  
44663  , p_analytical_detail_char_1    =>  NULL
44664  , p_analytical_detail_num_1     =>  p_source_90
44665  , p_analytical_detail_date_1    =>  NULL
44666 
44667  , p_ae_header_id                 => l_ae_header_id
44668 )
44669 ;
44670 --
44671 
44672    --
44673    -- call description
44674    --
44675    -- No description or it is inherited.
44676    --
44677    -- call ADRs
44678    -- Bug 4922099
44679    --
44680    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44681         (NVL(l_actual_upg_option, 'N') = 'O') OR
44682         (NVL(l_enc_upg_option, 'N') = 'O')
44683       )
44684    THEN
44685    NULL;
44686    --
44687    --
44688    
44689   l_ccid := AcctDerRule_20(
44690            p_application_id           => p_application_id
44691          , p_ae_header_id             => l_ae_header_id 
44692 , p_source_22 => p_source_22
44693          , x_transaction_coa_id       => l_adr_transaction_coa_id
44694          , x_accounting_coa_id        => l_adr_accounting_coa_id
44698 
44695          , x_value_type_code          => l_adr_value_type_code
44696          , p_side                     => 'NA'
44697    );
44699    xla_ae_lines_pkg.set_ccid(
44700     p_code_combination_id          => l_ccid
44701   , p_value_type_code              => l_adr_value_type_code
44702   , p_transaction_coa_id           => l_adr_transaction_coa_id
44703   , p_accounting_coa_id            => l_adr_accounting_coa_id
44704   , p_adr_code                     => 'DIST_CCID'
44705   , p_adr_type_code                => 'S'
44706   , p_component_type               => l_component_type
44707   , p_component_code               => l_component_code
44708   , p_component_type_code          => l_component_type_code
44709   , p_component_appl_id            => l_component_appl_id
44710   , p_amb_context_code             => l_amb_context_code
44711   , p_side                         => 'NA'
44712   );
44713 
44714 
44715    --
44716    --
44717    END IF;
44718    --
44719    -- Bug 4922099
44720    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44721           (NVL(l_enc_upg_option, 'N') = 'O')
44722         ) AND
44723         (l_bflow_method_code = 'PRIOR_ENTRY')
44724       )
44725    THEN
44726       IF
44727       --
44728       1 = 2
44729       --
44730       THEN
44731       xla_accounting_err_pkg.build_message
44732                                     (p_appli_s_name            => 'XLA'
44733                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44734                                     ,p_token_1                 => 'LINE_NUMBER'
44735                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44736                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44737                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44738                                                                              l_component_type
44739                                                                             ,l_component_code
44740                                                                             ,l_component_type_code
44741                                                                             ,l_component_appl_id
44742                                                                             ,l_amb_context_code
44743                                                                             ,l_entity_code
44744                                                                             ,l_event_class_code
44745                                                                            )
44746                                     ,p_token_3                 => 'OWNER'
44747                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44748                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44749                                                                           ,p_lookup_code    => l_component_type_code
44750                                                                          )
44751                                     ,p_token_4                 => 'PRODUCT_NAME'
44752                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44753                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44754                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44755                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44756                                     ,p_ae_header_id            =>  NULL
44757                                        );
44758 
44759         IF (C_LEVEL_ERROR>= g_log_level) THEN
44760                  trace
44761                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44762                       ,p_level    => C_LEVEL_ERROR
44763                       ,p_module   => l_log_module);
44764         END IF;
44765       END IF;
44766    END IF;
44767    --
44768    --
44769    ------------------------------------------------------------------------------------------------
44770    -- 4219869 Business Flow
44771    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44772    -- Prior Entry.  Currently, the following code is always generated.
44773    ------------------------------------------------------------------------------------------------
44774    XLA_AE_LINES_PKG.ValidateCurrentLine;
44775 
44776    ------------------------------------------------------------------------------------
44777    -- 4219869 Business Flow
44778    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44779    ------------------------------------------------------------------------------------
44780    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44781 
44782    ----------------------------------------------------------------------------------
44783    -- 4219869 Business Flow
44784    -- Update journal entry status -- Need to generate this within IF <condition>
44785    ----------------------------------------------------------------------------------
44786    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44787          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44788          ,p_balance_type_code => l_balance_type_code
44789          );
44790 
44791    -------------------------------------------------------------------------------------------
44795       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44792    -- 4262811 - Generate the Accrual Reversal lines
44793    -------------------------------------------------------------------------------------------
44794    BEGIN
44796                               (g_array_event(p_event_id).array_value_num('header_index'));
44797       IF l_acc_rev_flag IS NULL THEN
44798          l_acc_rev_flag := 'N';
44799       END IF;
44800    EXCEPTION
44801       WHEN OTHERS THEN
44802          l_acc_rev_flag := 'N';
44803    END;
44804    --
44805    IF (l_acc_rev_flag = 'Y') THEN
44806 
44807        -- 4645092  ------------------------------------------------------------------------------
44808        -- To allow MPA report to determine if it should generate report process
44809        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44810        ------------------------------------------------------------------------------------------
44811 
44812        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44813        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44814    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
44815    -- call ADRs
44816    -- Bug 4922099
44817    --
44818    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44819         (NVL(l_actual_upg_option, 'N') = 'O') OR
44820         (NVL(l_enc_upg_option, 'N') = 'O')
44821       )
44822    THEN
44823    NULL;
44824    --
44825    --
44826    
44827   l_ccid := AcctDerRule_20(
44828            p_application_id           => p_application_id
44829          , p_ae_header_id             => l_ae_header_id 
44830 , p_source_22 => p_source_22
44831          , x_transaction_coa_id       => l_adr_transaction_coa_id
44832          , x_accounting_coa_id        => l_adr_accounting_coa_id
44833          , x_value_type_code          => l_adr_value_type_code
44834          , p_side                     => 'NA'
44835    );
44836 
44837    xla_ae_lines_pkg.set_ccid(
44838     p_code_combination_id          => l_ccid
44839   , p_value_type_code              => l_adr_value_type_code
44840   , p_transaction_coa_id           => l_adr_transaction_coa_id
44841   , p_accounting_coa_id            => l_adr_accounting_coa_id
44842   , p_adr_code                     => 'DIST_CCID'
44843   , p_adr_type_code                => 'S'
44844   , p_component_type               => l_component_type
44845   , p_component_code               => l_component_code
44846   , p_component_type_code          => l_component_type_code
44847   , p_component_appl_id            => l_component_appl_id
44848   , p_amb_context_code             => l_amb_context_code
44849   , p_side                         => 'NA'
44850   );
44851 
44852 
44853    --
44854    --
44855    END IF;
44856 
44857        --
44858        -- Update the line information that should be overwritten
44859        --
44860        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44861                                          p_header_num   => 1);
44862        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44863 
44864        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44865 
44866        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44867           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44868        END IF;
44869 
44870       --
44871       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44872       --
44873       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44874           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44875       ELSE
44876           ---------------------------------------------------------------------------------------------------
44877           -- 4262811a Switch Sign
44878           ---------------------------------------------------------------------------------------------------
44879           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44880           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44881                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44882           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44883                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44884           -- 5132302
44885           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44886                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44887 
44888       END IF;
44889 
44890       -- 4955764
44891       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44892       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44893 
44894 
44895       XLA_AE_LINES_PKG.ValidateCurrentLine;
44896       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44897 
44898       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44899                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44900                ,p_balance_type_code => l_balance_type_code);
44901 
44902    END IF;
44903 
44907      -- No MPA option is assigned.
44904    -----------------------------------------------------------------------------------------
44905    -- 4262811 Multiperiod Accounting
44906    -----------------------------------------------------------------------------------------
44908 
44909 
44910 END IF;
44911 END IF;
44912 --
44913 
44914 --
44915 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44916    trace
44917       (p_msg      => 'END of AcctLineType_96'
44918       ,p_level    => C_LEVEL_PROCEDURE
44919       ,p_module   => l_log_module);
44920 END IF;
44921 --
44922 EXCEPTION
44923   WHEN xla_exceptions_pkg.application_exception THEN
44924       RAISE;
44925   WHEN OTHERS THEN
44926        xla_exceptions_pkg.raise_message
44927            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_96');
44928 END AcctLineType_96;
44929 --
44930 
44931 ---------------------------------------
44932 --
44933 -- PRIVATE FUNCTION
44934 --         AcctLineType_97
44935 --
44936 ---------------------------------------
44937 PROCEDURE AcctLineType_97 (
44938   p_application_id        IN NUMBER
44939  ,p_event_id              IN NUMBER
44940  ,p_calculate_acctd_flag  IN VARCHAR2
44941  ,p_calculate_g_l_flag    IN VARCHAR2
44942  ,p_actual_flag           IN OUT VARCHAR2
44943  ,p_balance_type_code     OUT VARCHAR2
44944  ,p_gain_or_loss_ref      OUT VARCHAR2
44945  
44946 --Distribution GL Account
44947  , p_source_22            IN NUMBER
44948 --Distribution Source Type
44949  , p_source_27            IN VARCHAR2
44950 --Distribution Line Identifier
44951  , p_source_29            IN NUMBER
44952 --Distribution Type
44953  , p_source_30            IN VARCHAR2
44954 --Entered Amount
44955  , p_source_31            IN NUMBER
44956 --Currency Code
44957  , p_source_32            IN VARCHAR2
44958 --Exchange Rate
44959  , p_source_34            IN NUMBER
44960 --Exchange Rate Type
44961  , p_source_35            IN VARCHAR2
44962 --Applied To Document Accounting Amount
44963  , p_source_36            IN NUMBER
44964 --Distribution Multi Fund Additional Entry
44965  , p_source_88            IN VARCHAR2
44966 --Applied To Document Exchange Date
44967  , p_source_89            IN DATE
44968 --Cash Receipt Identifier
44969  , p_source_90            IN NUMBER
44970 )
44971 IS
44972 
44973 l_component_type              VARCHAR2(80);
44974 l_component_code              VARCHAR2(30);
44975 l_component_type_code         VARCHAR2(1);
44976 l_component_appl_id           INTEGER;
44977 l_amb_context_code            VARCHAR2(30);
44978 l_entity_code                 VARCHAR2(30);
44979 l_event_class_code            VARCHAR2(30);
44980 l_ae_header_id                NUMBER;
44981 l_event_type_code             VARCHAR2(30);
44982 l_line_definition_code        VARCHAR2(30);
44983 l_line_definition_owner_code  VARCHAR2(1);
44984 --
44985 -- adr variables
44986 l_segment                     VARCHAR2(30);
44987 l_ccid                        NUMBER;
44988 l_adr_transaction_coa_id      NUMBER;
44989 l_adr_accounting_coa_id       NUMBER;
44990 l_adr_flexfield_segment_code  VARCHAR2(30);
44991 l_adr_flex_value_set_id       NUMBER;
44992 l_adr_value_type_code         VARCHAR2(30);
44993 l_adr_value_combination_id    NUMBER;
44994 l_adr_value_segment_code      VARCHAR2(30);
44995 
44996 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44997 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44998 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44999 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45000 
45001 -- 4262811 Variables ------------------------------------------------------------------------------------------
45002 l_entered_amt_idx             NUMBER;
45003 l_accted_amt_idx              NUMBER;
45004 l_acc_rev_flag                VARCHAR2(1);
45005 l_accrual_line_num            NUMBER;
45006 l_tmp_amt                     NUMBER;
45007 l_acc_rev_natural_side_code   VARCHAR2(1);
45008 
45009 l_num_entries                 NUMBER;
45010 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45011 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45012 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45013 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45014 l_recog_line_1                NUMBER;
45015 l_recog_line_2                NUMBER;
45016 
45017 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45018 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45019 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45020 
45021 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45022 
45023 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45024 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45025 
45026 ---------------------------------------------------------------------------------------------------------------
45027 
45028 
45029 --
45030 -- bulk performance
45031 --
45032 l_balance_type_code           VARCHAR2(1);
45033 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45034 l_log_module                  VARCHAR2(240);
45035 
45036 --
45037 -- Upgrade strategy
45038 --
45039 l_actual_upg_option           VARCHAR2(1);
45043 BEGIN
45040 l_enc_upg_option           VARCHAR2(1);
45041 
45042 --
45044 --
45045 IF g_log_enabled THEN
45046       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_97';
45047 END IF;
45048 --
45049 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45050 
45051       trace
45052          (p_msg      => 'BEGIN of AcctLineType_97'
45053          ,p_level    => C_LEVEL_PROCEDURE
45054          ,p_module   => l_log_module);
45055 
45056 END IF;
45057 --
45058 l_component_type             := 'AMB_JLT';
45059 l_component_code             := 'MISC_RCT_TAX';
45060 l_component_type_code        := 'S';
45061 l_component_appl_id          :=  222;
45062 l_amb_context_code           := 'DEFAULT';
45063 l_entity_code                := 'RECEIPTS';
45064 l_event_class_code           := 'MISC_RECEIPT';
45065 l_event_type_code            := 'MISC_RECEIPT_ALL';
45066 l_line_definition_owner_code := 'S';
45067 l_line_definition_code       := 'JA_CN_AR_MISC_RECEIPTS';
45068 --
45069 l_balance_type_code          := 'A';
45070 l_segment                     := NULL;
45071 l_ccid                        := NULL;
45072 l_adr_transaction_coa_id      := NULL;
45073 l_adr_accounting_coa_id       := NULL;
45074 l_adr_flexfield_segment_code  := NULL;
45075 l_adr_flex_value_set_id       := NULL;
45076 l_adr_value_type_code         := NULL;
45077 l_adr_value_combination_id    := NULL;
45078 l_adr_value_segment_code      := NULL;
45079 
45080 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45081 l_bflow_class_code           := '';    -- 4219869 Business Flow
45082 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45083 l_budgetary_control_flag     := 'N';
45084 
45085 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45086 l_bflow_applied_to_amt       := NULL; -- 5132302
45087 l_entered_amt_idx            := NULL;          -- 4262811
45088 l_accted_amt_idx             := NULL;          -- 4262811
45089 l_acc_rev_flag               := NULL;          -- 4262811
45090 l_accrual_line_num           := NULL;          -- 4262811
45091 l_tmp_amt                    := NULL;          -- 4262811
45092 --
45093  
45094 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45095     l_balance_type_code <> 'B' THEN
45096 IF NVL(p_source_27,'
45097 ') =  'TAX' AND 
45098 NVL(p_source_88,'
45099 ') =  'N'
45100  THEN 
45101 
45102    --
45103    XLA_AE_LINES_PKG.SetNewLine;
45104 
45105    p_balance_type_code          := l_balance_type_code;
45106    -- set the flag so later we will know whether the gain loss line needs to be created
45107    
45108    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45109      p_actual_flag :='A';
45110    END IF;
45111 
45112    --
45113    -- bulk performance
45114    --
45115    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45116                                       p_header_num   => 0); -- 4262811
45117    --
45118    -- set accounting line options
45119    --
45120    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45121            p_natural_side_code          => 'C'
45122          , p_gain_or_loss_flag          => 'N'
45123          , p_gl_transfer_mode_code      => 'S'
45124          , p_acct_entry_type_code       => 'A'
45125          , p_switch_side_flag           => 'Y'
45126          , p_merge_duplicate_code       => 'A'
45127          );
45128    --
45129    l_acc_rev_natural_side_code := 'D';  -- 4262811
45130    -- 
45131    --
45132    -- set accounting line type info
45133    --
45134    xla_ae_lines_pkg.SetAcctLineType
45135       (p_component_type             => l_component_type
45136       ,p_event_type_code            => l_event_type_code
45137       ,p_line_definition_owner_code => l_line_definition_owner_code
45138       ,p_line_definition_code       => l_line_definition_code
45139       ,p_accounting_line_code       => l_component_code
45140       ,p_accounting_line_type_code  => l_component_type_code
45141       ,p_accounting_line_appl_id    => l_component_appl_id
45142       ,p_amb_context_code           => l_amb_context_code
45143       ,p_entity_code                => l_entity_code
45144       ,p_event_class_code           => l_event_class_code);
45145    --
45146    -- set accounting class
45147    --
45148    xla_ae_lines_pkg.SetAcctClass(
45149            p_accounting_class_code  => 'TAX'
45150          , p_ae_header_id           => l_ae_header_id
45151          );
45152 
45153    --
45154    -- set rounding class
45155    --
45156    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45157                       'RECEIVABLE';
45158 
45159    --
45160    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45161    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45162    --
45163    -- bulk performance
45164    --
45165    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45166 
45167    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45168       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45169 
45170    -- 4955764
45171    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45172       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45176    --
45173 
45174    -- 4458381 Public Sector Enh
45175    
45177    -- set accounting attributes for the line type
45178    --
45179    l_entered_amt_idx := 3;
45180    l_accted_amt_idx  := 8;
45181    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45182    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45183    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
45184    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45185    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
45186    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45187    l_rec_acct_attrs.array_num_value(3)  := p_source_31;
45188    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45189    l_rec_acct_attrs.array_char_value(4)  := p_source_32;
45190    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45191    l_rec_acct_attrs.array_date_value(5)  := p_source_89;
45192    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45193    l_rec_acct_attrs.array_num_value(6)  := p_source_34;
45194    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45195    l_rec_acct_attrs.array_char_value(7)  := p_source_35;
45196    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45197    l_rec_acct_attrs.array_num_value(8)  := p_source_36;
45198 
45199    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45200    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45201 
45202    ---------------------------------------------------------------------------------------------------------------
45203    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45204    ---------------------------------------------------------------------------------------------------------------
45205    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45206 
45207    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45208    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45209 
45210    IF xla_accounting_cache_pkg.GetValueChar
45211          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45212          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45213    AND l_bflow_method_code = 'PRIOR_ENTRY'
45214 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45215    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45216          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45217        )
45218    THEN
45219          xla_ae_lines_pkg.BflowUpgEntry
45220            (p_business_method_code    => l_bflow_method_code
45221            ,p_business_class_code     => l_bflow_class_code
45222            ,p_balance_type            => l_balance_type_code);
45223    ELSE
45224       NULL;
45225 -- No business flow processing for business flow method of NONE.
45226    END IF;
45227 
45228    --
45229    -- call analytical criteria
45230    --
45231    
45232 
45233 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
45234 xla_ae_lines_pkg.SetAnalyticalCriteria(
45235    p_analytical_criterion_name    => 'Check Id'
45236  , p_analytical_criterion_owner   => 'S'
45237  , p_analytical_criterion_code    => 'CHECK_ID'
45238  , p_amb_context_code             => 'DEFAULT'
45239  , p_balancing_flag               => 'N'
45240  
45241  , p_analytical_detail_char_1    =>  NULL
45242  , p_analytical_detail_num_1     =>  p_source_90
45243  , p_analytical_detail_date_1    =>  NULL
45244 
45245  , p_ae_header_id                 => l_ae_header_id
45246 )
45247 ;
45248 --
45249 
45250    --
45251    -- call description
45252    --
45253    -- No description or it is inherited.
45254    --
45255    -- call ADRs
45256    -- Bug 4922099
45257    --
45258    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45259         (NVL(l_actual_upg_option, 'N') = 'O') OR
45260         (NVL(l_enc_upg_option, 'N') = 'O')
45261       )
45262    THEN
45263    NULL;
45264    --
45265    --
45266    
45267   l_ccid := AcctDerRule_20(
45268            p_application_id           => p_application_id
45269          , p_ae_header_id             => l_ae_header_id 
45270 , p_source_22 => p_source_22
45271          , x_transaction_coa_id       => l_adr_transaction_coa_id
45272          , x_accounting_coa_id        => l_adr_accounting_coa_id
45273          , x_value_type_code          => l_adr_value_type_code
45274          , p_side                     => 'NA'
45275    );
45276 
45277    xla_ae_lines_pkg.set_ccid(
45278     p_code_combination_id          => l_ccid
45279   , p_value_type_code              => l_adr_value_type_code
45280   , p_transaction_coa_id           => l_adr_transaction_coa_id
45281   , p_accounting_coa_id            => l_adr_accounting_coa_id
45282   , p_adr_code                     => 'DIST_CCID'
45283   , p_adr_type_code                => 'S'
45284   , p_component_type               => l_component_type
45285   , p_component_code               => l_component_code
45286   , p_component_type_code          => l_component_type_code
45287   , p_component_appl_id            => l_component_appl_id
45288   , p_amb_context_code             => l_amb_context_code
45289   , p_side                         => 'NA'
45290   );
45291 
45295    END IF;
45292 
45293    --
45294    --
45296    --
45297    -- Bug 4922099
45298    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45299           (NVL(l_enc_upg_option, 'N') = 'O')
45300         ) AND
45301         (l_bflow_method_code = 'PRIOR_ENTRY')
45302       )
45303    THEN
45304       IF
45305       --
45306       1 = 2
45307       --
45308       THEN
45309       xla_accounting_err_pkg.build_message
45310                                     (p_appli_s_name            => 'XLA'
45311                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45312                                     ,p_token_1                 => 'LINE_NUMBER'
45313                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45314                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45315                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45316                                                                              l_component_type
45317                                                                             ,l_component_code
45318                                                                             ,l_component_type_code
45319                                                                             ,l_component_appl_id
45320                                                                             ,l_amb_context_code
45321                                                                             ,l_entity_code
45322                                                                             ,l_event_class_code
45323                                                                            )
45324                                     ,p_token_3                 => 'OWNER'
45325                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45326                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45327                                                                           ,p_lookup_code    => l_component_type_code
45328                                                                          )
45329                                     ,p_token_4                 => 'PRODUCT_NAME'
45330                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45331                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45332                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45333                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45334                                     ,p_ae_header_id            =>  NULL
45335                                        );
45336 
45337         IF (C_LEVEL_ERROR>= g_log_level) THEN
45338                  trace
45339                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45340                       ,p_level    => C_LEVEL_ERROR
45341                       ,p_module   => l_log_module);
45342         END IF;
45343       END IF;
45344    END IF;
45345    --
45346    --
45347    ------------------------------------------------------------------------------------------------
45348    -- 4219869 Business Flow
45349    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45350    -- Prior Entry.  Currently, the following code is always generated.
45351    ------------------------------------------------------------------------------------------------
45352    XLA_AE_LINES_PKG.ValidateCurrentLine;
45353 
45354    ------------------------------------------------------------------------------------
45355    -- 4219869 Business Flow
45356    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45357    ------------------------------------------------------------------------------------
45358    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45359 
45360    ----------------------------------------------------------------------------------
45361    -- 4219869 Business Flow
45362    -- Update journal entry status -- Need to generate this within IF <condition>
45363    ----------------------------------------------------------------------------------
45364    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45365          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45366          ,p_balance_type_code => l_balance_type_code
45367          );
45368 
45369    -------------------------------------------------------------------------------------------
45370    -- 4262811 - Generate the Accrual Reversal lines
45371    -------------------------------------------------------------------------------------------
45372    BEGIN
45373       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45374                               (g_array_event(p_event_id).array_value_num('header_index'));
45375       IF l_acc_rev_flag IS NULL THEN
45376          l_acc_rev_flag := 'N';
45377       END IF;
45378    EXCEPTION
45379       WHEN OTHERS THEN
45380          l_acc_rev_flag := 'N';
45381    END;
45382    --
45383    IF (l_acc_rev_flag = 'Y') THEN
45384 
45385        -- 4645092  ------------------------------------------------------------------------------
45386        -- To allow MPA report to determine if it should generate report process
45387        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45391        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45388        ------------------------------------------------------------------------------------------
45389 
45390        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45392    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
45393    -- call ADRs
45394    -- Bug 4922099
45395    --
45396    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45397         (NVL(l_actual_upg_option, 'N') = 'O') OR
45398         (NVL(l_enc_upg_option, 'N') = 'O')
45399       )
45400    THEN
45401    NULL;
45402    --
45403    --
45404    
45405   l_ccid := AcctDerRule_20(
45406            p_application_id           => p_application_id
45407          , p_ae_header_id             => l_ae_header_id 
45408 , p_source_22 => p_source_22
45409          , x_transaction_coa_id       => l_adr_transaction_coa_id
45410          , x_accounting_coa_id        => l_adr_accounting_coa_id
45411          , x_value_type_code          => l_adr_value_type_code
45412          , p_side                     => 'NA'
45413    );
45414 
45415    xla_ae_lines_pkg.set_ccid(
45416     p_code_combination_id          => l_ccid
45417   , p_value_type_code              => l_adr_value_type_code
45418   , p_transaction_coa_id           => l_adr_transaction_coa_id
45419   , p_accounting_coa_id            => l_adr_accounting_coa_id
45420   , p_adr_code                     => 'DIST_CCID'
45421   , p_adr_type_code                => 'S'
45422   , p_component_type               => l_component_type
45423   , p_component_code               => l_component_code
45424   , p_component_type_code          => l_component_type_code
45425   , p_component_appl_id            => l_component_appl_id
45426   , p_amb_context_code             => l_amb_context_code
45427   , p_side                         => 'NA'
45428   );
45429 
45430 
45431    --
45432    --
45433    END IF;
45434 
45435        --
45436        -- Update the line information that should be overwritten
45437        --
45438        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45439                                          p_header_num   => 1);
45440        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45441 
45442        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45443 
45444        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45445           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45446        END IF;
45447 
45448       --
45449       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45450       --
45451       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45452           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45453       ELSE
45454           ---------------------------------------------------------------------------------------------------
45455           -- 4262811a Switch Sign
45456           ---------------------------------------------------------------------------------------------------
45457           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45458           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45459                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45460           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45461                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45462           -- 5132302
45463           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45464                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45465 
45466       END IF;
45467 
45468       -- 4955764
45469       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45470       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45471 
45472 
45473       XLA_AE_LINES_PKG.ValidateCurrentLine;
45474       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45475 
45476       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45477                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45478                ,p_balance_type_code => l_balance_type_code);
45479 
45480    END IF;
45481 
45482    -----------------------------------------------------------------------------------------
45483    -- 4262811 Multiperiod Accounting
45484    -----------------------------------------------------------------------------------------
45485      -- No MPA option is assigned.
45486 
45487 
45488 END IF;
45489 END IF;
45490 --
45491 
45492 --
45493 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45494    trace
45495       (p_msg      => 'END of AcctLineType_97'
45496       ,p_level    => C_LEVEL_PROCEDURE
45497       ,p_module   => l_log_module);
45498 END IF;
45499 --
45500 EXCEPTION
45501   WHEN xla_exceptions_pkg.application_exception THEN
45502       RAISE;
45503   WHEN OTHERS THEN
45504        xla_exceptions_pkg.raise_message
45505            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_97');
45506 END AcctLineType_97;
45507 --
45508 
45512 --         AcctLineType_98
45509 ---------------------------------------
45510 --
45511 -- PRIVATE FUNCTION
45513 --
45514 ---------------------------------------
45515 PROCEDURE AcctLineType_98 (
45516   p_application_id        IN NUMBER
45517  ,p_event_id              IN NUMBER
45518  ,p_calculate_acctd_flag  IN VARCHAR2
45519  ,p_calculate_g_l_flag    IN VARCHAR2
45520  ,p_actual_flag           IN OUT VARCHAR2
45521  ,p_balance_type_code     OUT VARCHAR2
45522  ,p_gain_or_loss_ref      OUT VARCHAR2
45523  
45524 --Distribution GL Account
45525  , p_source_22            IN NUMBER
45526 --Distribution Source Type
45527  , p_source_27            IN VARCHAR2
45528 --Distribution Line Identifier
45529  , p_source_29            IN NUMBER
45530 --Distribution Type
45531  , p_source_30            IN VARCHAR2
45532 --Exchange Date
45533  , p_source_33            IN DATE
45534 --Exchange Rate
45535  , p_source_34            IN NUMBER
45536 --Exchange Rate Type
45537  , p_source_35            IN VARCHAR2
45538 --Accounting Amount
45539  , p_source_40            IN NUMBER
45540 --Transaction Distribution Identifier
45541  , p_source_44            IN NUMBER
45542 --Transaction Distribution Type
45543  , p_source_45            IN VARCHAR2
45544 --Distribution Multi Fund Additional Entry
45545  , p_source_88            IN VARCHAR2
45546 --Cash Receipt Identifier
45547  , p_source_90            IN NUMBER
45548 --Receipt Applied To Application Identifier
45549  , p_source_92            IN NUMBER
45550 --Transaction Entity Code
45551  , p_source_93            IN VARCHAR2
45552 --Transaction Identifier
45553  , p_source_94            IN NUMBER
45554 --DIST_ENT_AMT_FROM
45555  , p_source_95            IN NUMBER
45556 --Applying Document Currency Code
45557  , p_source_96            IN VARCHAR2
45558 --Distribution Party Identifier
45559  , p_source_97            IN NUMBER
45560 --Distribution Party Site Id
45561  , p_source_98            IN NUMBER
45562 --Distribution Party Type
45563  , p_source_99            IN VARCHAR2
45564 )
45565 IS
45566 
45567 l_component_type              VARCHAR2(80);
45568 l_component_code              VARCHAR2(30);
45569 l_component_type_code         VARCHAR2(1);
45570 l_component_appl_id           INTEGER;
45571 l_amb_context_code            VARCHAR2(30);
45572 l_entity_code                 VARCHAR2(30);
45573 l_event_class_code            VARCHAR2(30);
45574 l_ae_header_id                NUMBER;
45575 l_event_type_code             VARCHAR2(30);
45576 l_line_definition_code        VARCHAR2(30);
45577 l_line_definition_owner_code  VARCHAR2(1);
45578 --
45579 -- adr variables
45580 l_segment                     VARCHAR2(30);
45581 l_ccid                        NUMBER;
45582 l_adr_transaction_coa_id      NUMBER;
45583 l_adr_accounting_coa_id       NUMBER;
45584 l_adr_flexfield_segment_code  VARCHAR2(30);
45585 l_adr_flex_value_set_id       NUMBER;
45586 l_adr_value_type_code         VARCHAR2(30);
45587 l_adr_value_combination_id    NUMBER;
45588 l_adr_value_segment_code      VARCHAR2(30);
45589 
45590 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45591 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45592 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45593 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45594 
45595 -- 4262811 Variables ------------------------------------------------------------------------------------------
45596 l_entered_amt_idx             NUMBER;
45597 l_accted_amt_idx              NUMBER;
45598 l_acc_rev_flag                VARCHAR2(1);
45599 l_accrual_line_num            NUMBER;
45600 l_tmp_amt                     NUMBER;
45601 l_acc_rev_natural_side_code   VARCHAR2(1);
45602 
45603 l_num_entries                 NUMBER;
45604 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45605 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45606 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45607 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45608 l_recog_line_1                NUMBER;
45609 l_recog_line_2                NUMBER;
45610 
45611 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45612 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45613 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45614 
45615 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45616 
45617 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45618 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45619 
45620 ---------------------------------------------------------------------------------------------------------------
45621 
45622 
45623 --
45624 -- bulk performance
45625 --
45626 l_balance_type_code           VARCHAR2(1);
45627 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45628 l_log_module                  VARCHAR2(240);
45629 
45630 --
45631 -- Upgrade strategy
45632 --
45633 l_actual_upg_option           VARCHAR2(1);
45634 l_enc_upg_option           VARCHAR2(1);
45635 
45636 --
45637 BEGIN
45638 --
45639 IF g_log_enabled THEN
45640       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_98';
45641 END IF;
45642 --
45646          (p_msg      => 'BEGIN of AcctLineType_98'
45643 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45644 
45645       trace
45647          ,p_level    => C_LEVEL_PROCEDURE
45648          ,p_module   => l_log_module);
45649 
45650 END IF;
45651 --
45652 l_component_type             := 'AMB_JLT';
45653 l_component_code             := 'RCT_ACC';
45654 l_component_type_code        := 'S';
45655 l_component_appl_id          :=  222;
45656 l_amb_context_code           := 'DEFAULT';
45657 l_entity_code                := 'RECEIPTS';
45658 l_event_class_code           := 'RECEIPT';
45659 l_event_type_code            := 'RECEIPT_ALL';
45660 l_line_definition_owner_code := 'S';
45661 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
45662 --
45663 l_balance_type_code          := 'A';
45664 l_segment                     := NULL;
45665 l_ccid                        := NULL;
45666 l_adr_transaction_coa_id      := NULL;
45667 l_adr_accounting_coa_id       := NULL;
45668 l_adr_flexfield_segment_code  := NULL;
45669 l_adr_flex_value_set_id       := NULL;
45670 l_adr_value_type_code         := NULL;
45671 l_adr_value_combination_id    := NULL;
45672 l_adr_value_segment_code      := NULL;
45673 
45674 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45675 l_bflow_class_code           := '';    -- 4219869 Business Flow
45676 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45677 l_budgetary_control_flag     := 'N';
45678 
45679 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45680 l_bflow_applied_to_amt       := NULL; -- 5132302
45681 l_entered_amt_idx            := NULL;          -- 4262811
45682 l_accted_amt_idx             := NULL;          -- 4262811
45683 l_acc_rev_flag               := NULL;          -- 4262811
45684 l_accrual_line_num           := NULL;          -- 4262811
45685 l_tmp_amt                    := NULL;          -- 4262811
45686 --
45687  
45688 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45689     l_balance_type_code <> 'B' THEN
45690 IF NVL(p_source_27,'
45691 ') =  'ACC' AND 
45692 NVL(p_source_88,'
45693 ') =  'N'
45694  THEN 
45695 
45696    --
45697    XLA_AE_LINES_PKG.SetNewLine;
45698 
45699    p_balance_type_code          := l_balance_type_code;
45700    -- set the flag so later we will know whether the gain loss line needs to be created
45701    
45702    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45703      p_actual_flag :='A';
45704    END IF;
45705 
45706    --
45707    -- bulk performance
45708    --
45709    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45710                                       p_header_num   => 0); -- 4262811
45711    --
45712    -- set accounting line options
45713    --
45714    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45715            p_natural_side_code          => 'C'
45716          , p_gain_or_loss_flag          => 'N'
45717          , p_gl_transfer_mode_code      => 'S'
45718          , p_acct_entry_type_code       => 'A'
45719          , p_switch_side_flag           => 'Y'
45720          , p_merge_duplicate_code       => 'A'
45721          );
45722    --
45723    l_acc_rev_natural_side_code := 'D';  -- 4262811
45724    -- 
45725    --
45726    -- set accounting line type info
45727    --
45728    xla_ae_lines_pkg.SetAcctLineType
45729       (p_component_type             => l_component_type
45730       ,p_event_type_code            => l_event_type_code
45731       ,p_line_definition_owner_code => l_line_definition_owner_code
45732       ,p_line_definition_code       => l_line_definition_code
45733       ,p_accounting_line_code       => l_component_code
45734       ,p_accounting_line_type_code  => l_component_type_code
45735       ,p_accounting_line_appl_id    => l_component_appl_id
45736       ,p_amb_context_code           => l_amb_context_code
45737       ,p_entity_code                => l_entity_code
45738       ,p_event_class_code           => l_event_class_code);
45739    --
45740    -- set accounting class
45741    --
45742    xla_ae_lines_pkg.SetAcctClass(
45743            p_accounting_class_code  => 'ACC'
45744          , p_ae_header_id           => l_ae_header_id
45745          );
45746 
45747    --
45748    -- set rounding class
45749    --
45750    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45751                       'RECEIVABLE';
45752 
45753    --
45754    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45755    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45756    --
45757    -- bulk performance
45758    --
45759    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45760 
45761    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45762       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45763 
45764    -- 4955764
45765    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45766       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45767 
45768    -- 4458381 Public Sector Enh
45769    
45770    --
45771    -- set accounting attributes for the line type
45772    --
45773    l_entered_amt_idx := 8;
45777    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
45774    l_accted_amt_idx  := 13;
45775    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45776    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
45778    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
45779    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
45780    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
45781    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
45782    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
45783    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
45784    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
45785    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
45786    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
45787    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
45788    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
45789    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
45790    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
45791    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
45792    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
45793    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
45794    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
45795    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
45796    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
45797    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
45798    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
45799    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
45800    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
45801    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
45802    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
45803    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
45804    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
45805    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
45806    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
45807    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
45808 
45809    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45810    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45811 
45812    ---------------------------------------------------------------------------------------------------------------
45813    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45814    ---------------------------------------------------------------------------------------------------------------
45815    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45816 
45817    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45818    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45819 
45820    IF xla_accounting_cache_pkg.GetValueChar
45821          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45822          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45823    AND l_bflow_method_code = 'PRIOR_ENTRY'
45824 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45825    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45826          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45827        )
45828    THEN
45829          xla_ae_lines_pkg.BflowUpgEntry
45830            (p_business_method_code    => l_bflow_method_code
45831            ,p_business_class_code     => l_bflow_class_code
45832            ,p_balance_type            => l_balance_type_code);
45833    ELSE
45834       NULL;
45835 -- No business flow processing for business flow method of NONE.
45836    END IF;
45837 
45838    --
45839    -- call analytical criteria
45840    --
45841    
45842 
45843 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
45844 xla_ae_lines_pkg.SetAnalyticalCriteria(
45845    p_analytical_criterion_name    => 'Check Id'
45846  , p_analytical_criterion_owner   => 'S'
45847  , p_analytical_criterion_code    => 'CHECK_ID'
45848  , p_amb_context_code             => 'DEFAULT'
45849  , p_balancing_flag               => 'N'
45850  
45851  , p_analytical_detail_char_1    =>  NULL
45852  , p_analytical_detail_num_1     =>  p_source_90
45853  , p_analytical_detail_date_1    =>  NULL
45854 
45855  , p_ae_header_id                 => l_ae_header_id
45856 )
45857 ;
45858 --
45859 
45860 
45861 xla_ae_lines_pkg.g_rec_lines.array_anc_id_2(xla_ae_lines_pkg.g_LineNumber) :=
45862 xla_ae_lines_pkg.SetAnalyticalCriteria(
45863    p_analytical_criterion_name    => 'Distribution Source Type'
45864  , p_analytical_criterion_owner   => 'S'
45865  , p_analytical_criterion_code    => 'DISTRIBUTION_SOURCE_TYPE'
45866  , p_amb_context_code             => 'DEFAULT'
45867  , p_balancing_flag               => 'N'
45868  
45869  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_27)
45870  , p_analytical_detail_num_1     =>  NULL
45871  , p_analytical_detail_date_1    =>  NULL
45872 
45873  , p_ae_header_id                 => l_ae_header_id
45874 )
45875 ;
45876 --
45877 
45878    --
45879    -- call description
45880    --
45881    -- No description or it is inherited.
45885    --
45882    --
45883    -- call ADRs
45884    -- Bug 4922099
45886    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45887         (NVL(l_actual_upg_option, 'N') = 'O') OR
45888         (NVL(l_enc_upg_option, 'N') = 'O')
45889       )
45890    THEN
45891    NULL;
45892    --
45893    --
45894    
45895   l_ccid := AcctDerRule_20(
45896            p_application_id           => p_application_id
45897          , p_ae_header_id             => l_ae_header_id 
45898 , p_source_22 => p_source_22
45899          , x_transaction_coa_id       => l_adr_transaction_coa_id
45900          , x_accounting_coa_id        => l_adr_accounting_coa_id
45901          , x_value_type_code          => l_adr_value_type_code
45902          , p_side                     => 'NA'
45903    );
45904 
45905    xla_ae_lines_pkg.set_ccid(
45906     p_code_combination_id          => l_ccid
45907   , p_value_type_code              => l_adr_value_type_code
45908   , p_transaction_coa_id           => l_adr_transaction_coa_id
45909   , p_accounting_coa_id            => l_adr_accounting_coa_id
45910   , p_adr_code                     => 'DIST_CCID'
45911   , p_adr_type_code                => 'S'
45912   , p_component_type               => l_component_type
45913   , p_component_code               => l_component_code
45914   , p_component_type_code          => l_component_type_code
45915   , p_component_appl_id            => l_component_appl_id
45916   , p_amb_context_code             => l_amb_context_code
45917   , p_side                         => 'NA'
45918   );
45919 
45920 
45921    --
45922    --
45923    END IF;
45924    --
45925    -- Bug 4922099
45926    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45927           (NVL(l_enc_upg_option, 'N') = 'O')
45928         ) AND
45929         (l_bflow_method_code = 'PRIOR_ENTRY')
45930       )
45931    THEN
45932       IF
45933       --
45934       1 = 2
45935       --
45936       THEN
45937       xla_accounting_err_pkg.build_message
45938                                     (p_appli_s_name            => 'XLA'
45939                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45940                                     ,p_token_1                 => 'LINE_NUMBER'
45941                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45942                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45943                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45944                                                                              l_component_type
45945                                                                             ,l_component_code
45946                                                                             ,l_component_type_code
45947                                                                             ,l_component_appl_id
45948                                                                             ,l_amb_context_code
45949                                                                             ,l_entity_code
45950                                                                             ,l_event_class_code
45951                                                                            )
45952                                     ,p_token_3                 => 'OWNER'
45953                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45954                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45955                                                                           ,p_lookup_code    => l_component_type_code
45956                                                                          )
45957                                     ,p_token_4                 => 'PRODUCT_NAME'
45958                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45959                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45960                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45961                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45962                                     ,p_ae_header_id            =>  NULL
45963                                        );
45964 
45965         IF (C_LEVEL_ERROR>= g_log_level) THEN
45966                  trace
45967                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45968                       ,p_level    => C_LEVEL_ERROR
45969                       ,p_module   => l_log_module);
45970         END IF;
45971       END IF;
45972    END IF;
45973    --
45974    --
45975    ------------------------------------------------------------------------------------------------
45976    -- 4219869 Business Flow
45977    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45978    -- Prior Entry.  Currently, the following code is always generated.
45979    ------------------------------------------------------------------------------------------------
45980    XLA_AE_LINES_PKG.ValidateCurrentLine;
45981 
45982    ------------------------------------------------------------------------------------
45983    -- 4219869 Business Flow
45984    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45985    ------------------------------------------------------------------------------------
45989    -- 4219869 Business Flow
45986    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45987 
45988    ----------------------------------------------------------------------------------
45990    -- Update journal entry status -- Need to generate this within IF <condition>
45991    ----------------------------------------------------------------------------------
45992    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45993          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45994          ,p_balance_type_code => l_balance_type_code
45995          );
45996 
45997    -------------------------------------------------------------------------------------------
45998    -- 4262811 - Generate the Accrual Reversal lines
45999    -------------------------------------------------------------------------------------------
46000    BEGIN
46001       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46002                               (g_array_event(p_event_id).array_value_num('header_index'));
46003       IF l_acc_rev_flag IS NULL THEN
46004          l_acc_rev_flag := 'N';
46005       END IF;
46006    EXCEPTION
46007       WHEN OTHERS THEN
46008          l_acc_rev_flag := 'N';
46009    END;
46010    --
46011    IF (l_acc_rev_flag = 'Y') THEN
46012 
46013        -- 4645092  ------------------------------------------------------------------------------
46014        -- To allow MPA report to determine if it should generate report process
46015        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46016        ------------------------------------------------------------------------------------------
46017 
46018        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46019        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46020    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
46021    -- call ADRs
46022    -- Bug 4922099
46023    --
46024    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46025         (NVL(l_actual_upg_option, 'N') = 'O') OR
46026         (NVL(l_enc_upg_option, 'N') = 'O')
46027       )
46028    THEN
46029    NULL;
46030    --
46031    --
46032    
46033   l_ccid := AcctDerRule_20(
46034            p_application_id           => p_application_id
46035          , p_ae_header_id             => l_ae_header_id 
46036 , p_source_22 => p_source_22
46037          , x_transaction_coa_id       => l_adr_transaction_coa_id
46038          , x_accounting_coa_id        => l_adr_accounting_coa_id
46039          , x_value_type_code          => l_adr_value_type_code
46040          , p_side                     => 'NA'
46041    );
46042 
46043    xla_ae_lines_pkg.set_ccid(
46044     p_code_combination_id          => l_ccid
46045   , p_value_type_code              => l_adr_value_type_code
46046   , p_transaction_coa_id           => l_adr_transaction_coa_id
46047   , p_accounting_coa_id            => l_adr_accounting_coa_id
46048   , p_adr_code                     => 'DIST_CCID'
46049   , p_adr_type_code                => 'S'
46050   , p_component_type               => l_component_type
46051   , p_component_code               => l_component_code
46052   , p_component_type_code          => l_component_type_code
46053   , p_component_appl_id            => l_component_appl_id
46054   , p_amb_context_code             => l_amb_context_code
46055   , p_side                         => 'NA'
46056   );
46057 
46058 
46059    --
46060    --
46061    END IF;
46062 
46063        --
46064        -- Update the line information that should be overwritten
46065        --
46066        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46067                                          p_header_num   => 1);
46068        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
46069 
46070        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46071 
46072        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46073           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46074        END IF;
46075 
46076       --
46077       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46078       --
46079       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46080           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46081       ELSE
46082           ---------------------------------------------------------------------------------------------------
46083           -- 4262811a Switch Sign
46084           ---------------------------------------------------------------------------------------------------
46085           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46086           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46087                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46088           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46089                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46090           -- 5132302
46091           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46092                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46093 
46094       END IF;
46095 
46096       -- 4955764
46100 
46097       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46098       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46099 
46101       XLA_AE_LINES_PKG.ValidateCurrentLine;
46102       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46103 
46104       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46105                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46106                ,p_balance_type_code => l_balance_type_code);
46107 
46108    END IF;
46109 
46110    -----------------------------------------------------------------------------------------
46111    -- 4262811 Multiperiod Accounting
46112    -----------------------------------------------------------------------------------------
46113      -- No MPA option is assigned.
46114 
46115 
46116 END IF;
46117 END IF;
46118 --
46119 
46120 --
46121 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46122    trace
46123       (p_msg      => 'END of AcctLineType_98'
46124       ,p_level    => C_LEVEL_PROCEDURE
46125       ,p_module   => l_log_module);
46126 END IF;
46127 --
46128 EXCEPTION
46129   WHEN xla_exceptions_pkg.application_exception THEN
46130       RAISE;
46131   WHEN OTHERS THEN
46132        xla_exceptions_pkg.raise_message
46133            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_98');
46134 END AcctLineType_98;
46135 --
46136 
46137 ---------------------------------------
46138 --
46139 -- PRIVATE FUNCTION
46140 --         AcctLineType_99
46141 --
46142 ---------------------------------------
46143 PROCEDURE AcctLineType_99 (
46144   p_application_id        IN NUMBER
46145  ,p_event_id              IN NUMBER
46146  ,p_calculate_acctd_flag  IN VARCHAR2
46147  ,p_calculate_g_l_flag    IN VARCHAR2
46148  ,p_actual_flag           IN OUT VARCHAR2
46149  ,p_balance_type_code     OUT VARCHAR2
46150  ,p_gain_or_loss_ref      OUT VARCHAR2
46151  
46152 --Distribution GL Account
46153  , p_source_22            IN NUMBER
46154 --Distribution Source Type
46155  , p_source_27            IN VARCHAR2
46156 --Distribution Line Identifier
46157  , p_source_29            IN NUMBER
46158 --Distribution Type
46159  , p_source_30            IN VARCHAR2
46160 --Exchange Date
46161  , p_source_33            IN DATE
46162 --Exchange Rate
46163  , p_source_34            IN NUMBER
46164 --Exchange Rate Type
46165  , p_source_35            IN VARCHAR2
46166 --Accounting Amount
46167  , p_source_40            IN NUMBER
46168 --Transaction Distribution Identifier
46169  , p_source_44            IN NUMBER
46170 --Transaction Distribution Type
46171  , p_source_45            IN VARCHAR2
46172 --Distribution Multi Fund Additional Entry
46173  , p_source_88            IN VARCHAR2
46174 --Cash Receipt Identifier
46175  , p_source_90            IN NUMBER
46176 --Receipt Applied To Application Identifier
46177  , p_source_92            IN NUMBER
46178 --Transaction Entity Code
46179  , p_source_93            IN VARCHAR2
46180 --Transaction Identifier
46181  , p_source_94            IN NUMBER
46182 --DIST_ENT_AMT_FROM
46183  , p_source_95            IN NUMBER
46184 --Applying Document Currency Code
46185  , p_source_96            IN VARCHAR2
46186 --Distribution Party Identifier
46187  , p_source_97            IN NUMBER
46188 --Distribution Party Site Id
46189  , p_source_98            IN NUMBER
46190 --Distribution Party Type
46191  , p_source_99            IN VARCHAR2
46192 )
46193 IS
46194 
46195 l_component_type              VARCHAR2(80);
46196 l_component_code              VARCHAR2(30);
46197 l_component_type_code         VARCHAR2(1);
46198 l_component_appl_id           INTEGER;
46199 l_amb_context_code            VARCHAR2(30);
46200 l_entity_code                 VARCHAR2(30);
46201 l_event_class_code            VARCHAR2(30);
46202 l_ae_header_id                NUMBER;
46203 l_event_type_code             VARCHAR2(30);
46204 l_line_definition_code        VARCHAR2(30);
46205 l_line_definition_owner_code  VARCHAR2(1);
46206 --
46207 -- adr variables
46208 l_segment                     VARCHAR2(30);
46209 l_ccid                        NUMBER;
46210 l_adr_transaction_coa_id      NUMBER;
46211 l_adr_accounting_coa_id       NUMBER;
46212 l_adr_flexfield_segment_code  VARCHAR2(30);
46213 l_adr_flex_value_set_id       NUMBER;
46214 l_adr_value_type_code         VARCHAR2(30);
46215 l_adr_value_combination_id    NUMBER;
46216 l_adr_value_segment_code      VARCHAR2(30);
46217 
46218 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46219 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46220 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46221 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46222 
46223 -- 4262811 Variables ------------------------------------------------------------------------------------------
46224 l_entered_amt_idx             NUMBER;
46225 l_accted_amt_idx              NUMBER;
46226 l_acc_rev_flag                VARCHAR2(1);
46227 l_accrual_line_num            NUMBER;
46228 l_tmp_amt                     NUMBER;
46229 l_acc_rev_natural_side_code   VARCHAR2(1);
46230 
46231 l_num_entries                 NUMBER;
46232 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46236 l_recog_line_1                NUMBER;
46233 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46234 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46235 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46237 l_recog_line_2                NUMBER;
46238 
46239 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46240 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46241 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46242 
46243 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46244 
46245 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46246 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46247 
46248 ---------------------------------------------------------------------------------------------------------------
46249 
46250 
46251 --
46252 -- bulk performance
46253 --
46254 l_balance_type_code           VARCHAR2(1);
46255 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46256 l_log_module                  VARCHAR2(240);
46257 
46258 --
46259 -- Upgrade strategy
46260 --
46261 l_actual_upg_option           VARCHAR2(1);
46262 l_enc_upg_option           VARCHAR2(1);
46263 
46264 --
46265 BEGIN
46266 --
46267 IF g_log_enabled THEN
46268       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_99';
46269 END IF;
46270 --
46271 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46272 
46273       trace
46274          (p_msg      => 'BEGIN of AcctLineType_99'
46275          ,p_level    => C_LEVEL_PROCEDURE
46276          ,p_module   => l_log_module);
46277 
46278 END IF;
46279 --
46280 l_component_type             := 'AMB_JLT';
46281 l_component_code             := 'RCT_BNK_CHG';
46282 l_component_type_code        := 'S';
46283 l_component_appl_id          :=  222;
46284 l_amb_context_code           := 'DEFAULT';
46285 l_entity_code                := 'RECEIPTS';
46286 l_event_class_code           := 'RECEIPT';
46287 l_event_type_code            := 'RECEIPT_ALL';
46288 l_line_definition_owner_code := 'S';
46289 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
46290 --
46291 l_balance_type_code          := 'A';
46292 l_segment                     := NULL;
46293 l_ccid                        := NULL;
46294 l_adr_transaction_coa_id      := NULL;
46295 l_adr_accounting_coa_id       := NULL;
46296 l_adr_flexfield_segment_code  := NULL;
46297 l_adr_flex_value_set_id       := NULL;
46298 l_adr_value_type_code         := NULL;
46299 l_adr_value_combination_id    := NULL;
46300 l_adr_value_segment_code      := NULL;
46301 
46302 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46303 l_bflow_class_code           := '';    -- 4219869 Business Flow
46304 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46305 l_budgetary_control_flag     := 'N';
46306 
46307 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46308 l_bflow_applied_to_amt       := NULL; -- 5132302
46309 l_entered_amt_idx            := NULL;          -- 4262811
46310 l_accted_amt_idx             := NULL;          -- 4262811
46311 l_acc_rev_flag               := NULL;          -- 4262811
46312 l_accrual_line_num           := NULL;          -- 4262811
46313 l_tmp_amt                    := NULL;          -- 4262811
46314 --
46315  
46316 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46317     l_balance_type_code <> 'B' THEN
46318 IF NVL(p_source_27,'
46319 ') =  'BANK_CHARGES' AND 
46320 NVL(p_source_88,'
46321 ') =  'N'
46322  THEN 
46323 
46324    --
46325    XLA_AE_LINES_PKG.SetNewLine;
46326 
46327    p_balance_type_code          := l_balance_type_code;
46328    -- set the flag so later we will know whether the gain loss line needs to be created
46329    
46330    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46331      p_actual_flag :='A';
46332    END IF;
46333 
46334    --
46335    -- bulk performance
46336    --
46337    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46338                                       p_header_num   => 0); -- 4262811
46339    --
46340    -- set accounting line options
46341    --
46342    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46343            p_natural_side_code          => 'C'
46344          , p_gain_or_loss_flag          => 'N'
46345          , p_gl_transfer_mode_code      => 'S'
46346          , p_acct_entry_type_code       => 'A'
46347          , p_switch_side_flag           => 'Y'
46348          , p_merge_duplicate_code       => 'A'
46349          );
46350    --
46351    l_acc_rev_natural_side_code := 'D';  -- 4262811
46352    -- 
46353    --
46354    -- set accounting line type info
46355    --
46356    xla_ae_lines_pkg.SetAcctLineType
46357       (p_component_type             => l_component_type
46358       ,p_event_type_code            => l_event_type_code
46359       ,p_line_definition_owner_code => l_line_definition_owner_code
46360       ,p_line_definition_code       => l_line_definition_code
46361       ,p_accounting_line_code       => l_component_code
46362       ,p_accounting_line_type_code  => l_component_type_code
46363       ,p_accounting_line_appl_id    => l_component_appl_id
46367    --
46364       ,p_amb_context_code           => l_amb_context_code
46365       ,p_entity_code                => l_entity_code
46366       ,p_event_class_code           => l_event_class_code);
46368    -- set accounting class
46369    --
46370    xla_ae_lines_pkg.SetAcctClass(
46371            p_accounting_class_code  => 'BANK_CHG'
46372          , p_ae_header_id           => l_ae_header_id
46373          );
46374 
46375    --
46376    -- set rounding class
46377    --
46378    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46379                       'RECEIVABLE';
46380 
46381    --
46382    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46383    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46384    --
46385    -- bulk performance
46386    --
46387    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46388 
46389    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46390       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46391 
46392    -- 4955764
46393    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46394       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46395 
46396    -- 4458381 Public Sector Enh
46397    
46398    --
46399    -- set accounting attributes for the line type
46400    --
46401    l_entered_amt_idx := 8;
46402    l_accted_amt_idx  := 13;
46403    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46404    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
46405    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
46406    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
46407    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
46408    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
46409    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
46410    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
46411    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
46412    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
46413    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
46414    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
46415    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
46416    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
46417    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
46418    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
46419    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
46420    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
46421    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
46422    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
46423    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
46424    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
46425    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
46426    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
46427    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
46428    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
46429    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
46430    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
46431    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
46432    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
46433    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
46434    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
46435    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
46436 
46437    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46438    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46439 
46440    ---------------------------------------------------------------------------------------------------------------
46441    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46442    ---------------------------------------------------------------------------------------------------------------
46443    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46444 
46445    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46446    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46447 
46448    IF xla_accounting_cache_pkg.GetValueChar
46449          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46450          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46451    AND l_bflow_method_code = 'PRIOR_ENTRY'
46452 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46453    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46454          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46455        )
46456    THEN
46457          xla_ae_lines_pkg.BflowUpgEntry
46458            (p_business_method_code    => l_bflow_method_code
46459            ,p_business_class_code     => l_bflow_class_code
46460            ,p_balance_type            => l_balance_type_code);
46461    ELSE
46462       NULL;
46466    --
46463 -- No business flow processing for business flow method of NONE.
46464    END IF;
46465 
46467    -- call analytical criteria
46468    --
46469    
46470 
46471 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
46472 xla_ae_lines_pkg.SetAnalyticalCriteria(
46473    p_analytical_criterion_name    => 'Check Id'
46474  , p_analytical_criterion_owner   => 'S'
46475  , p_analytical_criterion_code    => 'CHECK_ID'
46476  , p_amb_context_code             => 'DEFAULT'
46477  , p_balancing_flag               => 'N'
46478  
46479  , p_analytical_detail_char_1    =>  NULL
46480  , p_analytical_detail_num_1     =>  p_source_90
46481  , p_analytical_detail_date_1    =>  NULL
46482 
46483  , p_ae_header_id                 => l_ae_header_id
46484 )
46485 ;
46486 --
46487 
46488 
46489 xla_ae_lines_pkg.g_rec_lines.array_anc_id_2(xla_ae_lines_pkg.g_LineNumber) :=
46490 xla_ae_lines_pkg.SetAnalyticalCriteria(
46491    p_analytical_criterion_name    => 'Distribution Source Type'
46492  , p_analytical_criterion_owner   => 'S'
46493  , p_analytical_criterion_code    => 'DISTRIBUTION_SOURCE_TYPE'
46494  , p_amb_context_code             => 'DEFAULT'
46495  , p_balancing_flag               => 'N'
46496  
46497  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_27)
46498  , p_analytical_detail_num_1     =>  NULL
46499  , p_analytical_detail_date_1    =>  NULL
46500 
46501  , p_ae_header_id                 => l_ae_header_id
46502 )
46503 ;
46504 --
46505 
46506    --
46507    -- call description
46508    --
46509    -- No description or it is inherited.
46510    --
46511    -- call ADRs
46512    -- Bug 4922099
46513    --
46514    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46515         (NVL(l_actual_upg_option, 'N') = 'O') OR
46516         (NVL(l_enc_upg_option, 'N') = 'O')
46517       )
46518    THEN
46519    NULL;
46520    --
46521    --
46522    
46523   l_ccid := AcctDerRule_20(
46524            p_application_id           => p_application_id
46525          , p_ae_header_id             => l_ae_header_id 
46526 , p_source_22 => p_source_22
46527          , x_transaction_coa_id       => l_adr_transaction_coa_id
46528          , x_accounting_coa_id        => l_adr_accounting_coa_id
46529          , x_value_type_code          => l_adr_value_type_code
46530          , p_side                     => 'NA'
46531    );
46532 
46533    xla_ae_lines_pkg.set_ccid(
46534     p_code_combination_id          => l_ccid
46535   , p_value_type_code              => l_adr_value_type_code
46536   , p_transaction_coa_id           => l_adr_transaction_coa_id
46537   , p_accounting_coa_id            => l_adr_accounting_coa_id
46538   , p_adr_code                     => 'DIST_CCID'
46539   , p_adr_type_code                => 'S'
46540   , p_component_type               => l_component_type
46541   , p_component_code               => l_component_code
46542   , p_component_type_code          => l_component_type_code
46543   , p_component_appl_id            => l_component_appl_id
46544   , p_amb_context_code             => l_amb_context_code
46545   , p_side                         => 'NA'
46546   );
46547 
46548 
46549    --
46550    --
46551    END IF;
46552    --
46553    -- Bug 4922099
46554    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46555           (NVL(l_enc_upg_option, 'N') = 'O')
46556         ) AND
46557         (l_bflow_method_code = 'PRIOR_ENTRY')
46558       )
46559    THEN
46560       IF
46561       --
46562       1 = 2
46563       --
46564       THEN
46565       xla_accounting_err_pkg.build_message
46566                                     (p_appli_s_name            => 'XLA'
46567                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46568                                     ,p_token_1                 => 'LINE_NUMBER'
46569                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46570                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46571                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46572                                                                              l_component_type
46573                                                                             ,l_component_code
46574                                                                             ,l_component_type_code
46575                                                                             ,l_component_appl_id
46576                                                                             ,l_amb_context_code
46577                                                                             ,l_entity_code
46578                                                                             ,l_event_class_code
46579                                                                            )
46580                                     ,p_token_3                 => 'OWNER'
46581                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46582                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46583                                                                           ,p_lookup_code    => l_component_type_code
46584                                                                          )
46585                                     ,p_token_4                 => 'PRODUCT_NAME'
46589                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46586                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46587                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46588                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46590                                     ,p_ae_header_id            =>  NULL
46591                                        );
46592 
46593         IF (C_LEVEL_ERROR>= g_log_level) THEN
46594                  trace
46595                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46596                       ,p_level    => C_LEVEL_ERROR
46597                       ,p_module   => l_log_module);
46598         END IF;
46599       END IF;
46600    END IF;
46601    --
46602    --
46603    ------------------------------------------------------------------------------------------------
46604    -- 4219869 Business Flow
46605    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46606    -- Prior Entry.  Currently, the following code is always generated.
46607    ------------------------------------------------------------------------------------------------
46608    XLA_AE_LINES_PKG.ValidateCurrentLine;
46609 
46610    ------------------------------------------------------------------------------------
46611    -- 4219869 Business Flow
46612    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46613    ------------------------------------------------------------------------------------
46614    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46615 
46616    ----------------------------------------------------------------------------------
46617    -- 4219869 Business Flow
46618    -- Update journal entry status -- Need to generate this within IF <condition>
46619    ----------------------------------------------------------------------------------
46620    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46621          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46622          ,p_balance_type_code => l_balance_type_code
46623          );
46624 
46625    -------------------------------------------------------------------------------------------
46626    -- 4262811 - Generate the Accrual Reversal lines
46627    -------------------------------------------------------------------------------------------
46628    BEGIN
46629       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46630                               (g_array_event(p_event_id).array_value_num('header_index'));
46631       IF l_acc_rev_flag IS NULL THEN
46632          l_acc_rev_flag := 'N';
46633       END IF;
46634    EXCEPTION
46635       WHEN OTHERS THEN
46636          l_acc_rev_flag := 'N';
46637    END;
46638    --
46639    IF (l_acc_rev_flag = 'Y') THEN
46640 
46641        -- 4645092  ------------------------------------------------------------------------------
46642        -- To allow MPA report to determine if it should generate report process
46643        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46644        ------------------------------------------------------------------------------------------
46645 
46646        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46647        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46648    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
46649    -- call ADRs
46650    -- Bug 4922099
46651    --
46652    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46653         (NVL(l_actual_upg_option, 'N') = 'O') OR
46654         (NVL(l_enc_upg_option, 'N') = 'O')
46655       )
46656    THEN
46657    NULL;
46658    --
46659    --
46660    
46661   l_ccid := AcctDerRule_20(
46662            p_application_id           => p_application_id
46663          , p_ae_header_id             => l_ae_header_id 
46664 , p_source_22 => p_source_22
46665          , x_transaction_coa_id       => l_adr_transaction_coa_id
46666          , x_accounting_coa_id        => l_adr_accounting_coa_id
46667          , x_value_type_code          => l_adr_value_type_code
46668          , p_side                     => 'NA'
46669    );
46670 
46671    xla_ae_lines_pkg.set_ccid(
46672     p_code_combination_id          => l_ccid
46673   , p_value_type_code              => l_adr_value_type_code
46674   , p_transaction_coa_id           => l_adr_transaction_coa_id
46675   , p_accounting_coa_id            => l_adr_accounting_coa_id
46676   , p_adr_code                     => 'DIST_CCID'
46677   , p_adr_type_code                => 'S'
46678   , p_component_type               => l_component_type
46679   , p_component_code               => l_component_code
46680   , p_component_type_code          => l_component_type_code
46681   , p_component_appl_id            => l_component_appl_id
46682   , p_amb_context_code             => l_amb_context_code
46683   , p_side                         => 'NA'
46684   );
46685 
46686 
46687    --
46688    --
46689    END IF;
46690 
46691        --
46692        -- Update the line information that should be overwritten
46693        --
46694        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46695                                          p_header_num   => 1);
46696        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
46697 
46701           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46698        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46699 
46700        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46702        END IF;
46703 
46704       --
46705       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46706       --
46707       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46708           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46709       ELSE
46710           ---------------------------------------------------------------------------------------------------
46711           -- 4262811a Switch Sign
46712           ---------------------------------------------------------------------------------------------------
46713           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46714           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46715                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46716           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46717                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46718           -- 5132302
46719           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46720                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46721 
46722       END IF;
46723 
46724       -- 4955764
46725       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46726       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46727 
46728 
46729       XLA_AE_LINES_PKG.ValidateCurrentLine;
46730       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46731 
46732       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46733                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46734                ,p_balance_type_code => l_balance_type_code);
46735 
46736    END IF;
46737 
46738    -----------------------------------------------------------------------------------------
46739    -- 4262811 Multiperiod Accounting
46740    -----------------------------------------------------------------------------------------
46741      -- No MPA option is assigned.
46742 
46743 
46744 END IF;
46745 END IF;
46746 --
46747 
46748 --
46749 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46750    trace
46751       (p_msg      => 'END of AcctLineType_99'
46752       ,p_level    => C_LEVEL_PROCEDURE
46753       ,p_module   => l_log_module);
46754 END IF;
46755 --
46756 EXCEPTION
46757   WHEN xla_exceptions_pkg.application_exception THEN
46758       RAISE;
46759   WHEN OTHERS THEN
46760        xla_exceptions_pkg.raise_message
46761            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_99');
46762 END AcctLineType_99;
46763 --
46764 
46765 ---------------------------------------
46766 --
46767 -- PRIVATE FUNCTION
46768 --         AcctLineType_100
46769 --
46770 ---------------------------------------
46771 PROCEDURE AcctLineType_100 (
46772   p_application_id        IN NUMBER
46773  ,p_event_id              IN NUMBER
46774  ,p_calculate_acctd_flag  IN VARCHAR2
46775  ,p_calculate_g_l_flag    IN VARCHAR2
46776  ,p_actual_flag           IN OUT VARCHAR2
46777  ,p_balance_type_code     OUT VARCHAR2
46778  ,p_gain_or_loss_ref      OUT VARCHAR2
46779  
46780 --Distribution GL Account
46781  , p_source_22            IN NUMBER
46782 --Distribution Source Type
46783  , p_source_27            IN VARCHAR2
46784 --Distribution Line Identifier
46785  , p_source_29            IN NUMBER
46786 --Distribution Type
46787  , p_source_30            IN VARCHAR2
46788 --Exchange Date
46789  , p_source_33            IN DATE
46790 --Exchange Rate
46791  , p_source_34            IN NUMBER
46792 --Exchange Rate Type
46793  , p_source_35            IN VARCHAR2
46794 --Accounting Amount
46795  , p_source_40            IN NUMBER
46796 --Transaction Distribution Identifier
46797  , p_source_44            IN NUMBER
46798 --Transaction Distribution Type
46799  , p_source_45            IN VARCHAR2
46800 --Distribution Multi Fund Additional Entry
46801  , p_source_88            IN VARCHAR2
46802 --Cash Receipt Identifier
46803  , p_source_90            IN NUMBER
46804 --Receipt Applied To Application Identifier
46805  , p_source_92            IN NUMBER
46806 --Transaction Entity Code
46807  , p_source_93            IN VARCHAR2
46808 --Transaction Identifier
46809  , p_source_94            IN NUMBER
46810 --DIST_ENT_AMT_FROM
46811  , p_source_95            IN NUMBER
46812 --Applying Document Currency Code
46813  , p_source_96            IN VARCHAR2
46814 --Distribution Party Identifier
46815  , p_source_97            IN NUMBER
46816 --Distribution Party Site Id
46817  , p_source_98            IN NUMBER
46818 --Distribution Party Type
46819  , p_source_99            IN VARCHAR2
46820 )
46821 IS
46822 
46823 l_component_type              VARCHAR2(80);
46824 l_component_code              VARCHAR2(30);
46828 l_entity_code                 VARCHAR2(30);
46825 l_component_type_code         VARCHAR2(1);
46826 l_component_appl_id           INTEGER;
46827 l_amb_context_code            VARCHAR2(30);
46829 l_event_class_code            VARCHAR2(30);
46830 l_ae_header_id                NUMBER;
46831 l_event_type_code             VARCHAR2(30);
46832 l_line_definition_code        VARCHAR2(30);
46833 l_line_definition_owner_code  VARCHAR2(1);
46834 --
46835 -- adr variables
46836 l_segment                     VARCHAR2(30);
46837 l_ccid                        NUMBER;
46838 l_adr_transaction_coa_id      NUMBER;
46839 l_adr_accounting_coa_id       NUMBER;
46840 l_adr_flexfield_segment_code  VARCHAR2(30);
46841 l_adr_flex_value_set_id       NUMBER;
46842 l_adr_value_type_code         VARCHAR2(30);
46843 l_adr_value_combination_id    NUMBER;
46844 l_adr_value_segment_code      VARCHAR2(30);
46845 
46846 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46847 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46848 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46849 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46850 
46851 -- 4262811 Variables ------------------------------------------------------------------------------------------
46852 l_entered_amt_idx             NUMBER;
46853 l_accted_amt_idx              NUMBER;
46854 l_acc_rev_flag                VARCHAR2(1);
46855 l_accrual_line_num            NUMBER;
46856 l_tmp_amt                     NUMBER;
46857 l_acc_rev_natural_side_code   VARCHAR2(1);
46858 
46859 l_num_entries                 NUMBER;
46860 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46861 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46862 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46863 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46864 l_recog_line_1                NUMBER;
46865 l_recog_line_2                NUMBER;
46866 
46867 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46868 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46869 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46870 
46871 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46872 
46873 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46874 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46875 
46876 ---------------------------------------------------------------------------------------------------------------
46877 
46878 
46879 --
46880 -- bulk performance
46881 --
46882 l_balance_type_code           VARCHAR2(1);
46883 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46884 l_log_module                  VARCHAR2(240);
46885 
46886 --
46887 -- Upgrade strategy
46888 --
46889 l_actual_upg_option           VARCHAR2(1);
46890 l_enc_upg_option           VARCHAR2(1);
46891 
46892 --
46893 BEGIN
46894 --
46895 IF g_log_enabled THEN
46896       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_100';
46897 END IF;
46898 --
46899 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46900 
46901       trace
46902          (p_msg      => 'BEGIN of AcctLineType_100'
46903          ,p_level    => C_LEVEL_PROCEDURE
46904          ,p_module   => l_log_module);
46905 
46906 END IF;
46907 --
46908 l_component_type             := 'AMB_JLT';
46909 l_component_code             := 'RCT_CASH';
46910 l_component_type_code        := 'S';
46911 l_component_appl_id          :=  222;
46912 l_amb_context_code           := 'DEFAULT';
46913 l_entity_code                := 'RECEIPTS';
46914 l_event_class_code           := 'RECEIPT';
46915 l_event_type_code            := 'RECEIPT_ALL';
46916 l_line_definition_owner_code := 'S';
46917 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
46918 --
46919 l_balance_type_code          := 'A';
46920 l_segment                     := NULL;
46921 l_ccid                        := NULL;
46922 l_adr_transaction_coa_id      := NULL;
46923 l_adr_accounting_coa_id       := NULL;
46924 l_adr_flexfield_segment_code  := NULL;
46925 l_adr_flex_value_set_id       := NULL;
46926 l_adr_value_type_code         := NULL;
46927 l_adr_value_combination_id    := NULL;
46928 l_adr_value_segment_code      := NULL;
46929 
46930 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46931 l_bflow_class_code           := '';    -- 4219869 Business Flow
46932 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46933 l_budgetary_control_flag     := 'N';
46934 
46935 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46936 l_bflow_applied_to_amt       := NULL; -- 5132302
46937 l_entered_amt_idx            := NULL;          -- 4262811
46938 l_accted_amt_idx             := NULL;          -- 4262811
46939 l_acc_rev_flag               := NULL;          -- 4262811
46940 l_accrual_line_num           := NULL;          -- 4262811
46941 l_tmp_amt                    := NULL;          -- 4262811
46942 --
46943  
46944 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46945     l_balance_type_code <> 'B' THEN
46946 IF NVL(p_source_27,'
46947 ') =  'CASH' AND 
46948 NVL(p_source_88,'
46949 ') =  'N'
46950  THEN 
46954 
46951 
46952    --
46953    XLA_AE_LINES_PKG.SetNewLine;
46955    p_balance_type_code          := l_balance_type_code;
46956    -- set the flag so later we will know whether the gain loss line needs to be created
46957    
46958    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46959      p_actual_flag :='A';
46960    END IF;
46961 
46962    --
46963    -- bulk performance
46964    --
46965    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46966                                       p_header_num   => 0); -- 4262811
46967    --
46968    -- set accounting line options
46969    --
46970    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46971            p_natural_side_code          => 'C'
46972          , p_gain_or_loss_flag          => 'N'
46973          , p_gl_transfer_mode_code      => 'S'
46974          , p_acct_entry_type_code       => 'A'
46975          , p_switch_side_flag           => 'Y'
46976          , p_merge_duplicate_code       => 'A'
46977          );
46978    --
46979    l_acc_rev_natural_side_code := 'D';  -- 4262811
46980    -- 
46981    --
46982    -- set accounting line type info
46983    --
46984    xla_ae_lines_pkg.SetAcctLineType
46985       (p_component_type             => l_component_type
46986       ,p_event_type_code            => l_event_type_code
46987       ,p_line_definition_owner_code => l_line_definition_owner_code
46988       ,p_line_definition_code       => l_line_definition_code
46989       ,p_accounting_line_code       => l_component_code
46990       ,p_accounting_line_type_code  => l_component_type_code
46991       ,p_accounting_line_appl_id    => l_component_appl_id
46992       ,p_amb_context_code           => l_amb_context_code
46993       ,p_entity_code                => l_entity_code
46994       ,p_event_class_code           => l_event_class_code);
46995    --
46996    -- set accounting class
46997    --
46998    xla_ae_lines_pkg.SetAcctClass(
46999            p_accounting_class_code  => 'CASH'
47000          , p_ae_header_id           => l_ae_header_id
47001          );
47002 
47003    --
47004    -- set rounding class
47005    --
47006    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47007                       'RECEIVABLE';
47008 
47009    --
47010    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47011    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47012    --
47013    -- bulk performance
47014    --
47015    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47016 
47017    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47018       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47019 
47020    -- 4955764
47021    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47022       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47023 
47024    -- 4458381 Public Sector Enh
47025    
47026    --
47027    -- set accounting attributes for the line type
47028    --
47029    l_entered_amt_idx := 8;
47030    l_accted_amt_idx  := 13;
47031    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
47032    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
47033    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
47034    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
47035    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
47036    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
47037    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
47038    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
47039    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
47040    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
47041    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
47042    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
47043    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
47044    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
47045    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
47046    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
47047    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
47048    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
47049    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
47050    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
47051    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
47052    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
47053    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
47054    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
47055    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
47056    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
47057    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
47058    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
47059    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
47060    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
47061    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
47062    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
47063    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
47064 
47068    ---------------------------------------------------------------------------------------------------------------
47065    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47066    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47067 
47069    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47070    ---------------------------------------------------------------------------------------------------------------
47071    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47072 
47073    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47074    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47075 
47076    IF xla_accounting_cache_pkg.GetValueChar
47077          (p_source_code         => 'LEDGER_CATEGORY_CODE'
47078          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47079    AND l_bflow_method_code = 'PRIOR_ENTRY'
47080 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47081    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47082          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47083        )
47084    THEN
47085          xla_ae_lines_pkg.BflowUpgEntry
47086            (p_business_method_code    => l_bflow_method_code
47087            ,p_business_class_code     => l_bflow_class_code
47088            ,p_balance_type            => l_balance_type_code);
47089    ELSE
47090       NULL;
47091 -- No business flow processing for business flow method of NONE.
47092    END IF;
47093 
47094    --
47095    -- call analytical criteria
47096    --
47097    
47098 
47099 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
47100 xla_ae_lines_pkg.SetAnalyticalCriteria(
47101    p_analytical_criterion_name    => 'Check Id'
47102  , p_analytical_criterion_owner   => 'S'
47103  , p_analytical_criterion_code    => 'CHECK_ID'
47104  , p_amb_context_code             => 'DEFAULT'
47105  , p_balancing_flag               => 'N'
47106  
47107  , p_analytical_detail_char_1    =>  NULL
47108  , p_analytical_detail_num_1     =>  p_source_90
47109  , p_analytical_detail_date_1    =>  NULL
47110 
47111  , p_ae_header_id                 => l_ae_header_id
47112 )
47113 ;
47114 --
47115 
47116    --
47117    -- call description
47118    --
47119    -- No description or it is inherited.
47120    --
47121    -- call ADRs
47122    -- Bug 4922099
47123    --
47124    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47125         (NVL(l_actual_upg_option, 'N') = 'O') OR
47126         (NVL(l_enc_upg_option, 'N') = 'O')
47127       )
47128    THEN
47129    NULL;
47130    --
47131    --
47132    
47133   l_ccid := AcctDerRule_20(
47134            p_application_id           => p_application_id
47135          , p_ae_header_id             => l_ae_header_id 
47136 , p_source_22 => p_source_22
47137          , x_transaction_coa_id       => l_adr_transaction_coa_id
47138          , x_accounting_coa_id        => l_adr_accounting_coa_id
47139          , x_value_type_code          => l_adr_value_type_code
47140          , p_side                     => 'NA'
47141    );
47142 
47143    xla_ae_lines_pkg.set_ccid(
47144     p_code_combination_id          => l_ccid
47145   , p_value_type_code              => l_adr_value_type_code
47146   , p_transaction_coa_id           => l_adr_transaction_coa_id
47147   , p_accounting_coa_id            => l_adr_accounting_coa_id
47148   , p_adr_code                     => 'DIST_CCID'
47149   , p_adr_type_code                => 'S'
47150   , p_component_type               => l_component_type
47151   , p_component_code               => l_component_code
47152   , p_component_type_code          => l_component_type_code
47153   , p_component_appl_id            => l_component_appl_id
47154   , p_amb_context_code             => l_amb_context_code
47155   , p_side                         => 'NA'
47156   );
47157 
47158 
47159    --
47160    --
47161    END IF;
47162    --
47163    -- Bug 4922099
47164    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47165           (NVL(l_enc_upg_option, 'N') = 'O')
47166         ) AND
47167         (l_bflow_method_code = 'PRIOR_ENTRY')
47168       )
47169    THEN
47170       IF
47171       --
47172       1 = 2
47173       --
47174       THEN
47175       xla_accounting_err_pkg.build_message
47176                                     (p_appli_s_name            => 'XLA'
47177                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47178                                     ,p_token_1                 => 'LINE_NUMBER'
47179                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47180                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47181                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47182                                                                              l_component_type
47183                                                                             ,l_component_code
47184                                                                             ,l_component_type_code
47185                                                                             ,l_component_appl_id
47189                                                                            )
47186                                                                             ,l_amb_context_code
47187                                                                             ,l_entity_code
47188                                                                             ,l_event_class_code
47190                                     ,p_token_3                 => 'OWNER'
47191                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47192                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47193                                                                           ,p_lookup_code    => l_component_type_code
47194                                                                          )
47195                                     ,p_token_4                 => 'PRODUCT_NAME'
47196                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47197                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47198                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47199                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47200                                     ,p_ae_header_id            =>  NULL
47201                                        );
47202 
47203         IF (C_LEVEL_ERROR>= g_log_level) THEN
47204                  trace
47205                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47206                       ,p_level    => C_LEVEL_ERROR
47207                       ,p_module   => l_log_module);
47208         END IF;
47209       END IF;
47210    END IF;
47211    --
47212    --
47213    ------------------------------------------------------------------------------------------------
47214    -- 4219869 Business Flow
47215    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47216    -- Prior Entry.  Currently, the following code is always generated.
47217    ------------------------------------------------------------------------------------------------
47218    XLA_AE_LINES_PKG.ValidateCurrentLine;
47219 
47220    ------------------------------------------------------------------------------------
47221    -- 4219869 Business Flow
47222    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47223    ------------------------------------------------------------------------------------
47224    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47225 
47226    ----------------------------------------------------------------------------------
47227    -- 4219869 Business Flow
47228    -- Update journal entry status -- Need to generate this within IF <condition>
47229    ----------------------------------------------------------------------------------
47230    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47231          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47232          ,p_balance_type_code => l_balance_type_code
47233          );
47234 
47235    -------------------------------------------------------------------------------------------
47236    -- 4262811 - Generate the Accrual Reversal lines
47237    -------------------------------------------------------------------------------------------
47238    BEGIN
47239       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47240                               (g_array_event(p_event_id).array_value_num('header_index'));
47241       IF l_acc_rev_flag IS NULL THEN
47242          l_acc_rev_flag := 'N';
47243       END IF;
47244    EXCEPTION
47245       WHEN OTHERS THEN
47246          l_acc_rev_flag := 'N';
47247    END;
47248    --
47249    IF (l_acc_rev_flag = 'Y') THEN
47250 
47251        -- 4645092  ------------------------------------------------------------------------------
47252        -- To allow MPA report to determine if it should generate report process
47253        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47254        ------------------------------------------------------------------------------------------
47255 
47256        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47257        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47258    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
47259    -- call ADRs
47260    -- Bug 4922099
47261    --
47262    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47263         (NVL(l_actual_upg_option, 'N') = 'O') OR
47264         (NVL(l_enc_upg_option, 'N') = 'O')
47265       )
47266    THEN
47267    NULL;
47268    --
47269    --
47270    
47271   l_ccid := AcctDerRule_20(
47272            p_application_id           => p_application_id
47273          , p_ae_header_id             => l_ae_header_id 
47274 , p_source_22 => p_source_22
47275          , x_transaction_coa_id       => l_adr_transaction_coa_id
47276          , x_accounting_coa_id        => l_adr_accounting_coa_id
47277          , x_value_type_code          => l_adr_value_type_code
47278          , p_side                     => 'NA'
47279    );
47280 
47281    xla_ae_lines_pkg.set_ccid(
47282     p_code_combination_id          => l_ccid
47283   , p_value_type_code              => l_adr_value_type_code
47284   , p_transaction_coa_id           => l_adr_transaction_coa_id
47285   , p_accounting_coa_id            => l_adr_accounting_coa_id
47286   , p_adr_code                     => 'DIST_CCID'
47290   , p_component_type_code          => l_component_type_code
47287   , p_adr_type_code                => 'S'
47288   , p_component_type               => l_component_type
47289   , p_component_code               => l_component_code
47291   , p_component_appl_id            => l_component_appl_id
47292   , p_amb_context_code             => l_amb_context_code
47293   , p_side                         => 'NA'
47294   );
47295 
47296 
47297    --
47298    --
47299    END IF;
47300 
47301        --
47302        -- Update the line information that should be overwritten
47303        --
47304        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47305                                          p_header_num   => 1);
47306        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47307 
47308        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47309 
47310        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47311           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47312        END IF;
47313 
47314       --
47315       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47316       --
47317       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47318           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47319       ELSE
47320           ---------------------------------------------------------------------------------------------------
47321           -- 4262811a Switch Sign
47322           ---------------------------------------------------------------------------------------------------
47323           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47324           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47325                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47326           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47327                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47328           -- 5132302
47329           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47330                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47331 
47332       END IF;
47333 
47334       -- 4955764
47335       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47336       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47337 
47338 
47339       XLA_AE_LINES_PKG.ValidateCurrentLine;
47340       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47341 
47342       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47343                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47344                ,p_balance_type_code => l_balance_type_code);
47345 
47346    END IF;
47347 
47348    -----------------------------------------------------------------------------------------
47349    -- 4262811 Multiperiod Accounting
47350    -----------------------------------------------------------------------------------------
47351      -- No MPA option is assigned.
47352 
47353 
47354 END IF;
47355 END IF;
47356 --
47357 
47358 --
47359 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47360    trace
47361       (p_msg      => 'END of AcctLineType_100'
47362       ,p_level    => C_LEVEL_PROCEDURE
47363       ,p_module   => l_log_module);
47364 END IF;
47365 --
47366 EXCEPTION
47367   WHEN xla_exceptions_pkg.application_exception THEN
47368       RAISE;
47369   WHEN OTHERS THEN
47370        xla_exceptions_pkg.raise_message
47371            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_100');
47372 END AcctLineType_100;
47373 --
47374 
47375 ---------------------------------------
47376 --
47377 -- PRIVATE FUNCTION
47378 --         AcctLineType_101
47379 --
47380 ---------------------------------------
47381 PROCEDURE AcctLineType_101 (
47382   p_application_id        IN NUMBER
47383  ,p_event_id              IN NUMBER
47384  ,p_calculate_acctd_flag  IN VARCHAR2
47385  ,p_calculate_g_l_flag    IN VARCHAR2
47386  ,p_actual_flag           IN OUT VARCHAR2
47387  ,p_balance_type_code     OUT VARCHAR2
47388  ,p_gain_or_loss_ref      OUT VARCHAR2
47389  
47390 --Distribution GL Account
47391  , p_source_22            IN NUMBER
47392 --Distribution Source Type
47393  , p_source_27            IN VARCHAR2
47394 --Receivable Activity Type
47395  , p_source_28            IN VARCHAR2
47396 --Distribution Line Identifier
47397  , p_source_29            IN NUMBER
47398 --Distribution Type
47399  , p_source_30            IN VARCHAR2
47400 --Exchange Date
47401  , p_source_33            IN DATE
47402 --Exchange Rate
47403  , p_source_34            IN NUMBER
47404 --Accounting Amount
47405  , p_source_40            IN NUMBER
47406 --Transaction Distribution Identifier
47407  , p_source_44            IN NUMBER
47408 --Transaction Distribution Type
47409  , p_source_45            IN VARCHAR2
47410 --Distribution Multi Fund Additional Entry
47414 --Receipt Applied To Application Identifier
47411  , p_source_88            IN VARCHAR2
47412 --Cash Receipt Identifier
47413  , p_source_90            IN NUMBER
47415  , p_source_92            IN NUMBER
47416 --Transaction Entity Code
47417  , p_source_93            IN VARCHAR2
47418 --Transaction Identifier
47419  , p_source_94            IN NUMBER
47420 --DIST_ENT_AMT_FROM
47421  , p_source_95            IN NUMBER
47422 --Applying Document Currency Code
47423  , p_source_96            IN VARCHAR2
47424 --Distribution Party Identifier
47425  , p_source_97            IN NUMBER
47426 --Distribution Party Site Id
47427  , p_source_98            IN NUMBER
47428 --Distribution Party Type
47429  , p_source_99            IN VARCHAR2
47430 --Applied To Document Exchange Rate Type
47431  , p_source_100            IN VARCHAR2
47432 )
47433 IS
47434 
47435 l_component_type              VARCHAR2(80);
47436 l_component_code              VARCHAR2(30);
47437 l_component_type_code         VARCHAR2(1);
47438 l_component_appl_id           INTEGER;
47439 l_amb_context_code            VARCHAR2(30);
47440 l_entity_code                 VARCHAR2(30);
47441 l_event_class_code            VARCHAR2(30);
47442 l_ae_header_id                NUMBER;
47443 l_event_type_code             VARCHAR2(30);
47444 l_line_definition_code        VARCHAR2(30);
47445 l_line_definition_owner_code  VARCHAR2(1);
47446 --
47447 -- adr variables
47448 l_segment                     VARCHAR2(30);
47449 l_ccid                        NUMBER;
47450 l_adr_transaction_coa_id      NUMBER;
47451 l_adr_accounting_coa_id       NUMBER;
47452 l_adr_flexfield_segment_code  VARCHAR2(30);
47453 l_adr_flex_value_set_id       NUMBER;
47454 l_adr_value_type_code         VARCHAR2(30);
47455 l_adr_value_combination_id    NUMBER;
47456 l_adr_value_segment_code      VARCHAR2(30);
47457 
47458 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47459 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47460 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47461 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47462 
47463 -- 4262811 Variables ------------------------------------------------------------------------------------------
47464 l_entered_amt_idx             NUMBER;
47465 l_accted_amt_idx              NUMBER;
47466 l_acc_rev_flag                VARCHAR2(1);
47467 l_accrual_line_num            NUMBER;
47468 l_tmp_amt                     NUMBER;
47469 l_acc_rev_natural_side_code   VARCHAR2(1);
47470 
47471 l_num_entries                 NUMBER;
47472 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47473 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47474 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47475 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47476 l_recog_line_1                NUMBER;
47477 l_recog_line_2                NUMBER;
47478 
47479 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47480 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47481 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47482 
47483 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47484 
47485 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47486 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47487 
47488 ---------------------------------------------------------------------------------------------------------------
47489 
47490 
47491 --
47492 -- bulk performance
47493 --
47494 l_balance_type_code           VARCHAR2(1);
47495 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47496 l_log_module                  VARCHAR2(240);
47497 
47498 --
47499 -- Upgrade strategy
47500 --
47501 l_actual_upg_option           VARCHAR2(1);
47502 l_enc_upg_option           VARCHAR2(1);
47503 
47504 --
47505 BEGIN
47506 --
47507 IF g_log_enabled THEN
47508       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_101';
47509 END IF;
47510 --
47511 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47512 
47513       trace
47514          (p_msg      => 'BEGIN of AcctLineType_101'
47515          ,p_level    => C_LEVEL_PROCEDURE
47516          ,p_module   => l_log_module);
47517 
47518 END IF;
47519 --
47520 l_component_type             := 'AMB_JLT';
47521 l_component_code             := 'RCT_CC_CHARGEBACK';
47522 l_component_type_code        := 'S';
47523 l_component_appl_id          :=  222;
47524 l_amb_context_code           := 'DEFAULT';
47525 l_entity_code                := 'RECEIPTS';
47526 l_event_class_code           := 'RECEIPT';
47527 l_event_type_code            := 'RECEIPT_ALL';
47528 l_line_definition_owner_code := 'S';
47529 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
47530 --
47531 l_balance_type_code          := 'A';
47532 l_segment                     := NULL;
47533 l_ccid                        := NULL;
47534 l_adr_transaction_coa_id      := NULL;
47535 l_adr_accounting_coa_id       := NULL;
47536 l_adr_flexfield_segment_code  := NULL;
47537 l_adr_flex_value_set_id       := NULL;
47538 l_adr_value_type_code         := NULL;
47539 l_adr_value_combination_id    := NULL;
47540 l_adr_value_segment_code      := NULL;
47544 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47541 
47542 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
47543 l_bflow_class_code           := '';    -- 4219869 Business Flow
47545 l_budgetary_control_flag     := 'N';
47546 
47547 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
47548 l_bflow_applied_to_amt       := NULL; -- 5132302
47549 l_entered_amt_idx            := NULL;          -- 4262811
47550 l_accted_amt_idx             := NULL;          -- 4262811
47551 l_acc_rev_flag               := NULL;          -- 4262811
47552 l_accrual_line_num           := NULL;          -- 4262811
47553 l_tmp_amt                    := NULL;          -- 4262811
47554 --
47555  
47556 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47557     l_balance_type_code <> 'B' THEN
47558 IF NVL(p_source_27,'
47559 ') =  'ACTIVITY' AND 
47560 NVL(p_source_28,'
47561 ') =  'CC_CHARGEBACK' AND 
47562 NVL(p_source_88,'
47563 ') =  'N'
47564  THEN 
47565 
47566    --
47567    XLA_AE_LINES_PKG.SetNewLine;
47568 
47569    p_balance_type_code          := l_balance_type_code;
47570    -- set the flag so later we will know whether the gain loss line needs to be created
47571    
47572    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47573      p_actual_flag :='A';
47574    END IF;
47575 
47576    --
47577    -- bulk performance
47578    --
47579    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47580                                       p_header_num   => 0); -- 4262811
47581    --
47582    -- set accounting line options
47583    --
47584    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47585            p_natural_side_code          => 'C'
47586          , p_gain_or_loss_flag          => 'N'
47587          , p_gl_transfer_mode_code      => 'S'
47588          , p_acct_entry_type_code       => 'A'
47589          , p_switch_side_flag           => 'Y'
47590          , p_merge_duplicate_code       => 'A'
47591          );
47592    --
47593    l_acc_rev_natural_side_code := 'D';  -- 4262811
47594    -- 
47595    --
47596    -- set accounting line type info
47597    --
47598    xla_ae_lines_pkg.SetAcctLineType
47599       (p_component_type             => l_component_type
47600       ,p_event_type_code            => l_event_type_code
47601       ,p_line_definition_owner_code => l_line_definition_owner_code
47602       ,p_line_definition_code       => l_line_definition_code
47603       ,p_accounting_line_code       => l_component_code
47604       ,p_accounting_line_type_code  => l_component_type_code
47605       ,p_accounting_line_appl_id    => l_component_appl_id
47606       ,p_amb_context_code           => l_amb_context_code
47607       ,p_entity_code                => l_entity_code
47608       ,p_event_class_code           => l_event_class_code);
47609    --
47610    -- set accounting class
47611    --
47612    xla_ae_lines_pkg.SetAcctClass(
47613            p_accounting_class_code  => 'CLAIM'
47614          , p_ae_header_id           => l_ae_header_id
47615          );
47616 
47617    --
47618    -- set rounding class
47619    --
47620    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47621                       'RECEIVABLE';
47622 
47623    --
47624    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47625    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47626    --
47627    -- bulk performance
47628    --
47629    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47630 
47631    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47632       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47633 
47634    -- 4955764
47635    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47636       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47637 
47638    -- 4458381 Public Sector Enh
47639    
47640    --
47641    -- set accounting attributes for the line type
47642    --
47643    l_entered_amt_idx := 8;
47644    l_accted_amt_idx  := 13;
47645    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
47646    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
47647    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
47648    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
47649    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
47650    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
47651    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
47652    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
47653    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
47654    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
47655    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
47656    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
47657    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
47658    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
47659    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
47660    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
47661    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
47665    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
47662    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
47663    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
47664    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
47666    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
47667    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
47668    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
47669    l_rec_acct_attrs.array_char_value(12)  := p_source_100;
47670    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
47671    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
47672    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
47673    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
47674    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
47675    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
47676    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
47677    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
47678 
47679    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47680    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47681 
47682    ---------------------------------------------------------------------------------------------------------------
47683    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47684    ---------------------------------------------------------------------------------------------------------------
47685    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47686 
47687    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47688    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47689 
47690    IF xla_accounting_cache_pkg.GetValueChar
47691          (p_source_code         => 'LEDGER_CATEGORY_CODE'
47692          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47693    AND l_bflow_method_code = 'PRIOR_ENTRY'
47694 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47695    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47696          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47697        )
47698    THEN
47699          xla_ae_lines_pkg.BflowUpgEntry
47700            (p_business_method_code    => l_bflow_method_code
47701            ,p_business_class_code     => l_bflow_class_code
47702            ,p_balance_type            => l_balance_type_code);
47703    ELSE
47704       NULL;
47705 -- No business flow processing for business flow method of NONE.
47706    END IF;
47707 
47708    --
47709    -- call analytical criteria
47710    --
47711    
47712 
47713 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
47714 xla_ae_lines_pkg.SetAnalyticalCriteria(
47715    p_analytical_criterion_name    => 'Check Id'
47716  , p_analytical_criterion_owner   => 'S'
47717  , p_analytical_criterion_code    => 'CHECK_ID'
47718  , p_amb_context_code             => 'DEFAULT'
47719  , p_balancing_flag               => 'N'
47720  
47721  , p_analytical_detail_char_1    =>  NULL
47722  , p_analytical_detail_num_1     =>  p_source_90
47723  , p_analytical_detail_date_1    =>  NULL
47724 
47725  , p_ae_header_id                 => l_ae_header_id
47726 )
47727 ;
47728 --
47729 
47730    --
47731    -- call description
47732    --
47733    -- No description or it is inherited.
47734    --
47735    -- call ADRs
47736    -- Bug 4922099
47737    --
47738    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47739         (NVL(l_actual_upg_option, 'N') = 'O') OR
47740         (NVL(l_enc_upg_option, 'N') = 'O')
47741       )
47742    THEN
47743    NULL;
47744    --
47745    --
47746    
47747   l_ccid := AcctDerRule_20(
47748            p_application_id           => p_application_id
47749          , p_ae_header_id             => l_ae_header_id 
47750 , p_source_22 => p_source_22
47751          , x_transaction_coa_id       => l_adr_transaction_coa_id
47752          , x_accounting_coa_id        => l_adr_accounting_coa_id
47753          , x_value_type_code          => l_adr_value_type_code
47754          , p_side                     => 'NA'
47755    );
47756 
47757    xla_ae_lines_pkg.set_ccid(
47758     p_code_combination_id          => l_ccid
47759   , p_value_type_code              => l_adr_value_type_code
47760   , p_transaction_coa_id           => l_adr_transaction_coa_id
47761   , p_accounting_coa_id            => l_adr_accounting_coa_id
47762   , p_adr_code                     => 'DIST_CCID'
47763   , p_adr_type_code                => 'S'
47764   , p_component_type               => l_component_type
47765   , p_component_code               => l_component_code
47766   , p_component_type_code          => l_component_type_code
47767   , p_component_appl_id            => l_component_appl_id
47768   , p_amb_context_code             => l_amb_context_code
47769   , p_side                         => 'NA'
47770   );
47771 
47772 
47773    --
47774    --
47775    END IF;
47776    --
47777    -- Bug 4922099
47778    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47779           (NVL(l_enc_upg_option, 'N') = 'O')
47780         ) AND
47781         (l_bflow_method_code = 'PRIOR_ENTRY')
47782       )
47783    THEN
47784       IF
47788       THEN
47785       --
47786       1 = 2
47787       --
47789       xla_accounting_err_pkg.build_message
47790                                     (p_appli_s_name            => 'XLA'
47791                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47792                                     ,p_token_1                 => 'LINE_NUMBER'
47793                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47794                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47795                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47796                                                                              l_component_type
47797                                                                             ,l_component_code
47798                                                                             ,l_component_type_code
47799                                                                             ,l_component_appl_id
47800                                                                             ,l_amb_context_code
47801                                                                             ,l_entity_code
47802                                                                             ,l_event_class_code
47803                                                                            )
47804                                     ,p_token_3                 => 'OWNER'
47805                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47806                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47807                                                                           ,p_lookup_code    => l_component_type_code
47808                                                                          )
47809                                     ,p_token_4                 => 'PRODUCT_NAME'
47810                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47811                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47812                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47813                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47814                                     ,p_ae_header_id            =>  NULL
47815                                        );
47816 
47817         IF (C_LEVEL_ERROR>= g_log_level) THEN
47818                  trace
47819                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47820                       ,p_level    => C_LEVEL_ERROR
47821                       ,p_module   => l_log_module);
47822         END IF;
47823       END IF;
47824    END IF;
47825    --
47826    --
47827    ------------------------------------------------------------------------------------------------
47828    -- 4219869 Business Flow
47829    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47830    -- Prior Entry.  Currently, the following code is always generated.
47831    ------------------------------------------------------------------------------------------------
47832    XLA_AE_LINES_PKG.ValidateCurrentLine;
47833 
47834    ------------------------------------------------------------------------------------
47835    -- 4219869 Business Flow
47836    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47837    ------------------------------------------------------------------------------------
47838    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47839 
47840    ----------------------------------------------------------------------------------
47841    -- 4219869 Business Flow
47842    -- Update journal entry status -- Need to generate this within IF <condition>
47843    ----------------------------------------------------------------------------------
47844    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47845          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47846          ,p_balance_type_code => l_balance_type_code
47847          );
47848 
47849    -------------------------------------------------------------------------------------------
47850    -- 4262811 - Generate the Accrual Reversal lines
47851    -------------------------------------------------------------------------------------------
47852    BEGIN
47853       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47854                               (g_array_event(p_event_id).array_value_num('header_index'));
47855       IF l_acc_rev_flag IS NULL THEN
47856          l_acc_rev_flag := 'N';
47857       END IF;
47858    EXCEPTION
47859       WHEN OTHERS THEN
47860          l_acc_rev_flag := 'N';
47861    END;
47862    --
47863    IF (l_acc_rev_flag = 'Y') THEN
47864 
47865        -- 4645092  ------------------------------------------------------------------------------
47866        -- To allow MPA report to determine if it should generate report process
47867        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47868        ------------------------------------------------------------------------------------------
47869 
47870        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47871        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47872    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
47873    -- call ADRs
47874    -- Bug 4922099
47878         (NVL(l_enc_upg_option, 'N') = 'O')
47875    --
47876    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47877         (NVL(l_actual_upg_option, 'N') = 'O') OR
47879       )
47880    THEN
47881    NULL;
47882    --
47883    --
47884    
47885   l_ccid := AcctDerRule_20(
47886            p_application_id           => p_application_id
47887          , p_ae_header_id             => l_ae_header_id 
47888 , p_source_22 => p_source_22
47889          , x_transaction_coa_id       => l_adr_transaction_coa_id
47890          , x_accounting_coa_id        => l_adr_accounting_coa_id
47891          , x_value_type_code          => l_adr_value_type_code
47892          , p_side                     => 'NA'
47893    );
47894 
47895    xla_ae_lines_pkg.set_ccid(
47896     p_code_combination_id          => l_ccid
47897   , p_value_type_code              => l_adr_value_type_code
47898   , p_transaction_coa_id           => l_adr_transaction_coa_id
47899   , p_accounting_coa_id            => l_adr_accounting_coa_id
47900   , p_adr_code                     => 'DIST_CCID'
47901   , p_adr_type_code                => 'S'
47902   , p_component_type               => l_component_type
47903   , p_component_code               => l_component_code
47904   , p_component_type_code          => l_component_type_code
47905   , p_component_appl_id            => l_component_appl_id
47906   , p_amb_context_code             => l_amb_context_code
47907   , p_side                         => 'NA'
47908   );
47909 
47910 
47911    --
47912    --
47913    END IF;
47914 
47915        --
47916        -- Update the line information that should be overwritten
47917        --
47918        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47919                                          p_header_num   => 1);
47920        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47921 
47922        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47923 
47924        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47925           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47926        END IF;
47927 
47928       --
47929       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47930       --
47931       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47932           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47933       ELSE
47934           ---------------------------------------------------------------------------------------------------
47935           -- 4262811a Switch Sign
47936           ---------------------------------------------------------------------------------------------------
47937           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47938           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47939                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47940           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47941                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47942           -- 5132302
47943           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47944                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47945 
47946       END IF;
47947 
47948       -- 4955764
47949       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47950       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47951 
47952 
47953       XLA_AE_LINES_PKG.ValidateCurrentLine;
47954       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47955 
47956       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47957                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47958                ,p_balance_type_code => l_balance_type_code);
47959 
47960    END IF;
47961 
47962    -----------------------------------------------------------------------------------------
47963    -- 4262811 Multiperiod Accounting
47964    -----------------------------------------------------------------------------------------
47965      -- No MPA option is assigned.
47966 
47967 
47968 END IF;
47969 END IF;
47970 --
47971 
47972 --
47973 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47974    trace
47975       (p_msg      => 'END of AcctLineType_101'
47976       ,p_level    => C_LEVEL_PROCEDURE
47977       ,p_module   => l_log_module);
47978 END IF;
47979 --
47980 EXCEPTION
47981   WHEN xla_exceptions_pkg.application_exception THEN
47982       RAISE;
47983   WHEN OTHERS THEN
47984        xla_exceptions_pkg.raise_message
47985            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_101');
47986 END AcctLineType_101;
47987 --
47988 
47989 ---------------------------------------
47990 --
47991 -- PRIVATE FUNCTION
47992 --         AcctLineType_102
47993 --
47994 ---------------------------------------
47995 PROCEDURE AcctLineType_102 (
47996   p_application_id        IN NUMBER
48000  ,p_actual_flag           IN OUT VARCHAR2
47997  ,p_event_id              IN NUMBER
47998  ,p_calculate_acctd_flag  IN VARCHAR2
47999  ,p_calculate_g_l_flag    IN VARCHAR2
48001  ,p_balance_type_code     OUT VARCHAR2
48002  ,p_gain_or_loss_ref      OUT VARCHAR2
48003  
48004 --Distribution GL Account
48005  , p_source_22            IN NUMBER
48006 --Distribution Source Type
48007  , p_source_27            IN VARCHAR2
48008 --Receivable Activity Type
48009  , p_source_28            IN VARCHAR2
48010 --Distribution Line Identifier
48011  , p_source_29            IN NUMBER
48012 --Distribution Type
48013  , p_source_30            IN VARCHAR2
48014 --Exchange Date
48015  , p_source_33            IN DATE
48016 --Exchange Rate
48017  , p_source_34            IN NUMBER
48018 --Accounting Amount
48019  , p_source_40            IN NUMBER
48020 --Transaction Distribution Identifier
48021  , p_source_44            IN NUMBER
48022 --Transaction Distribution Type
48023  , p_source_45            IN VARCHAR2
48024 --Distribution Multi Fund Additional Entry
48025  , p_source_88            IN VARCHAR2
48026 --Cash Receipt Identifier
48027  , p_source_90            IN NUMBER
48028 --Receipt Applied To Application Identifier
48029  , p_source_92            IN NUMBER
48030 --Transaction Entity Code
48031  , p_source_93            IN VARCHAR2
48032 --Transaction Identifier
48033  , p_source_94            IN NUMBER
48034 --DIST_ENT_AMT_FROM
48035  , p_source_95            IN NUMBER
48036 --Applying Document Currency Code
48037  , p_source_96            IN VARCHAR2
48038 --Distribution Party Identifier
48039  , p_source_97            IN NUMBER
48040 --Distribution Party Site Id
48041  , p_source_98            IN NUMBER
48042 --Distribution Party Type
48043  , p_source_99            IN VARCHAR2
48044 --Applied To Document Exchange Rate Type
48045  , p_source_100            IN VARCHAR2
48046 )
48047 IS
48048 
48049 l_component_type              VARCHAR2(80);
48050 l_component_code              VARCHAR2(30);
48051 l_component_type_code         VARCHAR2(1);
48052 l_component_appl_id           INTEGER;
48053 l_amb_context_code            VARCHAR2(30);
48054 l_entity_code                 VARCHAR2(30);
48055 l_event_class_code            VARCHAR2(30);
48056 l_ae_header_id                NUMBER;
48057 l_event_type_code             VARCHAR2(30);
48058 l_line_definition_code        VARCHAR2(30);
48059 l_line_definition_owner_code  VARCHAR2(1);
48060 --
48061 -- adr variables
48062 l_segment                     VARCHAR2(30);
48063 l_ccid                        NUMBER;
48064 l_adr_transaction_coa_id      NUMBER;
48065 l_adr_accounting_coa_id       NUMBER;
48066 l_adr_flexfield_segment_code  VARCHAR2(30);
48067 l_adr_flex_value_set_id       NUMBER;
48068 l_adr_value_type_code         VARCHAR2(30);
48069 l_adr_value_combination_id    NUMBER;
48070 l_adr_value_segment_code      VARCHAR2(30);
48071 
48072 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
48073 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
48074 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
48075 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
48076 
48077 -- 4262811 Variables ------------------------------------------------------------------------------------------
48078 l_entered_amt_idx             NUMBER;
48079 l_accted_amt_idx              NUMBER;
48080 l_acc_rev_flag                VARCHAR2(1);
48081 l_accrual_line_num            NUMBER;
48082 l_tmp_amt                     NUMBER;
48083 l_acc_rev_natural_side_code   VARCHAR2(1);
48084 
48085 l_num_entries                 NUMBER;
48086 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
48087 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
48088 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
48089 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
48090 l_recog_line_1                NUMBER;
48091 l_recog_line_2                NUMBER;
48092 
48093 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
48094 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
48095 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
48096 
48097 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48098 
48099 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
48100 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
48101 
48102 ---------------------------------------------------------------------------------------------------------------
48103 
48104 
48105 --
48106 -- bulk performance
48107 --
48108 l_balance_type_code           VARCHAR2(1);
48109 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
48110 l_log_module                  VARCHAR2(240);
48111 
48112 --
48113 -- Upgrade strategy
48114 --
48115 l_actual_upg_option           VARCHAR2(1);
48116 l_enc_upg_option           VARCHAR2(1);
48117 
48118 --
48119 BEGIN
48120 --
48121 IF g_log_enabled THEN
48122       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_102';
48123 END IF;
48124 --
48125 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48126 
48127       trace
48128          (p_msg      => 'BEGIN of AcctLineType_102'
48129          ,p_level    => C_LEVEL_PROCEDURE
48130          ,p_module   => l_log_module);
48131 
48132 END IF;
48136 l_component_type_code        := 'S';
48133 --
48134 l_component_type             := 'AMB_JLT';
48135 l_component_code             := 'RCT_CHARGEBACK';
48137 l_component_appl_id          :=  222;
48138 l_amb_context_code           := 'DEFAULT';
48139 l_entity_code                := 'RECEIPTS';
48140 l_event_class_code           := 'RECEIPT';
48141 l_event_type_code            := 'RECEIPT_ALL';
48142 l_line_definition_owner_code := 'S';
48143 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
48144 --
48145 l_balance_type_code          := 'A';
48146 l_segment                     := NULL;
48147 l_ccid                        := NULL;
48148 l_adr_transaction_coa_id      := NULL;
48149 l_adr_accounting_coa_id       := NULL;
48150 l_adr_flexfield_segment_code  := NULL;
48151 l_adr_flex_value_set_id       := NULL;
48152 l_adr_value_type_code         := NULL;
48153 l_adr_value_combination_id    := NULL;
48154 l_adr_value_segment_code      := NULL;
48155 
48156 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
48157 l_bflow_class_code           := '';    -- 4219869 Business Flow
48158 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
48159 l_budgetary_control_flag     := 'N';
48160 
48161 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
48162 l_bflow_applied_to_amt       := NULL; -- 5132302
48163 l_entered_amt_idx            := NULL;          -- 4262811
48164 l_accted_amt_idx             := NULL;          -- 4262811
48165 l_acc_rev_flag               := NULL;          -- 4262811
48166 l_accrual_line_num           := NULL;          -- 4262811
48167 l_tmp_amt                    := NULL;          -- 4262811
48168 --
48169  
48170 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48171     l_balance_type_code <> 'B' THEN
48172 IF NVL(p_source_27,'
48173 ') =  'ACTIVITY' AND 
48174 NVL(p_source_28,'
48175 ') =  'ADJUST' AND 
48176 NVL(p_source_88,'
48177 ') =  'N'
48178  THEN 
48179 
48180    --
48181    XLA_AE_LINES_PKG.SetNewLine;
48182 
48183    p_balance_type_code          := l_balance_type_code;
48184    -- set the flag so later we will know whether the gain loss line needs to be created
48185    
48186    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48187      p_actual_flag :='A';
48188    END IF;
48189 
48190    --
48191    -- bulk performance
48192    --
48193    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48194                                       p_header_num   => 0); -- 4262811
48195    --
48196    -- set accounting line options
48197    --
48198    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48199            p_natural_side_code          => 'C'
48200          , p_gain_or_loss_flag          => 'N'
48201          , p_gl_transfer_mode_code      => 'S'
48202          , p_acct_entry_type_code       => 'A'
48203          , p_switch_side_flag           => 'Y'
48204          , p_merge_duplicate_code       => 'A'
48205          );
48206    --
48207    l_acc_rev_natural_side_code := 'D';  -- 4262811
48208    -- 
48209    --
48210    -- set accounting line type info
48211    --
48212    xla_ae_lines_pkg.SetAcctLineType
48213       (p_component_type             => l_component_type
48214       ,p_event_type_code            => l_event_type_code
48215       ,p_line_definition_owner_code => l_line_definition_owner_code
48216       ,p_line_definition_code       => l_line_definition_code
48217       ,p_accounting_line_code       => l_component_code
48218       ,p_accounting_line_type_code  => l_component_type_code
48219       ,p_accounting_line_appl_id    => l_component_appl_id
48220       ,p_amb_context_code           => l_amb_context_code
48221       ,p_entity_code                => l_entity_code
48222       ,p_event_class_code           => l_event_class_code);
48223    --
48224    -- set accounting class
48225    --
48226    xla_ae_lines_pkg.SetAcctClass(
48227            p_accounting_class_code  => 'CLAIM'
48228          , p_ae_header_id           => l_ae_header_id
48229          );
48230 
48231    --
48232    -- set rounding class
48233    --
48234    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48235                       'RECEIVABLE';
48236 
48237    --
48238    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48239    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48240    --
48241    -- bulk performance
48242    --
48243    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48244 
48245    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48246       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48247 
48248    -- 4955764
48249    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48250       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48251 
48252    -- 4458381 Public Sector Enh
48253    
48254    --
48255    -- set accounting attributes for the line type
48256    --
48257    l_entered_amt_idx := 8;
48258    l_accted_amt_idx  := 13;
48259    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
48260    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
48264    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
48261    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
48262    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
48263    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
48265    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
48266    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
48267    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
48268    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
48269    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
48270    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
48271    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
48272    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
48273    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
48274    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
48275    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
48276    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
48277    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
48278    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
48279    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
48280    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
48281    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
48282    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
48283    l_rec_acct_attrs.array_char_value(12)  := p_source_100;
48284    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
48285    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
48286    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
48287    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
48288    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
48289    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
48290    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
48291    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
48292 
48293    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48294    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48295 
48296    ---------------------------------------------------------------------------------------------------------------
48297    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48298    ---------------------------------------------------------------------------------------------------------------
48299    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48300 
48301    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48302    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48303 
48304    IF xla_accounting_cache_pkg.GetValueChar
48305          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48306          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48307    AND l_bflow_method_code = 'PRIOR_ENTRY'
48308 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48309    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48310          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48311        )
48312    THEN
48313          xla_ae_lines_pkg.BflowUpgEntry
48314            (p_business_method_code    => l_bflow_method_code
48315            ,p_business_class_code     => l_bflow_class_code
48316            ,p_balance_type            => l_balance_type_code);
48317    ELSE
48318       NULL;
48319 -- No business flow processing for business flow method of NONE.
48320    END IF;
48321 
48322    --
48323    -- call analytical criteria
48324    --
48325    
48326 
48327 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
48328 xla_ae_lines_pkg.SetAnalyticalCriteria(
48329    p_analytical_criterion_name    => 'Check Id'
48330  , p_analytical_criterion_owner   => 'S'
48331  , p_analytical_criterion_code    => 'CHECK_ID'
48332  , p_amb_context_code             => 'DEFAULT'
48333  , p_balancing_flag               => 'N'
48334  
48335  , p_analytical_detail_char_1    =>  NULL
48336  , p_analytical_detail_num_1     =>  p_source_90
48337  , p_analytical_detail_date_1    =>  NULL
48338 
48339  , p_ae_header_id                 => l_ae_header_id
48340 )
48341 ;
48342 --
48343 
48344    --
48345    -- call description
48346    --
48347    -- No description or it is inherited.
48348    --
48349    -- call ADRs
48350    -- Bug 4922099
48351    --
48352    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48353         (NVL(l_actual_upg_option, 'N') = 'O') OR
48354         (NVL(l_enc_upg_option, 'N') = 'O')
48355       )
48356    THEN
48357    NULL;
48358    --
48359    --
48360    
48361   l_ccid := AcctDerRule_20(
48362            p_application_id           => p_application_id
48363          , p_ae_header_id             => l_ae_header_id 
48364 , p_source_22 => p_source_22
48365          , x_transaction_coa_id       => l_adr_transaction_coa_id
48366          , x_accounting_coa_id        => l_adr_accounting_coa_id
48367          , x_value_type_code          => l_adr_value_type_code
48368          , p_side                     => 'NA'
48369    );
48370 
48371    xla_ae_lines_pkg.set_ccid(
48375   , p_accounting_coa_id            => l_adr_accounting_coa_id
48372     p_code_combination_id          => l_ccid
48373   , p_value_type_code              => l_adr_value_type_code
48374   , p_transaction_coa_id           => l_adr_transaction_coa_id
48376   , p_adr_code                     => 'DIST_CCID'
48377   , p_adr_type_code                => 'S'
48378   , p_component_type               => l_component_type
48379   , p_component_code               => l_component_code
48380   , p_component_type_code          => l_component_type_code
48381   , p_component_appl_id            => l_component_appl_id
48382   , p_amb_context_code             => l_amb_context_code
48383   , p_side                         => 'NA'
48384   );
48385 
48386 
48387    --
48388    --
48389    END IF;
48390    --
48391    -- Bug 4922099
48392    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48393           (NVL(l_enc_upg_option, 'N') = 'O')
48394         ) AND
48395         (l_bflow_method_code = 'PRIOR_ENTRY')
48396       )
48397    THEN
48398       IF
48399       --
48400       1 = 2
48401       --
48402       THEN
48403       xla_accounting_err_pkg.build_message
48404                                     (p_appli_s_name            => 'XLA'
48405                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48406                                     ,p_token_1                 => 'LINE_NUMBER'
48407                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48408                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48409                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48410                                                                              l_component_type
48411                                                                             ,l_component_code
48412                                                                             ,l_component_type_code
48413                                                                             ,l_component_appl_id
48414                                                                             ,l_amb_context_code
48415                                                                             ,l_entity_code
48416                                                                             ,l_event_class_code
48417                                                                            )
48418                                     ,p_token_3                 => 'OWNER'
48419                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48420                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48421                                                                           ,p_lookup_code    => l_component_type_code
48422                                                                          )
48423                                     ,p_token_4                 => 'PRODUCT_NAME'
48424                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48425                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48426                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48427                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48428                                     ,p_ae_header_id            =>  NULL
48429                                        );
48430 
48431         IF (C_LEVEL_ERROR>= g_log_level) THEN
48432                  trace
48433                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48434                       ,p_level    => C_LEVEL_ERROR
48435                       ,p_module   => l_log_module);
48436         END IF;
48437       END IF;
48438    END IF;
48439    --
48440    --
48441    ------------------------------------------------------------------------------------------------
48442    -- 4219869 Business Flow
48443    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48444    -- Prior Entry.  Currently, the following code is always generated.
48445    ------------------------------------------------------------------------------------------------
48446    XLA_AE_LINES_PKG.ValidateCurrentLine;
48447 
48448    ------------------------------------------------------------------------------------
48449    -- 4219869 Business Flow
48450    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48451    ------------------------------------------------------------------------------------
48452    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48453 
48454    ----------------------------------------------------------------------------------
48455    -- 4219869 Business Flow
48456    -- Update journal entry status -- Need to generate this within IF <condition>
48457    ----------------------------------------------------------------------------------
48458    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48459          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48460          ,p_balance_type_code => l_balance_type_code
48461          );
48462 
48463    -------------------------------------------------------------------------------------------
48464    -- 4262811 - Generate the Accrual Reversal lines
48465    -------------------------------------------------------------------------------------------
48469       IF l_acc_rev_flag IS NULL THEN
48466    BEGIN
48467       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48468                               (g_array_event(p_event_id).array_value_num('header_index'));
48470          l_acc_rev_flag := 'N';
48471       END IF;
48472    EXCEPTION
48473       WHEN OTHERS THEN
48474          l_acc_rev_flag := 'N';
48475    END;
48476    --
48477    IF (l_acc_rev_flag = 'Y') THEN
48478 
48479        -- 4645092  ------------------------------------------------------------------------------
48480        -- To allow MPA report to determine if it should generate report process
48481        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48482        ------------------------------------------------------------------------------------------
48483 
48484        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48485        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48486    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
48487    -- call ADRs
48488    -- Bug 4922099
48489    --
48490    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48491         (NVL(l_actual_upg_option, 'N') = 'O') OR
48492         (NVL(l_enc_upg_option, 'N') = 'O')
48493       )
48494    THEN
48495    NULL;
48496    --
48497    --
48498    
48499   l_ccid := AcctDerRule_20(
48500            p_application_id           => p_application_id
48501          , p_ae_header_id             => l_ae_header_id 
48502 , p_source_22 => p_source_22
48503          , x_transaction_coa_id       => l_adr_transaction_coa_id
48504          , x_accounting_coa_id        => l_adr_accounting_coa_id
48505          , x_value_type_code          => l_adr_value_type_code
48506          , p_side                     => 'NA'
48507    );
48508 
48509    xla_ae_lines_pkg.set_ccid(
48510     p_code_combination_id          => l_ccid
48511   , p_value_type_code              => l_adr_value_type_code
48512   , p_transaction_coa_id           => l_adr_transaction_coa_id
48513   , p_accounting_coa_id            => l_adr_accounting_coa_id
48514   , p_adr_code                     => 'DIST_CCID'
48515   , p_adr_type_code                => 'S'
48516   , p_component_type               => l_component_type
48517   , p_component_code               => l_component_code
48518   , p_component_type_code          => l_component_type_code
48519   , p_component_appl_id            => l_component_appl_id
48520   , p_amb_context_code             => l_amb_context_code
48521   , p_side                         => 'NA'
48522   );
48523 
48524 
48525    --
48526    --
48527    END IF;
48528 
48529        --
48530        -- Update the line information that should be overwritten
48531        --
48532        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48533                                          p_header_num   => 1);
48534        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48535 
48536        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48537 
48538        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48539           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48540        END IF;
48541 
48542       --
48543       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48544       --
48545       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48546           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48547       ELSE
48548           ---------------------------------------------------------------------------------------------------
48549           -- 4262811a Switch Sign
48550           ---------------------------------------------------------------------------------------------------
48551           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48552           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48553                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48554           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48555                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48556           -- 5132302
48557           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48558                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48559 
48560       END IF;
48561 
48562       -- 4955764
48563       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48564       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48565 
48566 
48567       XLA_AE_LINES_PKG.ValidateCurrentLine;
48568       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48569 
48570       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48571                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48572                ,p_balance_type_code => l_balance_type_code);
48573 
48574    END IF;
48575 
48576    -----------------------------------------------------------------------------------------
48577    -- 4262811 Multiperiod Accounting
48581 
48578    -----------------------------------------------------------------------------------------
48579      -- No MPA option is assigned.
48580 
48582 END IF;
48583 END IF;
48584 --
48585 
48586 --
48587 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48588    trace
48589       (p_msg      => 'END of AcctLineType_102'
48590       ,p_level    => C_LEVEL_PROCEDURE
48591       ,p_module   => l_log_module);
48592 END IF;
48593 --
48594 EXCEPTION
48595   WHEN xla_exceptions_pkg.application_exception THEN
48596       RAISE;
48597   WHEN OTHERS THEN
48598        xla_exceptions_pkg.raise_message
48599            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_102');
48600 END AcctLineType_102;
48601 --
48602 
48603 ---------------------------------------
48604 --
48605 -- PRIVATE FUNCTION
48606 --         AcctLineType_103
48607 --
48608 ---------------------------------------
48609 PROCEDURE AcctLineType_103 (
48610   p_application_id        IN NUMBER
48611  ,p_event_id              IN NUMBER
48612  ,p_calculate_acctd_flag  IN VARCHAR2
48613  ,p_calculate_g_l_flag    IN VARCHAR2
48614  ,p_actual_flag           IN OUT VARCHAR2
48615  ,p_balance_type_code     OUT VARCHAR2
48616  ,p_gain_or_loss_ref      OUT VARCHAR2
48617  
48618 --Distribution GL Account
48619  , p_source_22            IN NUMBER
48620 --Distribution Source Type
48621  , p_source_27            IN VARCHAR2
48622 --Receivable Activity Type
48623  , p_source_28            IN VARCHAR2
48624 --Distribution Line Identifier
48625  , p_source_29            IN NUMBER
48626 --Distribution Type
48627  , p_source_30            IN VARCHAR2
48628 --Exchange Date
48629  , p_source_33            IN DATE
48630 --Exchange Rate
48631  , p_source_34            IN NUMBER
48632 --Accounting Amount
48633  , p_source_40            IN NUMBER
48634 --Transaction Distribution Identifier
48635  , p_source_44            IN NUMBER
48636 --Transaction Distribution Type
48637  , p_source_45            IN VARCHAR2
48638 --Distribution Multi Fund Additional Entry
48639  , p_source_88            IN VARCHAR2
48640 --Cash Receipt Identifier
48641  , p_source_90            IN NUMBER
48642 --Receipt Applied To Application Identifier
48643  , p_source_92            IN NUMBER
48644 --Transaction Entity Code
48645  , p_source_93            IN VARCHAR2
48646 --Transaction Identifier
48647  , p_source_94            IN NUMBER
48648 --DIST_ENT_AMT_FROM
48649  , p_source_95            IN NUMBER
48650 --Applying Document Currency Code
48651  , p_source_96            IN VARCHAR2
48652 --Distribution Party Identifier
48653  , p_source_97            IN NUMBER
48654 --Distribution Party Site Id
48655  , p_source_98            IN NUMBER
48656 --Distribution Party Type
48657  , p_source_99            IN VARCHAR2
48658 --Applied To Document Exchange Rate Type
48659  , p_source_100            IN VARCHAR2
48660 )
48661 IS
48662 
48663 l_component_type              VARCHAR2(80);
48664 l_component_code              VARCHAR2(30);
48665 l_component_type_code         VARCHAR2(1);
48666 l_component_appl_id           INTEGER;
48667 l_amb_context_code            VARCHAR2(30);
48668 l_entity_code                 VARCHAR2(30);
48669 l_event_class_code            VARCHAR2(30);
48670 l_ae_header_id                NUMBER;
48671 l_event_type_code             VARCHAR2(30);
48672 l_line_definition_code        VARCHAR2(30);
48673 l_line_definition_owner_code  VARCHAR2(1);
48674 --
48675 -- adr variables
48676 l_segment                     VARCHAR2(30);
48677 l_ccid                        NUMBER;
48678 l_adr_transaction_coa_id      NUMBER;
48679 l_adr_accounting_coa_id       NUMBER;
48680 l_adr_flexfield_segment_code  VARCHAR2(30);
48681 l_adr_flex_value_set_id       NUMBER;
48682 l_adr_value_type_code         VARCHAR2(30);
48683 l_adr_value_combination_id    NUMBER;
48684 l_adr_value_segment_code      VARCHAR2(30);
48685 
48686 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
48687 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
48688 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
48689 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
48690 
48691 -- 4262811 Variables ------------------------------------------------------------------------------------------
48692 l_entered_amt_idx             NUMBER;
48693 l_accted_amt_idx              NUMBER;
48694 l_acc_rev_flag                VARCHAR2(1);
48695 l_accrual_line_num            NUMBER;
48696 l_tmp_amt                     NUMBER;
48697 l_acc_rev_natural_side_code   VARCHAR2(1);
48698 
48699 l_num_entries                 NUMBER;
48700 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
48701 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
48702 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
48703 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
48704 l_recog_line_1                NUMBER;
48705 l_recog_line_2                NUMBER;
48706 
48707 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
48708 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
48709 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
48710 
48711 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48712 
48716 ---------------------------------------------------------------------------------------------------------------
48713 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
48714 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
48715 
48717 
48718 
48719 --
48720 -- bulk performance
48721 --
48722 l_balance_type_code           VARCHAR2(1);
48723 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
48724 l_log_module                  VARCHAR2(240);
48725 
48726 --
48727 -- Upgrade strategy
48728 --
48729 l_actual_upg_option           VARCHAR2(1);
48730 l_enc_upg_option           VARCHAR2(1);
48731 
48732 --
48733 BEGIN
48734 --
48735 IF g_log_enabled THEN
48736       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_103';
48737 END IF;
48738 --
48739 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48740 
48741       trace
48742          (p_msg      => 'BEGIN of AcctLineType_103'
48743          ,p_level    => C_LEVEL_PROCEDURE
48744          ,p_module   => l_log_module);
48745 
48746 END IF;
48747 --
48748 l_component_type             := 'AMB_JLT';
48749 l_component_code             := 'RCT_CLAIM';
48750 l_component_type_code        := 'S';
48751 l_component_appl_id          :=  222;
48752 l_amb_context_code           := 'DEFAULT';
48753 l_entity_code                := 'RECEIPTS';
48754 l_event_class_code           := 'RECEIPT';
48755 l_event_type_code            := 'RECEIPT_ALL';
48756 l_line_definition_owner_code := 'S';
48757 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
48758 --
48759 l_balance_type_code          := 'A';
48760 l_segment                     := NULL;
48761 l_ccid                        := NULL;
48762 l_adr_transaction_coa_id      := NULL;
48763 l_adr_accounting_coa_id       := NULL;
48764 l_adr_flexfield_segment_code  := NULL;
48765 l_adr_flex_value_set_id       := NULL;
48766 l_adr_value_type_code         := NULL;
48767 l_adr_value_combination_id    := NULL;
48768 l_adr_value_segment_code      := NULL;
48769 
48770 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
48771 l_bflow_class_code           := '';    -- 4219869 Business Flow
48772 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
48773 l_budgetary_control_flag     := 'N';
48774 
48775 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
48776 l_bflow_applied_to_amt       := NULL; -- 5132302
48777 l_entered_amt_idx            := NULL;          -- 4262811
48778 l_accted_amt_idx             := NULL;          -- 4262811
48779 l_acc_rev_flag               := NULL;          -- 4262811
48780 l_accrual_line_num           := NULL;          -- 4262811
48781 l_tmp_amt                    := NULL;          -- 4262811
48782 --
48783  
48784 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48785     l_balance_type_code <> 'B' THEN
48786 IF NVL(p_source_27,'
48787 ') =  'OTHER ACC' AND 
48788 NVL(p_source_28,'
48789 ') =  'CLAIM_INVESTIGATION' AND 
48790 NVL(p_source_88,'
48791 ') =  'N'
48792  THEN 
48793 
48794    --
48795    XLA_AE_LINES_PKG.SetNewLine;
48796 
48797    p_balance_type_code          := l_balance_type_code;
48798    -- set the flag so later we will know whether the gain loss line needs to be created
48799    
48800    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48801      p_actual_flag :='A';
48802    END IF;
48803 
48804    --
48805    -- bulk performance
48806    --
48807    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48808                                       p_header_num   => 0); -- 4262811
48809    --
48810    -- set accounting line options
48811    --
48812    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48813            p_natural_side_code          => 'C'
48814          , p_gain_or_loss_flag          => 'N'
48815          , p_gl_transfer_mode_code      => 'S'
48816          , p_acct_entry_type_code       => 'A'
48817          , p_switch_side_flag           => 'Y'
48818          , p_merge_duplicate_code       => 'A'
48819          );
48820    --
48821    l_acc_rev_natural_side_code := 'D';  -- 4262811
48822    -- 
48823    --
48824    -- set accounting line type info
48825    --
48826    xla_ae_lines_pkg.SetAcctLineType
48827       (p_component_type             => l_component_type
48828       ,p_event_type_code            => l_event_type_code
48829       ,p_line_definition_owner_code => l_line_definition_owner_code
48830       ,p_line_definition_code       => l_line_definition_code
48831       ,p_accounting_line_code       => l_component_code
48832       ,p_accounting_line_type_code  => l_component_type_code
48833       ,p_accounting_line_appl_id    => l_component_appl_id
48834       ,p_amb_context_code           => l_amb_context_code
48835       ,p_entity_code                => l_entity_code
48836       ,p_event_class_code           => l_event_class_code);
48837    --
48838    -- set accounting class
48839    --
48840    xla_ae_lines_pkg.SetAcctClass(
48841            p_accounting_class_code  => 'CLAIM'
48842          , p_ae_header_id           => l_ae_header_id
48843          );
48844 
48845    --
48846    -- set rounding class
48847    --
48848    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48849                       'RECEIVABLE';
48850 
48851    --
48855    -- bulk performance
48852    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48853    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48854    --
48856    --
48857    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48858 
48859    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48860       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48861 
48862    -- 4955764
48863    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48864       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48865 
48866    -- 4458381 Public Sector Enh
48867    
48868    --
48869    -- set accounting attributes for the line type
48870    --
48871    l_entered_amt_idx := 8;
48872    l_accted_amt_idx  := 13;
48873    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
48874    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
48875    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
48876    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
48877    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
48878    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
48879    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
48880    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
48881    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
48882    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
48883    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
48884    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
48885    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
48886    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
48887    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
48888    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
48889    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
48890    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
48891    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
48892    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
48893    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
48894    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
48895    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
48896    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
48897    l_rec_acct_attrs.array_char_value(12)  := p_source_100;
48898    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
48899    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
48900    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
48901    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
48902    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
48903    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
48904    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
48905    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
48906 
48907    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48908    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48909 
48910    ---------------------------------------------------------------------------------------------------------------
48911    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48912    ---------------------------------------------------------------------------------------------------------------
48913    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48914 
48915    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48916    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48917 
48918    IF xla_accounting_cache_pkg.GetValueChar
48919          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48920          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48921    AND l_bflow_method_code = 'PRIOR_ENTRY'
48922 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48923    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48924          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48925        )
48926    THEN
48927          xla_ae_lines_pkg.BflowUpgEntry
48928            (p_business_method_code    => l_bflow_method_code
48929            ,p_business_class_code     => l_bflow_class_code
48930            ,p_balance_type            => l_balance_type_code);
48931    ELSE
48932       NULL;
48933 -- No business flow processing for business flow method of NONE.
48934    END IF;
48935 
48936    --
48937    -- call analytical criteria
48938    --
48939    
48940 
48941 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
48942 xla_ae_lines_pkg.SetAnalyticalCriteria(
48943    p_analytical_criterion_name    => 'Check Id'
48944  , p_analytical_criterion_owner   => 'S'
48945  , p_analytical_criterion_code    => 'CHECK_ID'
48946  , p_amb_context_code             => 'DEFAULT'
48947  , p_balancing_flag               => 'N'
48948  
48949  , p_analytical_detail_char_1    =>  NULL
48950  , p_analytical_detail_num_1     =>  p_source_90
48954 )
48951  , p_analytical_detail_date_1    =>  NULL
48952 
48953  , p_ae_header_id                 => l_ae_header_id
48955 ;
48956 --
48957 
48958    --
48959    -- call description
48960    --
48961    -- No description or it is inherited.
48962    --
48963    -- call ADRs
48964    -- Bug 4922099
48965    --
48966    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48967         (NVL(l_actual_upg_option, 'N') = 'O') OR
48968         (NVL(l_enc_upg_option, 'N') = 'O')
48969       )
48970    THEN
48971    NULL;
48972    --
48973    --
48974    
48975   l_ccid := AcctDerRule_20(
48976            p_application_id           => p_application_id
48977          , p_ae_header_id             => l_ae_header_id 
48978 , p_source_22 => p_source_22
48979          , x_transaction_coa_id       => l_adr_transaction_coa_id
48980          , x_accounting_coa_id        => l_adr_accounting_coa_id
48981          , x_value_type_code          => l_adr_value_type_code
48982          , p_side                     => 'NA'
48983    );
48984 
48985    xla_ae_lines_pkg.set_ccid(
48986     p_code_combination_id          => l_ccid
48987   , p_value_type_code              => l_adr_value_type_code
48988   , p_transaction_coa_id           => l_adr_transaction_coa_id
48989   , p_accounting_coa_id            => l_adr_accounting_coa_id
48990   , p_adr_code                     => 'DIST_CCID'
48991   , p_adr_type_code                => 'S'
48992   , p_component_type               => l_component_type
48993   , p_component_code               => l_component_code
48994   , p_component_type_code          => l_component_type_code
48995   , p_component_appl_id            => l_component_appl_id
48996   , p_amb_context_code             => l_amb_context_code
48997   , p_side                         => 'NA'
48998   );
48999 
49000 
49001    --
49002    --
49003    END IF;
49004    --
49005    -- Bug 4922099
49006    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49007           (NVL(l_enc_upg_option, 'N') = 'O')
49008         ) AND
49009         (l_bflow_method_code = 'PRIOR_ENTRY')
49010       )
49011    THEN
49012       IF
49013       --
49014       1 = 2
49015       --
49016       THEN
49017       xla_accounting_err_pkg.build_message
49018                                     (p_appli_s_name            => 'XLA'
49019                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49020                                     ,p_token_1                 => 'LINE_NUMBER'
49021                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
49022                                     ,p_token_2                 => 'LINE_TYPE_NAME'
49023                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
49024                                                                              l_component_type
49025                                                                             ,l_component_code
49026                                                                             ,l_component_type_code
49027                                                                             ,l_component_appl_id
49028                                                                             ,l_amb_context_code
49029                                                                             ,l_entity_code
49030                                                                             ,l_event_class_code
49031                                                                            )
49032                                     ,p_token_3                 => 'OWNER'
49033                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
49034                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
49035                                                                           ,p_lookup_code    => l_component_type_code
49036                                                                          )
49037                                     ,p_token_4                 => 'PRODUCT_NAME'
49038                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49039                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49040                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49041                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49042                                     ,p_ae_header_id            =>  NULL
49043                                        );
49044 
49045         IF (C_LEVEL_ERROR>= g_log_level) THEN
49046                  trace
49047                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49048                       ,p_level    => C_LEVEL_ERROR
49049                       ,p_module   => l_log_module);
49050         END IF;
49051       END IF;
49052    END IF;
49053    --
49054    --
49055    ------------------------------------------------------------------------------------------------
49056    -- 4219869 Business Flow
49057    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49058    -- Prior Entry.  Currently, the following code is always generated.
49059    ------------------------------------------------------------------------------------------------
49060    XLA_AE_LINES_PKG.ValidateCurrentLine;
49061 
49065    ------------------------------------------------------------------------------------
49062    ------------------------------------------------------------------------------------
49063    -- 4219869 Business Flow
49064    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49066    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49067 
49068    ----------------------------------------------------------------------------------
49069    -- 4219869 Business Flow
49070    -- Update journal entry status -- Need to generate this within IF <condition>
49071    ----------------------------------------------------------------------------------
49072    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49073          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49074          ,p_balance_type_code => l_balance_type_code
49075          );
49076 
49077    -------------------------------------------------------------------------------------------
49078    -- 4262811 - Generate the Accrual Reversal lines
49079    -------------------------------------------------------------------------------------------
49080    BEGIN
49081       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49082                               (g_array_event(p_event_id).array_value_num('header_index'));
49083       IF l_acc_rev_flag IS NULL THEN
49084          l_acc_rev_flag := 'N';
49085       END IF;
49086    EXCEPTION
49087       WHEN OTHERS THEN
49088          l_acc_rev_flag := 'N';
49089    END;
49090    --
49091    IF (l_acc_rev_flag = 'Y') THEN
49092 
49093        -- 4645092  ------------------------------------------------------------------------------
49094        -- To allow MPA report to determine if it should generate report process
49095        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49096        ------------------------------------------------------------------------------------------
49097 
49098        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49099        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49100    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
49101    -- call ADRs
49102    -- Bug 4922099
49103    --
49104    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49105         (NVL(l_actual_upg_option, 'N') = 'O') OR
49106         (NVL(l_enc_upg_option, 'N') = 'O')
49107       )
49108    THEN
49109    NULL;
49110    --
49111    --
49112    
49113   l_ccid := AcctDerRule_20(
49114            p_application_id           => p_application_id
49115          , p_ae_header_id             => l_ae_header_id 
49116 , p_source_22 => p_source_22
49117          , x_transaction_coa_id       => l_adr_transaction_coa_id
49118          , x_accounting_coa_id        => l_adr_accounting_coa_id
49119          , x_value_type_code          => l_adr_value_type_code
49120          , p_side                     => 'NA'
49121    );
49122 
49123    xla_ae_lines_pkg.set_ccid(
49124     p_code_combination_id          => l_ccid
49125   , p_value_type_code              => l_adr_value_type_code
49126   , p_transaction_coa_id           => l_adr_transaction_coa_id
49127   , p_accounting_coa_id            => l_adr_accounting_coa_id
49128   , p_adr_code                     => 'DIST_CCID'
49129   , p_adr_type_code                => 'S'
49130   , p_component_type               => l_component_type
49131   , p_component_code               => l_component_code
49132   , p_component_type_code          => l_component_type_code
49133   , p_component_appl_id            => l_component_appl_id
49134   , p_amb_context_code             => l_amb_context_code
49135   , p_side                         => 'NA'
49136   );
49137 
49138 
49139    --
49140    --
49141    END IF;
49142 
49143        --
49144        -- Update the line information that should be overwritten
49145        --
49146        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49147                                          p_header_num   => 1);
49148        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
49149 
49150        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49151 
49152        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
49153           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49154        END IF;
49155 
49156       --
49157       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49158       --
49159       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49160           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
49161       ELSE
49162           ---------------------------------------------------------------------------------------------------
49163           -- 4262811a Switch Sign
49164           ---------------------------------------------------------------------------------------------------
49165           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
49166           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49167                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49168           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49169                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49173 
49170           -- 5132302
49171           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49172                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49174       END IF;
49175 
49176       -- 4955764
49177       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49178       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49179 
49180 
49181       XLA_AE_LINES_PKG.ValidateCurrentLine;
49182       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49183 
49184       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49185                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49186                ,p_balance_type_code => l_balance_type_code);
49187 
49188    END IF;
49189 
49190    -----------------------------------------------------------------------------------------
49191    -- 4262811 Multiperiod Accounting
49192    -----------------------------------------------------------------------------------------
49193      -- No MPA option is assigned.
49194 
49195 
49196 END IF;
49197 END IF;
49198 --
49199 
49200 --
49201 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49202    trace
49203       (p_msg      => 'END of AcctLineType_103'
49204       ,p_level    => C_LEVEL_PROCEDURE
49205       ,p_module   => l_log_module);
49206 END IF;
49207 --
49208 EXCEPTION
49209   WHEN xla_exceptions_pkg.application_exception THEN
49210       RAISE;
49211   WHEN OTHERS THEN
49212        xla_exceptions_pkg.raise_message
49213            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_103');
49214 END AcctLineType_103;
49215 --
49216 
49217 ---------------------------------------
49218 --
49219 -- PRIVATE FUNCTION
49220 --         AcctLineType_104
49221 --
49222 ---------------------------------------
49223 PROCEDURE AcctLineType_104 (
49224   p_application_id        IN NUMBER
49225  ,p_event_id              IN NUMBER
49226  ,p_calculate_acctd_flag  IN VARCHAR2
49227  ,p_calculate_g_l_flag    IN VARCHAR2
49228  ,p_actual_flag           IN OUT VARCHAR2
49229  ,p_balance_type_code     OUT VARCHAR2
49230  ,p_gain_or_loss_ref      OUT VARCHAR2
49231  
49232 --Distribution GL Account
49233  , p_source_22            IN NUMBER
49234 --Distribution Source Type
49235  , p_source_27            IN VARCHAR2
49236 --Distribution Line Identifier
49237  , p_source_29            IN NUMBER
49238 --Distribution Type
49239  , p_source_30            IN VARCHAR2
49240 --Exchange Date
49241  , p_source_33            IN DATE
49242 --Exchange Rate
49243  , p_source_34            IN NUMBER
49244 --Exchange Rate Type
49245  , p_source_35            IN VARCHAR2
49246 --Accounting Amount
49247  , p_source_40            IN NUMBER
49248 --Transaction Distribution Identifier
49249  , p_source_44            IN NUMBER
49250 --Transaction Distribution Type
49251  , p_source_45            IN VARCHAR2
49252 --Distribution Multi Fund Additional Entry
49253  , p_source_88            IN VARCHAR2
49254 --Cash Receipt Identifier
49255  , p_source_90            IN NUMBER
49256 --Receipt Applied To Application Identifier
49257  , p_source_92            IN NUMBER
49258 --Transaction Entity Code
49259  , p_source_93            IN VARCHAR2
49260 --Transaction Identifier
49261  , p_source_94            IN NUMBER
49262 --DIST_ENT_AMT_FROM
49263  , p_source_95            IN NUMBER
49264 --Applying Document Currency Code
49265  , p_source_96            IN VARCHAR2
49266 --Distribution Party Identifier
49267  , p_source_97            IN NUMBER
49268 --Distribution Party Site Id
49269  , p_source_98            IN NUMBER
49270 --Distribution Party Type
49271  , p_source_99            IN VARCHAR2
49272 )
49273 IS
49274 
49275 l_component_type              VARCHAR2(80);
49276 l_component_code              VARCHAR2(30);
49277 l_component_type_code         VARCHAR2(1);
49278 l_component_appl_id           INTEGER;
49279 l_amb_context_code            VARCHAR2(30);
49280 l_entity_code                 VARCHAR2(30);
49281 l_event_class_code            VARCHAR2(30);
49282 l_ae_header_id                NUMBER;
49283 l_event_type_code             VARCHAR2(30);
49284 l_line_definition_code        VARCHAR2(30);
49285 l_line_definition_owner_code  VARCHAR2(1);
49286 --
49287 -- adr variables
49288 l_segment                     VARCHAR2(30);
49289 l_ccid                        NUMBER;
49290 l_adr_transaction_coa_id      NUMBER;
49291 l_adr_accounting_coa_id       NUMBER;
49292 l_adr_flexfield_segment_code  VARCHAR2(30);
49293 l_adr_flex_value_set_id       NUMBER;
49294 l_adr_value_type_code         VARCHAR2(30);
49295 l_adr_value_combination_id    NUMBER;
49296 l_adr_value_segment_code      VARCHAR2(30);
49297 
49298 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
49299 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
49300 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
49301 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
49302 
49303 -- 4262811 Variables ------------------------------------------------------------------------------------------
49304 l_entered_amt_idx             NUMBER;
49305 l_accted_amt_idx              NUMBER;
49306 l_acc_rev_flag                VARCHAR2(1);
49310 
49307 l_accrual_line_num            NUMBER;
49308 l_tmp_amt                     NUMBER;
49309 l_acc_rev_natural_side_code   VARCHAR2(1);
49311 l_num_entries                 NUMBER;
49312 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
49313 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
49314 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
49315 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
49316 l_recog_line_1                NUMBER;
49317 l_recog_line_2                NUMBER;
49318 
49319 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
49320 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
49321 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
49322 
49323 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49324 
49325 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
49326 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
49327 
49328 ---------------------------------------------------------------------------------------------------------------
49329 
49330 
49331 --
49332 -- bulk performance
49333 --
49334 l_balance_type_code           VARCHAR2(1);
49335 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
49336 l_log_module                  VARCHAR2(240);
49337 
49338 --
49339 -- Upgrade strategy
49340 --
49341 l_actual_upg_option           VARCHAR2(1);
49342 l_enc_upg_option           VARCHAR2(1);
49343 
49344 --
49345 BEGIN
49346 --
49347 IF g_log_enabled THEN
49348       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_104';
49349 END IF;
49350 --
49351 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49352 
49353       trace
49354          (p_msg      => 'BEGIN of AcctLineType_104'
49355          ,p_level    => C_LEVEL_PROCEDURE
49356          ,p_module   => l_log_module);
49357 
49358 END IF;
49359 --
49360 l_component_type             := 'AMB_JLT';
49361 l_component_code             := 'RCT_CONFIRM';
49362 l_component_type_code        := 'S';
49363 l_component_appl_id          :=  222;
49364 l_amb_context_code           := 'DEFAULT';
49365 l_entity_code                := 'RECEIPTS';
49366 l_event_class_code           := 'RECEIPT';
49367 l_event_type_code            := 'RECEIPT_ALL';
49368 l_line_definition_owner_code := 'S';
49369 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
49370 --
49371 l_balance_type_code          := 'A';
49372 l_segment                     := NULL;
49373 l_ccid                        := NULL;
49374 l_adr_transaction_coa_id      := NULL;
49375 l_adr_accounting_coa_id       := NULL;
49376 l_adr_flexfield_segment_code  := NULL;
49377 l_adr_flex_value_set_id       := NULL;
49378 l_adr_value_type_code         := NULL;
49379 l_adr_value_combination_id    := NULL;
49380 l_adr_value_segment_code      := NULL;
49381 
49382 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
49383 l_bflow_class_code           := '';    -- 4219869 Business Flow
49384 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49385 l_budgetary_control_flag     := 'N';
49386 
49387 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49388 l_bflow_applied_to_amt       := NULL; -- 5132302
49389 l_entered_amt_idx            := NULL;          -- 4262811
49390 l_accted_amt_idx             := NULL;          -- 4262811
49391 l_acc_rev_flag               := NULL;          -- 4262811
49392 l_accrual_line_num           := NULL;          -- 4262811
49393 l_tmp_amt                    := NULL;          -- 4262811
49394 --
49395  
49396 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49397     l_balance_type_code <> 'B' THEN
49398 IF NVL(p_source_27,'
49399 ') =  'CONFIRMATION' AND 
49400 NVL(p_source_88,'
49401 ') =  'N'
49402  THEN 
49403 
49404    --
49405    XLA_AE_LINES_PKG.SetNewLine;
49406 
49407    p_balance_type_code          := l_balance_type_code;
49408    -- set the flag so later we will know whether the gain loss line needs to be created
49409    
49410    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49411      p_actual_flag :='A';
49412    END IF;
49413 
49414    --
49415    -- bulk performance
49416    --
49417    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49418                                       p_header_num   => 0); -- 4262811
49419    --
49420    -- set accounting line options
49421    --
49422    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49423            p_natural_side_code          => 'C'
49424          , p_gain_or_loss_flag          => 'N'
49425          , p_gl_transfer_mode_code      => 'S'
49426          , p_acct_entry_type_code       => 'A'
49427          , p_switch_side_flag           => 'Y'
49428          , p_merge_duplicate_code       => 'A'
49429          );
49430    --
49431    l_acc_rev_natural_side_code := 'D';  -- 4262811
49432    -- 
49433    --
49434    -- set accounting line type info
49435    --
49436    xla_ae_lines_pkg.SetAcctLineType
49437       (p_component_type             => l_component_type
49438       ,p_event_type_code            => l_event_type_code
49442       ,p_accounting_line_type_code  => l_component_type_code
49439       ,p_line_definition_owner_code => l_line_definition_owner_code
49440       ,p_line_definition_code       => l_line_definition_code
49441       ,p_accounting_line_code       => l_component_code
49443       ,p_accounting_line_appl_id    => l_component_appl_id
49444       ,p_amb_context_code           => l_amb_context_code
49445       ,p_entity_code                => l_entity_code
49446       ,p_event_class_code           => l_event_class_code);
49447    --
49448    -- set accounting class
49449    --
49450    xla_ae_lines_pkg.SetAcctClass(
49451            p_accounting_class_code  => 'CONFIRMATION'
49452          , p_ae_header_id           => l_ae_header_id
49453          );
49454 
49455    --
49456    -- set rounding class
49457    --
49458    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49459                       'RECEIVABLE';
49460 
49461    --
49462    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49463    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49464    --
49465    -- bulk performance
49466    --
49467    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49468 
49469    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49470       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49471 
49472    -- 4955764
49473    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49474       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49475 
49476    -- 4458381 Public Sector Enh
49477    
49478    --
49479    -- set accounting attributes for the line type
49480    --
49481    l_entered_amt_idx := 8;
49482    l_accted_amt_idx  := 13;
49483    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
49484    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
49485    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
49486    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
49487    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
49488    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
49489    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
49490    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
49491    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
49492    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
49493    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
49494    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
49495    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
49496    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
49497    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
49498    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
49499    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
49500    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
49501    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
49502    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
49503    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
49504    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
49505    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
49506    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
49507    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
49508    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
49509    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
49510    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
49511    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
49512    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
49513    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
49514    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
49515    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
49516 
49517    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49518    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49519 
49520    ---------------------------------------------------------------------------------------------------------------
49521    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49522    ---------------------------------------------------------------------------------------------------------------
49523    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49524 
49525    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49526    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49527 
49528    IF xla_accounting_cache_pkg.GetValueChar
49529          (p_source_code         => 'LEDGER_CATEGORY_CODE'
49530          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49531    AND l_bflow_method_code = 'PRIOR_ENTRY'
49532 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49533    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49534          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49535        )
49536    THEN
49537          xla_ae_lines_pkg.BflowUpgEntry
49541    ELSE
49538            (p_business_method_code    => l_bflow_method_code
49539            ,p_business_class_code     => l_bflow_class_code
49540            ,p_balance_type            => l_balance_type_code);
49542       NULL;
49543 -- No business flow processing for business flow method of NONE.
49544    END IF;
49545 
49546    --
49547    -- call analytical criteria
49548    --
49549    
49550 
49551 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
49552 xla_ae_lines_pkg.SetAnalyticalCriteria(
49553    p_analytical_criterion_name    => 'Check Id'
49554  , p_analytical_criterion_owner   => 'S'
49555  , p_analytical_criterion_code    => 'CHECK_ID'
49556  , p_amb_context_code             => 'DEFAULT'
49557  , p_balancing_flag               => 'N'
49558  
49559  , p_analytical_detail_char_1    =>  NULL
49560  , p_analytical_detail_num_1     =>  p_source_90
49561  , p_analytical_detail_date_1    =>  NULL
49562 
49563  , p_ae_header_id                 => l_ae_header_id
49564 )
49565 ;
49566 --
49567 
49568    --
49569    -- call description
49570    --
49571    -- No description or it is inherited.
49572    --
49573    -- call ADRs
49574    -- Bug 4922099
49575    --
49576    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49577         (NVL(l_actual_upg_option, 'N') = 'O') OR
49578         (NVL(l_enc_upg_option, 'N') = 'O')
49579       )
49580    THEN
49581    NULL;
49582    --
49583    --
49584    
49585   l_ccid := AcctDerRule_20(
49586            p_application_id           => p_application_id
49587          , p_ae_header_id             => l_ae_header_id 
49588 , p_source_22 => p_source_22
49589          , x_transaction_coa_id       => l_adr_transaction_coa_id
49590          , x_accounting_coa_id        => l_adr_accounting_coa_id
49591          , x_value_type_code          => l_adr_value_type_code
49592          , p_side                     => 'NA'
49593    );
49594 
49595    xla_ae_lines_pkg.set_ccid(
49596     p_code_combination_id          => l_ccid
49597   , p_value_type_code              => l_adr_value_type_code
49598   , p_transaction_coa_id           => l_adr_transaction_coa_id
49599   , p_accounting_coa_id            => l_adr_accounting_coa_id
49600   , p_adr_code                     => 'DIST_CCID'
49601   , p_adr_type_code                => 'S'
49602   , p_component_type               => l_component_type
49603   , p_component_code               => l_component_code
49604   , p_component_type_code          => l_component_type_code
49605   , p_component_appl_id            => l_component_appl_id
49606   , p_amb_context_code             => l_amb_context_code
49607   , p_side                         => 'NA'
49608   );
49609 
49610 
49611    --
49612    --
49613    END IF;
49614    --
49615    -- Bug 4922099
49616    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49617           (NVL(l_enc_upg_option, 'N') = 'O')
49618         ) AND
49619         (l_bflow_method_code = 'PRIOR_ENTRY')
49620       )
49621    THEN
49622       IF
49623       --
49624       1 = 2
49625       --
49626       THEN
49627       xla_accounting_err_pkg.build_message
49628                                     (p_appli_s_name            => 'XLA'
49629                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49630                                     ,p_token_1                 => 'LINE_NUMBER'
49631                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
49632                                     ,p_token_2                 => 'LINE_TYPE_NAME'
49633                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
49634                                                                              l_component_type
49635                                                                             ,l_component_code
49636                                                                             ,l_component_type_code
49637                                                                             ,l_component_appl_id
49638                                                                             ,l_amb_context_code
49639                                                                             ,l_entity_code
49640                                                                             ,l_event_class_code
49641                                                                            )
49642                                     ,p_token_3                 => 'OWNER'
49643                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
49644                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
49645                                                                           ,p_lookup_code    => l_component_type_code
49646                                                                          )
49647                                     ,p_token_4                 => 'PRODUCT_NAME'
49648                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49649                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49650                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49651                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49652                                     ,p_ae_header_id            =>  NULL
49656                  trace
49653                                        );
49654 
49655         IF (C_LEVEL_ERROR>= g_log_level) THEN
49657                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49658                       ,p_level    => C_LEVEL_ERROR
49659                       ,p_module   => l_log_module);
49660         END IF;
49661       END IF;
49662    END IF;
49663    --
49664    --
49665    ------------------------------------------------------------------------------------------------
49666    -- 4219869 Business Flow
49667    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49668    -- Prior Entry.  Currently, the following code is always generated.
49669    ------------------------------------------------------------------------------------------------
49670    XLA_AE_LINES_PKG.ValidateCurrentLine;
49671 
49672    ------------------------------------------------------------------------------------
49673    -- 4219869 Business Flow
49674    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49675    ------------------------------------------------------------------------------------
49676    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49677 
49678    ----------------------------------------------------------------------------------
49679    -- 4219869 Business Flow
49680    -- Update journal entry status -- Need to generate this within IF <condition>
49681    ----------------------------------------------------------------------------------
49682    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49683          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49684          ,p_balance_type_code => l_balance_type_code
49685          );
49686 
49687    -------------------------------------------------------------------------------------------
49688    -- 4262811 - Generate the Accrual Reversal lines
49689    -------------------------------------------------------------------------------------------
49690    BEGIN
49691       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49692                               (g_array_event(p_event_id).array_value_num('header_index'));
49693       IF l_acc_rev_flag IS NULL THEN
49694          l_acc_rev_flag := 'N';
49695       END IF;
49696    EXCEPTION
49697       WHEN OTHERS THEN
49698          l_acc_rev_flag := 'N';
49699    END;
49700    --
49701    IF (l_acc_rev_flag = 'Y') THEN
49702 
49703        -- 4645092  ------------------------------------------------------------------------------
49704        -- To allow MPA report to determine if it should generate report process
49705        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49706        ------------------------------------------------------------------------------------------
49707 
49708        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49709        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49710    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
49711    -- call ADRs
49712    -- Bug 4922099
49713    --
49714    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49715         (NVL(l_actual_upg_option, 'N') = 'O') OR
49716         (NVL(l_enc_upg_option, 'N') = 'O')
49717       )
49718    THEN
49719    NULL;
49720    --
49721    --
49722    
49723   l_ccid := AcctDerRule_20(
49724            p_application_id           => p_application_id
49725          , p_ae_header_id             => l_ae_header_id 
49726 , p_source_22 => p_source_22
49727          , x_transaction_coa_id       => l_adr_transaction_coa_id
49728          , x_accounting_coa_id        => l_adr_accounting_coa_id
49729          , x_value_type_code          => l_adr_value_type_code
49730          , p_side                     => 'NA'
49731    );
49732 
49733    xla_ae_lines_pkg.set_ccid(
49734     p_code_combination_id          => l_ccid
49735   , p_value_type_code              => l_adr_value_type_code
49736   , p_transaction_coa_id           => l_adr_transaction_coa_id
49737   , p_accounting_coa_id            => l_adr_accounting_coa_id
49738   , p_adr_code                     => 'DIST_CCID'
49739   , p_adr_type_code                => 'S'
49740   , p_component_type               => l_component_type
49741   , p_component_code               => l_component_code
49742   , p_component_type_code          => l_component_type_code
49743   , p_component_appl_id            => l_component_appl_id
49744   , p_amb_context_code             => l_amb_context_code
49745   , p_side                         => 'NA'
49746   );
49747 
49748 
49749    --
49750    --
49751    END IF;
49752 
49753        --
49754        -- Update the line information that should be overwritten
49755        --
49756        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49757                                          p_header_num   => 1);
49758        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
49759 
49760        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49761 
49762        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
49763           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49764        END IF;
49765 
49766       --
49767       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49768       --
49772           ---------------------------------------------------------------------------------------------------
49769       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49770           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
49771       ELSE
49773           -- 4262811a Switch Sign
49774           ---------------------------------------------------------------------------------------------------
49775           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
49776           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49777                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49778           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49779                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49780           -- 5132302
49781           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49782                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49783 
49784       END IF;
49785 
49786       -- 4955764
49787       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49788       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49789 
49790 
49791       XLA_AE_LINES_PKG.ValidateCurrentLine;
49792       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49793 
49794       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49795                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49796                ,p_balance_type_code => l_balance_type_code);
49797 
49798    END IF;
49799 
49800    -----------------------------------------------------------------------------------------
49801    -- 4262811 Multiperiod Accounting
49802    -----------------------------------------------------------------------------------------
49803      -- No MPA option is assigned.
49804 
49805 
49806 END IF;
49807 END IF;
49808 --
49809 
49810 --
49811 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49812    trace
49813       (p_msg      => 'END of AcctLineType_104'
49814       ,p_level    => C_LEVEL_PROCEDURE
49815       ,p_module   => l_log_module);
49816 END IF;
49817 --
49818 EXCEPTION
49819   WHEN xla_exceptions_pkg.application_exception THEN
49820       RAISE;
49821   WHEN OTHERS THEN
49822        xla_exceptions_pkg.raise_message
49823            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_104');
49824 END AcctLineType_104;
49825 --
49826 
49827 ---------------------------------------
49828 --
49829 -- PRIVATE FUNCTION
49830 --         AcctLineType_105
49831 --
49832 ---------------------------------------
49833 PROCEDURE AcctLineType_105 (
49834   p_application_id        IN NUMBER
49835  ,p_event_id              IN NUMBER
49836  ,p_calculate_acctd_flag  IN VARCHAR2
49837  ,p_calculate_g_l_flag    IN VARCHAR2
49838  ,p_actual_flag           IN OUT VARCHAR2
49839  ,p_balance_type_code     OUT VARCHAR2
49840  ,p_gain_or_loss_ref      OUT VARCHAR2
49841  
49842 --Distribution GL Account
49843  , p_source_22            IN NUMBER
49844 --Distribution Source Type
49845  , p_source_27            IN VARCHAR2
49846 --Distribution Line Identifier
49847  , p_source_29            IN NUMBER
49848 --Distribution Type
49849  , p_source_30            IN VARCHAR2
49850 --Exchange Date
49851  , p_source_33            IN DATE
49852 --Exchange Rate
49853  , p_source_34            IN NUMBER
49854 --Exchange Rate Type
49855  , p_source_35            IN VARCHAR2
49856 --Accounting Amount
49857  , p_source_40            IN NUMBER
49858 --Transaction Distribution Identifier
49859  , p_source_44            IN NUMBER
49860 --Transaction Distribution Type
49861  , p_source_45            IN VARCHAR2
49862 --Distribution Multi Fund Additional Entry
49863  , p_source_88            IN VARCHAR2
49864 --Cash Receipt Identifier
49865  , p_source_90            IN NUMBER
49866 --Receipt Applied To Application Identifier
49867  , p_source_92            IN NUMBER
49868 --Transaction Entity Code
49869  , p_source_93            IN VARCHAR2
49870 --Transaction Identifier
49871  , p_source_94            IN NUMBER
49872 --DIST_ENT_AMT_FROM
49873  , p_source_95            IN NUMBER
49874 --Applying Document Currency Code
49875  , p_source_96            IN VARCHAR2
49876 --Distribution Party Identifier
49877  , p_source_97            IN NUMBER
49878 --Distribution Party Site Id
49879  , p_source_98            IN NUMBER
49880 --Distribution Party Type
49881  , p_source_99            IN VARCHAR2
49882 )
49883 IS
49884 
49885 l_component_type              VARCHAR2(80);
49886 l_component_code              VARCHAR2(30);
49887 l_component_type_code         VARCHAR2(1);
49888 l_component_appl_id           INTEGER;
49889 l_amb_context_code            VARCHAR2(30);
49890 l_entity_code                 VARCHAR2(30);
49891 l_event_class_code            VARCHAR2(30);
49892 l_ae_header_id                NUMBER;
49893 l_event_type_code             VARCHAR2(30);
49894 l_line_definition_code        VARCHAR2(30);
49898 l_segment                     VARCHAR2(30);
49895 l_line_definition_owner_code  VARCHAR2(1);
49896 --
49897 -- adr variables
49899 l_ccid                        NUMBER;
49900 l_adr_transaction_coa_id      NUMBER;
49901 l_adr_accounting_coa_id       NUMBER;
49902 l_adr_flexfield_segment_code  VARCHAR2(30);
49903 l_adr_flex_value_set_id       NUMBER;
49904 l_adr_value_type_code         VARCHAR2(30);
49905 l_adr_value_combination_id    NUMBER;
49906 l_adr_value_segment_code      VARCHAR2(30);
49907 
49908 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
49909 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
49910 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
49911 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
49912 
49913 -- 4262811 Variables ------------------------------------------------------------------------------------------
49914 l_entered_amt_idx             NUMBER;
49915 l_accted_amt_idx              NUMBER;
49916 l_acc_rev_flag                VARCHAR2(1);
49917 l_accrual_line_num            NUMBER;
49918 l_tmp_amt                     NUMBER;
49919 l_acc_rev_natural_side_code   VARCHAR2(1);
49920 
49921 l_num_entries                 NUMBER;
49922 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
49923 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
49924 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
49925 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
49926 l_recog_line_1                NUMBER;
49927 l_recog_line_2                NUMBER;
49928 
49929 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
49930 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
49931 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
49932 
49933 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49934 
49935 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
49936 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
49937 
49938 ---------------------------------------------------------------------------------------------------------------
49939 
49940 
49941 --
49942 -- bulk performance
49943 --
49944 l_balance_type_code           VARCHAR2(1);
49945 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
49946 l_log_module                  VARCHAR2(240);
49947 
49948 --
49949 -- Upgrade strategy
49950 --
49951 l_actual_upg_option           VARCHAR2(1);
49952 l_enc_upg_option           VARCHAR2(1);
49953 
49954 --
49955 BEGIN
49956 --
49957 IF g_log_enabled THEN
49958       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_105';
49959 END IF;
49960 --
49961 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49962 
49963       trace
49964          (p_msg      => 'BEGIN of AcctLineType_105'
49965          ,p_level    => C_LEVEL_PROCEDURE
49966          ,p_module   => l_log_module);
49967 
49968 END IF;
49969 --
49970 l_component_type             := 'AMB_JLT';
49971 l_component_code             := 'RCT_CURR_ROUND';
49972 l_component_type_code        := 'S';
49973 l_component_appl_id          :=  222;
49974 l_amb_context_code           := 'DEFAULT';
49975 l_entity_code                := 'RECEIPTS';
49976 l_event_class_code           := 'RECEIPT';
49977 l_event_type_code            := 'RECEIPT_ALL';
49978 l_line_definition_owner_code := 'S';
49979 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
49980 --
49981 l_balance_type_code          := 'A';
49982 l_segment                     := NULL;
49983 l_ccid                        := NULL;
49984 l_adr_transaction_coa_id      := NULL;
49985 l_adr_accounting_coa_id       := NULL;
49986 l_adr_flexfield_segment_code  := NULL;
49987 l_adr_flex_value_set_id       := NULL;
49988 l_adr_value_type_code         := NULL;
49989 l_adr_value_combination_id    := NULL;
49990 l_adr_value_segment_code      := NULL;
49991 
49992 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
49993 l_bflow_class_code           := '';    -- 4219869 Business Flow
49994 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49995 l_budgetary_control_flag     := 'N';
49996 
49997 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49998 l_bflow_applied_to_amt       := NULL; -- 5132302
49999 l_entered_amt_idx            := NULL;          -- 4262811
50000 l_accted_amt_idx             := NULL;          -- 4262811
50001 l_acc_rev_flag               := NULL;          -- 4262811
50002 l_accrual_line_num           := NULL;          -- 4262811
50003 l_tmp_amt                    := NULL;          -- 4262811
50004 --
50005  
50006 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50007     l_balance_type_code <> 'B' THEN
50008 IF NVL(p_source_27,'
50009 ') =  'CURR_ROUND' AND 
50010 NVL(p_source_88,'
50011 ') =  'N'
50012  THEN 
50013 
50014    --
50015    XLA_AE_LINES_PKG.SetNewLine;
50016 
50017    p_balance_type_code          := l_balance_type_code;
50018    -- set the flag so later we will know whether the gain loss line needs to be created
50019    
50020    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50021      p_actual_flag :='A';
50022    END IF;
50023 
50027    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50024    --
50025    -- bulk performance
50026    --
50028                                       p_header_num   => 0); -- 4262811
50029    --
50030    -- set accounting line options
50031    --
50032    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50033            p_natural_side_code          => 'C'
50034          , p_gain_or_loss_flag          => 'N'
50035          , p_gl_transfer_mode_code      => 'S'
50036          , p_acct_entry_type_code       => 'A'
50037          , p_switch_side_flag           => 'Y'
50038          , p_merge_duplicate_code       => 'A'
50039          );
50040    --
50041    l_acc_rev_natural_side_code := 'D';  -- 4262811
50042    -- 
50043    --
50044    -- set accounting line type info
50045    --
50046    xla_ae_lines_pkg.SetAcctLineType
50047       (p_component_type             => l_component_type
50048       ,p_event_type_code            => l_event_type_code
50049       ,p_line_definition_owner_code => l_line_definition_owner_code
50050       ,p_line_definition_code       => l_line_definition_code
50051       ,p_accounting_line_code       => l_component_code
50052       ,p_accounting_line_type_code  => l_component_type_code
50053       ,p_accounting_line_appl_id    => l_component_appl_id
50054       ,p_amb_context_code           => l_amb_context_code
50055       ,p_entity_code                => l_entity_code
50056       ,p_event_class_code           => l_event_class_code);
50057    --
50058    -- set accounting class
50059    --
50060    xla_ae_lines_pkg.SetAcctClass(
50061            p_accounting_class_code  => 'ROUNDING'
50062          , p_ae_header_id           => l_ae_header_id
50063          );
50064 
50065    --
50066    -- set rounding class
50067    --
50068    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50069                       'RECEIVABLE';
50070 
50071    --
50072    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50073    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50074    --
50075    -- bulk performance
50076    --
50077    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50078 
50079    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50080       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50081 
50082    -- 4955764
50083    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50084       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50085 
50086    -- 4458381 Public Sector Enh
50087    
50088    --
50089    -- set accounting attributes for the line type
50090    --
50091    l_entered_amt_idx := 8;
50092    l_accted_amt_idx  := 13;
50093    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
50094    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
50095    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
50096    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
50097    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
50098    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
50099    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
50100    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
50101    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
50102    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
50103    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
50104    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
50105    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
50106    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
50107    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
50108    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
50109    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
50110    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
50111    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
50112    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
50113    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
50114    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
50115    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
50116    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
50117    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
50118    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
50119    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
50120    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
50121    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
50122    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
50123    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
50124    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
50125    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
50126 
50127    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50128    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50129 
50130    ---------------------------------------------------------------------------------------------------------------
50131    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50135    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50132    ---------------------------------------------------------------------------------------------------------------
50133    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50134 
50136    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50137 
50138    IF xla_accounting_cache_pkg.GetValueChar
50139          (p_source_code         => 'LEDGER_CATEGORY_CODE'
50140          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50141    AND l_bflow_method_code = 'PRIOR_ENTRY'
50142 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50143    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50144          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50145        )
50146    THEN
50147          xla_ae_lines_pkg.BflowUpgEntry
50148            (p_business_method_code    => l_bflow_method_code
50149            ,p_business_class_code     => l_bflow_class_code
50150            ,p_balance_type            => l_balance_type_code);
50151    ELSE
50152       NULL;
50153 -- No business flow processing for business flow method of NONE.
50154    END IF;
50155 
50156    --
50157    -- call analytical criteria
50158    --
50159    
50160 
50161 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
50162 xla_ae_lines_pkg.SetAnalyticalCriteria(
50163    p_analytical_criterion_name    => 'Check Id'
50164  , p_analytical_criterion_owner   => 'S'
50165  , p_analytical_criterion_code    => 'CHECK_ID'
50166  , p_amb_context_code             => 'DEFAULT'
50167  , p_balancing_flag               => 'N'
50168  
50169  , p_analytical_detail_char_1    =>  NULL
50170  , p_analytical_detail_num_1     =>  p_source_90
50171  , p_analytical_detail_date_1    =>  NULL
50172 
50173  , p_ae_header_id                 => l_ae_header_id
50174 )
50175 ;
50176 --
50177 
50178    --
50179    -- call description
50180    --
50181    -- No description or it is inherited.
50182    --
50183    -- call ADRs
50184    -- Bug 4922099
50185    --
50186    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50187         (NVL(l_actual_upg_option, 'N') = 'O') OR
50188         (NVL(l_enc_upg_option, 'N') = 'O')
50189       )
50190    THEN
50191    NULL;
50192    --
50193    --
50194    
50195   l_ccid := AcctDerRule_20(
50196            p_application_id           => p_application_id
50197          , p_ae_header_id             => l_ae_header_id 
50198 , p_source_22 => p_source_22
50199          , x_transaction_coa_id       => l_adr_transaction_coa_id
50200          , x_accounting_coa_id        => l_adr_accounting_coa_id
50201          , x_value_type_code          => l_adr_value_type_code
50202          , p_side                     => 'NA'
50203    );
50204 
50205    xla_ae_lines_pkg.set_ccid(
50206     p_code_combination_id          => l_ccid
50207   , p_value_type_code              => l_adr_value_type_code
50208   , p_transaction_coa_id           => l_adr_transaction_coa_id
50209   , p_accounting_coa_id            => l_adr_accounting_coa_id
50210   , p_adr_code                     => 'DIST_CCID'
50211   , p_adr_type_code                => 'S'
50212   , p_component_type               => l_component_type
50213   , p_component_code               => l_component_code
50214   , p_component_type_code          => l_component_type_code
50215   , p_component_appl_id            => l_component_appl_id
50216   , p_amb_context_code             => l_amb_context_code
50217   , p_side                         => 'NA'
50218   );
50219 
50220 
50221    --
50222    --
50223    END IF;
50224    --
50225    -- Bug 4922099
50226    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50227           (NVL(l_enc_upg_option, 'N') = 'O')
50228         ) AND
50229         (l_bflow_method_code = 'PRIOR_ENTRY')
50230       )
50231    THEN
50232       IF
50233       --
50234       1 = 2
50235       --
50236       THEN
50237       xla_accounting_err_pkg.build_message
50238                                     (p_appli_s_name            => 'XLA'
50239                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50240                                     ,p_token_1                 => 'LINE_NUMBER'
50241                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50242                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50243                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50244                                                                              l_component_type
50245                                                                             ,l_component_code
50246                                                                             ,l_component_type_code
50247                                                                             ,l_component_appl_id
50248                                                                             ,l_amb_context_code
50249                                                                             ,l_entity_code
50250                                                                             ,l_event_class_code
50251                                                                            )
50255                                                                           ,p_lookup_code    => l_component_type_code
50252                                     ,p_token_3                 => 'OWNER'
50253                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50254                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50256                                                                          )
50257                                     ,p_token_4                 => 'PRODUCT_NAME'
50258                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50259                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50260                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50261                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50262                                     ,p_ae_header_id            =>  NULL
50263                                        );
50264 
50265         IF (C_LEVEL_ERROR>= g_log_level) THEN
50266                  trace
50267                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50268                       ,p_level    => C_LEVEL_ERROR
50269                       ,p_module   => l_log_module);
50270         END IF;
50271       END IF;
50272    END IF;
50273    --
50274    --
50275    ------------------------------------------------------------------------------------------------
50276    -- 4219869 Business Flow
50277    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50278    -- Prior Entry.  Currently, the following code is always generated.
50279    ------------------------------------------------------------------------------------------------
50280    XLA_AE_LINES_PKG.ValidateCurrentLine;
50281 
50282    ------------------------------------------------------------------------------------
50283    -- 4219869 Business Flow
50284    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50285    ------------------------------------------------------------------------------------
50286    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50287 
50288    ----------------------------------------------------------------------------------
50289    -- 4219869 Business Flow
50290    -- Update journal entry status -- Need to generate this within IF <condition>
50291    ----------------------------------------------------------------------------------
50292    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50293          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50294          ,p_balance_type_code => l_balance_type_code
50295          );
50296 
50297    -------------------------------------------------------------------------------------------
50298    -- 4262811 - Generate the Accrual Reversal lines
50299    -------------------------------------------------------------------------------------------
50300    BEGIN
50301       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50302                               (g_array_event(p_event_id).array_value_num('header_index'));
50303       IF l_acc_rev_flag IS NULL THEN
50304          l_acc_rev_flag := 'N';
50305       END IF;
50306    EXCEPTION
50307       WHEN OTHERS THEN
50308          l_acc_rev_flag := 'N';
50309    END;
50310    --
50311    IF (l_acc_rev_flag = 'Y') THEN
50312 
50313        -- 4645092  ------------------------------------------------------------------------------
50314        -- To allow MPA report to determine if it should generate report process
50315        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50316        ------------------------------------------------------------------------------------------
50317 
50318        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50319        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50320    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
50321    -- call ADRs
50322    -- Bug 4922099
50323    --
50324    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50325         (NVL(l_actual_upg_option, 'N') = 'O') OR
50326         (NVL(l_enc_upg_option, 'N') = 'O')
50327       )
50328    THEN
50329    NULL;
50330    --
50331    --
50332    
50333   l_ccid := AcctDerRule_20(
50334            p_application_id           => p_application_id
50335          , p_ae_header_id             => l_ae_header_id 
50336 , p_source_22 => p_source_22
50337          , x_transaction_coa_id       => l_adr_transaction_coa_id
50338          , x_accounting_coa_id        => l_adr_accounting_coa_id
50339          , x_value_type_code          => l_adr_value_type_code
50340          , p_side                     => 'NA'
50341    );
50342 
50343    xla_ae_lines_pkg.set_ccid(
50344     p_code_combination_id          => l_ccid
50345   , p_value_type_code              => l_adr_value_type_code
50346   , p_transaction_coa_id           => l_adr_transaction_coa_id
50347   , p_accounting_coa_id            => l_adr_accounting_coa_id
50348   , p_adr_code                     => 'DIST_CCID'
50349   , p_adr_type_code                => 'S'
50350   , p_component_type               => l_component_type
50351   , p_component_code               => l_component_code
50352   , p_component_type_code          => l_component_type_code
50353   , p_component_appl_id            => l_component_appl_id
50357 
50354   , p_amb_context_code             => l_amb_context_code
50355   , p_side                         => 'NA'
50356   );
50358 
50359    --
50360    --
50361    END IF;
50362 
50363        --
50364        -- Update the line information that should be overwritten
50365        --
50366        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50367                                          p_header_num   => 1);
50368        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50369 
50370        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50371 
50372        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50373           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50374        END IF;
50375 
50376       --
50377       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50378       --
50379       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50380           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
50381       ELSE
50382           ---------------------------------------------------------------------------------------------------
50383           -- 4262811a Switch Sign
50384           ---------------------------------------------------------------------------------------------------
50385           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
50386           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50387                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50388           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50389                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50390           -- 5132302
50391           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50392                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50393 
50394       END IF;
50395 
50396       -- 4955764
50397       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50398       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50399 
50400 
50401       XLA_AE_LINES_PKG.ValidateCurrentLine;
50402       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50403 
50404       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50405                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50406                ,p_balance_type_code => l_balance_type_code);
50407 
50408    END IF;
50409 
50410    -----------------------------------------------------------------------------------------
50411    -- 4262811 Multiperiod Accounting
50412    -----------------------------------------------------------------------------------------
50413      -- No MPA option is assigned.
50414 
50415 
50416 END IF;
50417 END IF;
50418 --
50419 
50420 --
50421 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50422    trace
50423       (p_msg      => 'END of AcctLineType_105'
50424       ,p_level    => C_LEVEL_PROCEDURE
50425       ,p_module   => l_log_module);
50426 END IF;
50427 --
50428 EXCEPTION
50429   WHEN xla_exceptions_pkg.application_exception THEN
50430       RAISE;
50431   WHEN OTHERS THEN
50432        xla_exceptions_pkg.raise_message
50433            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_105');
50434 END AcctLineType_105;
50435 --
50436 
50437 ---------------------------------------
50438 --
50439 -- PRIVATE FUNCTION
50440 --         AcctLineType_106
50441 --
50442 ---------------------------------------
50443 PROCEDURE AcctLineType_106 (
50444   p_application_id        IN NUMBER
50445  ,p_event_id              IN NUMBER
50446  ,p_calculate_acctd_flag  IN VARCHAR2
50447  ,p_calculate_g_l_flag    IN VARCHAR2
50448  ,p_actual_flag           IN OUT VARCHAR2
50449  ,p_balance_type_code     OUT VARCHAR2
50450  ,p_gain_or_loss_ref      OUT VARCHAR2
50451  
50452 --Distribution GL Account
50453  , p_source_22            IN NUMBER
50454 --Distribution Source Type
50455  , p_source_27            IN VARCHAR2
50456 --Distribution Line Identifier
50457  , p_source_29            IN NUMBER
50458 --Distribution Type
50459  , p_source_30            IN VARCHAR2
50460 --Exchange Date
50461  , p_source_33            IN DATE
50462 --Exchange Rate
50463  , p_source_34            IN NUMBER
50464 --Exchange Rate Type
50465  , p_source_35            IN VARCHAR2
50466 --Accounting Amount
50467  , p_source_40            IN NUMBER
50468 --Transaction Distribution Identifier
50469  , p_source_44            IN NUMBER
50470 --Transaction Distribution Type
50471  , p_source_45            IN VARCHAR2
50472 --Distribution Multi Fund Additional Entry
50473  , p_source_88            IN VARCHAR2
50474 --Cash Receipt Identifier
50475  , p_source_90            IN NUMBER
50476 --Receipt Applied To Application Identifier
50477  , p_source_92            IN NUMBER
50478 --Transaction Entity Code
50482 --DIST_ENT_AMT_FROM
50479  , p_source_93            IN VARCHAR2
50480 --Transaction Identifier
50481  , p_source_94            IN NUMBER
50483  , p_source_95            IN NUMBER
50484 --Applying Document Currency Code
50485  , p_source_96            IN VARCHAR2
50486 --Distribution Party Identifier
50487  , p_source_97            IN NUMBER
50488 --Distribution Party Site Id
50489  , p_source_98            IN NUMBER
50490 --Distribution Party Type
50491  , p_source_99            IN VARCHAR2
50492 )
50493 IS
50494 
50495 l_component_type              VARCHAR2(80);
50496 l_component_code              VARCHAR2(30);
50497 l_component_type_code         VARCHAR2(1);
50498 l_component_appl_id           INTEGER;
50499 l_amb_context_code            VARCHAR2(30);
50500 l_entity_code                 VARCHAR2(30);
50501 l_event_class_code            VARCHAR2(30);
50502 l_ae_header_id                NUMBER;
50503 l_event_type_code             VARCHAR2(30);
50504 l_line_definition_code        VARCHAR2(30);
50505 l_line_definition_owner_code  VARCHAR2(1);
50506 --
50507 -- adr variables
50508 l_segment                     VARCHAR2(30);
50509 l_ccid                        NUMBER;
50510 l_adr_transaction_coa_id      NUMBER;
50511 l_adr_accounting_coa_id       NUMBER;
50512 l_adr_flexfield_segment_code  VARCHAR2(30);
50513 l_adr_flex_value_set_id       NUMBER;
50514 l_adr_value_type_code         VARCHAR2(30);
50515 l_adr_value_combination_id    NUMBER;
50516 l_adr_value_segment_code      VARCHAR2(30);
50517 
50518 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
50519 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
50520 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
50521 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
50522 
50523 -- 4262811 Variables ------------------------------------------------------------------------------------------
50524 l_entered_amt_idx             NUMBER;
50525 l_accted_amt_idx              NUMBER;
50526 l_acc_rev_flag                VARCHAR2(1);
50527 l_accrual_line_num            NUMBER;
50528 l_tmp_amt                     NUMBER;
50529 l_acc_rev_natural_side_code   VARCHAR2(1);
50530 
50531 l_num_entries                 NUMBER;
50532 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
50533 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
50534 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
50535 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
50536 l_recog_line_1                NUMBER;
50537 l_recog_line_2                NUMBER;
50538 
50539 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
50540 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
50541 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
50542 
50543 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50544 
50545 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
50546 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
50547 
50548 ---------------------------------------------------------------------------------------------------------------
50549 
50550 
50551 --
50552 -- bulk performance
50553 --
50554 l_balance_type_code           VARCHAR2(1);
50555 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
50556 l_log_module                  VARCHAR2(240);
50557 
50558 --
50559 -- Upgrade strategy
50560 --
50561 l_actual_upg_option           VARCHAR2(1);
50562 l_enc_upg_option           VARCHAR2(1);
50563 
50564 --
50565 BEGIN
50566 --
50567 IF g_log_enabled THEN
50568       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_106';
50569 END IF;
50570 --
50571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50572 
50573       trace
50574          (p_msg      => 'BEGIN of AcctLineType_106'
50575          ,p_level    => C_LEVEL_PROCEDURE
50576          ,p_module   => l_log_module);
50577 
50578 END IF;
50579 --
50580 l_component_type             := 'AMB_JLT';
50581 l_component_code             := 'RCT_DEBT';
50582 l_component_type_code        := 'S';
50583 l_component_appl_id          :=  222;
50584 l_amb_context_code           := 'DEFAULT';
50585 l_entity_code                := 'RECEIPTS';
50586 l_event_class_code           := 'RECEIPT';
50587 l_event_type_code            := 'RECEIPT_ALL';
50588 l_line_definition_owner_code := 'S';
50589 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
50590 --
50591 l_balance_type_code          := 'A';
50592 l_segment                     := NULL;
50593 l_ccid                        := NULL;
50594 l_adr_transaction_coa_id      := NULL;
50595 l_adr_accounting_coa_id       := NULL;
50596 l_adr_flexfield_segment_code  := NULL;
50597 l_adr_flex_value_set_id       := NULL;
50598 l_adr_value_type_code         := NULL;
50599 l_adr_value_combination_id    := NULL;
50600 l_adr_value_segment_code      := NULL;
50601 
50602 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
50603 l_bflow_class_code           := '';    -- 4219869 Business Flow
50604 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
50605 l_budgetary_control_flag     := 'N';
50606 
50607 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
50608 l_bflow_applied_to_amt       := NULL; -- 5132302
50609 l_entered_amt_idx            := NULL;          -- 4262811
50613 l_tmp_amt                    := NULL;          -- 4262811
50610 l_accted_amt_idx             := NULL;          -- 4262811
50611 l_acc_rev_flag               := NULL;          -- 4262811
50612 l_accrual_line_num           := NULL;          -- 4262811
50614 --
50615  
50616 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50617     l_balance_type_code <> 'B' THEN
50618 IF NVL(p_source_27,'
50619 ') =  'SHORT_TERM_DEBT' AND 
50620 NVL(p_source_88,'
50621 ') =  'N'
50622  THEN 
50623 
50624    --
50625    XLA_AE_LINES_PKG.SetNewLine;
50626 
50627    p_balance_type_code          := l_balance_type_code;
50628    -- set the flag so later we will know whether the gain loss line needs to be created
50629    
50630    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50631      p_actual_flag :='A';
50632    END IF;
50633 
50634    --
50635    -- bulk performance
50636    --
50637    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50638                                       p_header_num   => 0); -- 4262811
50639    --
50640    -- set accounting line options
50641    --
50642    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50643            p_natural_side_code          => 'C'
50644          , p_gain_or_loss_flag          => 'N'
50645          , p_gl_transfer_mode_code      => 'S'
50646          , p_acct_entry_type_code       => 'A'
50647          , p_switch_side_flag           => 'Y'
50648          , p_merge_duplicate_code       => 'A'
50649          );
50650    --
50651    l_acc_rev_natural_side_code := 'D';  -- 4262811
50652    -- 
50653    --
50654    -- set accounting line type info
50655    --
50656    xla_ae_lines_pkg.SetAcctLineType
50657       (p_component_type             => l_component_type
50658       ,p_event_type_code            => l_event_type_code
50659       ,p_line_definition_owner_code => l_line_definition_owner_code
50660       ,p_line_definition_code       => l_line_definition_code
50661       ,p_accounting_line_code       => l_component_code
50662       ,p_accounting_line_type_code  => l_component_type_code
50663       ,p_accounting_line_appl_id    => l_component_appl_id
50664       ,p_amb_context_code           => l_amb_context_code
50665       ,p_entity_code                => l_entity_code
50666       ,p_event_class_code           => l_event_class_code);
50667    --
50668    -- set accounting class
50669    --
50670    xla_ae_lines_pkg.SetAcctClass(
50671            p_accounting_class_code  => 'SHORT_TERM_DEBT'
50672          , p_ae_header_id           => l_ae_header_id
50673          );
50674 
50675    --
50676    -- set rounding class
50677    --
50678    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50679                       'RECEIVABLE';
50680 
50681    --
50682    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50683    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50684    --
50685    -- bulk performance
50686    --
50687    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50688 
50689    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50690       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50691 
50692    -- 4955764
50693    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50694       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50695 
50696    -- 4458381 Public Sector Enh
50697    
50698    --
50699    -- set accounting attributes for the line type
50700    --
50701    l_entered_amt_idx := 8;
50702    l_accted_amt_idx  := 13;
50703    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
50704    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
50705    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
50706    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
50707    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
50708    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
50709    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
50710    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
50711    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
50712    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
50713    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
50714    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
50715    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
50716    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
50717    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
50718    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
50719    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
50720    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
50721    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
50722    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
50723    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
50724    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
50725    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
50726    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
50730    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
50727    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
50728    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
50729    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
50731    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
50732    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
50733    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
50734    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
50735    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
50736 
50737    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50738    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50739 
50740    ---------------------------------------------------------------------------------------------------------------
50741    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50742    ---------------------------------------------------------------------------------------------------------------
50743    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50744 
50745    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50746    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50747 
50748    IF xla_accounting_cache_pkg.GetValueChar
50749          (p_source_code         => 'LEDGER_CATEGORY_CODE'
50750          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50751    AND l_bflow_method_code = 'PRIOR_ENTRY'
50752 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50753    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50754          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50755        )
50756    THEN
50757          xla_ae_lines_pkg.BflowUpgEntry
50758            (p_business_method_code    => l_bflow_method_code
50759            ,p_business_class_code     => l_bflow_class_code
50760            ,p_balance_type            => l_balance_type_code);
50761    ELSE
50762       NULL;
50763 -- No business flow processing for business flow method of NONE.
50764    END IF;
50765 
50766    --
50767    -- call analytical criteria
50768    --
50769    
50770 
50771 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
50772 xla_ae_lines_pkg.SetAnalyticalCriteria(
50773    p_analytical_criterion_name    => 'Check Id'
50774  , p_analytical_criterion_owner   => 'S'
50775  , p_analytical_criterion_code    => 'CHECK_ID'
50776  , p_amb_context_code             => 'DEFAULT'
50777  , p_balancing_flag               => 'N'
50778  
50779  , p_analytical_detail_char_1    =>  NULL
50780  , p_analytical_detail_num_1     =>  p_source_90
50781  , p_analytical_detail_date_1    =>  NULL
50782 
50783  , p_ae_header_id                 => l_ae_header_id
50784 )
50785 ;
50786 --
50787 
50788    --
50789    -- call description
50790    --
50791    -- No description or it is inherited.
50792    --
50793    -- call ADRs
50794    -- Bug 4922099
50795    --
50796    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50797         (NVL(l_actual_upg_option, 'N') = 'O') OR
50798         (NVL(l_enc_upg_option, 'N') = 'O')
50799       )
50800    THEN
50801    NULL;
50802    --
50803    --
50804    
50805   l_ccid := AcctDerRule_20(
50806            p_application_id           => p_application_id
50807          , p_ae_header_id             => l_ae_header_id 
50808 , p_source_22 => p_source_22
50809          , x_transaction_coa_id       => l_adr_transaction_coa_id
50810          , x_accounting_coa_id        => l_adr_accounting_coa_id
50811          , x_value_type_code          => l_adr_value_type_code
50812          , p_side                     => 'NA'
50813    );
50814 
50815    xla_ae_lines_pkg.set_ccid(
50816     p_code_combination_id          => l_ccid
50817   , p_value_type_code              => l_adr_value_type_code
50818   , p_transaction_coa_id           => l_adr_transaction_coa_id
50819   , p_accounting_coa_id            => l_adr_accounting_coa_id
50820   , p_adr_code                     => 'DIST_CCID'
50821   , p_adr_type_code                => 'S'
50822   , p_component_type               => l_component_type
50823   , p_component_code               => l_component_code
50824   , p_component_type_code          => l_component_type_code
50825   , p_component_appl_id            => l_component_appl_id
50826   , p_amb_context_code             => l_amb_context_code
50827   , p_side                         => 'NA'
50828   );
50829 
50830 
50831    --
50832    --
50833    END IF;
50834    --
50835    -- Bug 4922099
50836    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50837           (NVL(l_enc_upg_option, 'N') = 'O')
50838         ) AND
50839         (l_bflow_method_code = 'PRIOR_ENTRY')
50840       )
50841    THEN
50842       IF
50843       --
50844       1 = 2
50845       --
50846       THEN
50847       xla_accounting_err_pkg.build_message
50848                                     (p_appli_s_name            => 'XLA'
50849                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50850                                     ,p_token_1                 => 'LINE_NUMBER'
50854                                                                              l_component_type
50851                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50852                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50853                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50855                                                                             ,l_component_code
50856                                                                             ,l_component_type_code
50857                                                                             ,l_component_appl_id
50858                                                                             ,l_amb_context_code
50859                                                                             ,l_entity_code
50860                                                                             ,l_event_class_code
50861                                                                            )
50862                                     ,p_token_3                 => 'OWNER'
50863                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50864                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50865                                                                           ,p_lookup_code    => l_component_type_code
50866                                                                          )
50867                                     ,p_token_4                 => 'PRODUCT_NAME'
50868                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50869                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50870                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50871                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50872                                     ,p_ae_header_id            =>  NULL
50873                                        );
50874 
50875         IF (C_LEVEL_ERROR>= g_log_level) THEN
50876                  trace
50877                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50878                       ,p_level    => C_LEVEL_ERROR
50879                       ,p_module   => l_log_module);
50880         END IF;
50881       END IF;
50882    END IF;
50883    --
50884    --
50885    ------------------------------------------------------------------------------------------------
50886    -- 4219869 Business Flow
50887    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50888    -- Prior Entry.  Currently, the following code is always generated.
50889    ------------------------------------------------------------------------------------------------
50890    XLA_AE_LINES_PKG.ValidateCurrentLine;
50891 
50892    ------------------------------------------------------------------------------------
50893    -- 4219869 Business Flow
50894    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50895    ------------------------------------------------------------------------------------
50896    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50897 
50898    ----------------------------------------------------------------------------------
50899    -- 4219869 Business Flow
50900    -- Update journal entry status -- Need to generate this within IF <condition>
50901    ----------------------------------------------------------------------------------
50902    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50903          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50904          ,p_balance_type_code => l_balance_type_code
50905          );
50906 
50907    -------------------------------------------------------------------------------------------
50908    -- 4262811 - Generate the Accrual Reversal lines
50909    -------------------------------------------------------------------------------------------
50910    BEGIN
50911       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50912                               (g_array_event(p_event_id).array_value_num('header_index'));
50913       IF l_acc_rev_flag IS NULL THEN
50914          l_acc_rev_flag := 'N';
50915       END IF;
50916    EXCEPTION
50917       WHEN OTHERS THEN
50918          l_acc_rev_flag := 'N';
50919    END;
50920    --
50921    IF (l_acc_rev_flag = 'Y') THEN
50922 
50923        -- 4645092  ------------------------------------------------------------------------------
50924        -- To allow MPA report to determine if it should generate report process
50925        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50926        ------------------------------------------------------------------------------------------
50927 
50928        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50929        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50930    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
50931    -- call ADRs
50932    -- Bug 4922099
50933    --
50934    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50935         (NVL(l_actual_upg_option, 'N') = 'O') OR
50936         (NVL(l_enc_upg_option, 'N') = 'O')
50937       )
50938    THEN
50939    NULL;
50940    --
50941    --
50942    
50943   l_ccid := AcctDerRule_20(
50944            p_application_id           => p_application_id
50948          , x_accounting_coa_id        => l_adr_accounting_coa_id
50945          , p_ae_header_id             => l_ae_header_id 
50946 , p_source_22 => p_source_22
50947          , x_transaction_coa_id       => l_adr_transaction_coa_id
50949          , x_value_type_code          => l_adr_value_type_code
50950          , p_side                     => 'NA'
50951    );
50952 
50953    xla_ae_lines_pkg.set_ccid(
50954     p_code_combination_id          => l_ccid
50955   , p_value_type_code              => l_adr_value_type_code
50956   , p_transaction_coa_id           => l_adr_transaction_coa_id
50957   , p_accounting_coa_id            => l_adr_accounting_coa_id
50958   , p_adr_code                     => 'DIST_CCID'
50959   , p_adr_type_code                => 'S'
50960   , p_component_type               => l_component_type
50961   , p_component_code               => l_component_code
50962   , p_component_type_code          => l_component_type_code
50963   , p_component_appl_id            => l_component_appl_id
50964   , p_amb_context_code             => l_amb_context_code
50965   , p_side                         => 'NA'
50966   );
50967 
50968 
50969    --
50970    --
50971    END IF;
50972 
50973        --
50974        -- Update the line information that should be overwritten
50975        --
50976        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50977                                          p_header_num   => 1);
50978        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50979 
50980        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50981 
50982        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50983           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50984        END IF;
50985 
50986       --
50987       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50988       --
50989       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50990           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
50991       ELSE
50992           ---------------------------------------------------------------------------------------------------
50993           -- 4262811a Switch Sign
50994           ---------------------------------------------------------------------------------------------------
50995           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
50996           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50997                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50998           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50999                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51000           -- 5132302
51001           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51002                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51003 
51004       END IF;
51005 
51006       -- 4955764
51007       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51008       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51009 
51010 
51011       XLA_AE_LINES_PKG.ValidateCurrentLine;
51012       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51013 
51014       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51015                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51016                ,p_balance_type_code => l_balance_type_code);
51017 
51018    END IF;
51019 
51020    -----------------------------------------------------------------------------------------
51021    -- 4262811 Multiperiod Accounting
51022    -----------------------------------------------------------------------------------------
51023      -- No MPA option is assigned.
51024 
51025 
51026 END IF;
51027 END IF;
51028 --
51029 
51030 --
51031 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51032    trace
51033       (p_msg      => 'END of AcctLineType_106'
51034       ,p_level    => C_LEVEL_PROCEDURE
51035       ,p_module   => l_log_module);
51036 END IF;
51037 --
51038 EXCEPTION
51039   WHEN xla_exceptions_pkg.application_exception THEN
51040       RAISE;
51041   WHEN OTHERS THEN
51042        xla_exceptions_pkg.raise_message
51043            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_106');
51044 END AcctLineType_106;
51045 --
51046 
51047 ---------------------------------------
51048 --
51049 -- PRIVATE FUNCTION
51050 --         AcctLineType_107
51051 --
51052 ---------------------------------------
51053 PROCEDURE AcctLineType_107 (
51054   p_application_id        IN NUMBER
51055  ,p_event_id              IN NUMBER
51056  ,p_calculate_acctd_flag  IN VARCHAR2
51057  ,p_calculate_g_l_flag    IN VARCHAR2
51058  ,p_actual_flag           IN OUT VARCHAR2
51059  ,p_balance_type_code     OUT VARCHAR2
51060  ,p_gain_or_loss_ref      OUT VARCHAR2
51061  
51062 --Transaction Type Name
51063  , p_source_1            IN VARCHAR2
51064 --Transaction Number
51065  , p_source_2            IN VARCHAR2
51069  , p_source_22            IN NUMBER
51066 --Transaction Document Sequence Number
51067  , p_source_3            IN NUMBER
51068 --Distribution GL Account
51070 --Distribution Source Type
51071  , p_source_27            IN VARCHAR2
51072 --Distribution Line Identifier
51073  , p_source_29            IN NUMBER
51074 --Distribution Type
51075  , p_source_30            IN VARCHAR2
51076 --Entered Amount
51077  , p_source_31            IN NUMBER
51078 --Currency Code
51079  , p_source_32            IN VARCHAR2
51080 --Applied To Document Accounting Amount
51081  , p_source_36            IN NUMBER
51082 --Transaction Distribution Identifier
51083  , p_source_44            IN NUMBER
51084 --Transaction Distribution Type
51085  , p_source_45            IN VARCHAR2
51086 --Distribution Multi Fund Additional Entry
51087  , p_source_88            IN VARCHAR2
51088 --Applied To Document Exchange Date
51089  , p_source_89            IN DATE
51090 --Cash Receipt Identifier
51091  , p_source_90            IN NUMBER
51092 --Receipt Applied To Application Identifier
51093  , p_source_92            IN NUMBER
51094 --Transaction Entity Code
51095  , p_source_93            IN VARCHAR2
51096 --Transaction Identifier
51097  , p_source_94            IN NUMBER
51098 --Distribution Party Identifier
51099  , p_source_97            IN NUMBER
51100 --Distribution Party Site Id
51101  , p_source_98            IN NUMBER
51102 --Distribution Party Type
51103  , p_source_99            IN VARCHAR2
51104 --Applied To Document Exchange Rate Type
51105  , p_source_100            IN VARCHAR2
51106 --Applied To Document Exchange Rate
51107  , p_source_101            IN NUMBER
51108 )
51109 IS
51110 
51111 l_component_type              VARCHAR2(80);
51112 l_component_code              VARCHAR2(30);
51113 l_component_type_code         VARCHAR2(1);
51114 l_component_appl_id           INTEGER;
51115 l_amb_context_code            VARCHAR2(30);
51116 l_entity_code                 VARCHAR2(30);
51117 l_event_class_code            VARCHAR2(30);
51118 l_ae_header_id                NUMBER;
51119 l_event_type_code             VARCHAR2(30);
51120 l_line_definition_code        VARCHAR2(30);
51121 l_line_definition_owner_code  VARCHAR2(1);
51122 --
51123 -- adr variables
51124 l_segment                     VARCHAR2(30);
51125 l_ccid                        NUMBER;
51126 l_adr_transaction_coa_id      NUMBER;
51127 l_adr_accounting_coa_id       NUMBER;
51128 l_adr_flexfield_segment_code  VARCHAR2(30);
51129 l_adr_flex_value_set_id       NUMBER;
51130 l_adr_value_type_code         VARCHAR2(30);
51131 l_adr_value_combination_id    NUMBER;
51132 l_adr_value_segment_code      VARCHAR2(30);
51133 
51134 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
51135 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
51136 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
51137 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
51138 
51139 -- 4262811 Variables ------------------------------------------------------------------------------------------
51140 l_entered_amt_idx             NUMBER;
51141 l_accted_amt_idx              NUMBER;
51142 l_acc_rev_flag                VARCHAR2(1);
51143 l_accrual_line_num            NUMBER;
51144 l_tmp_amt                     NUMBER;
51145 l_acc_rev_natural_side_code   VARCHAR2(1);
51146 
51147 l_num_entries                 NUMBER;
51148 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
51149 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
51150 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
51151 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
51152 l_recog_line_1                NUMBER;
51153 l_recog_line_2                NUMBER;
51154 
51155 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
51156 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
51157 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
51158 
51159 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51160 
51161 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
51162 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
51163 
51164 ---------------------------------------------------------------------------------------------------------------
51165 
51166 
51167 --
51168 -- bulk performance
51169 --
51170 l_balance_type_code           VARCHAR2(1);
51171 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
51172 l_log_module                  VARCHAR2(240);
51173 
51174 --
51175 -- Upgrade strategy
51176 --
51177 l_actual_upg_option           VARCHAR2(1);
51178 l_enc_upg_option           VARCHAR2(1);
51179 
51180 --
51181 BEGIN
51182 --
51183 IF g_log_enabled THEN
51184       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_107';
51185 END IF;
51186 --
51187 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51188 
51189       trace
51190          (p_msg      => 'BEGIN of AcctLineType_107'
51191          ,p_level    => C_LEVEL_PROCEDURE
51192          ,p_module   => l_log_module);
51193 
51194 END IF;
51195 --
51196 l_component_type             := 'AMB_JLT';
51197 l_component_code             := 'RCT_DEFAULT_APP';
51198 l_component_type_code        := 'S';
51199 l_component_appl_id          :=  222;
51203 l_event_type_code            := 'RECEIPT_ALL';
51200 l_amb_context_code           := 'DEFAULT';
51201 l_entity_code                := 'RECEIPTS';
51202 l_event_class_code           := 'RECEIPT';
51204 l_line_definition_owner_code := 'S';
51205 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
51206 --
51207 l_balance_type_code          := 'A';
51208 l_segment                     := NULL;
51209 l_ccid                        := NULL;
51210 l_adr_transaction_coa_id      := NULL;
51211 l_adr_accounting_coa_id       := NULL;
51212 l_adr_flexfield_segment_code  := NULL;
51213 l_adr_flex_value_set_id       := NULL;
51214 l_adr_value_type_code         := NULL;
51215 l_adr_value_combination_id    := NULL;
51216 l_adr_value_segment_code      := NULL;
51217 
51218 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
51219 l_bflow_class_code           := '';    -- 4219869 Business Flow
51220 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51221 l_budgetary_control_flag     := 'N';
51222 
51223 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51224 l_bflow_applied_to_amt       := NULL; -- 5132302
51225 l_entered_amt_idx            := NULL;          -- 4262811
51226 l_accted_amt_idx             := NULL;          -- 4262811
51227 l_acc_rev_flag               := NULL;          -- 4262811
51228 l_accrual_line_num           := NULL;          -- 4262811
51229 l_tmp_amt                    := NULL;          -- 4262811
51230 --
51231  
51232 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51233     l_balance_type_code <> 'B' THEN
51234 IF NVL(p_source_27,'
51235 ') =  'REC' AND 
51236 NVL(p_source_88,'
51237 ') =  'N'
51238  THEN 
51239 
51240    --
51241    XLA_AE_LINES_PKG.SetNewLine;
51242 
51243    p_balance_type_code          := l_balance_type_code;
51244    -- set the flag so later we will know whether the gain loss line needs to be created
51245    
51246    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51247      p_actual_flag :='A';
51248    END IF;
51249 
51250    --
51251    -- bulk performance
51252    --
51253    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51254                                       p_header_num   => 0); -- 4262811
51255    --
51256    -- set accounting line options
51257    --
51258    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51259            p_natural_side_code          => 'C'
51260          , p_gain_or_loss_flag          => 'N'
51261          , p_gl_transfer_mode_code      => 'S'
51262          , p_acct_entry_type_code       => 'A'
51263          , p_switch_side_flag           => 'Y'
51264          , p_merge_duplicate_code       => 'A'
51265          );
51266    --
51267    l_acc_rev_natural_side_code := 'D';  -- 4262811
51268    -- 
51269    --
51270    -- set accounting line type info
51271    --
51272    xla_ae_lines_pkg.SetAcctLineType
51273       (p_component_type             => l_component_type
51274       ,p_event_type_code            => l_event_type_code
51275       ,p_line_definition_owner_code => l_line_definition_owner_code
51276       ,p_line_definition_code       => l_line_definition_code
51277       ,p_accounting_line_code       => l_component_code
51278       ,p_accounting_line_type_code  => l_component_type_code
51279       ,p_accounting_line_appl_id    => l_component_appl_id
51280       ,p_amb_context_code           => l_amb_context_code
51281       ,p_entity_code                => l_entity_code
51282       ,p_event_class_code           => l_event_class_code);
51283    --
51284    -- set accounting class
51285    --
51286    xla_ae_lines_pkg.SetAcctClass(
51287            p_accounting_class_code  => 'RECEIVABLE'
51288          , p_ae_header_id           => l_ae_header_id
51289          );
51290 
51291    --
51292    -- set rounding class
51293    --
51294    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51295                       'RECEIVABLE';
51296 
51297    --
51298    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51299    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51300    --
51301    -- bulk performance
51302    --
51303    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51304 
51305    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51306       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51307 
51308    -- 4955764
51309    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51310       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51311 
51312    -- 4458381 Public Sector Enh
51313    
51314    --
51315    -- set accounting attributes for the line type
51316    --
51317    l_entered_amt_idx := 8;
51318    l_accted_amt_idx  := 13;
51319    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
51320    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
51321    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
51322    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
51323    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
51324    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
51325    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
51329    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
51326    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
51327    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
51328    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
51330    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
51331    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
51332    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
51333    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
51334    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
51335    l_rec_acct_attrs.array_num_value(8)  := p_source_31;
51336    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
51337    l_rec_acct_attrs.array_char_value(9)  := p_source_32;
51338    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
51339    l_rec_acct_attrs.array_date_value(10)  := p_source_89;
51340    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
51341    l_rec_acct_attrs.array_num_value(11)  := p_source_101;
51342    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
51343    l_rec_acct_attrs.array_char_value(12)  := p_source_100;
51344    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
51345    l_rec_acct_attrs.array_num_value(13)  := p_source_36;
51346    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
51347    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
51348    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
51349    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
51350    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
51351    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
51352 
51353    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51354    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51355 
51356    ---------------------------------------------------------------------------------------------------------------
51357    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51358    ---------------------------------------------------------------------------------------------------------------
51359    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51360 
51361    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51362    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51363 
51364    IF xla_accounting_cache_pkg.GetValueChar
51365          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51366          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51367    AND l_bflow_method_code = 'PRIOR_ENTRY'
51368 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51369    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51370          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51371        )
51372    THEN
51373          xla_ae_lines_pkg.BflowUpgEntry
51374            (p_business_method_code    => l_bflow_method_code
51375            ,p_business_class_code     => l_bflow_class_code
51376            ,p_balance_type            => l_balance_type_code);
51377    ELSE
51378       NULL;
51379 -- No business flow processing for business flow method of NONE.
51380    END IF;
51381 
51382    --
51383    -- call analytical criteria
51384    --
51385    
51386 
51387 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
51388 xla_ae_lines_pkg.SetAnalyticalCriteria(
51389    p_analytical_criterion_name    => 'Check Id'
51390  , p_analytical_criterion_owner   => 'S'
51391  , p_analytical_criterion_code    => 'CHECK_ID'
51392  , p_amb_context_code             => 'DEFAULT'
51393  , p_balancing_flag               => 'N'
51394  
51395  , p_analytical_detail_char_1    =>  NULL
51396  , p_analytical_detail_num_1     =>  p_source_90
51397  , p_analytical_detail_date_1    =>  NULL
51398 
51399  , p_ae_header_id                 => l_ae_header_id
51400 )
51401 ;
51402 --
51403 
51404 
51405 xla_ae_lines_pkg.g_rec_lines.array_anc_id_2(xla_ae_lines_pkg.g_LineNumber) :=
51406 xla_ae_lines_pkg.SetAnalyticalCriteria(
51407    p_analytical_criterion_name    => 'Transaction Type'
51408  , p_analytical_criterion_owner   => 'S'
51409  , p_analytical_criterion_code    => 'TRANSACTION_TYPE'
51410  , p_amb_context_code             => 'DEFAULT'
51411  , p_balancing_flag               => 'N'
51412  
51413  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_1)
51414  , p_analytical_detail_num_1     =>  NULL
51415  , p_analytical_detail_date_1    =>  NULL
51416 
51417  , p_ae_header_id                 => l_ae_header_id
51418 )
51419 ;
51420 --
51421 
51422    --
51423    -- call description
51424    --
51425    
51426 xla_ae_lines_pkg.SetLineDescription(
51427    p_ae_header_id => l_ae_header_id
51428   ,p_description  => Description_11 (
51429      p_application_id         => p_application_id
51430    , p_ae_header_id           => l_ae_header_id 
51431 , p_source_1 => p_source_1
51432 , p_source_2 => p_source_2
51433 , p_source_3 => p_source_3
51434    )
51435 );
51436 
51437 
51438    --
51439    -- call ADRs
51440    -- Bug 4922099
51441    --
51445       )
51442    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51443         (NVL(l_actual_upg_option, 'N') = 'O') OR
51444         (NVL(l_enc_upg_option, 'N') = 'O')
51446    THEN
51447    NULL;
51448    --
51449    --
51450    
51451   l_ccid := AcctDerRule_20(
51452            p_application_id           => p_application_id
51453          , p_ae_header_id             => l_ae_header_id 
51454 , p_source_22 => p_source_22
51455          , x_transaction_coa_id       => l_adr_transaction_coa_id
51456          , x_accounting_coa_id        => l_adr_accounting_coa_id
51457          , x_value_type_code          => l_adr_value_type_code
51458          , p_side                     => 'NA'
51459    );
51460 
51461    xla_ae_lines_pkg.set_ccid(
51462     p_code_combination_id          => l_ccid
51463   , p_value_type_code              => l_adr_value_type_code
51464   , p_transaction_coa_id           => l_adr_transaction_coa_id
51465   , p_accounting_coa_id            => l_adr_accounting_coa_id
51466   , p_adr_code                     => 'DIST_CCID'
51467   , p_adr_type_code                => 'S'
51468   , p_component_type               => l_component_type
51469   , p_component_code               => l_component_code
51470   , p_component_type_code          => l_component_type_code
51471   , p_component_appl_id            => l_component_appl_id
51472   , p_amb_context_code             => l_amb_context_code
51473   , p_side                         => 'NA'
51474   );
51475 
51476 
51477    --
51478    --
51479    END IF;
51480    --
51481    -- Bug 4922099
51482    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51483           (NVL(l_enc_upg_option, 'N') = 'O')
51484         ) AND
51485         (l_bflow_method_code = 'PRIOR_ENTRY')
51486       )
51487    THEN
51488       IF
51489       --
51490       1 = 2
51491       --
51492       THEN
51493       xla_accounting_err_pkg.build_message
51494                                     (p_appli_s_name            => 'XLA'
51495                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51496                                     ,p_token_1                 => 'LINE_NUMBER'
51497                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
51498                                     ,p_token_2                 => 'LINE_TYPE_NAME'
51499                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
51500                                                                              l_component_type
51501                                                                             ,l_component_code
51502                                                                             ,l_component_type_code
51503                                                                             ,l_component_appl_id
51504                                                                             ,l_amb_context_code
51505                                                                             ,l_entity_code
51506                                                                             ,l_event_class_code
51507                                                                            )
51508                                     ,p_token_3                 => 'OWNER'
51509                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
51510                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
51511                                                                           ,p_lookup_code    => l_component_type_code
51512                                                                          )
51513                                     ,p_token_4                 => 'PRODUCT_NAME'
51514                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51515                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51516                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51517                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51518                                     ,p_ae_header_id            =>  NULL
51519                                        );
51520 
51521         IF (C_LEVEL_ERROR>= g_log_level) THEN
51522                  trace
51523                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51524                       ,p_level    => C_LEVEL_ERROR
51525                       ,p_module   => l_log_module);
51526         END IF;
51527       END IF;
51528    END IF;
51529    --
51530    --
51531    ------------------------------------------------------------------------------------------------
51532    -- 4219869 Business Flow
51533    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
51534    -- Prior Entry.  Currently, the following code is always generated.
51535    ------------------------------------------------------------------------------------------------
51536    XLA_AE_LINES_PKG.ValidateCurrentLine;
51537 
51538    ------------------------------------------------------------------------------------
51539    -- 4219869 Business Flow
51540    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
51541    ------------------------------------------------------------------------------------
51542    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51543 
51547    ----------------------------------------------------------------------------------
51544    ----------------------------------------------------------------------------------
51545    -- 4219869 Business Flow
51546    -- Update journal entry status -- Need to generate this within IF <condition>
51548    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51549          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
51550          ,p_balance_type_code => l_balance_type_code
51551          );
51552 
51553    -------------------------------------------------------------------------------------------
51554    -- 4262811 - Generate the Accrual Reversal lines
51555    -------------------------------------------------------------------------------------------
51556    BEGIN
51557       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
51558                               (g_array_event(p_event_id).array_value_num('header_index'));
51559       IF l_acc_rev_flag IS NULL THEN
51560          l_acc_rev_flag := 'N';
51561       END IF;
51562    EXCEPTION
51563       WHEN OTHERS THEN
51564          l_acc_rev_flag := 'N';
51565    END;
51566    --
51567    IF (l_acc_rev_flag = 'Y') THEN
51568 
51569        -- 4645092  ------------------------------------------------------------------------------
51570        -- To allow MPA report to determine if it should generate report process
51571        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
51572        ------------------------------------------------------------------------------------------
51573 
51574        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
51575        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
51576    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
51577    -- call ADRs
51578    -- Bug 4922099
51579    --
51580    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51581         (NVL(l_actual_upg_option, 'N') = 'O') OR
51582         (NVL(l_enc_upg_option, 'N') = 'O')
51583       )
51584    THEN
51585    NULL;
51586    --
51587    --
51588    
51589   l_ccid := AcctDerRule_20(
51590            p_application_id           => p_application_id
51591          , p_ae_header_id             => l_ae_header_id 
51592 , p_source_22 => p_source_22
51593          , x_transaction_coa_id       => l_adr_transaction_coa_id
51594          , x_accounting_coa_id        => l_adr_accounting_coa_id
51595          , x_value_type_code          => l_adr_value_type_code
51596          , p_side                     => 'NA'
51597    );
51598 
51599    xla_ae_lines_pkg.set_ccid(
51600     p_code_combination_id          => l_ccid
51601   , p_value_type_code              => l_adr_value_type_code
51602   , p_transaction_coa_id           => l_adr_transaction_coa_id
51603   , p_accounting_coa_id            => l_adr_accounting_coa_id
51604   , p_adr_code                     => 'DIST_CCID'
51605   , p_adr_type_code                => 'S'
51606   , p_component_type               => l_component_type
51607   , p_component_code               => l_component_code
51608   , p_component_type_code          => l_component_type_code
51609   , p_component_appl_id            => l_component_appl_id
51610   , p_amb_context_code             => l_amb_context_code
51611   , p_side                         => 'NA'
51612   );
51613 
51614 
51615    --
51616    --
51617    END IF;
51618 
51619        --
51620        -- Update the line information that should be overwritten
51621        --
51622        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
51623                                          p_header_num   => 1);
51624        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
51625 
51626        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
51627 
51628        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
51629           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
51630        END IF;
51631 
51632       --
51633       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51634       --
51635       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51636           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
51637       ELSE
51638           ---------------------------------------------------------------------------------------------------
51639           -- 4262811a Switch Sign
51640           ---------------------------------------------------------------------------------------------------
51641           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
51642           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51643                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51644           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51645                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51646           -- 5132302
51647           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51648                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51649 
51650       END IF;
51651 
51652       -- 4955764
51653       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51657       XLA_AE_LINES_PKG.ValidateCurrentLine;
51654       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51655 
51656 
51658       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51659 
51660       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51661                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51662                ,p_balance_type_code => l_balance_type_code);
51663 
51664    END IF;
51665 
51666    -----------------------------------------------------------------------------------------
51667    -- 4262811 Multiperiod Accounting
51668    -----------------------------------------------------------------------------------------
51669      -- No MPA option is assigned.
51670 
51671 
51672 END IF;
51673 END IF;
51674 --
51675 
51676 --
51677 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51678    trace
51679       (p_msg      => 'END of AcctLineType_107'
51680       ,p_level    => C_LEVEL_PROCEDURE
51681       ,p_module   => l_log_module);
51682 END IF;
51683 --
51684 EXCEPTION
51685   WHEN xla_exceptions_pkg.application_exception THEN
51686       RAISE;
51687   WHEN OTHERS THEN
51688        xla_exceptions_pkg.raise_message
51689            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_107');
51690 END AcctLineType_107;
51691 --
51692 
51693 ---------------------------------------
51694 --
51695 -- PRIVATE FUNCTION
51696 --         AcctLineType_108
51697 --
51698 ---------------------------------------
51699 PROCEDURE AcctLineType_108 (
51700   p_application_id        IN NUMBER
51701  ,p_event_id              IN NUMBER
51702  ,p_calculate_acctd_flag  IN VARCHAR2
51703  ,p_calculate_g_l_flag    IN VARCHAR2
51704  ,p_actual_flag           IN OUT VARCHAR2
51705  ,p_balance_type_code     OUT VARCHAR2
51706  ,p_gain_or_loss_ref      OUT VARCHAR2
51707  
51708 --Distribution GL Account
51709  , p_source_22            IN NUMBER
51710 --Distribution Source Type
51711  , p_source_27            IN VARCHAR2
51712 --Distribution Line Identifier
51713  , p_source_29            IN NUMBER
51714 --Distribution Type
51715  , p_source_30            IN VARCHAR2
51716 --Entered Amount
51717  , p_source_31            IN NUMBER
51718 --Currency Code
51719  , p_source_32            IN VARCHAR2
51720 --Applied To Document Accounting Amount
51721  , p_source_36            IN NUMBER
51722 --Transaction Distribution Identifier
51723  , p_source_44            IN NUMBER
51724 --Transaction Distribution Type
51725  , p_source_45            IN VARCHAR2
51726 --Distribution Multi Fund Additional Entry
51727  , p_source_88            IN VARCHAR2
51728 --Applied To Document Exchange Date
51729  , p_source_89            IN DATE
51730 --Cash Receipt Identifier
51731  , p_source_90            IN NUMBER
51732 --Receipt Applied To Application Identifier
51733  , p_source_92            IN NUMBER
51734 --Transaction Entity Code
51735  , p_source_93            IN VARCHAR2
51736 --Transaction Identifier
51737  , p_source_94            IN NUMBER
51738 --Distribution Party Identifier
51739  , p_source_97            IN NUMBER
51740 --Distribution Party Site Id
51741  , p_source_98            IN NUMBER
51742 --Distribution Party Type
51743  , p_source_99            IN VARCHAR2
51744 --Applied To Document Exchange Rate Type
51745  , p_source_100            IN VARCHAR2
51746 --Applied To Document Exchange Rate
51747  , p_source_101            IN NUMBER
51748 )
51749 IS
51750 
51751 l_component_type              VARCHAR2(80);
51752 l_component_code              VARCHAR2(30);
51753 l_component_type_code         VARCHAR2(1);
51754 l_component_appl_id           INTEGER;
51755 l_amb_context_code            VARCHAR2(30);
51756 l_entity_code                 VARCHAR2(30);
51757 l_event_class_code            VARCHAR2(30);
51758 l_ae_header_id                NUMBER;
51759 l_event_type_code             VARCHAR2(30);
51760 l_line_definition_code        VARCHAR2(30);
51761 l_line_definition_owner_code  VARCHAR2(1);
51762 --
51763 -- adr variables
51764 l_segment                     VARCHAR2(30);
51765 l_ccid                        NUMBER;
51766 l_adr_transaction_coa_id      NUMBER;
51767 l_adr_accounting_coa_id       NUMBER;
51768 l_adr_flexfield_segment_code  VARCHAR2(30);
51769 l_adr_flex_value_set_id       NUMBER;
51770 l_adr_value_type_code         VARCHAR2(30);
51771 l_adr_value_combination_id    NUMBER;
51772 l_adr_value_segment_code      VARCHAR2(30);
51773 
51774 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
51775 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
51776 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
51777 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
51778 
51779 -- 4262811 Variables ------------------------------------------------------------------------------------------
51780 l_entered_amt_idx             NUMBER;
51781 l_accted_amt_idx              NUMBER;
51782 l_acc_rev_flag                VARCHAR2(1);
51783 l_accrual_line_num            NUMBER;
51784 l_tmp_amt                     NUMBER;
51785 l_acc_rev_natural_side_code   VARCHAR2(1);
51786 
51787 l_num_entries                 NUMBER;
51788 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
51789 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
51793 l_recog_line_2                NUMBER;
51790 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
51791 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
51792 l_recog_line_1                NUMBER;
51794 
51795 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
51796 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
51797 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
51798 
51799 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51800 
51801 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
51802 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
51803 
51804 ---------------------------------------------------------------------------------------------------------------
51805 
51806 
51807 --
51808 -- bulk performance
51809 --
51810 l_balance_type_code           VARCHAR2(1);
51811 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
51812 l_log_module                  VARCHAR2(240);
51813 
51814 --
51815 -- Upgrade strategy
51816 --
51817 l_actual_upg_option           VARCHAR2(1);
51818 l_enc_upg_option           VARCHAR2(1);
51819 
51820 --
51821 BEGIN
51822 --
51823 IF g_log_enabled THEN
51824       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_108';
51825 END IF;
51826 --
51827 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51828 
51829       trace
51830          (p_msg      => 'BEGIN of AcctLineType_108'
51831          ,p_level    => C_LEVEL_PROCEDURE
51832          ,p_module   => l_log_module);
51833 
51834 END IF;
51835 --
51836 l_component_type             := 'AMB_JLT';
51837 l_component_code             := 'RCT_DEFERRED_TAX';
51838 l_component_type_code        := 'S';
51839 l_component_appl_id          :=  222;
51840 l_amb_context_code           := 'DEFAULT';
51841 l_entity_code                := 'RECEIPTS';
51842 l_event_class_code           := 'RECEIPT';
51843 l_event_type_code            := 'RECEIPT_ALL';
51844 l_line_definition_owner_code := 'S';
51845 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
51846 --
51847 l_balance_type_code          := 'A';
51848 l_segment                     := NULL;
51849 l_ccid                        := NULL;
51850 l_adr_transaction_coa_id      := NULL;
51851 l_adr_accounting_coa_id       := NULL;
51852 l_adr_flexfield_segment_code  := NULL;
51853 l_adr_flex_value_set_id       := NULL;
51854 l_adr_value_type_code         := NULL;
51855 l_adr_value_combination_id    := NULL;
51856 l_adr_value_segment_code      := NULL;
51857 
51858 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
51859 l_bflow_class_code           := '';    -- 4219869 Business Flow
51860 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51861 l_budgetary_control_flag     := 'N';
51862 
51863 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51864 l_bflow_applied_to_amt       := NULL; -- 5132302
51865 l_entered_amt_idx            := NULL;          -- 4262811
51866 l_accted_amt_idx             := NULL;          -- 4262811
51867 l_acc_rev_flag               := NULL;          -- 4262811
51868 l_accrual_line_num           := NULL;          -- 4262811
51869 l_tmp_amt                    := NULL;          -- 4262811
51870 --
51871  
51872 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51873     l_balance_type_code <> 'B' THEN
51874 IF NVL(p_source_27,'
51875 ') =  'DEFERRED_TAX' AND 
51876 NVL(p_source_88,'
51877 ') =  'N'
51878  THEN 
51879 
51880    --
51881    XLA_AE_LINES_PKG.SetNewLine;
51882 
51883    p_balance_type_code          := l_balance_type_code;
51884    -- set the flag so later we will know whether the gain loss line needs to be created
51885    
51886    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51887      p_actual_flag :='A';
51888    END IF;
51889 
51890    --
51891    -- bulk performance
51892    --
51893    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51894                                       p_header_num   => 0); -- 4262811
51895    --
51896    -- set accounting line options
51897    --
51898    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51899            p_natural_side_code          => 'C'
51900          , p_gain_or_loss_flag          => 'N'
51901          , p_gl_transfer_mode_code      => 'S'
51902          , p_acct_entry_type_code       => 'A'
51903          , p_switch_side_flag           => 'Y'
51904          , p_merge_duplicate_code       => 'A'
51905          );
51906    --
51907    l_acc_rev_natural_side_code := 'D';  -- 4262811
51908    -- 
51909    --
51910    -- set accounting line type info
51911    --
51912    xla_ae_lines_pkg.SetAcctLineType
51913       (p_component_type             => l_component_type
51914       ,p_event_type_code            => l_event_type_code
51915       ,p_line_definition_owner_code => l_line_definition_owner_code
51916       ,p_line_definition_code       => l_line_definition_code
51917       ,p_accounting_line_code       => l_component_code
51918       ,p_accounting_line_type_code  => l_component_type_code
51919       ,p_accounting_line_appl_id    => l_component_appl_id
51920       ,p_amb_context_code           => l_amb_context_code
51924    -- set accounting class
51921       ,p_entity_code                => l_entity_code
51922       ,p_event_class_code           => l_event_class_code);
51923    --
51925    --
51926    xla_ae_lines_pkg.SetAcctClass(
51927            p_accounting_class_code  => 'DEFERRED_TAX'
51928          , p_ae_header_id           => l_ae_header_id
51929          );
51930 
51931    --
51932    -- set rounding class
51933    --
51934    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51935                       'RECEIVABLE';
51936 
51937    --
51938    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51939    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51940    --
51941    -- bulk performance
51942    --
51943    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51944 
51945    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51946       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51947 
51948    -- 4955764
51949    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51950       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51951 
51952    -- 4458381 Public Sector Enh
51953    
51954    --
51955    -- set accounting attributes for the line type
51956    --
51957    l_entered_amt_idx := 8;
51958    l_accted_amt_idx  := 13;
51959    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
51960    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
51961    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
51962    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
51963    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
51964    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
51965    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
51966    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
51967    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
51968    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
51969    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
51970    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
51971    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
51972    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
51973    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
51974    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
51975    l_rec_acct_attrs.array_num_value(8)  := p_source_31;
51976    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
51977    l_rec_acct_attrs.array_char_value(9)  := p_source_32;
51978    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
51979    l_rec_acct_attrs.array_date_value(10)  := p_source_89;
51980    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
51981    l_rec_acct_attrs.array_num_value(11)  := p_source_101;
51982    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
51983    l_rec_acct_attrs.array_char_value(12)  := p_source_100;
51984    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
51985    l_rec_acct_attrs.array_num_value(13)  := p_source_36;
51986    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
51987    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
51988    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
51989    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
51990    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
51991    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
51992 
51993    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51994    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51995 
51996    ---------------------------------------------------------------------------------------------------------------
51997    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51998    ---------------------------------------------------------------------------------------------------------------
51999    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52000 
52001    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52002    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52003 
52004    IF xla_accounting_cache_pkg.GetValueChar
52005          (p_source_code         => 'LEDGER_CATEGORY_CODE'
52006          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
52007    AND l_bflow_method_code = 'PRIOR_ENTRY'
52008 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
52009    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
52010          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
52011        )
52012    THEN
52013          xla_ae_lines_pkg.BflowUpgEntry
52014            (p_business_method_code    => l_bflow_method_code
52015            ,p_business_class_code     => l_bflow_class_code
52016            ,p_balance_type            => l_balance_type_code);
52017    ELSE
52018       NULL;
52019 -- No business flow processing for business flow method of NONE.
52020    END IF;
52021 
52022    --
52026 
52023    -- call analytical criteria
52024    --
52025    
52027 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
52028 xla_ae_lines_pkg.SetAnalyticalCriteria(
52029    p_analytical_criterion_name    => 'Check Id'
52030  , p_analytical_criterion_owner   => 'S'
52031  , p_analytical_criterion_code    => 'CHECK_ID'
52032  , p_amb_context_code             => 'DEFAULT'
52033  , p_balancing_flag               => 'N'
52034  
52035  , p_analytical_detail_char_1    =>  NULL
52036  , p_analytical_detail_num_1     =>  p_source_90
52037  , p_analytical_detail_date_1    =>  NULL
52038 
52039  , p_ae_header_id                 => l_ae_header_id
52040 )
52041 ;
52042 --
52043 
52044    --
52045    -- call description
52046    --
52047    -- No description or it is inherited.
52048    --
52049    -- call ADRs
52050    -- Bug 4922099
52051    --
52052    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52053         (NVL(l_actual_upg_option, 'N') = 'O') OR
52054         (NVL(l_enc_upg_option, 'N') = 'O')
52055       )
52056    THEN
52057    NULL;
52058    --
52059    --
52060    
52061   l_ccid := AcctDerRule_20(
52062            p_application_id           => p_application_id
52063          , p_ae_header_id             => l_ae_header_id 
52064 , p_source_22 => p_source_22
52065          , x_transaction_coa_id       => l_adr_transaction_coa_id
52066          , x_accounting_coa_id        => l_adr_accounting_coa_id
52067          , x_value_type_code          => l_adr_value_type_code
52068          , p_side                     => 'NA'
52069    );
52070 
52071    xla_ae_lines_pkg.set_ccid(
52072     p_code_combination_id          => l_ccid
52073   , p_value_type_code              => l_adr_value_type_code
52074   , p_transaction_coa_id           => l_adr_transaction_coa_id
52075   , p_accounting_coa_id            => l_adr_accounting_coa_id
52076   , p_adr_code                     => 'DIST_CCID'
52077   , p_adr_type_code                => 'S'
52078   , p_component_type               => l_component_type
52079   , p_component_code               => l_component_code
52080   , p_component_type_code          => l_component_type_code
52081   , p_component_appl_id            => l_component_appl_id
52082   , p_amb_context_code             => l_amb_context_code
52083   , p_side                         => 'NA'
52084   );
52085 
52086 
52087    --
52088    --
52089    END IF;
52090    --
52091    -- Bug 4922099
52092    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
52093           (NVL(l_enc_upg_option, 'N') = 'O')
52094         ) AND
52095         (l_bflow_method_code = 'PRIOR_ENTRY')
52096       )
52097    THEN
52098       IF
52099       --
52100       1 = 2
52101       --
52102       THEN
52103       xla_accounting_err_pkg.build_message
52104                                     (p_appli_s_name            => 'XLA'
52105                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52106                                     ,p_token_1                 => 'LINE_NUMBER'
52107                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
52108                                     ,p_token_2                 => 'LINE_TYPE_NAME'
52109                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
52110                                                                              l_component_type
52111                                                                             ,l_component_code
52112                                                                             ,l_component_type_code
52113                                                                             ,l_component_appl_id
52114                                                                             ,l_amb_context_code
52115                                                                             ,l_entity_code
52116                                                                             ,l_event_class_code
52117                                                                            )
52118                                     ,p_token_3                 => 'OWNER'
52119                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
52120                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
52121                                                                           ,p_lookup_code    => l_component_type_code
52122                                                                          )
52123                                     ,p_token_4                 => 'PRODUCT_NAME'
52124                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
52125                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
52126                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
52127                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52128                                     ,p_ae_header_id            =>  NULL
52129                                        );
52130 
52131         IF (C_LEVEL_ERROR>= g_log_level) THEN
52132                  trace
52133                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52134                       ,p_level    => C_LEVEL_ERROR
52135                       ,p_module   => l_log_module);
52139    --
52136         END IF;
52137       END IF;
52138    END IF;
52140    --
52141    ------------------------------------------------------------------------------------------------
52142    -- 4219869 Business Flow
52143    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52144    -- Prior Entry.  Currently, the following code is always generated.
52145    ------------------------------------------------------------------------------------------------
52146    XLA_AE_LINES_PKG.ValidateCurrentLine;
52147 
52148    ------------------------------------------------------------------------------------
52149    -- 4219869 Business Flow
52150    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52151    ------------------------------------------------------------------------------------
52152    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52153 
52154    ----------------------------------------------------------------------------------
52155    -- 4219869 Business Flow
52156    -- Update journal entry status -- Need to generate this within IF <condition>
52157    ----------------------------------------------------------------------------------
52158    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52159          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52160          ,p_balance_type_code => l_balance_type_code
52161          );
52162 
52163    -------------------------------------------------------------------------------------------
52164    -- 4262811 - Generate the Accrual Reversal lines
52165    -------------------------------------------------------------------------------------------
52166    BEGIN
52167       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52168                               (g_array_event(p_event_id).array_value_num('header_index'));
52169       IF l_acc_rev_flag IS NULL THEN
52170          l_acc_rev_flag := 'N';
52171       END IF;
52172    EXCEPTION
52173       WHEN OTHERS THEN
52174          l_acc_rev_flag := 'N';
52175    END;
52176    --
52177    IF (l_acc_rev_flag = 'Y') THEN
52178 
52179        -- 4645092  ------------------------------------------------------------------------------
52180        -- To allow MPA report to determine if it should generate report process
52181        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52182        ------------------------------------------------------------------------------------------
52183 
52184        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52185        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52186    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
52187    -- call ADRs
52188    -- Bug 4922099
52189    --
52190    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52191         (NVL(l_actual_upg_option, 'N') = 'O') OR
52192         (NVL(l_enc_upg_option, 'N') = 'O')
52193       )
52194    THEN
52195    NULL;
52196    --
52197    --
52198    
52199   l_ccid := AcctDerRule_20(
52200            p_application_id           => p_application_id
52201          , p_ae_header_id             => l_ae_header_id 
52202 , p_source_22 => p_source_22
52203          , x_transaction_coa_id       => l_adr_transaction_coa_id
52204          , x_accounting_coa_id        => l_adr_accounting_coa_id
52205          , x_value_type_code          => l_adr_value_type_code
52206          , p_side                     => 'NA'
52207    );
52208 
52209    xla_ae_lines_pkg.set_ccid(
52210     p_code_combination_id          => l_ccid
52211   , p_value_type_code              => l_adr_value_type_code
52212   , p_transaction_coa_id           => l_adr_transaction_coa_id
52213   , p_accounting_coa_id            => l_adr_accounting_coa_id
52214   , p_adr_code                     => 'DIST_CCID'
52215   , p_adr_type_code                => 'S'
52216   , p_component_type               => l_component_type
52217   , p_component_code               => l_component_code
52218   , p_component_type_code          => l_component_type_code
52219   , p_component_appl_id            => l_component_appl_id
52220   , p_amb_context_code             => l_amb_context_code
52221   , p_side                         => 'NA'
52222   );
52223 
52224 
52225    --
52226    --
52227    END IF;
52228 
52229        --
52230        -- Update the line information that should be overwritten
52231        --
52232        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52233                                          p_header_num   => 1);
52234        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
52235 
52236        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52237 
52238        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
52239           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52240        END IF;
52241 
52242       --
52243       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52244       --
52245       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52246           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
52247       ELSE
52248           ---------------------------------------------------------------------------------------------------
52249           -- 4262811a Switch Sign
52253                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52250           ---------------------------------------------------------------------------------------------------
52251           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52252           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52254           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52255                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52256           -- 5132302
52257           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52258                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52259 
52260       END IF;
52261 
52262       -- 4955764
52263       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52264       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52265 
52266 
52267       XLA_AE_LINES_PKG.ValidateCurrentLine;
52268       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52269 
52270       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52271                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52272                ,p_balance_type_code => l_balance_type_code);
52273 
52274    END IF;
52275 
52276    -----------------------------------------------------------------------------------------
52277    -- 4262811 Multiperiod Accounting
52278    -----------------------------------------------------------------------------------------
52279      -- No MPA option is assigned.
52280 
52281 
52282 END IF;
52283 END IF;
52284 --
52285 
52286 --
52287 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52288    trace
52289       (p_msg      => 'END of AcctLineType_108'
52290       ,p_level    => C_LEVEL_PROCEDURE
52291       ,p_module   => l_log_module);
52292 END IF;
52293 --
52294 EXCEPTION
52295   WHEN xla_exceptions_pkg.application_exception THEN
52296       RAISE;
52297   WHEN OTHERS THEN
52298        xla_exceptions_pkg.raise_message
52299            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_108');
52300 END AcctLineType_108;
52301 --
52302 
52303 ---------------------------------------
52304 --
52305 -- PRIVATE FUNCTION
52306 --         AcctLineType_109
52307 --
52308 ---------------------------------------
52309 PROCEDURE AcctLineType_109 (
52310   p_application_id        IN NUMBER
52311  ,p_event_id              IN NUMBER
52312  ,p_calculate_acctd_flag  IN VARCHAR2
52313  ,p_calculate_g_l_flag    IN VARCHAR2
52314  ,p_actual_flag           IN OUT VARCHAR2
52315  ,p_balance_type_code     OUT VARCHAR2
52316  ,p_gain_or_loss_ref      OUT VARCHAR2
52317  
52318 --Distribution GL Account
52319  , p_source_22            IN NUMBER
52320 --Distribution Source Type
52321  , p_source_27            IN VARCHAR2
52322 --Distribution Line Identifier
52323  , p_source_29            IN NUMBER
52324 --Distribution Type
52325  , p_source_30            IN VARCHAR2
52326 --Entered Amount
52327  , p_source_31            IN NUMBER
52328 --Currency Code
52329  , p_source_32            IN VARCHAR2
52330 --Applied To Document Accounting Amount
52331  , p_source_36            IN NUMBER
52332 --Transaction Distribution Identifier
52333  , p_source_44            IN NUMBER
52334 --Transaction Distribution Type
52335  , p_source_45            IN VARCHAR2
52336 --Distribution Multi Fund Additional Entry
52337  , p_source_88            IN VARCHAR2
52338 --Applied To Document Exchange Date
52339  , p_source_89            IN DATE
52340 --Cash Receipt Identifier
52341  , p_source_90            IN NUMBER
52342 --Receipt Applied To Application Identifier
52343  , p_source_92            IN NUMBER
52344 --Transaction Entity Code
52345  , p_source_93            IN VARCHAR2
52346 --Transaction Identifier
52347  , p_source_94            IN NUMBER
52348 --Distribution Party Identifier
52349  , p_source_97            IN NUMBER
52350 --Distribution Party Site Id
52351  , p_source_98            IN NUMBER
52352 --Distribution Party Type
52353  , p_source_99            IN VARCHAR2
52354 --Applied To Document Exchange Rate Type
52355  , p_source_100            IN VARCHAR2
52356 --Applied To Document Exchange Rate
52357  , p_source_101            IN NUMBER
52358 )
52359 IS
52360 
52361 l_component_type              VARCHAR2(80);
52362 l_component_code              VARCHAR2(30);
52363 l_component_type_code         VARCHAR2(1);
52364 l_component_appl_id           INTEGER;
52365 l_amb_context_code            VARCHAR2(30);
52366 l_entity_code                 VARCHAR2(30);
52367 l_event_class_code            VARCHAR2(30);
52368 l_ae_header_id                NUMBER;
52369 l_event_type_code             VARCHAR2(30);
52370 l_line_definition_code        VARCHAR2(30);
52371 l_line_definition_owner_code  VARCHAR2(1);
52372 --
52373 -- adr variables
52374 l_segment                     VARCHAR2(30);
52375 l_ccid                        NUMBER;
52376 l_adr_transaction_coa_id      NUMBER;
52377 l_adr_accounting_coa_id       NUMBER;
52378 l_adr_flexfield_segment_code  VARCHAR2(30);
52379 l_adr_flex_value_set_id       NUMBER;
52380 l_adr_value_type_code         VARCHAR2(30);
52384 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52381 l_adr_value_combination_id    NUMBER;
52382 l_adr_value_segment_code      VARCHAR2(30);
52383 
52385 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52386 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52387 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52388 
52389 -- 4262811 Variables ------------------------------------------------------------------------------------------
52390 l_entered_amt_idx             NUMBER;
52391 l_accted_amt_idx              NUMBER;
52392 l_acc_rev_flag                VARCHAR2(1);
52393 l_accrual_line_num            NUMBER;
52394 l_tmp_amt                     NUMBER;
52395 l_acc_rev_natural_side_code   VARCHAR2(1);
52396 
52397 l_num_entries                 NUMBER;
52398 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52399 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52400 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52401 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52402 l_recog_line_1                NUMBER;
52403 l_recog_line_2                NUMBER;
52404 
52405 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52406 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52407 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52408 
52409 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52410 
52411 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52412 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52413 
52414 ---------------------------------------------------------------------------------------------------------------
52415 
52416 
52417 --
52418 -- bulk performance
52419 --
52420 l_balance_type_code           VARCHAR2(1);
52421 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52422 l_log_module                  VARCHAR2(240);
52423 
52424 --
52425 -- Upgrade strategy
52426 --
52427 l_actual_upg_option           VARCHAR2(1);
52428 l_enc_upg_option           VARCHAR2(1);
52429 
52430 --
52431 BEGIN
52432 --
52433 IF g_log_enabled THEN
52434       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_109';
52435 END IF;
52436 --
52437 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52438 
52439       trace
52440          (p_msg      => 'BEGIN of AcctLineType_109'
52441          ,p_level    => C_LEVEL_PROCEDURE
52442          ,p_module   => l_log_module);
52443 
52444 END IF;
52445 --
52446 l_component_type             := 'AMB_JLT';
52447 l_component_code             := 'RCT_EDISC';
52448 l_component_type_code        := 'S';
52449 l_component_appl_id          :=  222;
52450 l_amb_context_code           := 'DEFAULT';
52451 l_entity_code                := 'RECEIPTS';
52452 l_event_class_code           := 'RECEIPT';
52453 l_event_type_code            := 'RECEIPT_ALL';
52454 l_line_definition_owner_code := 'S';
52455 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
52456 --
52457 l_balance_type_code          := 'A';
52458 l_segment                     := NULL;
52459 l_ccid                        := NULL;
52460 l_adr_transaction_coa_id      := NULL;
52461 l_adr_accounting_coa_id       := NULL;
52462 l_adr_flexfield_segment_code  := NULL;
52463 l_adr_flex_value_set_id       := NULL;
52464 l_adr_value_type_code         := NULL;
52465 l_adr_value_combination_id    := NULL;
52466 l_adr_value_segment_code      := NULL;
52467 
52468 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
52469 l_bflow_class_code           := '';    -- 4219869 Business Flow
52470 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52471 l_budgetary_control_flag     := 'N';
52472 
52473 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52474 l_bflow_applied_to_amt       := NULL; -- 5132302
52475 l_entered_amt_idx            := NULL;          -- 4262811
52476 l_accted_amt_idx             := NULL;          -- 4262811
52477 l_acc_rev_flag               := NULL;          -- 4262811
52478 l_accrual_line_num           := NULL;          -- 4262811
52479 l_tmp_amt                    := NULL;          -- 4262811
52480 --
52481  
52482 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52483     l_balance_type_code <> 'B' THEN
52484 IF NVL(p_source_27,'
52485 ') =  'EDISC' AND 
52486 NVL(p_source_88,'
52487 ') =  'N'
52488  THEN 
52489 
52490    --
52491    XLA_AE_LINES_PKG.SetNewLine;
52492 
52493    p_balance_type_code          := l_balance_type_code;
52494    -- set the flag so later we will know whether the gain loss line needs to be created
52495    
52496    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52497      p_actual_flag :='A';
52498    END IF;
52499 
52500    --
52501    -- bulk performance
52502    --
52503    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52504                                       p_header_num   => 0); -- 4262811
52505    --
52506    -- set accounting line options
52507    --
52508    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52509            p_natural_side_code          => 'C'
52513          , p_switch_side_flag           => 'Y'
52510          , p_gain_or_loss_flag          => 'N'
52511          , p_gl_transfer_mode_code      => 'S'
52512          , p_acct_entry_type_code       => 'A'
52514          , p_merge_duplicate_code       => 'A'
52515          );
52516    --
52517    l_acc_rev_natural_side_code := 'D';  -- 4262811
52518    -- 
52519    --
52520    -- set accounting line type info
52521    --
52522    xla_ae_lines_pkg.SetAcctLineType
52523       (p_component_type             => l_component_type
52524       ,p_event_type_code            => l_event_type_code
52525       ,p_line_definition_owner_code => l_line_definition_owner_code
52526       ,p_line_definition_code       => l_line_definition_code
52527       ,p_accounting_line_code       => l_component_code
52528       ,p_accounting_line_type_code  => l_component_type_code
52529       ,p_accounting_line_appl_id    => l_component_appl_id
52530       ,p_amb_context_code           => l_amb_context_code
52531       ,p_entity_code                => l_entity_code
52532       ,p_event_class_code           => l_event_class_code);
52533    --
52534    -- set accounting class
52535    --
52536    xla_ae_lines_pkg.SetAcctClass(
52537            p_accounting_class_code  => 'EDISC'
52538          , p_ae_header_id           => l_ae_header_id
52539          );
52540 
52541    --
52542    -- set rounding class
52543    --
52544    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52545                       'RECEIVABLE';
52546 
52547    --
52548    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52549    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52550    --
52551    -- bulk performance
52552    --
52553    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52554 
52555    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52556       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52557 
52558    -- 4955764
52559    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52560       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52561 
52562    -- 4458381 Public Sector Enh
52563    
52564    --
52565    -- set accounting attributes for the line type
52566    --
52567    l_entered_amt_idx := 8;
52568    l_accted_amt_idx  := 13;
52569    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
52570    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
52571    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
52572    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
52573    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
52574    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
52575    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
52576    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
52577    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
52578    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
52579    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
52580    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
52581    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
52582    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
52583    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
52584    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
52585    l_rec_acct_attrs.array_num_value(8)  := p_source_31;
52586    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
52587    l_rec_acct_attrs.array_char_value(9)  := p_source_32;
52588    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
52589    l_rec_acct_attrs.array_date_value(10)  := p_source_89;
52590    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
52591    l_rec_acct_attrs.array_num_value(11)  := p_source_101;
52592    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
52593    l_rec_acct_attrs.array_char_value(12)  := p_source_100;
52594    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
52595    l_rec_acct_attrs.array_num_value(13)  := p_source_36;
52596    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
52597    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
52598    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
52599    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
52600    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
52601    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
52602 
52603    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
52604    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
52605 
52606    ---------------------------------------------------------------------------------------------------------------
52607    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
52608    ---------------------------------------------------------------------------------------------------------------
52609    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52610 
52611    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52615          (p_source_code         => 'LEDGER_CATEGORY_CODE'
52612    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52613 
52614    IF xla_accounting_cache_pkg.GetValueChar
52616          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
52617    AND l_bflow_method_code = 'PRIOR_ENTRY'
52618 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
52619    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
52620          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
52621        )
52622    THEN
52623          xla_ae_lines_pkg.BflowUpgEntry
52624            (p_business_method_code    => l_bflow_method_code
52625            ,p_business_class_code     => l_bflow_class_code
52626            ,p_balance_type            => l_balance_type_code);
52627    ELSE
52628       NULL;
52629 -- No business flow processing for business flow method of NONE.
52630    END IF;
52631 
52632    --
52633    -- call analytical criteria
52634    --
52635    
52636 
52637 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
52638 xla_ae_lines_pkg.SetAnalyticalCriteria(
52639    p_analytical_criterion_name    => 'Check Id'
52640  , p_analytical_criterion_owner   => 'S'
52641  , p_analytical_criterion_code    => 'CHECK_ID'
52642  , p_amb_context_code             => 'DEFAULT'
52643  , p_balancing_flag               => 'N'
52644  
52645  , p_analytical_detail_char_1    =>  NULL
52646  , p_analytical_detail_num_1     =>  p_source_90
52647  , p_analytical_detail_date_1    =>  NULL
52648 
52649  , p_ae_header_id                 => l_ae_header_id
52650 )
52651 ;
52652 --
52653 
52654    --
52655    -- call description
52656    --
52657    -- No description or it is inherited.
52658    --
52659    -- call ADRs
52660    -- Bug 4922099
52661    --
52662    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52663         (NVL(l_actual_upg_option, 'N') = 'O') OR
52664         (NVL(l_enc_upg_option, 'N') = 'O')
52665       )
52666    THEN
52667    NULL;
52668    --
52669    --
52670    
52671   l_ccid := AcctDerRule_20(
52672            p_application_id           => p_application_id
52673          , p_ae_header_id             => l_ae_header_id 
52674 , p_source_22 => p_source_22
52675          , x_transaction_coa_id       => l_adr_transaction_coa_id
52676          , x_accounting_coa_id        => l_adr_accounting_coa_id
52677          , x_value_type_code          => l_adr_value_type_code
52678          , p_side                     => 'NA'
52679    );
52680 
52681    xla_ae_lines_pkg.set_ccid(
52682     p_code_combination_id          => l_ccid
52683   , p_value_type_code              => l_adr_value_type_code
52684   , p_transaction_coa_id           => l_adr_transaction_coa_id
52685   , p_accounting_coa_id            => l_adr_accounting_coa_id
52686   , p_adr_code                     => 'DIST_CCID'
52687   , p_adr_type_code                => 'S'
52688   , p_component_type               => l_component_type
52689   , p_component_code               => l_component_code
52690   , p_component_type_code          => l_component_type_code
52691   , p_component_appl_id            => l_component_appl_id
52692   , p_amb_context_code             => l_amb_context_code
52693   , p_side                         => 'NA'
52694   );
52695 
52696 
52697    --
52698    --
52699    END IF;
52700    --
52701    -- Bug 4922099
52702    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
52703           (NVL(l_enc_upg_option, 'N') = 'O')
52704         ) AND
52705         (l_bflow_method_code = 'PRIOR_ENTRY')
52706       )
52707    THEN
52708       IF
52709       --
52710       1 = 2
52711       --
52712       THEN
52713       xla_accounting_err_pkg.build_message
52714                                     (p_appli_s_name            => 'XLA'
52715                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52716                                     ,p_token_1                 => 'LINE_NUMBER'
52717                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
52718                                     ,p_token_2                 => 'LINE_TYPE_NAME'
52719                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
52720                                                                              l_component_type
52721                                                                             ,l_component_code
52722                                                                             ,l_component_type_code
52723                                                                             ,l_component_appl_id
52724                                                                             ,l_amb_context_code
52725                                                                             ,l_entity_code
52726                                                                             ,l_event_class_code
52727                                                                            )
52728                                     ,p_token_3                 => 'OWNER'
52729                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
52730                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
52734                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
52731                                                                           ,p_lookup_code    => l_component_type_code
52732                                                                          )
52733                                     ,p_token_4                 => 'PRODUCT_NAME'
52735                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
52736                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
52737                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52738                                     ,p_ae_header_id            =>  NULL
52739                                        );
52740 
52741         IF (C_LEVEL_ERROR>= g_log_level) THEN
52742                  trace
52743                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52744                       ,p_level    => C_LEVEL_ERROR
52745                       ,p_module   => l_log_module);
52746         END IF;
52747       END IF;
52748    END IF;
52749    --
52750    --
52751    ------------------------------------------------------------------------------------------------
52752    -- 4219869 Business Flow
52753    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52754    -- Prior Entry.  Currently, the following code is always generated.
52755    ------------------------------------------------------------------------------------------------
52756    XLA_AE_LINES_PKG.ValidateCurrentLine;
52757 
52758    ------------------------------------------------------------------------------------
52759    -- 4219869 Business Flow
52760    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52761    ------------------------------------------------------------------------------------
52762    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52763 
52764    ----------------------------------------------------------------------------------
52765    -- 4219869 Business Flow
52766    -- Update journal entry status -- Need to generate this within IF <condition>
52767    ----------------------------------------------------------------------------------
52768    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52769          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52770          ,p_balance_type_code => l_balance_type_code
52771          );
52772 
52773    -------------------------------------------------------------------------------------------
52774    -- 4262811 - Generate the Accrual Reversal lines
52775    -------------------------------------------------------------------------------------------
52776    BEGIN
52777       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52778                               (g_array_event(p_event_id).array_value_num('header_index'));
52779       IF l_acc_rev_flag IS NULL THEN
52780          l_acc_rev_flag := 'N';
52781       END IF;
52782    EXCEPTION
52783       WHEN OTHERS THEN
52784          l_acc_rev_flag := 'N';
52785    END;
52786    --
52787    IF (l_acc_rev_flag = 'Y') THEN
52788 
52789        -- 4645092  ------------------------------------------------------------------------------
52790        -- To allow MPA report to determine if it should generate report process
52791        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52792        ------------------------------------------------------------------------------------------
52793 
52794        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52795        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52796    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
52797    -- call ADRs
52798    -- Bug 4922099
52799    --
52800    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52801         (NVL(l_actual_upg_option, 'N') = 'O') OR
52802         (NVL(l_enc_upg_option, 'N') = 'O')
52803       )
52804    THEN
52805    NULL;
52806    --
52807    --
52808    
52809   l_ccid := AcctDerRule_20(
52810            p_application_id           => p_application_id
52811          , p_ae_header_id             => l_ae_header_id 
52812 , p_source_22 => p_source_22
52813          , x_transaction_coa_id       => l_adr_transaction_coa_id
52814          , x_accounting_coa_id        => l_adr_accounting_coa_id
52815          , x_value_type_code          => l_adr_value_type_code
52816          , p_side                     => 'NA'
52817    );
52818 
52819    xla_ae_lines_pkg.set_ccid(
52820     p_code_combination_id          => l_ccid
52821   , p_value_type_code              => l_adr_value_type_code
52822   , p_transaction_coa_id           => l_adr_transaction_coa_id
52823   , p_accounting_coa_id            => l_adr_accounting_coa_id
52824   , p_adr_code                     => 'DIST_CCID'
52825   , p_adr_type_code                => 'S'
52826   , p_component_type               => l_component_type
52827   , p_component_code               => l_component_code
52828   , p_component_type_code          => l_component_type_code
52829   , p_component_appl_id            => l_component_appl_id
52830   , p_amb_context_code             => l_amb_context_code
52831   , p_side                         => 'NA'
52832   );
52833 
52834 
52835    --
52836    --
52837    END IF;
52838 
52839        --
52840        -- Update the line information that should be overwritten
52841        --
52845 
52842        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52843                                          p_header_num   => 1);
52844        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
52846        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52847 
52848        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
52849           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52850        END IF;
52851 
52852       --
52853       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52854       --
52855       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52856           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
52857       ELSE
52858           ---------------------------------------------------------------------------------------------------
52859           -- 4262811a Switch Sign
52860           ---------------------------------------------------------------------------------------------------
52861           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52862           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52863                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52864           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52865                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52866           -- 5132302
52867           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52868                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52869 
52870       END IF;
52871 
52872       -- 4955764
52873       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52874       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52875 
52876 
52877       XLA_AE_LINES_PKG.ValidateCurrentLine;
52878       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52879 
52880       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52881                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52882                ,p_balance_type_code => l_balance_type_code);
52883 
52884    END IF;
52885 
52886    -----------------------------------------------------------------------------------------
52887    -- 4262811 Multiperiod Accounting
52888    -----------------------------------------------------------------------------------------
52889      -- No MPA option is assigned.
52890 
52891 
52892 END IF;
52893 END IF;
52894 --
52895 
52896 --
52897 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52898    trace
52899       (p_msg      => 'END of AcctLineType_109'
52900       ,p_level    => C_LEVEL_PROCEDURE
52901       ,p_module   => l_log_module);
52902 END IF;
52903 --
52904 EXCEPTION
52905   WHEN xla_exceptions_pkg.application_exception THEN
52906       RAISE;
52907   WHEN OTHERS THEN
52908        xla_exceptions_pkg.raise_message
52909            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_109');
52910 END AcctLineType_109;
52911 --
52912 
52913 ---------------------------------------
52914 --
52915 -- PRIVATE FUNCTION
52916 --         AcctLineType_110
52917 --
52918 ---------------------------------------
52919 PROCEDURE AcctLineType_110 (
52920   p_application_id        IN NUMBER
52921  ,p_event_id              IN NUMBER
52922  ,p_calculate_acctd_flag  IN VARCHAR2
52923  ,p_calculate_g_l_flag    IN VARCHAR2
52924  ,p_actual_flag           IN OUT VARCHAR2
52925  ,p_balance_type_code     OUT VARCHAR2
52926  ,p_gain_or_loss_ref      OUT VARCHAR2
52927  
52928 --Distribution GL Account
52929  , p_source_22            IN NUMBER
52930 --Distribution Source Type
52931  , p_source_27            IN VARCHAR2
52932 --Distribution Line Identifier
52933  , p_source_29            IN NUMBER
52934 --Distribution Type
52935  , p_source_30            IN VARCHAR2
52936 --Entered Amount
52937  , p_source_31            IN NUMBER
52938 --Currency Code
52939  , p_source_32            IN VARCHAR2
52940 --Applied To Document Accounting Amount
52941  , p_source_36            IN NUMBER
52942 --Transaction Distribution Identifier
52943  , p_source_44            IN NUMBER
52944 --Transaction Distribution Type
52945  , p_source_45            IN VARCHAR2
52946 --Distribution Multi Fund Additional Entry
52947  , p_source_88            IN VARCHAR2
52948 --Applied To Document Exchange Date
52949  , p_source_89            IN DATE
52950 --Cash Receipt Identifier
52951  , p_source_90            IN NUMBER
52952 --Receipt Applied To Application Identifier
52953  , p_source_92            IN NUMBER
52954 --Transaction Entity Code
52955  , p_source_93            IN VARCHAR2
52956 --Transaction Identifier
52957  , p_source_94            IN NUMBER
52958 --Distribution Party Identifier
52959  , p_source_97            IN NUMBER
52960 --Distribution Party Site Id
52961  , p_source_98            IN NUMBER
52962 --Distribution Party Type
52963  , p_source_99            IN VARCHAR2
52964 --Applied To Document Exchange Rate Type
52968 )
52965  , p_source_100            IN VARCHAR2
52966 --Applied To Document Exchange Rate
52967  , p_source_101            IN NUMBER
52969 IS
52970 
52971 l_component_type              VARCHAR2(80);
52972 l_component_code              VARCHAR2(30);
52973 l_component_type_code         VARCHAR2(1);
52974 l_component_appl_id           INTEGER;
52975 l_amb_context_code            VARCHAR2(30);
52976 l_entity_code                 VARCHAR2(30);
52977 l_event_class_code            VARCHAR2(30);
52978 l_ae_header_id                NUMBER;
52979 l_event_type_code             VARCHAR2(30);
52980 l_line_definition_code        VARCHAR2(30);
52981 l_line_definition_owner_code  VARCHAR2(1);
52982 --
52983 -- adr variables
52984 l_segment                     VARCHAR2(30);
52985 l_ccid                        NUMBER;
52986 l_adr_transaction_coa_id      NUMBER;
52987 l_adr_accounting_coa_id       NUMBER;
52988 l_adr_flexfield_segment_code  VARCHAR2(30);
52989 l_adr_flex_value_set_id       NUMBER;
52990 l_adr_value_type_code         VARCHAR2(30);
52991 l_adr_value_combination_id    NUMBER;
52992 l_adr_value_segment_code      VARCHAR2(30);
52993 
52994 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52995 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52996 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52997 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52998 
52999 -- 4262811 Variables ------------------------------------------------------------------------------------------
53000 l_entered_amt_idx             NUMBER;
53001 l_accted_amt_idx              NUMBER;
53002 l_acc_rev_flag                VARCHAR2(1);
53003 l_accrual_line_num            NUMBER;
53004 l_tmp_amt                     NUMBER;
53005 l_acc_rev_natural_side_code   VARCHAR2(1);
53006 
53007 l_num_entries                 NUMBER;
53008 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
53009 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
53010 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
53011 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
53012 l_recog_line_1                NUMBER;
53013 l_recog_line_2                NUMBER;
53014 
53015 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
53016 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
53017 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
53018 
53019 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53020 
53021 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
53022 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
53023 
53024 ---------------------------------------------------------------------------------------------------------------
53025 
53026 
53027 --
53028 -- bulk performance
53029 --
53030 l_balance_type_code           VARCHAR2(1);
53031 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
53032 l_log_module                  VARCHAR2(240);
53033 
53034 --
53035 -- Upgrade strategy
53036 --
53037 l_actual_upg_option           VARCHAR2(1);
53038 l_enc_upg_option           VARCHAR2(1);
53039 
53040 --
53041 BEGIN
53042 --
53043 IF g_log_enabled THEN
53044       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_110';
53045 END IF;
53046 --
53047 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53048 
53049       trace
53050          (p_msg      => 'BEGIN of AcctLineType_110'
53051          ,p_level    => C_LEVEL_PROCEDURE
53052          ,p_module   => l_log_module);
53053 
53054 END IF;
53055 --
53056 l_component_type             := 'AMB_JLT';
53057 l_component_code             := 'RCT_EDISC_NON_REC_TAX';
53058 l_component_type_code        := 'S';
53059 l_component_appl_id          :=  222;
53060 l_amb_context_code           := 'DEFAULT';
53061 l_entity_code                := 'RECEIPTS';
53062 l_event_class_code           := 'RECEIPT';
53063 l_event_type_code            := 'RECEIPT_ALL';
53064 l_line_definition_owner_code := 'S';
53065 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
53066 --
53067 l_balance_type_code          := 'A';
53068 l_segment                     := NULL;
53069 l_ccid                        := NULL;
53070 l_adr_transaction_coa_id      := NULL;
53071 l_adr_accounting_coa_id       := NULL;
53072 l_adr_flexfield_segment_code  := NULL;
53073 l_adr_flex_value_set_id       := NULL;
53074 l_adr_value_type_code         := NULL;
53075 l_adr_value_combination_id    := NULL;
53076 l_adr_value_segment_code      := NULL;
53077 
53078 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
53079 l_bflow_class_code           := '';    -- 4219869 Business Flow
53080 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
53081 l_budgetary_control_flag     := 'N';
53082 
53083 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
53084 l_bflow_applied_to_amt       := NULL; -- 5132302
53085 l_entered_amt_idx            := NULL;          -- 4262811
53086 l_accted_amt_idx             := NULL;          -- 4262811
53087 l_acc_rev_flag               := NULL;          -- 4262811
53088 l_accrual_line_num           := NULL;          -- 4262811
53089 l_tmp_amt                    := NULL;          -- 4262811
53093     l_balance_type_code <> 'B' THEN
53090 --
53091  
53092 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
53094 IF NVL(p_source_27,'
53095 ') =  'EDISC_NON_REC_TAX' AND 
53096 NVL(p_source_88,'
53097 ') =  'N'
53098  THEN 
53099 
53100    --
53101    XLA_AE_LINES_PKG.SetNewLine;
53102 
53103    p_balance_type_code          := l_balance_type_code;
53104    -- set the flag so later we will know whether the gain loss line needs to be created
53105    
53106    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
53107      p_actual_flag :='A';
53108    END IF;
53109 
53110    --
53111    -- bulk performance
53112    --
53113    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
53114                                       p_header_num   => 0); -- 4262811
53115    --
53116    -- set accounting line options
53117    --
53118    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
53119            p_natural_side_code          => 'C'
53120          , p_gain_or_loss_flag          => 'N'
53121          , p_gl_transfer_mode_code      => 'S'
53122          , p_acct_entry_type_code       => 'A'
53123          , p_switch_side_flag           => 'Y'
53124          , p_merge_duplicate_code       => 'A'
53125          );
53126    --
53127    l_acc_rev_natural_side_code := 'D';  -- 4262811
53128    -- 
53129    --
53130    -- set accounting line type info
53131    --
53132    xla_ae_lines_pkg.SetAcctLineType
53133       (p_component_type             => l_component_type
53134       ,p_event_type_code            => l_event_type_code
53135       ,p_line_definition_owner_code => l_line_definition_owner_code
53136       ,p_line_definition_code       => l_line_definition_code
53137       ,p_accounting_line_code       => l_component_code
53138       ,p_accounting_line_type_code  => l_component_type_code
53139       ,p_accounting_line_appl_id    => l_component_appl_id
53140       ,p_amb_context_code           => l_amb_context_code
53141       ,p_entity_code                => l_entity_code
53142       ,p_event_class_code           => l_event_class_code);
53143    --
53144    -- set accounting class
53145    --
53146    xla_ae_lines_pkg.SetAcctClass(
53147            p_accounting_class_code  => 'EDISC_NON_REC_TAX'
53148          , p_ae_header_id           => l_ae_header_id
53149          );
53150 
53151    --
53152    -- set rounding class
53153    --
53154    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
53155                       'RECEIVABLE';
53156 
53157    --
53158    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
53159    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
53160    --
53161    -- bulk performance
53162    --
53163    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
53164 
53165    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
53166       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
53167 
53168    -- 4955764
53169    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53170       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
53171 
53172    -- 4458381 Public Sector Enh
53173    
53174    --
53175    -- set accounting attributes for the line type
53176    --
53177    l_entered_amt_idx := 8;
53178    l_accted_amt_idx  := 13;
53179    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
53180    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
53181    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
53182    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
53183    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
53184    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
53185    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
53186    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
53187    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
53188    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
53189    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
53190    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
53191    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
53192    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
53193    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
53194    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
53195    l_rec_acct_attrs.array_num_value(8)  := p_source_31;
53196    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
53197    l_rec_acct_attrs.array_char_value(9)  := p_source_32;
53198    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
53199    l_rec_acct_attrs.array_date_value(10)  := p_source_89;
53200    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
53201    l_rec_acct_attrs.array_num_value(11)  := p_source_101;
53202    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
53203    l_rec_acct_attrs.array_char_value(12)  := p_source_100;
53204    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
53205    l_rec_acct_attrs.array_num_value(13)  := p_source_36;
53209    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
53206    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
53207    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
53208    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
53210    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
53211    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
53212 
53213    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53214    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53215 
53216    ---------------------------------------------------------------------------------------------------------------
53217    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53218    ---------------------------------------------------------------------------------------------------------------
53219    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53220 
53221    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53222    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53223 
53224    IF xla_accounting_cache_pkg.GetValueChar
53225          (p_source_code         => 'LEDGER_CATEGORY_CODE'
53226          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53227    AND l_bflow_method_code = 'PRIOR_ENTRY'
53228 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53229    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53230          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53231        )
53232    THEN
53233          xla_ae_lines_pkg.BflowUpgEntry
53234            (p_business_method_code    => l_bflow_method_code
53235            ,p_business_class_code     => l_bflow_class_code
53236            ,p_balance_type            => l_balance_type_code);
53237    ELSE
53238       NULL;
53239 -- No business flow processing for business flow method of NONE.
53240    END IF;
53241 
53242    --
53243    -- call analytical criteria
53244    --
53245    
53246 
53247 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
53248 xla_ae_lines_pkg.SetAnalyticalCriteria(
53249    p_analytical_criterion_name    => 'Check Id'
53250  , p_analytical_criterion_owner   => 'S'
53251  , p_analytical_criterion_code    => 'CHECK_ID'
53252  , p_amb_context_code             => 'DEFAULT'
53253  , p_balancing_flag               => 'N'
53254  
53255  , p_analytical_detail_char_1    =>  NULL
53256  , p_analytical_detail_num_1     =>  p_source_90
53257  , p_analytical_detail_date_1    =>  NULL
53258 
53259  , p_ae_header_id                 => l_ae_header_id
53260 )
53261 ;
53262 --
53263 
53264    --
53265    -- call description
53266    --
53267    -- No description or it is inherited.
53268    --
53269    -- call ADRs
53270    -- Bug 4922099
53271    --
53272    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53273         (NVL(l_actual_upg_option, 'N') = 'O') OR
53274         (NVL(l_enc_upg_option, 'N') = 'O')
53275       )
53276    THEN
53277    NULL;
53278    --
53279    --
53280    
53281   l_ccid := AcctDerRule_20(
53282            p_application_id           => p_application_id
53283          , p_ae_header_id             => l_ae_header_id 
53284 , p_source_22 => p_source_22
53285          , x_transaction_coa_id       => l_adr_transaction_coa_id
53286          , x_accounting_coa_id        => l_adr_accounting_coa_id
53287          , x_value_type_code          => l_adr_value_type_code
53288          , p_side                     => 'NA'
53289    );
53290 
53291    xla_ae_lines_pkg.set_ccid(
53292     p_code_combination_id          => l_ccid
53293   , p_value_type_code              => l_adr_value_type_code
53294   , p_transaction_coa_id           => l_adr_transaction_coa_id
53295   , p_accounting_coa_id            => l_adr_accounting_coa_id
53296   , p_adr_code                     => 'DIST_CCID'
53297   , p_adr_type_code                => 'S'
53298   , p_component_type               => l_component_type
53299   , p_component_code               => l_component_code
53300   , p_component_type_code          => l_component_type_code
53301   , p_component_appl_id            => l_component_appl_id
53302   , p_amb_context_code             => l_amb_context_code
53303   , p_side                         => 'NA'
53304   );
53305 
53306 
53307    --
53308    --
53309    END IF;
53310    --
53311    -- Bug 4922099
53312    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53313           (NVL(l_enc_upg_option, 'N') = 'O')
53314         ) AND
53315         (l_bflow_method_code = 'PRIOR_ENTRY')
53316       )
53317    THEN
53318       IF
53319       --
53320       1 = 2
53321       --
53322       THEN
53323       xla_accounting_err_pkg.build_message
53324                                     (p_appli_s_name            => 'XLA'
53325                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53326                                     ,p_token_1                 => 'LINE_NUMBER'
53327                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53328                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53329                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53333                                                                             ,l_component_appl_id
53330                                                                              l_component_type
53331                                                                             ,l_component_code
53332                                                                             ,l_component_type_code
53334                                                                             ,l_amb_context_code
53335                                                                             ,l_entity_code
53336                                                                             ,l_event_class_code
53337                                                                            )
53338                                     ,p_token_3                 => 'OWNER'
53339                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53340                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53341                                                                           ,p_lookup_code    => l_component_type_code
53342                                                                          )
53343                                     ,p_token_4                 => 'PRODUCT_NAME'
53344                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53345                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53346                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53347                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53348                                     ,p_ae_header_id            =>  NULL
53349                                        );
53350 
53351         IF (C_LEVEL_ERROR>= g_log_level) THEN
53352                  trace
53353                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53354                       ,p_level    => C_LEVEL_ERROR
53355                       ,p_module   => l_log_module);
53356         END IF;
53357       END IF;
53358    END IF;
53359    --
53360    --
53361    ------------------------------------------------------------------------------------------------
53362    -- 4219869 Business Flow
53363    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53364    -- Prior Entry.  Currently, the following code is always generated.
53365    ------------------------------------------------------------------------------------------------
53366    XLA_AE_LINES_PKG.ValidateCurrentLine;
53367 
53368    ------------------------------------------------------------------------------------
53369    -- 4219869 Business Flow
53370    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53371    ------------------------------------------------------------------------------------
53372    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53373 
53374    ----------------------------------------------------------------------------------
53375    -- 4219869 Business Flow
53376    -- Update journal entry status -- Need to generate this within IF <condition>
53377    ----------------------------------------------------------------------------------
53378    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53379          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53380          ,p_balance_type_code => l_balance_type_code
53381          );
53382 
53383    -------------------------------------------------------------------------------------------
53384    -- 4262811 - Generate the Accrual Reversal lines
53385    -------------------------------------------------------------------------------------------
53386    BEGIN
53387       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53388                               (g_array_event(p_event_id).array_value_num('header_index'));
53389       IF l_acc_rev_flag IS NULL THEN
53390          l_acc_rev_flag := 'N';
53391       END IF;
53392    EXCEPTION
53393       WHEN OTHERS THEN
53394          l_acc_rev_flag := 'N';
53395    END;
53396    --
53397    IF (l_acc_rev_flag = 'Y') THEN
53398 
53399        -- 4645092  ------------------------------------------------------------------------------
53400        -- To allow MPA report to determine if it should generate report process
53401        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53402        ------------------------------------------------------------------------------------------
53403 
53404        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53405        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53406    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
53407    -- call ADRs
53408    -- Bug 4922099
53409    --
53410    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53411         (NVL(l_actual_upg_option, 'N') = 'O') OR
53412         (NVL(l_enc_upg_option, 'N') = 'O')
53413       )
53414    THEN
53415    NULL;
53416    --
53417    --
53418    
53419   l_ccid := AcctDerRule_20(
53420            p_application_id           => p_application_id
53421          , p_ae_header_id             => l_ae_header_id 
53422 , p_source_22 => p_source_22
53423          , x_transaction_coa_id       => l_adr_transaction_coa_id
53424          , x_accounting_coa_id        => l_adr_accounting_coa_id
53425          , x_value_type_code          => l_adr_value_type_code
53426          , p_side                     => 'NA'
53427    );
53428 
53432   , p_transaction_coa_id           => l_adr_transaction_coa_id
53429    xla_ae_lines_pkg.set_ccid(
53430     p_code_combination_id          => l_ccid
53431   , p_value_type_code              => l_adr_value_type_code
53433   , p_accounting_coa_id            => l_adr_accounting_coa_id
53434   , p_adr_code                     => 'DIST_CCID'
53435   , p_adr_type_code                => 'S'
53436   , p_component_type               => l_component_type
53437   , p_component_code               => l_component_code
53438   , p_component_type_code          => l_component_type_code
53439   , p_component_appl_id            => l_component_appl_id
53440   , p_amb_context_code             => l_amb_context_code
53441   , p_side                         => 'NA'
53442   );
53443 
53444 
53445    --
53446    --
53447    END IF;
53448 
53449        --
53450        -- Update the line information that should be overwritten
53451        --
53452        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53453                                          p_header_num   => 1);
53454        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53455 
53456        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53457 
53458        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53459           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53460        END IF;
53461 
53462       --
53463       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53464       --
53465       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53466           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53467       ELSE
53468           ---------------------------------------------------------------------------------------------------
53469           -- 4262811a Switch Sign
53470           ---------------------------------------------------------------------------------------------------
53471           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53472           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53473                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53474           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53475                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53476           -- 5132302
53477           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53478                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53479 
53480       END IF;
53481 
53482       -- 4955764
53483       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53484       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53485 
53486 
53487       XLA_AE_LINES_PKG.ValidateCurrentLine;
53488       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53489 
53490       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53491                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53492                ,p_balance_type_code => l_balance_type_code);
53493 
53494    END IF;
53495 
53496    -----------------------------------------------------------------------------------------
53497    -- 4262811 Multiperiod Accounting
53498    -----------------------------------------------------------------------------------------
53499      -- No MPA option is assigned.
53500 
53501 
53502 END IF;
53503 END IF;
53504 --
53505 
53506 --
53507 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53508    trace
53509       (p_msg      => 'END of AcctLineType_110'
53510       ,p_level    => C_LEVEL_PROCEDURE
53511       ,p_module   => l_log_module);
53512 END IF;
53513 --
53514 EXCEPTION
53515   WHEN xla_exceptions_pkg.application_exception THEN
53516       RAISE;
53517   WHEN OTHERS THEN
53518        xla_exceptions_pkg.raise_message
53519            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_110');
53520 END AcctLineType_110;
53521 --
53522 
53523 ---------------------------------------
53524 --
53525 -- PRIVATE FUNCTION
53526 --         AcctLineType_111
53527 --
53528 ---------------------------------------
53529 PROCEDURE AcctLineType_111 (
53530   p_application_id        IN NUMBER
53531  ,p_event_id              IN NUMBER
53532  ,p_calculate_acctd_flag  IN VARCHAR2
53533  ,p_calculate_g_l_flag    IN VARCHAR2
53534  ,p_actual_flag           IN OUT VARCHAR2
53535  ,p_balance_type_code     OUT VARCHAR2
53536  ,p_gain_or_loss_ref      OUT VARCHAR2
53537  
53538 --System Gain Account
53539  , p_source_24            IN NUMBER
53540 --System Loss Account
53541  , p_source_25            IN NUMBER
53542 --Distribution Line Identifier
53543  , p_source_29            IN NUMBER
53544 --Distribution Type
53545  , p_source_30            IN VARCHAR2
53546 --Accounting Amount
53547  , p_source_40            IN NUMBER
53548 --Cash Receipt Identifier
53549  , p_source_90            IN NUMBER
53550 --Distribution Party Identifier
53551  , p_source_97            IN NUMBER
53555  , p_source_99            IN VARCHAR2
53552 --Distribution Party Site Id
53553  , p_source_98            IN NUMBER
53554 --Distribution Party Type
53556 )
53557 IS
53558 
53559 l_component_type              VARCHAR2(80);
53560 l_component_code              VARCHAR2(30);
53561 l_component_type_code         VARCHAR2(1);
53562 l_component_appl_id           INTEGER;
53563 l_amb_context_code            VARCHAR2(30);
53564 l_entity_code                 VARCHAR2(30);
53565 l_event_class_code            VARCHAR2(30);
53566 l_ae_header_id                NUMBER;
53567 l_event_type_code             VARCHAR2(30);
53568 l_line_definition_code        VARCHAR2(30);
53569 l_line_definition_owner_code  VARCHAR2(1);
53570 --
53571 -- adr variables
53572 l_segment                     VARCHAR2(30);
53573 l_ccid                        NUMBER;
53574 l_adr_transaction_coa_id      NUMBER;
53575 l_adr_accounting_coa_id       NUMBER;
53576 l_adr_flexfield_segment_code  VARCHAR2(30);
53577 l_adr_flex_value_set_id       NUMBER;
53578 l_adr_value_type_code         VARCHAR2(30);
53579 l_adr_value_combination_id    NUMBER;
53580 l_adr_value_segment_code      VARCHAR2(30);
53581 
53582 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
53583 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
53584 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
53585 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
53586 
53587 -- 4262811 Variables ------------------------------------------------------------------------------------------
53588 l_entered_amt_idx             NUMBER;
53589 l_accted_amt_idx              NUMBER;
53590 l_acc_rev_flag                VARCHAR2(1);
53591 l_accrual_line_num            NUMBER;
53592 l_tmp_amt                     NUMBER;
53593 l_acc_rev_natural_side_code   VARCHAR2(1);
53594 
53595 l_num_entries                 NUMBER;
53596 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
53597 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
53598 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
53599 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
53600 l_recog_line_1                NUMBER;
53601 l_recog_line_2                NUMBER;
53602 
53603 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
53604 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
53605 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
53606 
53607 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53608 
53609 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
53610 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
53611 
53612 ---------------------------------------------------------------------------------------------------------------
53613 
53614 
53615 --
53616 -- bulk performance
53617 --
53618 l_balance_type_code           VARCHAR2(1);
53619 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
53620 l_log_module                  VARCHAR2(240);
53621 
53622 --
53623 -- Upgrade strategy
53624 --
53625 l_actual_upg_option           VARCHAR2(1);
53626 l_enc_upg_option           VARCHAR2(1);
53627 
53628 --
53629 BEGIN
53630 --
53631 IF g_log_enabled THEN
53632       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_111';
53633 END IF;
53634 --
53635 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53636 
53637       trace
53638          (p_msg      => 'BEGIN of AcctLineType_111'
53639          ,p_level    => C_LEVEL_PROCEDURE
53640          ,p_module   => l_log_module);
53641 
53642 END IF;
53643 --
53644 l_component_type             := 'AMB_JLT';
53645 l_component_code             := 'RCT_EXCH_GAIN_LOSS';
53646 l_component_type_code        := 'S';
53647 l_component_appl_id          :=  222;
53648 l_amb_context_code           := 'DEFAULT';
53649 l_entity_code                := 'RECEIPTS';
53650 l_event_class_code           := 'RECEIPT';
53651 l_event_type_code            := 'RECEIPT_ALL';
53652 l_line_definition_owner_code := 'S';
53653 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
53654 --
53655 l_balance_type_code          := 'A';
53656 l_segment                     := NULL;
53657 l_ccid                        := NULL;
53658 l_adr_transaction_coa_id      := NULL;
53659 l_adr_accounting_coa_id       := NULL;
53660 l_adr_flexfield_segment_code  := NULL;
53661 l_adr_flex_value_set_id       := NULL;
53662 l_adr_value_type_code         := NULL;
53663 l_adr_value_combination_id    := NULL;
53664 l_adr_value_segment_code      := NULL;
53665 
53666 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
53667 l_bflow_class_code           := '';    -- 4219869 Business Flow
53668 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
53669 l_budgetary_control_flag     := 'N';
53670 
53671 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
53672 l_bflow_applied_to_amt       := NULL; -- 5132302
53673 l_entered_amt_idx            := NULL;          -- 4262811
53674 l_accted_amt_idx             := NULL;          -- 4262811
53675 l_acc_rev_flag               := NULL;          -- 4262811
53676 l_accrual_line_num           := NULL;          -- 4262811
53677 l_tmp_amt                    := NULL;          -- 4262811
53678 --
53682   END IF;
53679 IF NOT ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
53680             (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')) THEN
53681                return;
53683   
53684 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
53685     l_balance_type_code <> 'B' THEN
53686 
53687    --
53688    XLA_AE_LINES_PKG.SetNewLine;
53689 
53690    p_balance_type_code          := l_balance_type_code;
53691    -- set the flag so later we will know whether the gain loss line needs to be created
53692    
53693    IF(l_balance_type_code = 'A' ) THEN
53694      p_actual_flag :='G';
53695    END IF;
53696 
53697    --
53698    -- bulk performance
53699    --
53700    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
53701                                       p_header_num   => 0); -- 4262811
53702    --
53703    -- set accounting line options
53704    --
53705    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
53706            p_natural_side_code          => 'G'
53707          , p_gain_or_loss_flag          => 'N'
53708          , p_gl_transfer_mode_code      => 'S'
53709          , p_acct_entry_type_code       => 'A'
53710          , p_switch_side_flag           => ''
53711          , p_merge_duplicate_code       => 'A'
53712          );
53713    --
53714    l_acc_rev_natural_side_code := 'C';  -- 4262811
53715    -- 
53716    --
53717    -- set accounting line type info
53718    --
53719    xla_ae_lines_pkg.SetAcctLineType
53720       (p_component_type             => l_component_type
53721       ,p_event_type_code            => l_event_type_code
53722       ,p_line_definition_owner_code => l_line_definition_owner_code
53723       ,p_line_definition_code       => l_line_definition_code
53724       ,p_accounting_line_code       => l_component_code
53725       ,p_accounting_line_type_code  => l_component_type_code
53726       ,p_accounting_line_appl_id    => l_component_appl_id
53727       ,p_amb_context_code           => l_amb_context_code
53728       ,p_entity_code                => l_entity_code
53729       ,p_event_class_code           => l_event_class_code);
53730    --
53731    -- set accounting class
53732    --
53733    xla_ae_lines_pkg.SetAcctClass(
53734            p_accounting_class_code  => 'EXCHANGE_GAIN_LOSS'
53735          , p_ae_header_id           => l_ae_header_id
53736          );
53737 
53738    --
53739    -- set rounding class
53740    --
53741    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
53742                       'EXCHANGE_GAIN_LOSS';
53743 
53744    --
53745    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
53746    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
53747    --
53748    -- bulk performance
53749    --
53750    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
53751 
53752    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
53753       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
53754 
53755    -- 4955764
53756    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53757       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
53758 
53759    -- 4458381 Public Sector Enh
53760    
53761    --
53762    -- set accounting attributes for the line type
53763    --
53764    l_entered_amt_idx := NULL;
53765    l_accted_amt_idx  := 3;
53766    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
53767    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
53768    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_29);
53769    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
53770    l_rec_acct_attrs.array_char_value(2)  := p_source_30;
53771    l_rec_acct_attrs.array_acct_attr_code(3) := 'LEDGER_AMOUNT';
53772    l_rec_acct_attrs.array_num_value(3)  := p_source_40;
53773    l_rec_acct_attrs.array_acct_attr_code(4) := 'PARTY_ID';
53774    l_rec_acct_attrs.array_num_value(4)  := p_source_97;
53775    l_rec_acct_attrs.array_acct_attr_code(5) := 'PARTY_SITE_ID';
53776    l_rec_acct_attrs.array_num_value(5)  := p_source_98;
53777    l_rec_acct_attrs.array_acct_attr_code(6) := 'PARTY_TYPE';
53778    l_rec_acct_attrs.array_char_value(6)  := p_source_99;
53779 
53780    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53781    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53782 
53783    ---------------------------------------------------------------------------------------------------------------
53784    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53785    ---------------------------------------------------------------------------------------------------------------
53786    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53787 
53788    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53789    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53790 
53794    AND l_bflow_method_code = 'PRIOR_ENTRY'
53791    IF xla_accounting_cache_pkg.GetValueChar
53792          (p_source_code         => 'LEDGER_CATEGORY_CODE'
53793          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53795 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53796    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53797          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53798        )
53799    THEN
53800          xla_ae_lines_pkg.BflowUpgEntry
53801            (p_business_method_code    => l_bflow_method_code
53802            ,p_business_class_code     => l_bflow_class_code
53803            ,p_balance_type            => l_balance_type_code);
53804    ELSE
53805       NULL;
53806 -- No business flow processing for business flow method of NONE.
53807    END IF;
53808 
53809    --
53810    -- call analytical criteria
53811    --
53812    
53813 
53814 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
53815 xla_ae_lines_pkg.SetAnalyticalCriteria(
53816    p_analytical_criterion_name    => 'Check Id'
53817  , p_analytical_criterion_owner   => 'S'
53818  , p_analytical_criterion_code    => 'CHECK_ID'
53819  , p_amb_context_code             => 'DEFAULT'
53820  , p_balancing_flag               => 'N'
53821  
53822  , p_analytical_detail_char_1    =>  NULL
53823  , p_analytical_detail_num_1     =>  p_source_90
53824  , p_analytical_detail_date_1    =>  NULL
53825 
53826  , p_ae_header_id                 => l_ae_header_id
53827 )
53828 ;
53829 --
53830 
53831    --
53832    -- call description
53833    --
53834    -- No description or it is inherited.
53835    --
53836    -- call ADRs
53837    -- Bug 4922099
53838    --
53839    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53840         (NVL(l_actual_upg_option, 'N') = 'O') OR
53841         (NVL(l_enc_upg_option, 'N') = 'O')
53842       )
53843    THEN
53844    NULL;
53845    --
53846    --
53847    
53848   l_ccid := AcctDerRule_22(
53849            p_application_id           => p_application_id
53850          , p_ae_header_id             => l_ae_header_id 
53851 , p_source_24 => p_source_24
53852          , x_transaction_coa_id       => l_adr_transaction_coa_id
53853          , x_accounting_coa_id        => l_adr_accounting_coa_id
53854          , x_value_type_code          => l_adr_value_type_code
53855          , p_side                     => 'CREDIT'
53856    );
53857 
53858    xla_ae_lines_pkg.set_ccid(
53859     p_code_combination_id          => l_ccid
53860   , p_value_type_code              => l_adr_value_type_code
53861   , p_transaction_coa_id           => l_adr_transaction_coa_id
53862   , p_accounting_coa_id            => l_adr_accounting_coa_id
53863   , p_adr_code                     => 'SYS_GAIN_CCID'
53864   , p_adr_type_code                => 'S'
53865   , p_component_type               => l_component_type
53866   , p_component_code               => l_component_code
53867   , p_component_type_code          => l_component_type_code
53868   , p_component_appl_id            => l_component_appl_id
53869   , p_amb_context_code             => l_amb_context_code
53870   , p_side                         => 'CREDIT'
53871   );
53872 
53873 
53874   l_ccid := AcctDerRule_23(
53875            p_application_id           => p_application_id
53876          , p_ae_header_id             => l_ae_header_id 
53877 , p_source_25 => p_source_25
53878          , x_transaction_coa_id       => l_adr_transaction_coa_id
53879          , x_accounting_coa_id        => l_adr_accounting_coa_id
53880          , x_value_type_code          => l_adr_value_type_code
53881          , p_side                     => 'DEBIT'
53882    );
53883 
53884    xla_ae_lines_pkg.set_ccid(
53885     p_code_combination_id          => l_ccid
53886   , p_value_type_code              => l_adr_value_type_code
53887   , p_transaction_coa_id           => l_adr_transaction_coa_id
53888   , p_accounting_coa_id            => l_adr_accounting_coa_id
53889   , p_adr_code                     => 'SYS_LOSS_CCID'
53890   , p_adr_type_code                => 'S'
53891   , p_component_type               => l_component_type
53892   , p_component_code               => l_component_code
53893   , p_component_type_code          => l_component_type_code
53894   , p_component_appl_id            => l_component_appl_id
53895   , p_amb_context_code             => l_amb_context_code
53896   , p_side                         => 'DEBIT'
53897   );
53898 
53899 
53900    --
53901    --
53902    END IF;
53903    --
53904    -- Bug 4922099
53905    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53906           (NVL(l_enc_upg_option, 'N') = 'O')
53907         ) AND
53908         (l_bflow_method_code = 'PRIOR_ENTRY')
53909       )
53910    THEN
53911       IF
53912       --
53913       1 = 2
53914       --
53915       THEN
53916       xla_accounting_err_pkg.build_message
53917                                     (p_appli_s_name            => 'XLA'
53918                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53919                                     ,p_token_1                 => 'LINE_NUMBER'
53920                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53921                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53925                                                                             ,l_component_type_code
53922                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53923                                                                              l_component_type
53924                                                                             ,l_component_code
53926                                                                             ,l_component_appl_id
53927                                                                             ,l_amb_context_code
53928                                                                             ,l_entity_code
53929                                                                             ,l_event_class_code
53930                                                                            )
53931                                     ,p_token_3                 => 'OWNER'
53932                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53933                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53934                                                                           ,p_lookup_code    => l_component_type_code
53935                                                                          )
53936                                     ,p_token_4                 => 'PRODUCT_NAME'
53937                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53938                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53939                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53940                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53941                                     ,p_ae_header_id            =>  NULL
53942                                        );
53943 
53944         IF (C_LEVEL_ERROR>= g_log_level) THEN
53945                  trace
53946                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53947                       ,p_level    => C_LEVEL_ERROR
53948                       ,p_module   => l_log_module);
53949         END IF;
53950       END IF;
53951    END IF;
53952    --
53953    --
53954    ------------------------------------------------------------------------------------------------
53955    -- 4219869 Business Flow
53956    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53957    -- Prior Entry.  Currently, the following code is always generated.
53958    ------------------------------------------------------------------------------------------------
53959    XLA_AE_LINES_PKG.ValidateCurrentLine;
53960 
53961    ------------------------------------------------------------------------------------
53962    -- 4219869 Business Flow
53963    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53964    ------------------------------------------------------------------------------------
53965    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53966 
53967    ----------------------------------------------------------------------------------
53968    -- 4219869 Business Flow
53969    -- Update journal entry status -- Need to generate this within IF <condition>
53970    ----------------------------------------------------------------------------------
53971    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53972          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53973          ,p_balance_type_code => l_balance_type_code
53974          );
53975 
53976    -------------------------------------------------------------------------------------------
53977    -- 4262811 - Generate the Accrual Reversal lines
53978    -------------------------------------------------------------------------------------------
53979    BEGIN
53980       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53981                               (g_array_event(p_event_id).array_value_num('header_index'));
53982       IF l_acc_rev_flag IS NULL THEN
53983          l_acc_rev_flag := 'N';
53984       END IF;
53985    EXCEPTION
53986       WHEN OTHERS THEN
53987          l_acc_rev_flag := 'N';
53988    END;
53989    --
53990    IF (l_acc_rev_flag = 'Y') THEN
53991 
53992        -- 4645092  ------------------------------------------------------------------------------
53993        -- To allow MPA report to determine if it should generate report process
53994        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53995        ------------------------------------------------------------------------------------------
53996 
53997        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53998        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53999    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
54000    -- call ADRs
54001    -- Bug 4922099
54002    --
54003    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54004         (NVL(l_actual_upg_option, 'N') = 'O') OR
54005         (NVL(l_enc_upg_option, 'N') = 'O')
54006       )
54007    THEN
54008    NULL;
54009    --
54010    --
54011    
54012   l_ccid := AcctDerRule_22(
54013            p_application_id           => p_application_id
54014          , p_ae_header_id             => l_ae_header_id 
54015 , p_source_24 => p_source_24
54016          , x_transaction_coa_id       => l_adr_transaction_coa_id
54017          , x_accounting_coa_id        => l_adr_accounting_coa_id
54021 
54018          , x_value_type_code          => l_adr_value_type_code
54019          , p_side                     => 'CREDIT'
54020    );
54022    xla_ae_lines_pkg.set_ccid(
54023     p_code_combination_id          => l_ccid
54024   , p_value_type_code              => l_adr_value_type_code
54025   , p_transaction_coa_id           => l_adr_transaction_coa_id
54026   , p_accounting_coa_id            => l_adr_accounting_coa_id
54027   , p_adr_code                     => 'SYS_GAIN_CCID'
54028   , p_adr_type_code                => 'S'
54029   , p_component_type               => l_component_type
54030   , p_component_code               => l_component_code
54031   , p_component_type_code          => l_component_type_code
54032   , p_component_appl_id            => l_component_appl_id
54033   , p_amb_context_code             => l_amb_context_code
54034   , p_side                         => 'CREDIT'
54035   );
54036 
54037 
54038   l_ccid := AcctDerRule_23(
54039            p_application_id           => p_application_id
54040          , p_ae_header_id             => l_ae_header_id 
54041 , p_source_25 => p_source_25
54042          , x_transaction_coa_id       => l_adr_transaction_coa_id
54043          , x_accounting_coa_id        => l_adr_accounting_coa_id
54044          , x_value_type_code          => l_adr_value_type_code
54045          , p_side                     => 'DEBIT'
54046    );
54047 
54048    xla_ae_lines_pkg.set_ccid(
54049     p_code_combination_id          => l_ccid
54050   , p_value_type_code              => l_adr_value_type_code
54051   , p_transaction_coa_id           => l_adr_transaction_coa_id
54052   , p_accounting_coa_id            => l_adr_accounting_coa_id
54053   , p_adr_code                     => 'SYS_LOSS_CCID'
54054   , p_adr_type_code                => 'S'
54055   , p_component_type               => l_component_type
54056   , p_component_code               => l_component_code
54057   , p_component_type_code          => l_component_type_code
54058   , p_component_appl_id            => l_component_appl_id
54059   , p_amb_context_code             => l_amb_context_code
54060   , p_side                         => 'DEBIT'
54061   );
54062 
54063 
54064    --
54065    --
54066    END IF;
54067 
54068        --
54069        -- Update the line information that should be overwritten
54070        --
54071        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54072                                          p_header_num   => 1);
54073        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54074 
54075        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54076 
54077        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54078           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54079        END IF;
54080 
54081       --
54082       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54083       --
54084       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54085           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54086       ELSE
54087           ---------------------------------------------------------------------------------------------------
54088           -- 4262811a Switch Sign
54089           ---------------------------------------------------------------------------------------------------
54090           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54091           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54092                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54093           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54094                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54095           -- 5132302
54096           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54097                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54098 
54099       END IF;
54100 
54101       -- 4955764
54102       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54103       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54104 
54105 
54106       XLA_AE_LINES_PKG.ValidateCurrentLine;
54107       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54108 
54109       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54110                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54111                ,p_balance_type_code => l_balance_type_code);
54112 
54113    END IF;
54114 
54115    -----------------------------------------------------------------------------------------
54116    -- 4262811 Multiperiod Accounting
54117    -----------------------------------------------------------------------------------------
54118      -- No MPA option is assigned.
54119 
54120 
54121 END IF;
54122 --
54123 
54124 --
54125 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54126    trace
54127       (p_msg      => 'END of AcctLineType_111'
54128       ,p_level    => C_LEVEL_PROCEDURE
54129       ,p_module   => l_log_module);
54133   WHEN xla_exceptions_pkg.application_exception THEN
54130 END IF;
54131 --
54132 EXCEPTION
54134       RAISE;
54135   WHEN OTHERS THEN
54136        xla_exceptions_pkg.raise_message
54137            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_111');
54138 END AcctLineType_111;
54139 --
54140 
54141 ---------------------------------------
54142 --
54143 -- PRIVATE FUNCTION
54144 --         AcctLineType_112
54145 --
54146 ---------------------------------------
54147 PROCEDURE AcctLineType_112 (
54148   p_application_id        IN NUMBER
54149  ,p_event_id              IN NUMBER
54150  ,p_calculate_acctd_flag  IN VARCHAR2
54151  ,p_calculate_g_l_flag    IN VARCHAR2
54152  ,p_actual_flag           IN OUT VARCHAR2
54153  ,p_balance_type_code     OUT VARCHAR2
54154  ,p_gain_or_loss_ref      OUT VARCHAR2
54155  
54156 --Distribution GL Account
54157  , p_source_22            IN NUMBER
54158 --Distribution Source Type
54159  , p_source_27            IN VARCHAR2
54160 --Distribution Line Identifier
54161  , p_source_29            IN NUMBER
54162 --Distribution Type
54163  , p_source_30            IN VARCHAR2
54164 --Exchange Date
54165  , p_source_33            IN DATE
54166 --Exchange Rate
54167  , p_source_34            IN NUMBER
54168 --Exchange Rate Type
54169  , p_source_35            IN VARCHAR2
54170 --Accounting Amount
54171  , p_source_40            IN NUMBER
54172 --Transaction Distribution Identifier
54173  , p_source_44            IN NUMBER
54174 --Transaction Distribution Type
54175  , p_source_45            IN VARCHAR2
54176 --Distribution Multi Fund Additional Entry
54177  , p_source_88            IN VARCHAR2
54178 --Cash Receipt Identifier
54179  , p_source_90            IN NUMBER
54180 --Receipt Applied To Application Identifier
54181  , p_source_92            IN NUMBER
54182 --Transaction Entity Code
54183  , p_source_93            IN VARCHAR2
54184 --Transaction Identifier
54185  , p_source_94            IN NUMBER
54186 --DIST_ENT_AMT_FROM
54187  , p_source_95            IN NUMBER
54188 --Applying Document Currency Code
54189  , p_source_96            IN VARCHAR2
54190 --Distribution Party Identifier
54191  , p_source_97            IN NUMBER
54192 --Distribution Party Site Id
54193  , p_source_98            IN NUMBER
54194 --Distribution Party Type
54195  , p_source_99            IN VARCHAR2
54196 --Distribution Source Table
54197  , p_source_102            IN VARCHAR2
54198 )
54199 IS
54200 
54201 l_component_type              VARCHAR2(80);
54202 l_component_code              VARCHAR2(30);
54203 l_component_type_code         VARCHAR2(1);
54204 l_component_appl_id           INTEGER;
54205 l_amb_context_code            VARCHAR2(30);
54206 l_entity_code                 VARCHAR2(30);
54207 l_event_class_code            VARCHAR2(30);
54208 l_ae_header_id                NUMBER;
54209 l_event_type_code             VARCHAR2(30);
54210 l_line_definition_code        VARCHAR2(30);
54211 l_line_definition_owner_code  VARCHAR2(1);
54212 --
54213 -- adr variables
54214 l_segment                     VARCHAR2(30);
54215 l_ccid                        NUMBER;
54216 l_adr_transaction_coa_id      NUMBER;
54217 l_adr_accounting_coa_id       NUMBER;
54218 l_adr_flexfield_segment_code  VARCHAR2(30);
54219 l_adr_flex_value_set_id       NUMBER;
54220 l_adr_value_type_code         VARCHAR2(30);
54221 l_adr_value_combination_id    NUMBER;
54222 l_adr_value_segment_code      VARCHAR2(30);
54223 
54224 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
54225 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
54226 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
54227 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
54228 
54229 -- 4262811 Variables ------------------------------------------------------------------------------------------
54230 l_entered_amt_idx             NUMBER;
54231 l_accted_amt_idx              NUMBER;
54232 l_acc_rev_flag                VARCHAR2(1);
54233 l_accrual_line_num            NUMBER;
54234 l_tmp_amt                     NUMBER;
54235 l_acc_rev_natural_side_code   VARCHAR2(1);
54236 
54237 l_num_entries                 NUMBER;
54238 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
54239 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
54240 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
54241 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
54242 l_recog_line_1                NUMBER;
54243 l_recog_line_2                NUMBER;
54244 
54245 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
54246 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
54247 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
54248 
54249 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54250 
54251 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
54252 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
54253 
54254 ---------------------------------------------------------------------------------------------------------------
54255 
54256 
54257 --
54258 -- bulk performance
54259 --
54260 l_balance_type_code           VARCHAR2(1);
54264 --
54261 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
54262 l_log_module                  VARCHAR2(240);
54263 
54265 -- Upgrade strategy
54266 --
54267 l_actual_upg_option           VARCHAR2(1);
54268 l_enc_upg_option           VARCHAR2(1);
54269 
54270 --
54271 BEGIN
54272 --
54273 IF g_log_enabled THEN
54274       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_112';
54275 END IF;
54276 --
54277 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54278 
54279       trace
54280          (p_msg      => 'BEGIN of AcctLineType_112'
54281          ,p_level    => C_LEVEL_PROCEDURE
54282          ,p_module   => l_log_module);
54283 
54284 END IF;
54285 --
54286 l_component_type             := 'AMB_JLT';
54287 l_component_code             := 'RCT_FACTOR';
54288 l_component_type_code        := 'S';
54289 l_component_appl_id          :=  222;
54290 l_amb_context_code           := 'DEFAULT';
54291 l_entity_code                := 'RECEIPTS';
54292 l_event_class_code           := 'RECEIPT';
54293 l_event_type_code            := 'RECEIPT_ALL';
54294 l_line_definition_owner_code := 'S';
54295 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
54296 --
54297 l_balance_type_code          := 'A';
54298 l_segment                     := NULL;
54299 l_ccid                        := NULL;
54300 l_adr_transaction_coa_id      := NULL;
54301 l_adr_accounting_coa_id       := NULL;
54302 l_adr_flexfield_segment_code  := NULL;
54303 l_adr_flex_value_set_id       := NULL;
54304 l_adr_value_type_code         := NULL;
54305 l_adr_value_combination_id    := NULL;
54306 l_adr_value_segment_code      := NULL;
54307 
54308 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
54309 l_bflow_class_code           := '';    -- 4219869 Business Flow
54310 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
54311 l_budgetary_control_flag     := 'N';
54312 
54313 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54314 l_bflow_applied_to_amt       := NULL; -- 5132302
54315 l_entered_amt_idx            := NULL;          -- 4262811
54316 l_accted_amt_idx             := NULL;          -- 4262811
54317 l_acc_rev_flag               := NULL;          -- 4262811
54318 l_accrual_line_num           := NULL;          -- 4262811
54319 l_tmp_amt                    := NULL;          -- 4262811
54320 --
54321  
54322 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54323     l_balance_type_code <> 'B' THEN
54324 IF NVL(p_source_27,'
54325 ') =  'FACTOR' AND 
54326 NVL(p_source_102,'
54327 ') =  'CRH' AND 
54328 NVL(p_source_88,'
54329 ') =  'N'
54330  THEN 
54331 
54332    --
54333    XLA_AE_LINES_PKG.SetNewLine;
54334 
54335    p_balance_type_code          := l_balance_type_code;
54336    -- set the flag so later we will know whether the gain loss line needs to be created
54337    
54338    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54339      p_actual_flag :='A';
54340    END IF;
54341 
54342    --
54343    -- bulk performance
54344    --
54345    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54346                                       p_header_num   => 0); -- 4262811
54347    --
54348    -- set accounting line options
54349    --
54350    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54351            p_natural_side_code          => 'C'
54352          , p_gain_or_loss_flag          => 'N'
54353          , p_gl_transfer_mode_code      => 'S'
54354          , p_acct_entry_type_code       => 'A'
54355          , p_switch_side_flag           => 'Y'
54356          , p_merge_duplicate_code       => 'A'
54357          );
54358    --
54359    l_acc_rev_natural_side_code := 'D';  -- 4262811
54360    -- 
54361    --
54362    -- set accounting line type info
54363    --
54364    xla_ae_lines_pkg.SetAcctLineType
54365       (p_component_type             => l_component_type
54366       ,p_event_type_code            => l_event_type_code
54367       ,p_line_definition_owner_code => l_line_definition_owner_code
54368       ,p_line_definition_code       => l_line_definition_code
54369       ,p_accounting_line_code       => l_component_code
54370       ,p_accounting_line_type_code  => l_component_type_code
54371       ,p_accounting_line_appl_id    => l_component_appl_id
54372       ,p_amb_context_code           => l_amb_context_code
54373       ,p_entity_code                => l_entity_code
54374       ,p_event_class_code           => l_event_class_code);
54375    --
54376    -- set accounting class
54377    --
54378    xla_ae_lines_pkg.SetAcctClass(
54379            p_accounting_class_code  => 'FACTOR'
54380          , p_ae_header_id           => l_ae_header_id
54381          );
54382 
54383    --
54384    -- set rounding class
54385    --
54386    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54387                       'RECEIVABLE';
54388 
54389    --
54390    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54391    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54392    --
54393    -- bulk performance
54394    --
54395    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54396 
54400    -- 4955764
54397    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54398       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54399 
54401    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54402       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54403 
54404    -- 4458381 Public Sector Enh
54405    
54406    --
54407    -- set accounting attributes for the line type
54408    --
54409    l_entered_amt_idx := 8;
54410    l_accted_amt_idx  := 13;
54411    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
54412    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
54413    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
54414    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
54415    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
54416    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
54417    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
54418    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
54419    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
54420    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
54421    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
54422    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
54423    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
54424    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
54425    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
54426    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
54427    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
54428    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
54429    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
54430    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
54431    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
54432    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
54433    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
54434    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
54435    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
54436    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
54437    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
54438    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
54439    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
54440    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
54441    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
54442    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
54443    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
54444 
54445    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54446    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54447 
54448    ---------------------------------------------------------------------------------------------------------------
54449    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54450    ---------------------------------------------------------------------------------------------------------------
54451    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54452 
54453    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54454    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54455 
54456    IF xla_accounting_cache_pkg.GetValueChar
54457          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54458          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54459    AND l_bflow_method_code = 'PRIOR_ENTRY'
54460 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54461    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54462          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54463        )
54464    THEN
54465          xla_ae_lines_pkg.BflowUpgEntry
54466            (p_business_method_code    => l_bflow_method_code
54467            ,p_business_class_code     => l_bflow_class_code
54468            ,p_balance_type            => l_balance_type_code);
54469    ELSE
54470       NULL;
54471 -- No business flow processing for business flow method of NONE.
54472    END IF;
54473 
54474    --
54475    -- call analytical criteria
54476    --
54477    
54478 
54479 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
54480 xla_ae_lines_pkg.SetAnalyticalCriteria(
54481    p_analytical_criterion_name    => 'Check Id'
54482  , p_analytical_criterion_owner   => 'S'
54483  , p_analytical_criterion_code    => 'CHECK_ID'
54484  , p_amb_context_code             => 'DEFAULT'
54485  , p_balancing_flag               => 'N'
54486  
54487  , p_analytical_detail_char_1    =>  NULL
54488  , p_analytical_detail_num_1     =>  p_source_90
54489  , p_analytical_detail_date_1    =>  NULL
54490 
54491  , p_ae_header_id                 => l_ae_header_id
54492 )
54493 ;
54494 --
54495 
54496    --
54497    -- call description
54498    --
54499    -- No description or it is inherited.
54500    --
54501    -- call ADRs
54502    -- Bug 4922099
54503    --
54504    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54505         (NVL(l_actual_upg_option, 'N') = 'O') OR
54506         (NVL(l_enc_upg_option, 'N') = 'O')
54507       )
54511    --
54508    THEN
54509    NULL;
54510    --
54512    
54513   l_ccid := AcctDerRule_20(
54514            p_application_id           => p_application_id
54515          , p_ae_header_id             => l_ae_header_id 
54516 , p_source_22 => p_source_22
54517          , x_transaction_coa_id       => l_adr_transaction_coa_id
54518          , x_accounting_coa_id        => l_adr_accounting_coa_id
54519          , x_value_type_code          => l_adr_value_type_code
54520          , p_side                     => 'NA'
54521    );
54522 
54523    xla_ae_lines_pkg.set_ccid(
54524     p_code_combination_id          => l_ccid
54525   , p_value_type_code              => l_adr_value_type_code
54526   , p_transaction_coa_id           => l_adr_transaction_coa_id
54527   , p_accounting_coa_id            => l_adr_accounting_coa_id
54528   , p_adr_code                     => 'DIST_CCID'
54529   , p_adr_type_code                => 'S'
54530   , p_component_type               => l_component_type
54531   , p_component_code               => l_component_code
54532   , p_component_type_code          => l_component_type_code
54533   , p_component_appl_id            => l_component_appl_id
54534   , p_amb_context_code             => l_amb_context_code
54535   , p_side                         => 'NA'
54536   );
54537 
54538 
54539    --
54540    --
54541    END IF;
54542    --
54543    -- Bug 4922099
54544    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54545           (NVL(l_enc_upg_option, 'N') = 'O')
54546         ) AND
54547         (l_bflow_method_code = 'PRIOR_ENTRY')
54548       )
54549    THEN
54550       IF
54551       --
54552       1 = 2
54553       --
54554       THEN
54555       xla_accounting_err_pkg.build_message
54556                                     (p_appli_s_name            => 'XLA'
54557                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54558                                     ,p_token_1                 => 'LINE_NUMBER'
54559                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54560                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54561                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54562                                                                              l_component_type
54563                                                                             ,l_component_code
54564                                                                             ,l_component_type_code
54565                                                                             ,l_component_appl_id
54566                                                                             ,l_amb_context_code
54567                                                                             ,l_entity_code
54568                                                                             ,l_event_class_code
54569                                                                            )
54570                                     ,p_token_3                 => 'OWNER'
54571                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54572                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54573                                                                           ,p_lookup_code    => l_component_type_code
54574                                                                          )
54575                                     ,p_token_4                 => 'PRODUCT_NAME'
54576                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54577                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54578                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54579                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54580                                     ,p_ae_header_id            =>  NULL
54581                                        );
54582 
54583         IF (C_LEVEL_ERROR>= g_log_level) THEN
54584                  trace
54585                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54586                       ,p_level    => C_LEVEL_ERROR
54587                       ,p_module   => l_log_module);
54588         END IF;
54589       END IF;
54590    END IF;
54591    --
54592    --
54593    ------------------------------------------------------------------------------------------------
54594    -- 4219869 Business Flow
54595    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54596    -- Prior Entry.  Currently, the following code is always generated.
54597    ------------------------------------------------------------------------------------------------
54598    XLA_AE_LINES_PKG.ValidateCurrentLine;
54599 
54600    ------------------------------------------------------------------------------------
54601    -- 4219869 Business Flow
54602    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54603    ------------------------------------------------------------------------------------
54604    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54605 
54606    ----------------------------------------------------------------------------------
54607    -- 4219869 Business Flow
54608    -- Update journal entry status -- Need to generate this within IF <condition>
54612          ,p_balance_type_code => l_balance_type_code
54609    ----------------------------------------------------------------------------------
54610    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54611          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54613          );
54614 
54615    -------------------------------------------------------------------------------------------
54616    -- 4262811 - Generate the Accrual Reversal lines
54617    -------------------------------------------------------------------------------------------
54618    BEGIN
54619       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54620                               (g_array_event(p_event_id).array_value_num('header_index'));
54621       IF l_acc_rev_flag IS NULL THEN
54622          l_acc_rev_flag := 'N';
54623       END IF;
54624    EXCEPTION
54625       WHEN OTHERS THEN
54626          l_acc_rev_flag := 'N';
54627    END;
54628    --
54629    IF (l_acc_rev_flag = 'Y') THEN
54630 
54631        -- 4645092  ------------------------------------------------------------------------------
54632        -- To allow MPA report to determine if it should generate report process
54633        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54634        ------------------------------------------------------------------------------------------
54635 
54636        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54637        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54638    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
54639    -- call ADRs
54640    -- Bug 4922099
54641    --
54642    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54643         (NVL(l_actual_upg_option, 'N') = 'O') OR
54644         (NVL(l_enc_upg_option, 'N') = 'O')
54645       )
54646    THEN
54647    NULL;
54648    --
54649    --
54650    
54651   l_ccid := AcctDerRule_20(
54652            p_application_id           => p_application_id
54653          , p_ae_header_id             => l_ae_header_id 
54654 , p_source_22 => p_source_22
54655          , x_transaction_coa_id       => l_adr_transaction_coa_id
54656          , x_accounting_coa_id        => l_adr_accounting_coa_id
54657          , x_value_type_code          => l_adr_value_type_code
54658          , p_side                     => 'NA'
54659    );
54660 
54661    xla_ae_lines_pkg.set_ccid(
54662     p_code_combination_id          => l_ccid
54663   , p_value_type_code              => l_adr_value_type_code
54664   , p_transaction_coa_id           => l_adr_transaction_coa_id
54665   , p_accounting_coa_id            => l_adr_accounting_coa_id
54666   , p_adr_code                     => 'DIST_CCID'
54667   , p_adr_type_code                => 'S'
54668   , p_component_type               => l_component_type
54669   , p_component_code               => l_component_code
54670   , p_component_type_code          => l_component_type_code
54671   , p_component_appl_id            => l_component_appl_id
54672   , p_amb_context_code             => l_amb_context_code
54673   , p_side                         => 'NA'
54674   );
54675 
54676 
54677    --
54678    --
54679    END IF;
54680 
54681        --
54682        -- Update the line information that should be overwritten
54683        --
54684        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54685                                          p_header_num   => 1);
54686        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54687 
54688        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54689 
54690        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54691           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54692        END IF;
54693 
54694       --
54695       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54696       --
54697       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54698           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54699       ELSE
54700           ---------------------------------------------------------------------------------------------------
54701           -- 4262811a Switch Sign
54702           ---------------------------------------------------------------------------------------------------
54703           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54704           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54705                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54706           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54707                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54708           -- 5132302
54709           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54710                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54711 
54712       END IF;
54713 
54714       -- 4955764
54715       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54719       XLA_AE_LINES_PKG.ValidateCurrentLine;
54716       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54717 
54718 
54720       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54721 
54722       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54723                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54724                ,p_balance_type_code => l_balance_type_code);
54725 
54726    END IF;
54727 
54728    -----------------------------------------------------------------------------------------
54729    -- 4262811 Multiperiod Accounting
54730    -----------------------------------------------------------------------------------------
54731      -- No MPA option is assigned.
54732 
54733 
54734 END IF;
54735 END IF;
54736 --
54737 
54738 --
54739 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54740    trace
54741       (p_msg      => 'END of AcctLineType_112'
54742       ,p_level    => C_LEVEL_PROCEDURE
54743       ,p_module   => l_log_module);
54744 END IF;
54745 --
54746 EXCEPTION
54747   WHEN xla_exceptions_pkg.application_exception THEN
54748       RAISE;
54749   WHEN OTHERS THEN
54750        xla_exceptions_pkg.raise_message
54751            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_112');
54752 END AcctLineType_112;
54753 --
54754 
54755 ---------------------------------------
54756 --
54757 -- PRIVATE FUNCTION
54758 --         AcctLineType_113
54759 --
54760 ---------------------------------------
54761 PROCEDURE AcctLineType_113 (
54762   p_application_id        IN NUMBER
54763  ,p_event_id              IN NUMBER
54764  ,p_calculate_acctd_flag  IN VARCHAR2
54765  ,p_calculate_g_l_flag    IN VARCHAR2
54766  ,p_actual_flag           IN OUT VARCHAR2
54767  ,p_balance_type_code     OUT VARCHAR2
54768  ,p_gain_or_loss_ref      OUT VARCHAR2
54769  
54770 --Distribution GL Account
54771  , p_source_22            IN NUMBER
54772 --Distribution Source Type
54773  , p_source_27            IN VARCHAR2
54774 --Distribution Line Identifier
54775  , p_source_29            IN NUMBER
54776 --Distribution Type
54777  , p_source_30            IN VARCHAR2
54778 --Exchange Date
54779  , p_source_33            IN DATE
54780 --Exchange Rate
54781  , p_source_34            IN NUMBER
54782 --Exchange Rate Type
54783  , p_source_35            IN VARCHAR2
54784 --Accounting Amount
54785  , p_source_40            IN NUMBER
54786 --Transaction Distribution Identifier
54787  , p_source_44            IN NUMBER
54788 --Transaction Distribution Type
54789  , p_source_45            IN VARCHAR2
54790 --Distribution Multi Fund Additional Entry
54791  , p_source_88            IN VARCHAR2
54792 --Cash Receipt Identifier
54793  , p_source_90            IN NUMBER
54794 --Receipt Applied To Application Identifier
54795  , p_source_92            IN NUMBER
54796 --Transaction Entity Code
54797  , p_source_93            IN VARCHAR2
54798 --Transaction Identifier
54799  , p_source_94            IN NUMBER
54800 --DIST_ENT_AMT_FROM
54801  , p_source_95            IN NUMBER
54802 --Applying Document Currency Code
54803  , p_source_96            IN VARCHAR2
54804 --Distribution Party Identifier
54805  , p_source_97            IN NUMBER
54806 --Distribution Party Site Id
54807  , p_source_98            IN NUMBER
54808 --Distribution Party Type
54809  , p_source_99            IN VARCHAR2
54810 --Distribution Source Table
54811  , p_source_102            IN VARCHAR2
54812 )
54813 IS
54814 
54815 l_component_type              VARCHAR2(80);
54816 l_component_code              VARCHAR2(30);
54817 l_component_type_code         VARCHAR2(1);
54818 l_component_appl_id           INTEGER;
54819 l_amb_context_code            VARCHAR2(30);
54820 l_entity_code                 VARCHAR2(30);
54821 l_event_class_code            VARCHAR2(30);
54822 l_ae_header_id                NUMBER;
54823 l_event_type_code             VARCHAR2(30);
54824 l_line_definition_code        VARCHAR2(30);
54825 l_line_definition_owner_code  VARCHAR2(1);
54826 --
54827 -- adr variables
54828 l_segment                     VARCHAR2(30);
54829 l_ccid                        NUMBER;
54830 l_adr_transaction_coa_id      NUMBER;
54831 l_adr_accounting_coa_id       NUMBER;
54832 l_adr_flexfield_segment_code  VARCHAR2(30);
54833 l_adr_flex_value_set_id       NUMBER;
54834 l_adr_value_type_code         VARCHAR2(30);
54835 l_adr_value_combination_id    NUMBER;
54836 l_adr_value_segment_code      VARCHAR2(30);
54837 
54838 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
54839 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
54840 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
54841 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
54842 
54843 -- 4262811 Variables ------------------------------------------------------------------------------------------
54844 l_entered_amt_idx             NUMBER;
54845 l_accted_amt_idx              NUMBER;
54846 l_acc_rev_flag                VARCHAR2(1);
54847 l_accrual_line_num            NUMBER;
54848 l_tmp_amt                     NUMBER;
54849 l_acc_rev_natural_side_code   VARCHAR2(1);
54850 
54851 l_num_entries                 NUMBER;
54852 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
54856 l_recog_line_1                NUMBER;
54853 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
54854 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
54855 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
54857 l_recog_line_2                NUMBER;
54858 
54859 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
54860 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
54861 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
54862 
54863 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54864 
54865 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
54866 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
54867 
54868 ---------------------------------------------------------------------------------------------------------------
54869 
54870 
54871 --
54872 -- bulk performance
54873 --
54874 l_balance_type_code           VARCHAR2(1);
54875 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
54876 l_log_module                  VARCHAR2(240);
54877 
54878 --
54879 -- Upgrade strategy
54880 --
54881 l_actual_upg_option           VARCHAR2(1);
54882 l_enc_upg_option           VARCHAR2(1);
54883 
54884 --
54885 BEGIN
54886 --
54887 IF g_log_enabled THEN
54888       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_113';
54889 END IF;
54890 --
54891 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54892 
54893       trace
54894          (p_msg      => 'BEGIN of AcctLineType_113'
54895          ,p_level    => C_LEVEL_PROCEDURE
54896          ,p_module   => l_log_module);
54897 
54898 END IF;
54899 --
54900 l_component_type             := 'AMB_JLT';
54901 l_component_code             := 'RCT_FACTOR_BR';
54902 l_component_type_code        := 'S';
54903 l_component_appl_id          :=  222;
54904 l_amb_context_code           := 'DEFAULT';
54905 l_entity_code                := 'RECEIPTS';
54906 l_event_class_code           := 'RECEIPT';
54907 l_event_type_code            := 'RECEIPT_ALL';
54908 l_line_definition_owner_code := 'S';
54909 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
54910 --
54911 l_balance_type_code          := 'A';
54912 l_segment                     := NULL;
54913 l_ccid                        := NULL;
54914 l_adr_transaction_coa_id      := NULL;
54915 l_adr_accounting_coa_id       := NULL;
54916 l_adr_flexfield_segment_code  := NULL;
54917 l_adr_flex_value_set_id       := NULL;
54918 l_adr_value_type_code         := NULL;
54919 l_adr_value_combination_id    := NULL;
54920 l_adr_value_segment_code      := NULL;
54921 
54922 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
54923 l_bflow_class_code           := '';    -- 4219869 Business Flow
54924 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
54925 l_budgetary_control_flag     := 'N';
54926 
54927 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54928 l_bflow_applied_to_amt       := NULL; -- 5132302
54929 l_entered_amt_idx            := NULL;          -- 4262811
54930 l_accted_amt_idx             := NULL;          -- 4262811
54931 l_acc_rev_flag               := NULL;          -- 4262811
54932 l_accrual_line_num           := NULL;          -- 4262811
54933 l_tmp_amt                    := NULL;          -- 4262811
54934 --
54935  
54936 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54937     l_balance_type_code <> 'B' THEN
54938 IF NVL(p_source_27,'
54939 ') =  'FACTOR' AND 
54940 NVL(p_source_102,'
54941 ') =  'RA' AND 
54942 NVL(p_source_88,'
54943 ') =  'N'
54944  THEN 
54945 
54946    --
54947    XLA_AE_LINES_PKG.SetNewLine;
54948 
54949    p_balance_type_code          := l_balance_type_code;
54950    -- set the flag so later we will know whether the gain loss line needs to be created
54951    
54952    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54953      p_actual_flag :='A';
54954    END IF;
54955 
54956    --
54957    -- bulk performance
54958    --
54959    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54960                                       p_header_num   => 0); -- 4262811
54961    --
54962    -- set accounting line options
54963    --
54964    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54965            p_natural_side_code          => 'C'
54966          , p_gain_or_loss_flag          => 'N'
54967          , p_gl_transfer_mode_code      => 'S'
54968          , p_acct_entry_type_code       => 'A'
54969          , p_switch_side_flag           => 'Y'
54970          , p_merge_duplicate_code       => 'A'
54971          );
54972    --
54973    l_acc_rev_natural_side_code := 'D';  -- 4262811
54974    -- 
54975    --
54976    -- set accounting line type info
54977    --
54978    xla_ae_lines_pkg.SetAcctLineType
54979       (p_component_type             => l_component_type
54980       ,p_event_type_code            => l_event_type_code
54981       ,p_line_definition_owner_code => l_line_definition_owner_code
54982       ,p_line_definition_code       => l_line_definition_code
54983       ,p_accounting_line_code       => l_component_code
54984       ,p_accounting_line_type_code  => l_component_type_code
54985       ,p_accounting_line_appl_id    => l_component_appl_id
54986       ,p_amb_context_code           => l_amb_context_code
54990    -- set accounting class
54987       ,p_entity_code                => l_entity_code
54988       ,p_event_class_code           => l_event_class_code);
54989    --
54991    --
54992    xla_ae_lines_pkg.SetAcctClass(
54993            p_accounting_class_code  => 'FAC_BR'
54994          , p_ae_header_id           => l_ae_header_id
54995          );
54996 
54997    --
54998    -- set rounding class
54999    --
55000    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55001                       'RECEIVABLE';
55002 
55003    --
55004    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55005    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55006    --
55007    -- bulk performance
55008    --
55009    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55010 
55011    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55012       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55013 
55014    -- 4955764
55015    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55016       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55017 
55018    -- 4458381 Public Sector Enh
55019    
55020    --
55021    -- set accounting attributes for the line type
55022    --
55023    l_entered_amt_idx := 8;
55024    l_accted_amt_idx  := 13;
55025    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
55026    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
55027    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
55028    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
55029    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
55030    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
55031    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
55032    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
55033    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
55034    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
55035    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
55036    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
55037    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
55038    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
55039    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
55040    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
55041    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
55042    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
55043    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
55044    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
55045    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
55046    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
55047    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
55048    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
55049    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
55050    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
55051    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
55052    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
55053    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
55054    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
55055    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
55056    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
55057    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
55058 
55059    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55060    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55061 
55062    ---------------------------------------------------------------------------------------------------------------
55063    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55064    ---------------------------------------------------------------------------------------------------------------
55065    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55066 
55067    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55068    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55069 
55070    IF xla_accounting_cache_pkg.GetValueChar
55071          (p_source_code         => 'LEDGER_CATEGORY_CODE'
55072          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55073    AND l_bflow_method_code = 'PRIOR_ENTRY'
55074 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55075    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55076          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55077        )
55078    THEN
55079          xla_ae_lines_pkg.BflowUpgEntry
55080            (p_business_method_code    => l_bflow_method_code
55081            ,p_business_class_code     => l_bflow_class_code
55082            ,p_balance_type            => l_balance_type_code);
55083    ELSE
55084       NULL;
55085 -- No business flow processing for business flow method of NONE.
55086    END IF;
55087 
55088    --
55089    -- call analytical criteria
55090    --
55094 xla_ae_lines_pkg.SetAnalyticalCriteria(
55091    
55092 
55093 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
55095    p_analytical_criterion_name    => 'Check Id'
55096  , p_analytical_criterion_owner   => 'S'
55097  , p_analytical_criterion_code    => 'CHECK_ID'
55098  , p_amb_context_code             => 'DEFAULT'
55099  , p_balancing_flag               => 'N'
55100  
55101  , p_analytical_detail_char_1    =>  NULL
55102  , p_analytical_detail_num_1     =>  p_source_90
55103  , p_analytical_detail_date_1    =>  NULL
55104 
55105  , p_ae_header_id                 => l_ae_header_id
55106 )
55107 ;
55108 --
55109 
55110    --
55111    -- call description
55112    --
55113    -- No description or it is inherited.
55114    --
55115    -- call ADRs
55116    -- Bug 4922099
55117    --
55118    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55119         (NVL(l_actual_upg_option, 'N') = 'O') OR
55120         (NVL(l_enc_upg_option, 'N') = 'O')
55121       )
55122    THEN
55123    NULL;
55124    --
55125    --
55126    
55127   l_ccid := AcctDerRule_20(
55128            p_application_id           => p_application_id
55129          , p_ae_header_id             => l_ae_header_id 
55130 , p_source_22 => p_source_22
55131          , x_transaction_coa_id       => l_adr_transaction_coa_id
55132          , x_accounting_coa_id        => l_adr_accounting_coa_id
55133          , x_value_type_code          => l_adr_value_type_code
55134          , p_side                     => 'NA'
55135    );
55136 
55137    xla_ae_lines_pkg.set_ccid(
55138     p_code_combination_id          => l_ccid
55139   , p_value_type_code              => l_adr_value_type_code
55140   , p_transaction_coa_id           => l_adr_transaction_coa_id
55141   , p_accounting_coa_id            => l_adr_accounting_coa_id
55142   , p_adr_code                     => 'DIST_CCID'
55143   , p_adr_type_code                => 'S'
55144   , p_component_type               => l_component_type
55145   , p_component_code               => l_component_code
55146   , p_component_type_code          => l_component_type_code
55147   , p_component_appl_id            => l_component_appl_id
55148   , p_amb_context_code             => l_amb_context_code
55149   , p_side                         => 'NA'
55150   );
55151 
55152 
55153    --
55154    --
55155    END IF;
55156    --
55157    -- Bug 4922099
55158    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55159           (NVL(l_enc_upg_option, 'N') = 'O')
55160         ) AND
55161         (l_bflow_method_code = 'PRIOR_ENTRY')
55162       )
55163    THEN
55164       IF
55165       --
55166       1 = 2
55167       --
55168       THEN
55169       xla_accounting_err_pkg.build_message
55170                                     (p_appli_s_name            => 'XLA'
55171                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55172                                     ,p_token_1                 => 'LINE_NUMBER'
55173                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
55174                                     ,p_token_2                 => 'LINE_TYPE_NAME'
55175                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
55176                                                                              l_component_type
55177                                                                             ,l_component_code
55178                                                                             ,l_component_type_code
55179                                                                             ,l_component_appl_id
55180                                                                             ,l_amb_context_code
55181                                                                             ,l_entity_code
55182                                                                             ,l_event_class_code
55183                                                                            )
55184                                     ,p_token_3                 => 'OWNER'
55185                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
55186                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
55187                                                                           ,p_lookup_code    => l_component_type_code
55188                                                                          )
55189                                     ,p_token_4                 => 'PRODUCT_NAME'
55190                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55191                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55192                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55193                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55194                                     ,p_ae_header_id            =>  NULL
55195                                        );
55196 
55197         IF (C_LEVEL_ERROR>= g_log_level) THEN
55198                  trace
55199                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55200                       ,p_level    => C_LEVEL_ERROR
55201                       ,p_module   => l_log_module);
55202         END IF;
55206    --
55203       END IF;
55204    END IF;
55205    --
55207    ------------------------------------------------------------------------------------------------
55208    -- 4219869 Business Flow
55209    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55210    -- Prior Entry.  Currently, the following code is always generated.
55211    ------------------------------------------------------------------------------------------------
55212    XLA_AE_LINES_PKG.ValidateCurrentLine;
55213 
55214    ------------------------------------------------------------------------------------
55215    -- 4219869 Business Flow
55216    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55217    ------------------------------------------------------------------------------------
55218    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55219 
55220    ----------------------------------------------------------------------------------
55221    -- 4219869 Business Flow
55222    -- Update journal entry status -- Need to generate this within IF <condition>
55223    ----------------------------------------------------------------------------------
55224    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55225          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55226          ,p_balance_type_code => l_balance_type_code
55227          );
55228 
55229    -------------------------------------------------------------------------------------------
55230    -- 4262811 - Generate the Accrual Reversal lines
55231    -------------------------------------------------------------------------------------------
55232    BEGIN
55233       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55234                               (g_array_event(p_event_id).array_value_num('header_index'));
55235       IF l_acc_rev_flag IS NULL THEN
55236          l_acc_rev_flag := 'N';
55237       END IF;
55238    EXCEPTION
55239       WHEN OTHERS THEN
55240          l_acc_rev_flag := 'N';
55241    END;
55242    --
55243    IF (l_acc_rev_flag = 'Y') THEN
55244 
55245        -- 4645092  ------------------------------------------------------------------------------
55246        -- To allow MPA report to determine if it should generate report process
55247        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55248        ------------------------------------------------------------------------------------------
55249 
55250        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55251        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55252    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
55253    -- call ADRs
55254    -- Bug 4922099
55255    --
55256    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55257         (NVL(l_actual_upg_option, 'N') = 'O') OR
55258         (NVL(l_enc_upg_option, 'N') = 'O')
55259       )
55260    THEN
55261    NULL;
55262    --
55263    --
55264    
55265   l_ccid := AcctDerRule_20(
55266            p_application_id           => p_application_id
55267          , p_ae_header_id             => l_ae_header_id 
55268 , p_source_22 => p_source_22
55269          , x_transaction_coa_id       => l_adr_transaction_coa_id
55270          , x_accounting_coa_id        => l_adr_accounting_coa_id
55271          , x_value_type_code          => l_adr_value_type_code
55272          , p_side                     => 'NA'
55273    );
55274 
55275    xla_ae_lines_pkg.set_ccid(
55276     p_code_combination_id          => l_ccid
55277   , p_value_type_code              => l_adr_value_type_code
55278   , p_transaction_coa_id           => l_adr_transaction_coa_id
55279   , p_accounting_coa_id            => l_adr_accounting_coa_id
55280   , p_adr_code                     => 'DIST_CCID'
55281   , p_adr_type_code                => 'S'
55282   , p_component_type               => l_component_type
55283   , p_component_code               => l_component_code
55284   , p_component_type_code          => l_component_type_code
55285   , p_component_appl_id            => l_component_appl_id
55286   , p_amb_context_code             => l_amb_context_code
55287   , p_side                         => 'NA'
55288   );
55289 
55290 
55291    --
55292    --
55293    END IF;
55294 
55295        --
55296        -- Update the line information that should be overwritten
55297        --
55298        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55299                                          p_header_num   => 1);
55300        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
55301 
55302        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55303 
55304        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
55305           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
55306        END IF;
55307 
55308       --
55309       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
55310       --
55311       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
55312           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
55313       ELSE
55314           ---------------------------------------------------------------------------------------------------
55318           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55315           -- 4262811a Switch Sign
55316           ---------------------------------------------------------------------------------------------------
55317           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
55319                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55320           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55321                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55322           -- 5132302
55323           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
55324                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55325 
55326       END IF;
55327 
55328       -- 4955764
55329       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55330       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
55331 
55332 
55333       XLA_AE_LINES_PKG.ValidateCurrentLine;
55334       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55335 
55336       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55337                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
55338                ,p_balance_type_code => l_balance_type_code);
55339 
55340    END IF;
55341 
55342    -----------------------------------------------------------------------------------------
55343    -- 4262811 Multiperiod Accounting
55344    -----------------------------------------------------------------------------------------
55345      -- No MPA option is assigned.
55346 
55347 
55348 END IF;
55349 END IF;
55350 --
55351 
55352 --
55353 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55354    trace
55355       (p_msg      => 'END of AcctLineType_113'
55356       ,p_level    => C_LEVEL_PROCEDURE
55357       ,p_module   => l_log_module);
55358 END IF;
55359 --
55360 EXCEPTION
55361   WHEN xla_exceptions_pkg.application_exception THEN
55362       RAISE;
55363   WHEN OTHERS THEN
55364        xla_exceptions_pkg.raise_message
55365            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_113');
55366 END AcctLineType_113;
55367 --
55368 
55369 ---------------------------------------
55370 --
55371 -- PRIVATE FUNCTION
55372 --         AcctLineType_114
55373 --
55374 ---------------------------------------
55375 PROCEDURE AcctLineType_114 (
55376   p_application_id        IN NUMBER
55377  ,p_event_id              IN NUMBER
55378  ,p_calculate_acctd_flag  IN VARCHAR2
55379  ,p_calculate_g_l_flag    IN VARCHAR2
55380  ,p_actual_flag           IN OUT VARCHAR2
55381  ,p_balance_type_code     OUT VARCHAR2
55382  ,p_gain_or_loss_ref      OUT VARCHAR2
55383  
55384 --Distribution GL Account
55385  , p_source_22            IN NUMBER
55386 --Distribution Source Type
55387  , p_source_27            IN VARCHAR2
55388 --Receivable Activity Type
55389  , p_source_28            IN VARCHAR2
55390 --Distribution Line Identifier
55391  , p_source_29            IN NUMBER
55392 --Distribution Type
55393  , p_source_30            IN VARCHAR2
55394 --Exchange Date
55395  , p_source_33            IN DATE
55396 --Exchange Rate
55397  , p_source_34            IN NUMBER
55398 --Exchange Rate Type
55399  , p_source_35            IN VARCHAR2
55400 --Applied To Document Accounting Amount
55401  , p_source_36            IN NUMBER
55402 --Transaction Distribution Identifier
55403  , p_source_44            IN NUMBER
55404 --Transaction Distribution Type
55405  , p_source_45            IN VARCHAR2
55406 --Distribution Multi Fund Additional Entry
55407  , p_source_88            IN VARCHAR2
55408 --Cash Receipt Identifier
55409  , p_source_90            IN NUMBER
55410 --Receipt Applied To Application Identifier
55411  , p_source_92            IN NUMBER
55412 --Transaction Entity Code
55413  , p_source_93            IN VARCHAR2
55414 --Transaction Identifier
55415  , p_source_94            IN NUMBER
55416 --DIST_ENT_AMT_FROM
55417  , p_source_95            IN NUMBER
55418 --Applying Document Currency Code
55419  , p_source_96            IN VARCHAR2
55420 --Distribution Party Identifier
55421  , p_source_97            IN NUMBER
55422 --Distribution Party Site Id
55423  , p_source_98            IN NUMBER
55424 --Distribution Party Type
55425  , p_source_99            IN VARCHAR2
55426 )
55427 IS
55428 
55429 l_component_type              VARCHAR2(80);
55430 l_component_code              VARCHAR2(30);
55431 l_component_type_code         VARCHAR2(1);
55432 l_component_appl_id           INTEGER;
55433 l_amb_context_code            VARCHAR2(30);
55434 l_entity_code                 VARCHAR2(30);
55435 l_event_class_code            VARCHAR2(30);
55436 l_ae_header_id                NUMBER;
55437 l_event_type_code             VARCHAR2(30);
55438 l_line_definition_code        VARCHAR2(30);
55439 l_line_definition_owner_code  VARCHAR2(1);
55440 --
55441 -- adr variables
55442 l_segment                     VARCHAR2(30);
55443 l_ccid                        NUMBER;
55444 l_adr_transaction_coa_id      NUMBER;
55445 l_adr_accounting_coa_id       NUMBER;
55446 l_adr_flexfield_segment_code  VARCHAR2(30);
55447 l_adr_flex_value_set_id       NUMBER;
55451 
55448 l_adr_value_type_code         VARCHAR2(30);
55449 l_adr_value_combination_id    NUMBER;
55450 l_adr_value_segment_code      VARCHAR2(30);
55452 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
55453 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
55454 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
55455 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
55456 
55457 -- 4262811 Variables ------------------------------------------------------------------------------------------
55458 l_entered_amt_idx             NUMBER;
55459 l_accted_amt_idx              NUMBER;
55460 l_acc_rev_flag                VARCHAR2(1);
55461 l_accrual_line_num            NUMBER;
55462 l_tmp_amt                     NUMBER;
55463 l_acc_rev_natural_side_code   VARCHAR2(1);
55464 
55465 l_num_entries                 NUMBER;
55466 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
55467 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
55468 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
55469 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
55470 l_recog_line_1                NUMBER;
55471 l_recog_line_2                NUMBER;
55472 
55473 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
55474 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
55475 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
55476 
55477 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55478 
55479 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
55480 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
55481 
55482 ---------------------------------------------------------------------------------------------------------------
55483 
55484 
55485 --
55486 -- bulk performance
55487 --
55488 l_balance_type_code           VARCHAR2(1);
55489 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
55490 l_log_module                  VARCHAR2(240);
55491 
55492 --
55493 -- Upgrade strategy
55494 --
55495 l_actual_upg_option           VARCHAR2(1);
55496 l_enc_upg_option           VARCHAR2(1);
55497 
55498 --
55499 BEGIN
55500 --
55501 IF g_log_enabled THEN
55502       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_114';
55503 END IF;
55504 --
55505 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55506 
55507       trace
55508          (p_msg      => 'BEGIN of AcctLineType_114'
55509          ,p_level    => C_LEVEL_PROCEDURE
55510          ,p_module   => l_log_module);
55511 
55512 END IF;
55513 --
55514 l_component_type             := 'AMB_JLT';
55515 l_component_code             := 'RCT_PMT_NET';
55516 l_component_type_code        := 'S';
55517 l_component_appl_id          :=  222;
55518 l_amb_context_code           := 'DEFAULT';
55519 l_entity_code                := 'RECEIPTS';
55520 l_event_class_code           := 'RECEIPT';
55521 l_event_type_code            := 'RECEIPT_ALL';
55522 l_line_definition_owner_code := 'S';
55523 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
55524 --
55525 l_balance_type_code          := 'A';
55526 l_segment                     := NULL;
55527 l_ccid                        := NULL;
55528 l_adr_transaction_coa_id      := NULL;
55529 l_adr_accounting_coa_id       := NULL;
55530 l_adr_flexfield_segment_code  := NULL;
55531 l_adr_flex_value_set_id       := NULL;
55532 l_adr_value_type_code         := NULL;
55533 l_adr_value_combination_id    := NULL;
55534 l_adr_value_segment_code      := NULL;
55535 
55536 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
55537 l_bflow_class_code           := '';    -- 4219869 Business Flow
55538 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
55539 l_budgetary_control_flag     := 'N';
55540 
55541 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
55542 l_bflow_applied_to_amt       := NULL; -- 5132302
55543 l_entered_amt_idx            := NULL;          -- 4262811
55544 l_accted_amt_idx             := NULL;          -- 4262811
55545 l_acc_rev_flag               := NULL;          -- 4262811
55546 l_accrual_line_num           := NULL;          -- 4262811
55547 l_tmp_amt                    := NULL;          -- 4262811
55548 --
55549  
55550 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55551     l_balance_type_code <> 'B' THEN
55552 IF (NVL(p_source_27,'
55553 ') =  'OTHER_ACC' OR 
55554 NVL(p_source_27,'
55555 ') =  'ACTIVITY') AND 
55556 NVL(p_source_28,'
55557 ') =  'NETTING' AND 
55558 NVL(p_source_88,'
55559 ') =  'N'
55560  THEN 
55561 
55562    --
55563    XLA_AE_LINES_PKG.SetNewLine;
55564 
55565    p_balance_type_code          := l_balance_type_code;
55566    -- set the flag so later we will know whether the gain loss line needs to be created
55567    
55568    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55569      p_actual_flag :='A';
55570    END IF;
55571 
55572    --
55573    -- bulk performance
55574    --
55575    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55576                                       p_header_num   => 0); -- 4262811
55577    --
55578    -- set accounting line options
55579    --
55583          , p_gl_transfer_mode_code      => 'S'
55580    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55581            p_natural_side_code          => 'C'
55582          , p_gain_or_loss_flag          => 'N'
55584          , p_acct_entry_type_code       => 'A'
55585          , p_switch_side_flag           => 'Y'
55586          , p_merge_duplicate_code       => 'A'
55587          );
55588    --
55589    l_acc_rev_natural_side_code := 'D';  -- 4262811
55590    -- 
55591    --
55592    -- set accounting line type info
55593    --
55594    xla_ae_lines_pkg.SetAcctLineType
55595       (p_component_type             => l_component_type
55596       ,p_event_type_code            => l_event_type_code
55597       ,p_line_definition_owner_code => l_line_definition_owner_code
55598       ,p_line_definition_code       => l_line_definition_code
55599       ,p_accounting_line_code       => l_component_code
55600       ,p_accounting_line_type_code  => l_component_type_code
55601       ,p_accounting_line_appl_id    => l_component_appl_id
55602       ,p_amb_context_code           => l_amb_context_code
55603       ,p_entity_code                => l_entity_code
55604       ,p_event_class_code           => l_event_class_code);
55605    --
55606    -- set accounting class
55607    --
55608    xla_ae_lines_pkg.SetAcctClass(
55609            p_accounting_class_code  => 'PMT_NET'
55610          , p_ae_header_id           => l_ae_header_id
55611          );
55612 
55613    --
55614    -- set rounding class
55615    --
55616    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55617                       'RECEIVABLE';
55618 
55619    --
55620    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55621    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55622    --
55623    -- bulk performance
55624    --
55625    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55626 
55627    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55628       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55629 
55630    -- 4955764
55631    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55632       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55633 
55634    -- 4458381 Public Sector Enh
55635    
55636    --
55637    -- set accounting attributes for the line type
55638    --
55639    l_entered_amt_idx := 8;
55640    l_accted_amt_idx  := 13;
55641    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
55642    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
55643    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
55644    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
55645    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
55646    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
55647    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
55648    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
55649    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
55650    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
55651    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
55652    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
55653    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
55654    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
55655    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
55656    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
55657    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
55658    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
55659    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
55660    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
55661    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
55662    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
55663    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
55664    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
55665    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
55666    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
55667    l_rec_acct_attrs.array_num_value(13)  := p_source_36;
55668    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
55669    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
55670    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
55671    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
55672    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
55673    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
55674 
55675    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55676    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55677 
55678    ---------------------------------------------------------------------------------------------------------------
55679    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55680    ---------------------------------------------------------------------------------------------------------------
55681    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55682 
55686    IF xla_accounting_cache_pkg.GetValueChar
55683    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55684    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55685 
55687          (p_source_code         => 'LEDGER_CATEGORY_CODE'
55688          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55689    AND l_bflow_method_code = 'PRIOR_ENTRY'
55690 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55691    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55692          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55693        )
55694    THEN
55695          xla_ae_lines_pkg.BflowUpgEntry
55696            (p_business_method_code    => l_bflow_method_code
55697            ,p_business_class_code     => l_bflow_class_code
55698            ,p_balance_type            => l_balance_type_code);
55699    ELSE
55700       NULL;
55701 -- No business flow processing for business flow method of NONE.
55702    END IF;
55703 
55704    --
55705    -- call analytical criteria
55706    --
55707    
55708 
55709 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
55710 xla_ae_lines_pkg.SetAnalyticalCriteria(
55711    p_analytical_criterion_name    => 'Check Id'
55712  , p_analytical_criterion_owner   => 'S'
55713  , p_analytical_criterion_code    => 'CHECK_ID'
55714  , p_amb_context_code             => 'DEFAULT'
55715  , p_balancing_flag               => 'N'
55716  
55717  , p_analytical_detail_char_1    =>  NULL
55718  , p_analytical_detail_num_1     =>  p_source_90
55719  , p_analytical_detail_date_1    =>  NULL
55720 
55721  , p_ae_header_id                 => l_ae_header_id
55722 )
55723 ;
55724 --
55725 
55726    --
55727    -- call description
55728    --
55729    -- No description or it is inherited.
55730    --
55731    -- call ADRs
55732    -- Bug 4922099
55733    --
55734    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55735         (NVL(l_actual_upg_option, 'N') = 'O') OR
55736         (NVL(l_enc_upg_option, 'N') = 'O')
55737       )
55738    THEN
55739    NULL;
55740    --
55741    --
55742    
55743   l_ccid := AcctDerRule_20(
55744            p_application_id           => p_application_id
55745          , p_ae_header_id             => l_ae_header_id 
55746 , p_source_22 => p_source_22
55747          , x_transaction_coa_id       => l_adr_transaction_coa_id
55748          , x_accounting_coa_id        => l_adr_accounting_coa_id
55749          , x_value_type_code          => l_adr_value_type_code
55750          , p_side                     => 'NA'
55751    );
55752 
55753    xla_ae_lines_pkg.set_ccid(
55754     p_code_combination_id          => l_ccid
55755   , p_value_type_code              => l_adr_value_type_code
55756   , p_transaction_coa_id           => l_adr_transaction_coa_id
55757   , p_accounting_coa_id            => l_adr_accounting_coa_id
55758   , p_adr_code                     => 'DIST_CCID'
55759   , p_adr_type_code                => 'S'
55760   , p_component_type               => l_component_type
55761   , p_component_code               => l_component_code
55762   , p_component_type_code          => l_component_type_code
55763   , p_component_appl_id            => l_component_appl_id
55764   , p_amb_context_code             => l_amb_context_code
55765   , p_side                         => 'NA'
55766   );
55767 
55768 
55769    --
55770    --
55771    END IF;
55772    --
55773    -- Bug 4922099
55774    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55775           (NVL(l_enc_upg_option, 'N') = 'O')
55776         ) AND
55777         (l_bflow_method_code = 'PRIOR_ENTRY')
55778       )
55779    THEN
55780       IF
55781       --
55782       1 = 2
55783       --
55784       THEN
55785       xla_accounting_err_pkg.build_message
55786                                     (p_appli_s_name            => 'XLA'
55787                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55788                                     ,p_token_1                 => 'LINE_NUMBER'
55789                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
55790                                     ,p_token_2                 => 'LINE_TYPE_NAME'
55791                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
55792                                                                              l_component_type
55793                                                                             ,l_component_code
55794                                                                             ,l_component_type_code
55795                                                                             ,l_component_appl_id
55796                                                                             ,l_amb_context_code
55797                                                                             ,l_entity_code
55798                                                                             ,l_event_class_code
55799                                                                            )
55800                                     ,p_token_3                 => 'OWNER'
55801                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
55805                                     ,p_token_4                 => 'PRODUCT_NAME'
55802                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
55803                                                                           ,p_lookup_code    => l_component_type_code
55804                                                                          )
55806                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55807                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55808                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55809                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55810                                     ,p_ae_header_id            =>  NULL
55811                                        );
55812 
55813         IF (C_LEVEL_ERROR>= g_log_level) THEN
55814                  trace
55815                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55816                       ,p_level    => C_LEVEL_ERROR
55817                       ,p_module   => l_log_module);
55818         END IF;
55819       END IF;
55820    END IF;
55821    --
55822    --
55823    ------------------------------------------------------------------------------------------------
55824    -- 4219869 Business Flow
55825    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55826    -- Prior Entry.  Currently, the following code is always generated.
55827    ------------------------------------------------------------------------------------------------
55828    XLA_AE_LINES_PKG.ValidateCurrentLine;
55829 
55830    ------------------------------------------------------------------------------------
55831    -- 4219869 Business Flow
55832    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55833    ------------------------------------------------------------------------------------
55834    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55835 
55836    ----------------------------------------------------------------------------------
55837    -- 4219869 Business Flow
55838    -- Update journal entry status -- Need to generate this within IF <condition>
55839    ----------------------------------------------------------------------------------
55840    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55841          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55842          ,p_balance_type_code => l_balance_type_code
55843          );
55844 
55845    -------------------------------------------------------------------------------------------
55846    -- 4262811 - Generate the Accrual Reversal lines
55847    -------------------------------------------------------------------------------------------
55848    BEGIN
55849       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55850                               (g_array_event(p_event_id).array_value_num('header_index'));
55851       IF l_acc_rev_flag IS NULL THEN
55852          l_acc_rev_flag := 'N';
55853       END IF;
55854    EXCEPTION
55855       WHEN OTHERS THEN
55856          l_acc_rev_flag := 'N';
55857    END;
55858    --
55859    IF (l_acc_rev_flag = 'Y') THEN
55860 
55861        -- 4645092  ------------------------------------------------------------------------------
55862        -- To allow MPA report to determine if it should generate report process
55863        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55864        ------------------------------------------------------------------------------------------
55865 
55866        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55867        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55868    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
55869    -- call ADRs
55870    -- Bug 4922099
55871    --
55872    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55873         (NVL(l_actual_upg_option, 'N') = 'O') OR
55874         (NVL(l_enc_upg_option, 'N') = 'O')
55875       )
55876    THEN
55877    NULL;
55878    --
55879    --
55880    
55881   l_ccid := AcctDerRule_20(
55882            p_application_id           => p_application_id
55883          , p_ae_header_id             => l_ae_header_id 
55884 , p_source_22 => p_source_22
55885          , x_transaction_coa_id       => l_adr_transaction_coa_id
55886          , x_accounting_coa_id        => l_adr_accounting_coa_id
55887          , x_value_type_code          => l_adr_value_type_code
55888          , p_side                     => 'NA'
55889    );
55890 
55891    xla_ae_lines_pkg.set_ccid(
55892     p_code_combination_id          => l_ccid
55893   , p_value_type_code              => l_adr_value_type_code
55894   , p_transaction_coa_id           => l_adr_transaction_coa_id
55895   , p_accounting_coa_id            => l_adr_accounting_coa_id
55896   , p_adr_code                     => 'DIST_CCID'
55897   , p_adr_type_code                => 'S'
55898   , p_component_type               => l_component_type
55899   , p_component_code               => l_component_code
55900   , p_component_type_code          => l_component_type_code
55901   , p_component_appl_id            => l_component_appl_id
55902   , p_amb_context_code             => l_amb_context_code
55903   , p_side                         => 'NA'
55904   );
55905 
55906 
55907    --
55908    --
55909    END IF;
55913        --
55910 
55911        --
55912        -- Update the line information that should be overwritten
55914        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55915                                          p_header_num   => 1);
55916        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
55917 
55918        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55919 
55920        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
55921           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
55922        END IF;
55923 
55924       --
55925       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
55926       --
55927       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
55928           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
55929       ELSE
55930           ---------------------------------------------------------------------------------------------------
55931           -- 4262811a Switch Sign
55932           ---------------------------------------------------------------------------------------------------
55933           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
55934           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55935                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55936           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55937                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55938           -- 5132302
55939           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
55940                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55941 
55942       END IF;
55943 
55944       -- 4955764
55945       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55946       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
55947 
55948 
55949       XLA_AE_LINES_PKG.ValidateCurrentLine;
55950       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55951 
55952       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55953                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
55954                ,p_balance_type_code => l_balance_type_code);
55955 
55956    END IF;
55957 
55958    -----------------------------------------------------------------------------------------
55959    -- 4262811 Multiperiod Accounting
55960    -----------------------------------------------------------------------------------------
55961      -- No MPA option is assigned.
55962 
55963 
55964 END IF;
55965 END IF;
55966 --
55967 
55968 --
55969 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55970    trace
55971       (p_msg      => 'END of AcctLineType_114'
55972       ,p_level    => C_LEVEL_PROCEDURE
55973       ,p_module   => l_log_module);
55974 END IF;
55975 --
55976 EXCEPTION
55977   WHEN xla_exceptions_pkg.application_exception THEN
55978       RAISE;
55979   WHEN OTHERS THEN
55980        xla_exceptions_pkg.raise_message
55981            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_114');
55982 END AcctLineType_114;
55983 --
55984 
55985 ---------------------------------------
55986 --
55987 -- PRIVATE FUNCTION
55988 --         AcctLineType_115
55989 --
55990 ---------------------------------------
55991 PROCEDURE AcctLineType_115 (
55992   p_application_id        IN NUMBER
55993  ,p_event_id              IN NUMBER
55994  ,p_calculate_acctd_flag  IN VARCHAR2
55995  ,p_calculate_g_l_flag    IN VARCHAR2
55996  ,p_actual_flag           IN OUT VARCHAR2
55997  ,p_balance_type_code     OUT VARCHAR2
55998  ,p_gain_or_loss_ref      OUT VARCHAR2
55999  
56000 --Distribution GL Account
56001  , p_source_22            IN NUMBER
56002 --Distribution Source Type
56003  , p_source_27            IN VARCHAR2
56004 --Receivable Activity Type
56005  , p_source_28            IN VARCHAR2
56006 --Distribution Line Identifier
56007  , p_source_29            IN NUMBER
56008 --Distribution Type
56009  , p_source_30            IN VARCHAR2
56010 --Exchange Date
56011  , p_source_33            IN DATE
56012 --Exchange Rate
56013  , p_source_34            IN NUMBER
56014 --Exchange Rate Type
56015  , p_source_35            IN VARCHAR2
56016 --Accounting Amount
56017  , p_source_40            IN NUMBER
56018 --Transaction Distribution Identifier
56019  , p_source_44            IN NUMBER
56020 --Transaction Distribution Type
56021  , p_source_45            IN VARCHAR2
56022 --Distribution Multi Fund Additional Entry
56023  , p_source_88            IN VARCHAR2
56024 --Cash Receipt Identifier
56025  , p_source_90            IN NUMBER
56026 --Receipt Applied To Application Identifier
56027  , p_source_92            IN NUMBER
56028 --Transaction Entity Code
56029  , p_source_93            IN VARCHAR2
56030 --Transaction Identifier
56031  , p_source_94            IN NUMBER
56032 --DIST_ENT_AMT_FROM
56033  , p_source_95            IN NUMBER
56034 --Applying Document Currency Code
56035  , p_source_96            IN VARCHAR2
56039  , p_source_98            IN NUMBER
56036 --Distribution Party Identifier
56037  , p_source_97            IN NUMBER
56038 --Distribution Party Site Id
56040 --Distribution Party Type
56041  , p_source_99            IN VARCHAR2
56042 )
56043 IS
56044 
56045 l_component_type              VARCHAR2(80);
56046 l_component_code              VARCHAR2(30);
56047 l_component_type_code         VARCHAR2(1);
56048 l_component_appl_id           INTEGER;
56049 l_amb_context_code            VARCHAR2(30);
56050 l_entity_code                 VARCHAR2(30);
56051 l_event_class_code            VARCHAR2(30);
56052 l_ae_header_id                NUMBER;
56053 l_event_type_code             VARCHAR2(30);
56054 l_line_definition_code        VARCHAR2(30);
56055 l_line_definition_owner_code  VARCHAR2(1);
56056 --
56057 -- adr variables
56058 l_segment                     VARCHAR2(30);
56059 l_ccid                        NUMBER;
56060 l_adr_transaction_coa_id      NUMBER;
56061 l_adr_accounting_coa_id       NUMBER;
56062 l_adr_flexfield_segment_code  VARCHAR2(30);
56063 l_adr_flex_value_set_id       NUMBER;
56064 l_adr_value_type_code         VARCHAR2(30);
56065 l_adr_value_combination_id    NUMBER;
56066 l_adr_value_segment_code      VARCHAR2(30);
56067 
56068 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
56069 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
56070 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
56071 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
56072 
56073 -- 4262811 Variables ------------------------------------------------------------------------------------------
56074 l_entered_amt_idx             NUMBER;
56075 l_accted_amt_idx              NUMBER;
56076 l_acc_rev_flag                VARCHAR2(1);
56077 l_accrual_line_num            NUMBER;
56078 l_tmp_amt                     NUMBER;
56079 l_acc_rev_natural_side_code   VARCHAR2(1);
56080 
56081 l_num_entries                 NUMBER;
56082 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
56083 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
56084 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
56085 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
56086 l_recog_line_1                NUMBER;
56087 l_recog_line_2                NUMBER;
56088 
56089 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
56090 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
56091 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
56092 
56093 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56094 
56095 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
56096 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
56097 
56098 ---------------------------------------------------------------------------------------------------------------
56099 
56100 
56101 --
56102 -- bulk performance
56103 --
56104 l_balance_type_code           VARCHAR2(1);
56105 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
56106 l_log_module                  VARCHAR2(240);
56107 
56108 --
56109 -- Upgrade strategy
56110 --
56111 l_actual_upg_option           VARCHAR2(1);
56112 l_enc_upg_option           VARCHAR2(1);
56113 
56114 --
56115 BEGIN
56116 --
56117 IF g_log_enabled THEN
56118       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_115';
56119 END IF;
56120 --
56121 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56122 
56123       trace
56124          (p_msg      => 'BEGIN of AcctLineType_115'
56125          ,p_level    => C_LEVEL_PROCEDURE
56126          ,p_module   => l_log_module);
56127 
56128 END IF;
56129 --
56130 l_component_type             := 'AMB_JLT';
56131 l_component_code             := 'RCT_PREPAYMENT';
56132 l_component_type_code        := 'S';
56133 l_component_appl_id          :=  222;
56134 l_amb_context_code           := 'DEFAULT';
56135 l_entity_code                := 'RECEIPTS';
56136 l_event_class_code           := 'RECEIPT';
56137 l_event_type_code            := 'RECEIPT_ALL';
56138 l_line_definition_owner_code := 'S';
56139 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
56140 --
56141 l_balance_type_code          := 'A';
56142 l_segment                     := NULL;
56143 l_ccid                        := NULL;
56144 l_adr_transaction_coa_id      := NULL;
56145 l_adr_accounting_coa_id       := NULL;
56146 l_adr_flexfield_segment_code  := NULL;
56147 l_adr_flex_value_set_id       := NULL;
56148 l_adr_value_type_code         := NULL;
56149 l_adr_value_combination_id    := NULL;
56150 l_adr_value_segment_code      := NULL;
56151 
56152 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
56153 l_bflow_class_code           := '';    -- 4219869 Business Flow
56154 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
56155 l_budgetary_control_flag     := 'N';
56156 
56157 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
56158 l_bflow_applied_to_amt       := NULL; -- 5132302
56159 l_entered_amt_idx            := NULL;          -- 4262811
56160 l_accted_amt_idx             := NULL;          -- 4262811
56161 l_acc_rev_flag               := NULL;          -- 4262811
56162 l_accrual_line_num           := NULL;          -- 4262811
56166 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56163 l_tmp_amt                    := NULL;          -- 4262811
56164 --
56165  
56167     l_balance_type_code <> 'B' THEN
56168 IF NVL(p_source_27,'
56169 ') =  'OTHER ACC' AND 
56170 NVL(p_source_28,'
56171 ') =  'PREPAYMENT' AND 
56172 NVL(p_source_88,'
56173 ') =  'N'
56174  THEN 
56175 
56176    --
56177    XLA_AE_LINES_PKG.SetNewLine;
56178 
56179    p_balance_type_code          := l_balance_type_code;
56180    -- set the flag so later we will know whether the gain loss line needs to be created
56181    
56182    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56183      p_actual_flag :='A';
56184    END IF;
56185 
56186    --
56187    -- bulk performance
56188    --
56189    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56190                                       p_header_num   => 0); -- 4262811
56191    --
56192    -- set accounting line options
56193    --
56194    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56195            p_natural_side_code          => 'C'
56196          , p_gain_or_loss_flag          => 'N'
56197          , p_gl_transfer_mode_code      => 'S'
56198          , p_acct_entry_type_code       => 'A'
56199          , p_switch_side_flag           => 'Y'
56200          , p_merge_duplicate_code       => 'A'
56201          );
56202    --
56203    l_acc_rev_natural_side_code := 'D';  -- 4262811
56204    -- 
56205    --
56206    -- set accounting line type info
56207    --
56208    xla_ae_lines_pkg.SetAcctLineType
56209       (p_component_type             => l_component_type
56210       ,p_event_type_code            => l_event_type_code
56211       ,p_line_definition_owner_code => l_line_definition_owner_code
56212       ,p_line_definition_code       => l_line_definition_code
56213       ,p_accounting_line_code       => l_component_code
56214       ,p_accounting_line_type_code  => l_component_type_code
56215       ,p_accounting_line_appl_id    => l_component_appl_id
56216       ,p_amb_context_code           => l_amb_context_code
56217       ,p_entity_code                => l_entity_code
56218       ,p_event_class_code           => l_event_class_code);
56219    --
56220    -- set accounting class
56221    --
56222    xla_ae_lines_pkg.SetAcctClass(
56223            p_accounting_class_code  => 'PREPAY'
56224          , p_ae_header_id           => l_ae_header_id
56225          );
56226 
56227    --
56228    -- set rounding class
56229    --
56230    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
56231                       'RECEIVABLE';
56232 
56233    --
56234    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
56235    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
56236    --
56237    -- bulk performance
56238    --
56239    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
56240 
56241    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
56242       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
56243 
56244    -- 4955764
56245    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56246       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
56247 
56248    -- 4458381 Public Sector Enh
56249    
56250    --
56251    -- set accounting attributes for the line type
56252    --
56253    l_entered_amt_idx := 8;
56254    l_accted_amt_idx  := 13;
56255    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
56256    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
56257    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
56258    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
56259    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
56260    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
56261    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
56262    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
56263    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
56264    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
56265    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
56266    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
56267    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
56268    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
56269    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
56270    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
56271    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
56272    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
56273    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
56274    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
56275    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
56276    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
56277    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
56278    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
56279    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
56283    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
56280    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
56281    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
56282    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
56284    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
56285    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
56286    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
56287    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
56288 
56289    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
56290    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
56291 
56292    ---------------------------------------------------------------------------------------------------------------
56293    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
56294    ---------------------------------------------------------------------------------------------------------------
56295    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
56296 
56297    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56298    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56299 
56300    IF xla_accounting_cache_pkg.GetValueChar
56301          (p_source_code         => 'LEDGER_CATEGORY_CODE'
56302          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
56303    AND l_bflow_method_code = 'PRIOR_ENTRY'
56304 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
56305    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
56306          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
56307        )
56308    THEN
56309          xla_ae_lines_pkg.BflowUpgEntry
56310            (p_business_method_code    => l_bflow_method_code
56311            ,p_business_class_code     => l_bflow_class_code
56312            ,p_balance_type            => l_balance_type_code);
56313    ELSE
56314       NULL;
56315 -- No business flow processing for business flow method of NONE.
56316    END IF;
56317 
56318    --
56319    -- call analytical criteria
56320    --
56321    
56322 
56323 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
56324 xla_ae_lines_pkg.SetAnalyticalCriteria(
56325    p_analytical_criterion_name    => 'Check Id'
56326  , p_analytical_criterion_owner   => 'S'
56327  , p_analytical_criterion_code    => 'CHECK_ID'
56328  , p_amb_context_code             => 'DEFAULT'
56329  , p_balancing_flag               => 'N'
56330  
56331  , p_analytical_detail_char_1    =>  NULL
56332  , p_analytical_detail_num_1     =>  p_source_90
56333  , p_analytical_detail_date_1    =>  NULL
56334 
56335  , p_ae_header_id                 => l_ae_header_id
56336 )
56337 ;
56338 --
56339 
56340    --
56341    -- call description
56342    --
56343    -- No description or it is inherited.
56344    --
56345    -- call ADRs
56346    -- Bug 4922099
56347    --
56348    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56349         (NVL(l_actual_upg_option, 'N') = 'O') OR
56350         (NVL(l_enc_upg_option, 'N') = 'O')
56351       )
56352    THEN
56353    NULL;
56354    --
56355    --
56356    
56357   l_ccid := AcctDerRule_20(
56358            p_application_id           => p_application_id
56359          , p_ae_header_id             => l_ae_header_id 
56360 , p_source_22 => p_source_22
56361          , x_transaction_coa_id       => l_adr_transaction_coa_id
56362          , x_accounting_coa_id        => l_adr_accounting_coa_id
56363          , x_value_type_code          => l_adr_value_type_code
56364          , p_side                     => 'NA'
56365    );
56366 
56367    xla_ae_lines_pkg.set_ccid(
56368     p_code_combination_id          => l_ccid
56369   , p_value_type_code              => l_adr_value_type_code
56370   , p_transaction_coa_id           => l_adr_transaction_coa_id
56371   , p_accounting_coa_id            => l_adr_accounting_coa_id
56372   , p_adr_code                     => 'DIST_CCID'
56373   , p_adr_type_code                => 'S'
56374   , p_component_type               => l_component_type
56375   , p_component_code               => l_component_code
56376   , p_component_type_code          => l_component_type_code
56377   , p_component_appl_id            => l_component_appl_id
56378   , p_amb_context_code             => l_amb_context_code
56379   , p_side                         => 'NA'
56380   );
56381 
56382 
56383    --
56384    --
56385    END IF;
56386    --
56387    -- Bug 4922099
56388    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
56389           (NVL(l_enc_upg_option, 'N') = 'O')
56390         ) AND
56391         (l_bflow_method_code = 'PRIOR_ENTRY')
56392       )
56393    THEN
56394       IF
56395       --
56396       1 = 2
56397       --
56398       THEN
56399       xla_accounting_err_pkg.build_message
56400                                     (p_appli_s_name            => 'XLA'
56401                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56402                                     ,p_token_1                 => 'LINE_NUMBER'
56403                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
56407                                                                             ,l_component_code
56404                                     ,p_token_2                 => 'LINE_TYPE_NAME'
56405                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
56406                                                                              l_component_type
56408                                                                             ,l_component_type_code
56409                                                                             ,l_component_appl_id
56410                                                                             ,l_amb_context_code
56411                                                                             ,l_entity_code
56412                                                                             ,l_event_class_code
56413                                                                            )
56414                                     ,p_token_3                 => 'OWNER'
56415                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
56416                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
56417                                                                           ,p_lookup_code    => l_component_type_code
56418                                                                          )
56419                                     ,p_token_4                 => 'PRODUCT_NAME'
56420                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
56421                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
56422                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
56423                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
56424                                     ,p_ae_header_id            =>  NULL
56425                                        );
56426 
56427         IF (C_LEVEL_ERROR>= g_log_level) THEN
56428                  trace
56429                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56430                       ,p_level    => C_LEVEL_ERROR
56431                       ,p_module   => l_log_module);
56432         END IF;
56433       END IF;
56434    END IF;
56435    --
56436    --
56437    ------------------------------------------------------------------------------------------------
56438    -- 4219869 Business Flow
56439    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
56440    -- Prior Entry.  Currently, the following code is always generated.
56441    ------------------------------------------------------------------------------------------------
56442    XLA_AE_LINES_PKG.ValidateCurrentLine;
56443 
56444    ------------------------------------------------------------------------------------
56445    -- 4219869 Business Flow
56446    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
56447    ------------------------------------------------------------------------------------
56448    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56449 
56450    ----------------------------------------------------------------------------------
56451    -- 4219869 Business Flow
56452    -- Update journal entry status -- Need to generate this within IF <condition>
56453    ----------------------------------------------------------------------------------
56454    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56455          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
56456          ,p_balance_type_code => l_balance_type_code
56457          );
56458 
56459    -------------------------------------------------------------------------------------------
56460    -- 4262811 - Generate the Accrual Reversal lines
56461    -------------------------------------------------------------------------------------------
56462    BEGIN
56463       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
56464                               (g_array_event(p_event_id).array_value_num('header_index'));
56465       IF l_acc_rev_flag IS NULL THEN
56466          l_acc_rev_flag := 'N';
56467       END IF;
56468    EXCEPTION
56469       WHEN OTHERS THEN
56470          l_acc_rev_flag := 'N';
56471    END;
56472    --
56473    IF (l_acc_rev_flag = 'Y') THEN
56474 
56475        -- 4645092  ------------------------------------------------------------------------------
56476        -- To allow MPA report to determine if it should generate report process
56477        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
56478        ------------------------------------------------------------------------------------------
56479 
56480        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
56481        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
56482    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
56483    -- call ADRs
56484    -- Bug 4922099
56485    --
56486    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56487         (NVL(l_actual_upg_option, 'N') = 'O') OR
56488         (NVL(l_enc_upg_option, 'N') = 'O')
56489       )
56490    THEN
56491    NULL;
56492    --
56493    --
56494    
56495   l_ccid := AcctDerRule_20(
56496            p_application_id           => p_application_id
56497          , p_ae_header_id             => l_ae_header_id 
56498 , p_source_22 => p_source_22
56499          , x_transaction_coa_id       => l_adr_transaction_coa_id
56503    );
56500          , x_accounting_coa_id        => l_adr_accounting_coa_id
56501          , x_value_type_code          => l_adr_value_type_code
56502          , p_side                     => 'NA'
56504 
56505    xla_ae_lines_pkg.set_ccid(
56506     p_code_combination_id          => l_ccid
56507   , p_value_type_code              => l_adr_value_type_code
56508   , p_transaction_coa_id           => l_adr_transaction_coa_id
56509   , p_accounting_coa_id            => l_adr_accounting_coa_id
56510   , p_adr_code                     => 'DIST_CCID'
56511   , p_adr_type_code                => 'S'
56512   , p_component_type               => l_component_type
56513   , p_component_code               => l_component_code
56514   , p_component_type_code          => l_component_type_code
56515   , p_component_appl_id            => l_component_appl_id
56516   , p_amb_context_code             => l_amb_context_code
56517   , p_side                         => 'NA'
56518   );
56519 
56520 
56521    --
56522    --
56523    END IF;
56524 
56525        --
56526        -- Update the line information that should be overwritten
56527        --
56528        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
56529                                          p_header_num   => 1);
56530        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
56531 
56532        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
56533 
56534        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
56535           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56536        END IF;
56537 
56538       --
56539       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56540       --
56541       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56542           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
56543       ELSE
56544           ---------------------------------------------------------------------------------------------------
56545           -- 4262811a Switch Sign
56546           ---------------------------------------------------------------------------------------------------
56547           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
56548           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56549                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56550           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56551                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56552           -- 5132302
56553           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56554                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56555 
56556       END IF;
56557 
56558       -- 4955764
56559       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56560       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56561 
56562 
56563       XLA_AE_LINES_PKG.ValidateCurrentLine;
56564       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56565 
56566       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56567                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56568                ,p_balance_type_code => l_balance_type_code);
56569 
56570    END IF;
56571 
56572    -----------------------------------------------------------------------------------------
56573    -- 4262811 Multiperiod Accounting
56574    -----------------------------------------------------------------------------------------
56575      -- No MPA option is assigned.
56576 
56577 
56578 END IF;
56579 END IF;
56580 --
56581 
56582 --
56583 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56584    trace
56585       (p_msg      => 'END of AcctLineType_115'
56586       ,p_level    => C_LEVEL_PROCEDURE
56587       ,p_module   => l_log_module);
56588 END IF;
56589 --
56590 EXCEPTION
56591   WHEN xla_exceptions_pkg.application_exception THEN
56592       RAISE;
56593   WHEN OTHERS THEN
56594        xla_exceptions_pkg.raise_message
56595            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_115');
56596 END AcctLineType_115;
56597 --
56598 
56599 ---------------------------------------
56600 --
56601 -- PRIVATE FUNCTION
56602 --         AcctLineType_116
56603 --
56604 ---------------------------------------
56605 PROCEDURE AcctLineType_116 (
56606   p_application_id        IN NUMBER
56607  ,p_event_id              IN NUMBER
56608  ,p_calculate_acctd_flag  IN VARCHAR2
56609  ,p_calculate_g_l_flag    IN VARCHAR2
56610  ,p_actual_flag           IN OUT VARCHAR2
56611  ,p_balance_type_code     OUT VARCHAR2
56612  ,p_gain_or_loss_ref      OUT VARCHAR2
56613  
56614 --Distribution GL Account
56615  , p_source_22            IN NUMBER
56616 --Distribution Source Type
56617  , p_source_27            IN VARCHAR2
56618 --Receivable Activity Type
56619  , p_source_28            IN VARCHAR2
56620 --Distribution Line Identifier
56621  , p_source_29            IN NUMBER
56625  , p_source_33            IN DATE
56622 --Distribution Type
56623  , p_source_30            IN VARCHAR2
56624 --Exchange Date
56626 --Exchange Rate
56627  , p_source_34            IN NUMBER
56628 --Exchange Rate Type
56629  , p_source_35            IN VARCHAR2
56630 --Accounting Amount
56631  , p_source_40            IN NUMBER
56632 --Transaction Distribution Identifier
56633  , p_source_44            IN NUMBER
56634 --Transaction Distribution Type
56635  , p_source_45            IN VARCHAR2
56636 --Distribution Multi Fund Additional Entry
56637  , p_source_88            IN VARCHAR2
56638 --Cash Receipt Identifier
56639  , p_source_90            IN NUMBER
56640 --Receipt Applied To Application Identifier
56641  , p_source_92            IN NUMBER
56642 --Transaction Entity Code
56643  , p_source_93            IN VARCHAR2
56644 --Transaction Identifier
56645  , p_source_94            IN NUMBER
56646 --DIST_ENT_AMT_FROM
56647  , p_source_95            IN NUMBER
56648 --Applying Document Currency Code
56649  , p_source_96            IN VARCHAR2
56650 --Distribution Party Identifier
56651  , p_source_97            IN NUMBER
56652 --Distribution Party Site Id
56653  , p_source_98            IN NUMBER
56654 --Distribution Party Type
56655  , p_source_99            IN VARCHAR2
56656 --Receivable Activity Name
56657  , p_source_103            IN VARCHAR2
56658 )
56659 IS
56660 
56661 l_component_type              VARCHAR2(80);
56662 l_component_code              VARCHAR2(30);
56663 l_component_type_code         VARCHAR2(1);
56664 l_component_appl_id           INTEGER;
56665 l_amb_context_code            VARCHAR2(30);
56666 l_entity_code                 VARCHAR2(30);
56667 l_event_class_code            VARCHAR2(30);
56668 l_ae_header_id                NUMBER;
56669 l_event_type_code             VARCHAR2(30);
56670 l_line_definition_code        VARCHAR2(30);
56671 l_line_definition_owner_code  VARCHAR2(1);
56672 --
56673 -- adr variables
56674 l_segment                     VARCHAR2(30);
56675 l_ccid                        NUMBER;
56676 l_adr_transaction_coa_id      NUMBER;
56677 l_adr_accounting_coa_id       NUMBER;
56678 l_adr_flexfield_segment_code  VARCHAR2(30);
56679 l_adr_flex_value_set_id       NUMBER;
56680 l_adr_value_type_code         VARCHAR2(30);
56681 l_adr_value_combination_id    NUMBER;
56682 l_adr_value_segment_code      VARCHAR2(30);
56683 
56684 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
56685 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
56686 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
56687 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
56688 
56689 -- 4262811 Variables ------------------------------------------------------------------------------------------
56690 l_entered_amt_idx             NUMBER;
56691 l_accted_amt_idx              NUMBER;
56692 l_acc_rev_flag                VARCHAR2(1);
56693 l_accrual_line_num            NUMBER;
56694 l_tmp_amt                     NUMBER;
56695 l_acc_rev_natural_side_code   VARCHAR2(1);
56696 
56697 l_num_entries                 NUMBER;
56698 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
56699 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
56700 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
56701 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
56702 l_recog_line_1                NUMBER;
56703 l_recog_line_2                NUMBER;
56704 
56705 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
56706 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
56707 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
56708 
56709 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56710 
56711 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
56712 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
56713 
56714 ---------------------------------------------------------------------------------------------------------------
56715 
56716 
56717 --
56718 -- bulk performance
56719 --
56720 l_balance_type_code           VARCHAR2(1);
56721 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
56722 l_log_module                  VARCHAR2(240);
56723 
56724 --
56725 -- Upgrade strategy
56726 --
56727 l_actual_upg_option           VARCHAR2(1);
56728 l_enc_upg_option           VARCHAR2(1);
56729 
56730 --
56731 BEGIN
56732 --
56733 IF g_log_enabled THEN
56734       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_116';
56735 END IF;
56736 --
56737 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56738 
56739       trace
56740          (p_msg      => 'BEGIN of AcctLineType_116'
56741          ,p_level    => C_LEVEL_PROCEDURE
56742          ,p_module   => l_log_module);
56743 
56744 END IF;
56745 --
56746 l_component_type             := 'AMB_JLT';
56747 l_component_code             := 'RCT_REFUND';
56748 l_component_type_code        := 'S';
56749 l_component_appl_id          :=  222;
56750 l_amb_context_code           := 'DEFAULT';
56751 l_entity_code                := 'RECEIPTS';
56752 l_event_class_code           := 'RECEIPT';
56756 --
56753 l_event_type_code            := 'RECEIPT_ALL';
56754 l_line_definition_owner_code := 'S';
56755 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
56757 l_balance_type_code          := 'A';
56758 l_segment                     := NULL;
56759 l_ccid                        := NULL;
56760 l_adr_transaction_coa_id      := NULL;
56761 l_adr_accounting_coa_id       := NULL;
56762 l_adr_flexfield_segment_code  := NULL;
56763 l_adr_flex_value_set_id       := NULL;
56764 l_adr_value_type_code         := NULL;
56765 l_adr_value_combination_id    := NULL;
56766 l_adr_value_segment_code      := NULL;
56767 
56768 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
56769 l_bflow_class_code           := '';    -- 4219869 Business Flow
56770 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
56771 l_budgetary_control_flag     := 'N';
56772 
56773 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
56774 l_bflow_applied_to_amt       := NULL; -- 5132302
56775 l_entered_amt_idx            := NULL;          -- 4262811
56776 l_accted_amt_idx             := NULL;          -- 4262811
56777 l_acc_rev_flag               := NULL;          -- 4262811
56778 l_accrual_line_num           := NULL;          -- 4262811
56779 l_tmp_amt                    := NULL;          -- 4262811
56780 --
56781  
56782 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56783     l_balance_type_code <> 'B' THEN
56784 IF (NVL(p_source_27,'
56785 ') =  'ACTIVITY' AND 
56786 NVL(p_source_28,'
56787 ') =  'CCREFUND' AND 
56788 NVL(p_source_88,'
56789 ') =  'N') OR 
56790 (NVL(p_source_27,'
56791 ') =  'ACTIVITY' AND 
56792 NVL(p_source_28,'
56793 ') =  'CM_REFUND' AND 
56794 NVL(p_source_88,'
56795 ') =  'N')
56796  THEN 
56797 
56798    --
56799    XLA_AE_LINES_PKG.SetNewLine;
56800 
56801    p_balance_type_code          := l_balance_type_code;
56802    -- set the flag so later we will know whether the gain loss line needs to be created
56803    
56804    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56805      p_actual_flag :='A';
56806    END IF;
56807 
56808    --
56809    -- bulk performance
56810    --
56811    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56812                                       p_header_num   => 0); -- 4262811
56813    --
56814    -- set accounting line options
56815    --
56816    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56817            p_natural_side_code          => 'C'
56818          , p_gain_or_loss_flag          => 'N'
56819          , p_gl_transfer_mode_code      => 'S'
56820          , p_acct_entry_type_code       => 'A'
56821          , p_switch_side_flag           => 'Y'
56822          , p_merge_duplicate_code       => 'A'
56823          );
56824    --
56825    l_acc_rev_natural_side_code := 'D';  -- 4262811
56826    -- 
56827    --
56828    -- set accounting line type info
56829    --
56830    xla_ae_lines_pkg.SetAcctLineType
56831       (p_component_type             => l_component_type
56832       ,p_event_type_code            => l_event_type_code
56833       ,p_line_definition_owner_code => l_line_definition_owner_code
56834       ,p_line_definition_code       => l_line_definition_code
56835       ,p_accounting_line_code       => l_component_code
56836       ,p_accounting_line_type_code  => l_component_type_code
56837       ,p_accounting_line_appl_id    => l_component_appl_id
56838       ,p_amb_context_code           => l_amb_context_code
56839       ,p_entity_code                => l_entity_code
56840       ,p_event_class_code           => l_event_class_code);
56841    --
56842    -- set accounting class
56843    --
56844    xla_ae_lines_pkg.SetAcctClass(
56845            p_accounting_class_code  => 'REFUND'
56846          , p_ae_header_id           => l_ae_header_id
56847          );
56848 
56849    --
56850    -- set rounding class
56851    --
56852    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
56853                       'RECEIVABLE';
56854 
56855    --
56856    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
56857    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
56858    --
56859    -- bulk performance
56860    --
56861    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
56862 
56863    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
56864       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
56865 
56866    -- 4955764
56867    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56868       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
56869 
56870    -- 4458381 Public Sector Enh
56871    
56872    --
56873    -- set accounting attributes for the line type
56874    --
56875    l_entered_amt_idx := 8;
56876    l_accted_amt_idx  := 13;
56877    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
56878    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
56879    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
56880    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
56884    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
56881    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
56882    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
56883    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
56885    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
56886    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
56887    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
56888    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
56889    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
56890    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
56891    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
56892    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
56893    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
56894    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
56895    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
56896    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
56897    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
56898    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
56899    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
56900    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
56901    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
56902    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
56903    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
56904    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
56905    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
56906    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
56907    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
56908    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
56909    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
56910 
56911    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
56912    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
56913 
56914    ---------------------------------------------------------------------------------------------------------------
56915    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
56916    ---------------------------------------------------------------------------------------------------------------
56917    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
56918 
56919    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56920    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56921 
56922    IF xla_accounting_cache_pkg.GetValueChar
56923          (p_source_code         => 'LEDGER_CATEGORY_CODE'
56924          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
56925    AND l_bflow_method_code = 'PRIOR_ENTRY'
56926 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
56927    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
56928          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
56929        )
56930    THEN
56931          xla_ae_lines_pkg.BflowUpgEntry
56932            (p_business_method_code    => l_bflow_method_code
56933            ,p_business_class_code     => l_bflow_class_code
56934            ,p_balance_type            => l_balance_type_code);
56935    ELSE
56936       NULL;
56937 -- No business flow processing for business flow method of NONE.
56938    END IF;
56939 
56940    --
56941    -- call analytical criteria
56942    --
56943    
56944 
56945 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
56946 xla_ae_lines_pkg.SetAnalyticalCriteria(
56947    p_analytical_criterion_name    => 'Check Id'
56948  , p_analytical_criterion_owner   => 'S'
56949  , p_analytical_criterion_code    => 'CHECK_ID'
56950  , p_amb_context_code             => 'DEFAULT'
56951  , p_balancing_flag               => 'N'
56952  
56953  , p_analytical_detail_char_1    =>  NULL
56954  , p_analytical_detail_num_1     =>  p_source_90
56955  , p_analytical_detail_date_1    =>  NULL
56956 
56957  , p_ae_header_id                 => l_ae_header_id
56958 )
56959 ;
56960 --
56961 
56962 
56963 xla_ae_lines_pkg.g_rec_lines.array_anc_id_2(xla_ae_lines_pkg.g_LineNumber) :=
56964 xla_ae_lines_pkg.SetAnalyticalCriteria(
56965    p_analytical_criterion_name    => 'Receivable Activity'
56966  , p_analytical_criterion_owner   => 'S'
56967  , p_analytical_criterion_code    => 'RECEIVABLE_ACTIVITY'
56968  , p_amb_context_code             => 'DEFAULT'
56969  , p_balancing_flag               => 'N'
56970  
56971  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_103)
56972  , p_analytical_detail_num_1     =>  NULL
56973  , p_analytical_detail_date_1    =>  NULL
56974 
56975  , p_ae_header_id                 => l_ae_header_id
56976 )
56977 ;
56978 --
56979 
56980    --
56981    -- call description
56982    --
56983    -- No description or it is inherited.
56984    --
56985    -- call ADRs
56986    -- Bug 4922099
56987    --
56988    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56989         (NVL(l_actual_upg_option, 'N') = 'O') OR
56990         (NVL(l_enc_upg_option, 'N') = 'O')
56991       )
56992    THEN
56993    NULL;
56994    --
56995    --
56996    
56997   l_ccid := AcctDerRule_20(
57001          , x_transaction_coa_id       => l_adr_transaction_coa_id
56998            p_application_id           => p_application_id
56999          , p_ae_header_id             => l_ae_header_id 
57000 , p_source_22 => p_source_22
57002          , x_accounting_coa_id        => l_adr_accounting_coa_id
57003          , x_value_type_code          => l_adr_value_type_code
57004          , p_side                     => 'NA'
57005    );
57006 
57007    xla_ae_lines_pkg.set_ccid(
57008     p_code_combination_id          => l_ccid
57009   , p_value_type_code              => l_adr_value_type_code
57010   , p_transaction_coa_id           => l_adr_transaction_coa_id
57011   , p_accounting_coa_id            => l_adr_accounting_coa_id
57012   , p_adr_code                     => 'DIST_CCID'
57013   , p_adr_type_code                => 'S'
57014   , p_component_type               => l_component_type
57015   , p_component_code               => l_component_code
57016   , p_component_type_code          => l_component_type_code
57017   , p_component_appl_id            => l_component_appl_id
57018   , p_amb_context_code             => l_amb_context_code
57019   , p_side                         => 'NA'
57020   );
57021 
57022 
57023    --
57024    --
57025    END IF;
57026    --
57027    -- Bug 4922099
57028    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
57029           (NVL(l_enc_upg_option, 'N') = 'O')
57030         ) AND
57031         (l_bflow_method_code = 'PRIOR_ENTRY')
57032       )
57033    THEN
57034       IF
57035       --
57036       1 = 2
57037       --
57038       THEN
57039       xla_accounting_err_pkg.build_message
57040                                     (p_appli_s_name            => 'XLA'
57041                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57042                                     ,p_token_1                 => 'LINE_NUMBER'
57043                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
57044                                     ,p_token_2                 => 'LINE_TYPE_NAME'
57045                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
57046                                                                              l_component_type
57047                                                                             ,l_component_code
57048                                                                             ,l_component_type_code
57049                                                                             ,l_component_appl_id
57050                                                                             ,l_amb_context_code
57051                                                                             ,l_entity_code
57052                                                                             ,l_event_class_code
57053                                                                            )
57054                                     ,p_token_3                 => 'OWNER'
57055                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
57056                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
57057                                                                           ,p_lookup_code    => l_component_type_code
57058                                                                          )
57059                                     ,p_token_4                 => 'PRODUCT_NAME'
57060                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
57061                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
57062                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
57063                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
57064                                     ,p_ae_header_id            =>  NULL
57065                                        );
57066 
57067         IF (C_LEVEL_ERROR>= g_log_level) THEN
57068                  trace
57069                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57070                       ,p_level    => C_LEVEL_ERROR
57071                       ,p_module   => l_log_module);
57072         END IF;
57073       END IF;
57074    END IF;
57075    --
57076    --
57077    ------------------------------------------------------------------------------------------------
57078    -- 4219869 Business Flow
57079    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57080    -- Prior Entry.  Currently, the following code is always generated.
57081    ------------------------------------------------------------------------------------------------
57082    XLA_AE_LINES_PKG.ValidateCurrentLine;
57083 
57084    ------------------------------------------------------------------------------------
57085    -- 4219869 Business Flow
57086    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57087    ------------------------------------------------------------------------------------
57088    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57089 
57090    ----------------------------------------------------------------------------------
57091    -- 4219869 Business Flow
57092    -- Update journal entry status -- Need to generate this within IF <condition>
57093    ----------------------------------------------------------------------------------
57094    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57098 
57095          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57096          ,p_balance_type_code => l_balance_type_code
57097          );
57099    -------------------------------------------------------------------------------------------
57100    -- 4262811 - Generate the Accrual Reversal lines
57101    -------------------------------------------------------------------------------------------
57102    BEGIN
57103       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57104                               (g_array_event(p_event_id).array_value_num('header_index'));
57105       IF l_acc_rev_flag IS NULL THEN
57106          l_acc_rev_flag := 'N';
57107       END IF;
57108    EXCEPTION
57109       WHEN OTHERS THEN
57110          l_acc_rev_flag := 'N';
57111    END;
57112    --
57113    IF (l_acc_rev_flag = 'Y') THEN
57114 
57115        -- 4645092  ------------------------------------------------------------------------------
57116        -- To allow MPA report to determine if it should generate report process
57117        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57118        ------------------------------------------------------------------------------------------
57119 
57120        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57121        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57122    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
57123    -- call ADRs
57124    -- Bug 4922099
57125    --
57126    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57127         (NVL(l_actual_upg_option, 'N') = 'O') OR
57128         (NVL(l_enc_upg_option, 'N') = 'O')
57129       )
57130    THEN
57131    NULL;
57132    --
57133    --
57134    
57135   l_ccid := AcctDerRule_20(
57136            p_application_id           => p_application_id
57137          , p_ae_header_id             => l_ae_header_id 
57138 , p_source_22 => p_source_22
57139          , x_transaction_coa_id       => l_adr_transaction_coa_id
57140          , x_accounting_coa_id        => l_adr_accounting_coa_id
57141          , x_value_type_code          => l_adr_value_type_code
57142          , p_side                     => 'NA'
57143    );
57144 
57145    xla_ae_lines_pkg.set_ccid(
57146     p_code_combination_id          => l_ccid
57147   , p_value_type_code              => l_adr_value_type_code
57148   , p_transaction_coa_id           => l_adr_transaction_coa_id
57149   , p_accounting_coa_id            => l_adr_accounting_coa_id
57150   , p_adr_code                     => 'DIST_CCID'
57151   , p_adr_type_code                => 'S'
57152   , p_component_type               => l_component_type
57153   , p_component_code               => l_component_code
57154   , p_component_type_code          => l_component_type_code
57155   , p_component_appl_id            => l_component_appl_id
57156   , p_amb_context_code             => l_amb_context_code
57157   , p_side                         => 'NA'
57158   );
57159 
57160 
57161    --
57162    --
57163    END IF;
57164 
57165        --
57166        -- Update the line information that should be overwritten
57167        --
57168        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57169                                          p_header_num   => 1);
57170        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
57171 
57172        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57173 
57174        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
57175           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57176        END IF;
57177 
57178       --
57179       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57180       --
57181       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57182           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
57183       ELSE
57184           ---------------------------------------------------------------------------------------------------
57185           -- 4262811a Switch Sign
57186           ---------------------------------------------------------------------------------------------------
57187           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
57188           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57189                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57190           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57191                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57192           -- 5132302
57193           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57194                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57195 
57196       END IF;
57197 
57198       -- 4955764
57199       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57200       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57201 
57202 
57203       XLA_AE_LINES_PKG.ValidateCurrentLine;
57204       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57205 
57209 
57206       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57207                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57208                ,p_balance_type_code => l_balance_type_code);
57210    END IF;
57211 
57212    -----------------------------------------------------------------------------------------
57213    -- 4262811 Multiperiod Accounting
57214    -----------------------------------------------------------------------------------------
57215      -- No MPA option is assigned.
57216 
57217 
57218 END IF;
57219 END IF;
57220 --
57221 
57222 --
57223 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57224    trace
57225       (p_msg      => 'END of AcctLineType_116'
57226       ,p_level    => C_LEVEL_PROCEDURE
57227       ,p_module   => l_log_module);
57228 END IF;
57229 --
57230 EXCEPTION
57231   WHEN xla_exceptions_pkg.application_exception THEN
57232       RAISE;
57233   WHEN OTHERS THEN
57234        xla_exceptions_pkg.raise_message
57235            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_116');
57236 END AcctLineType_116;
57237 --
57238 
57239 ---------------------------------------
57240 --
57241 -- PRIVATE FUNCTION
57242 --         AcctLineType_117
57243 --
57244 ---------------------------------------
57245 PROCEDURE AcctLineType_117 (
57246   p_application_id        IN NUMBER
57247  ,p_event_id              IN NUMBER
57248  ,p_calculate_acctd_flag  IN VARCHAR2
57249  ,p_calculate_g_l_flag    IN VARCHAR2
57250  ,p_actual_flag           IN OUT VARCHAR2
57251  ,p_balance_type_code     OUT VARCHAR2
57252  ,p_gain_or_loss_ref      OUT VARCHAR2
57253  
57254 --Distribution GL Account
57255  , p_source_22            IN NUMBER
57256 --Distribution Source Type
57257  , p_source_27            IN VARCHAR2
57258 --Distribution Line Identifier
57259  , p_source_29            IN NUMBER
57260 --Distribution Type
57261  , p_source_30            IN VARCHAR2
57262 --Exchange Date
57263  , p_source_33            IN DATE
57264 --Exchange Rate
57265  , p_source_34            IN NUMBER
57266 --Exchange Rate Type
57267  , p_source_35            IN VARCHAR2
57268 --Accounting Amount
57269  , p_source_40            IN NUMBER
57270 --Transaction Distribution Identifier
57271  , p_source_44            IN NUMBER
57272 --Transaction Distribution Type
57273  , p_source_45            IN VARCHAR2
57274 --Distribution Multi Fund Additional Entry
57275  , p_source_88            IN VARCHAR2
57276 --Cash Receipt Identifier
57277  , p_source_90            IN NUMBER
57278 --Receipt Applied To Application Identifier
57279  , p_source_92            IN NUMBER
57280 --Transaction Entity Code
57281  , p_source_93            IN VARCHAR2
57282 --Transaction Identifier
57283  , p_source_94            IN NUMBER
57284 --DIST_ENT_AMT_FROM
57285  , p_source_95            IN NUMBER
57286 --Applying Document Currency Code
57287  , p_source_96            IN VARCHAR2
57288 --Distribution Party Identifier
57289  , p_source_97            IN NUMBER
57290 --Distribution Party Site Id
57291  , p_source_98            IN NUMBER
57292 --Distribution Party Type
57293  , p_source_99            IN VARCHAR2
57294 --Distribution Source Table
57295  , p_source_102            IN VARCHAR2
57296 )
57297 IS
57298 
57299 l_component_type              VARCHAR2(80);
57300 l_component_code              VARCHAR2(30);
57301 l_component_type_code         VARCHAR2(1);
57302 l_component_appl_id           INTEGER;
57303 l_amb_context_code            VARCHAR2(30);
57304 l_entity_code                 VARCHAR2(30);
57305 l_event_class_code            VARCHAR2(30);
57306 l_ae_header_id                NUMBER;
57307 l_event_type_code             VARCHAR2(30);
57308 l_line_definition_code        VARCHAR2(30);
57309 l_line_definition_owner_code  VARCHAR2(1);
57310 --
57311 -- adr variables
57312 l_segment                     VARCHAR2(30);
57313 l_ccid                        NUMBER;
57314 l_adr_transaction_coa_id      NUMBER;
57315 l_adr_accounting_coa_id       NUMBER;
57316 l_adr_flexfield_segment_code  VARCHAR2(30);
57317 l_adr_flex_value_set_id       NUMBER;
57318 l_adr_value_type_code         VARCHAR2(30);
57319 l_adr_value_combination_id    NUMBER;
57320 l_adr_value_segment_code      VARCHAR2(30);
57321 
57322 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
57323 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
57324 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
57325 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
57326 
57327 -- 4262811 Variables ------------------------------------------------------------------------------------------
57328 l_entered_amt_idx             NUMBER;
57329 l_accted_amt_idx              NUMBER;
57330 l_acc_rev_flag                VARCHAR2(1);
57331 l_accrual_line_num            NUMBER;
57332 l_tmp_amt                     NUMBER;
57333 l_acc_rev_natural_side_code   VARCHAR2(1);
57334 
57335 l_num_entries                 NUMBER;
57336 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
57337 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
57338 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
57339 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
57343 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
57340 l_recog_line_1                NUMBER;
57341 l_recog_line_2                NUMBER;
57342 
57344 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
57345 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
57346 
57347 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
57348 
57349 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
57350 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
57351 
57352 ---------------------------------------------------------------------------------------------------------------
57353 
57354 
57355 --
57356 -- bulk performance
57357 --
57358 l_balance_type_code           VARCHAR2(1);
57359 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
57360 l_log_module                  VARCHAR2(240);
57361 
57362 --
57363 -- Upgrade strategy
57364 --
57365 l_actual_upg_option           VARCHAR2(1);
57366 l_enc_upg_option           VARCHAR2(1);
57367 
57368 --
57369 BEGIN
57370 --
57371 IF g_log_enabled THEN
57372       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_117';
57373 END IF;
57374 --
57375 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57376 
57377       trace
57378          (p_msg      => 'BEGIN of AcctLineType_117'
57379          ,p_level    => C_LEVEL_PROCEDURE
57380          ,p_module   => l_log_module);
57381 
57382 END IF;
57383 --
57384 l_component_type             := 'AMB_JLT';
57385 l_component_code             := 'RCT_REMIT';
57386 l_component_type_code        := 'S';
57387 l_component_appl_id          :=  222;
57388 l_amb_context_code           := 'DEFAULT';
57389 l_entity_code                := 'RECEIPTS';
57390 l_event_class_code           := 'RECEIPT';
57391 l_event_type_code            := 'RECEIPT_ALL';
57392 l_line_definition_owner_code := 'S';
57393 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
57394 --
57395 l_balance_type_code          := 'A';
57396 l_segment                     := NULL;
57397 l_ccid                        := NULL;
57398 l_adr_transaction_coa_id      := NULL;
57399 l_adr_accounting_coa_id       := NULL;
57400 l_adr_flexfield_segment_code  := NULL;
57401 l_adr_flex_value_set_id       := NULL;
57402 l_adr_value_type_code         := NULL;
57403 l_adr_value_combination_id    := NULL;
57404 l_adr_value_segment_code      := NULL;
57405 
57406 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
57407 l_bflow_class_code           := '';    -- 4219869 Business Flow
57408 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
57409 l_budgetary_control_flag     := 'N';
57410 
57411 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
57412 l_bflow_applied_to_amt       := NULL; -- 5132302
57413 l_entered_amt_idx            := NULL;          -- 4262811
57414 l_accted_amt_idx             := NULL;          -- 4262811
57415 l_acc_rev_flag               := NULL;          -- 4262811
57416 l_accrual_line_num           := NULL;          -- 4262811
57417 l_tmp_amt                    := NULL;          -- 4262811
57418 --
57419  
57420 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
57421     l_balance_type_code <> 'B' THEN
57422 IF NVL(p_source_27,'
57423 ') =  'REMITTANCE' AND 
57424 NVL(p_source_102,'
57425 ') =  'CRH' AND 
57426 NVL(p_source_88,'
57427 ') =  'N'
57428  THEN 
57429 
57430    --
57431    XLA_AE_LINES_PKG.SetNewLine;
57432 
57433    p_balance_type_code          := l_balance_type_code;
57434    -- set the flag so later we will know whether the gain loss line needs to be created
57435    
57436    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
57437      p_actual_flag :='A';
57438    END IF;
57439 
57440    --
57441    -- bulk performance
57442    --
57443    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
57444                                       p_header_num   => 0); -- 4262811
57445    --
57446    -- set accounting line options
57447    --
57448    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
57449            p_natural_side_code          => 'C'
57450          , p_gain_or_loss_flag          => 'N'
57451          , p_gl_transfer_mode_code      => 'S'
57452          , p_acct_entry_type_code       => 'A'
57453          , p_switch_side_flag           => 'Y'
57454          , p_merge_duplicate_code       => 'A'
57455          );
57456    --
57457    l_acc_rev_natural_side_code := 'D';  -- 4262811
57458    -- 
57459    --
57460    -- set accounting line type info
57461    --
57462    xla_ae_lines_pkg.SetAcctLineType
57463       (p_component_type             => l_component_type
57464       ,p_event_type_code            => l_event_type_code
57465       ,p_line_definition_owner_code => l_line_definition_owner_code
57466       ,p_line_definition_code       => l_line_definition_code
57467       ,p_accounting_line_code       => l_component_code
57468       ,p_accounting_line_type_code  => l_component_type_code
57469       ,p_accounting_line_appl_id    => l_component_appl_id
57470       ,p_amb_context_code           => l_amb_context_code
57471       ,p_entity_code                => l_entity_code
57472       ,p_event_class_code           => l_event_class_code);
57473    --
57477            p_accounting_class_code  => 'REMITTANCE'
57474    -- set accounting class
57475    --
57476    xla_ae_lines_pkg.SetAcctClass(
57478          , p_ae_header_id           => l_ae_header_id
57479          );
57480 
57481    --
57482    -- set rounding class
57483    --
57484    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
57485                       'RECEIVABLE';
57486 
57487    --
57488    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
57489    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
57490    --
57491    -- bulk performance
57492    --
57493    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
57494 
57495    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
57496       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
57497 
57498    -- 4955764
57499    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57500       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
57501 
57502    -- 4458381 Public Sector Enh
57503    
57504    --
57505    -- set accounting attributes for the line type
57506    --
57507    l_entered_amt_idx := 8;
57508    l_accted_amt_idx  := 13;
57509    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
57510    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
57511    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
57512    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
57513    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
57514    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
57515    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
57516    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
57517    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
57518    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
57519    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
57520    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
57521    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
57522    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
57523    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
57524    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
57525    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
57526    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
57527    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
57528    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
57529    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
57530    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
57531    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
57532    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
57533    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
57534    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
57535    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
57536    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
57537    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
57538    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
57539    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
57540    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
57541    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
57542 
57543    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
57544    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
57545 
57546    ---------------------------------------------------------------------------------------------------------------
57547    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
57548    ---------------------------------------------------------------------------------------------------------------
57549    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
57550 
57551    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57552    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57553 
57554    IF xla_accounting_cache_pkg.GetValueChar
57555          (p_source_code         => 'LEDGER_CATEGORY_CODE'
57556          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
57557    AND l_bflow_method_code = 'PRIOR_ENTRY'
57558 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
57559    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
57560          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
57561        )
57562    THEN
57563          xla_ae_lines_pkg.BflowUpgEntry
57564            (p_business_method_code    => l_bflow_method_code
57565            ,p_business_class_code     => l_bflow_class_code
57566            ,p_balance_type            => l_balance_type_code);
57567    ELSE
57568       NULL;
57569 -- No business flow processing for business flow method of NONE.
57570    END IF;
57571 
57572    --
57573    -- call analytical criteria
57574    --
57575    
57576 
57577 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
57581  , p_analytical_criterion_code    => 'CHECK_ID'
57578 xla_ae_lines_pkg.SetAnalyticalCriteria(
57579    p_analytical_criterion_name    => 'Check Id'
57580  , p_analytical_criterion_owner   => 'S'
57582  , p_amb_context_code             => 'DEFAULT'
57583  , p_balancing_flag               => 'N'
57584  
57585  , p_analytical_detail_char_1    =>  NULL
57586  , p_analytical_detail_num_1     =>  p_source_90
57587  , p_analytical_detail_date_1    =>  NULL
57588 
57589  , p_ae_header_id                 => l_ae_header_id
57590 )
57591 ;
57592 --
57593 
57594    --
57595    -- call description
57596    --
57597    -- No description or it is inherited.
57598    --
57599    -- call ADRs
57600    -- Bug 4922099
57601    --
57602    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57603         (NVL(l_actual_upg_option, 'N') = 'O') OR
57604         (NVL(l_enc_upg_option, 'N') = 'O')
57605       )
57606    THEN
57607    NULL;
57608    --
57609    --
57610    
57611   l_ccid := AcctDerRule_20(
57612            p_application_id           => p_application_id
57613          , p_ae_header_id             => l_ae_header_id 
57614 , p_source_22 => p_source_22
57615          , x_transaction_coa_id       => l_adr_transaction_coa_id
57616          , x_accounting_coa_id        => l_adr_accounting_coa_id
57617          , x_value_type_code          => l_adr_value_type_code
57618          , p_side                     => 'NA'
57619    );
57620 
57621    xla_ae_lines_pkg.set_ccid(
57622     p_code_combination_id          => l_ccid
57623   , p_value_type_code              => l_adr_value_type_code
57624   , p_transaction_coa_id           => l_adr_transaction_coa_id
57625   , p_accounting_coa_id            => l_adr_accounting_coa_id
57626   , p_adr_code                     => 'DIST_CCID'
57627   , p_adr_type_code                => 'S'
57628   , p_component_type               => l_component_type
57629   , p_component_code               => l_component_code
57630   , p_component_type_code          => l_component_type_code
57631   , p_component_appl_id            => l_component_appl_id
57632   , p_amb_context_code             => l_amb_context_code
57633   , p_side                         => 'NA'
57634   );
57635 
57636 
57637    --
57638    --
57639    END IF;
57640    --
57641    -- Bug 4922099
57642    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
57643           (NVL(l_enc_upg_option, 'N') = 'O')
57644         ) AND
57645         (l_bflow_method_code = 'PRIOR_ENTRY')
57646       )
57647    THEN
57648       IF
57649       --
57650       1 = 2
57651       --
57652       THEN
57653       xla_accounting_err_pkg.build_message
57654                                     (p_appli_s_name            => 'XLA'
57655                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57656                                     ,p_token_1                 => 'LINE_NUMBER'
57657                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
57658                                     ,p_token_2                 => 'LINE_TYPE_NAME'
57659                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
57660                                                                              l_component_type
57661                                                                             ,l_component_code
57662                                                                             ,l_component_type_code
57663                                                                             ,l_component_appl_id
57664                                                                             ,l_amb_context_code
57665                                                                             ,l_entity_code
57666                                                                             ,l_event_class_code
57667                                                                            )
57668                                     ,p_token_3                 => 'OWNER'
57669                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
57670                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
57671                                                                           ,p_lookup_code    => l_component_type_code
57672                                                                          )
57673                                     ,p_token_4                 => 'PRODUCT_NAME'
57674                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
57675                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
57676                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
57677                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
57678                                     ,p_ae_header_id            =>  NULL
57679                                        );
57680 
57681         IF (C_LEVEL_ERROR>= g_log_level) THEN
57682                  trace
57683                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57684                       ,p_level    => C_LEVEL_ERROR
57685                       ,p_module   => l_log_module);
57686         END IF;
57687       END IF;
57688    END IF;
57689    --
57690    --
57694    -- Prior Entry.  Currently, the following code is always generated.
57691    ------------------------------------------------------------------------------------------------
57692    -- 4219869 Business Flow
57693    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57695    ------------------------------------------------------------------------------------------------
57696    XLA_AE_LINES_PKG.ValidateCurrentLine;
57697 
57698    ------------------------------------------------------------------------------------
57699    -- 4219869 Business Flow
57700    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57701    ------------------------------------------------------------------------------------
57702    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57703 
57704    ----------------------------------------------------------------------------------
57705    -- 4219869 Business Flow
57706    -- Update journal entry status -- Need to generate this within IF <condition>
57707    ----------------------------------------------------------------------------------
57708    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57709          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57710          ,p_balance_type_code => l_balance_type_code
57711          );
57712 
57713    -------------------------------------------------------------------------------------------
57714    -- 4262811 - Generate the Accrual Reversal lines
57715    -------------------------------------------------------------------------------------------
57716    BEGIN
57717       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57718                               (g_array_event(p_event_id).array_value_num('header_index'));
57719       IF l_acc_rev_flag IS NULL THEN
57720          l_acc_rev_flag := 'N';
57721       END IF;
57722    EXCEPTION
57723       WHEN OTHERS THEN
57724          l_acc_rev_flag := 'N';
57725    END;
57726    --
57727    IF (l_acc_rev_flag = 'Y') THEN
57728 
57729        -- 4645092  ------------------------------------------------------------------------------
57730        -- To allow MPA report to determine if it should generate report process
57731        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57732        ------------------------------------------------------------------------------------------
57733 
57734        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57735        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57736    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
57737    -- call ADRs
57738    -- Bug 4922099
57739    --
57740    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57741         (NVL(l_actual_upg_option, 'N') = 'O') OR
57742         (NVL(l_enc_upg_option, 'N') = 'O')
57743       )
57744    THEN
57745    NULL;
57746    --
57747    --
57748    
57749   l_ccid := AcctDerRule_20(
57750            p_application_id           => p_application_id
57751          , p_ae_header_id             => l_ae_header_id 
57752 , p_source_22 => p_source_22
57753          , x_transaction_coa_id       => l_adr_transaction_coa_id
57754          , x_accounting_coa_id        => l_adr_accounting_coa_id
57755          , x_value_type_code          => l_adr_value_type_code
57756          , p_side                     => 'NA'
57757    );
57758 
57759    xla_ae_lines_pkg.set_ccid(
57760     p_code_combination_id          => l_ccid
57761   , p_value_type_code              => l_adr_value_type_code
57762   , p_transaction_coa_id           => l_adr_transaction_coa_id
57763   , p_accounting_coa_id            => l_adr_accounting_coa_id
57764   , p_adr_code                     => 'DIST_CCID'
57765   , p_adr_type_code                => 'S'
57766   , p_component_type               => l_component_type
57767   , p_component_code               => l_component_code
57768   , p_component_type_code          => l_component_type_code
57769   , p_component_appl_id            => l_component_appl_id
57770   , p_amb_context_code             => l_amb_context_code
57771   , p_side                         => 'NA'
57772   );
57773 
57774 
57775    --
57776    --
57777    END IF;
57778 
57779        --
57780        -- Update the line information that should be overwritten
57781        --
57782        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57783                                          p_header_num   => 1);
57784        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
57785 
57786        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57787 
57788        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
57789           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57790        END IF;
57791 
57792       --
57793       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57794       --
57795       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57796           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
57797       ELSE
57798           ---------------------------------------------------------------------------------------------------
57799           -- 4262811a Switch Sign
57803                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57800           ---------------------------------------------------------------------------------------------------
57801           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
57802           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57804           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57805                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57806           -- 5132302
57807           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57808                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57809 
57810       END IF;
57811 
57812       -- 4955764
57813       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57814       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57815 
57816 
57817       XLA_AE_LINES_PKG.ValidateCurrentLine;
57818       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57819 
57820       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57821                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57822                ,p_balance_type_code => l_balance_type_code);
57823 
57824    END IF;
57825 
57826    -----------------------------------------------------------------------------------------
57827    -- 4262811 Multiperiod Accounting
57828    -----------------------------------------------------------------------------------------
57829      -- No MPA option is assigned.
57830 
57831 
57832 END IF;
57833 END IF;
57834 --
57835 
57836 --
57837 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57838    trace
57839       (p_msg      => 'END of AcctLineType_117'
57840       ,p_level    => C_LEVEL_PROCEDURE
57841       ,p_module   => l_log_module);
57842 END IF;
57843 --
57844 EXCEPTION
57845   WHEN xla_exceptions_pkg.application_exception THEN
57846       RAISE;
57847   WHEN OTHERS THEN
57848        xla_exceptions_pkg.raise_message
57849            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_117');
57850 END AcctLineType_117;
57851 --
57852 
57853 ---------------------------------------
57854 --
57855 -- PRIVATE FUNCTION
57856 --         AcctLineType_118
57857 --
57858 ---------------------------------------
57859 PROCEDURE AcctLineType_118 (
57860   p_application_id        IN NUMBER
57861  ,p_event_id              IN NUMBER
57862  ,p_calculate_acctd_flag  IN VARCHAR2
57863  ,p_calculate_g_l_flag    IN VARCHAR2
57864  ,p_actual_flag           IN OUT VARCHAR2
57865  ,p_balance_type_code     OUT VARCHAR2
57866  ,p_gain_or_loss_ref      OUT VARCHAR2
57867  
57868 --Distribution GL Account
57869  , p_source_22            IN NUMBER
57870 --Distribution Source Type
57871  , p_source_27            IN VARCHAR2
57872 --Distribution Line Identifier
57873  , p_source_29            IN NUMBER
57874 --Distribution Type
57875  , p_source_30            IN VARCHAR2
57876 --Exchange Date
57877  , p_source_33            IN DATE
57878 --Exchange Rate
57879  , p_source_34            IN NUMBER
57880 --Exchange Rate Type
57881  , p_source_35            IN VARCHAR2
57882 --Accounting Amount
57883  , p_source_40            IN NUMBER
57884 --Transaction Distribution Identifier
57885  , p_source_44            IN NUMBER
57886 --Transaction Distribution Type
57887  , p_source_45            IN VARCHAR2
57888 --Distribution Multi Fund Additional Entry
57889  , p_source_88            IN VARCHAR2
57890 --Cash Receipt Identifier
57891  , p_source_90            IN NUMBER
57892 --Receipt Applied To Application Identifier
57893  , p_source_92            IN NUMBER
57894 --Transaction Entity Code
57895  , p_source_93            IN VARCHAR2
57896 --Transaction Identifier
57897  , p_source_94            IN NUMBER
57898 --DIST_ENT_AMT_FROM
57899  , p_source_95            IN NUMBER
57900 --Applying Document Currency Code
57901  , p_source_96            IN VARCHAR2
57902 --Distribution Party Identifier
57903  , p_source_97            IN NUMBER
57904 --Distribution Party Site Id
57905  , p_source_98            IN NUMBER
57906 --Distribution Party Type
57907  , p_source_99            IN VARCHAR2
57908 --Distribution Source Table
57909  , p_source_102            IN VARCHAR2
57910 )
57911 IS
57912 
57913 l_component_type              VARCHAR2(80);
57914 l_component_code              VARCHAR2(30);
57915 l_component_type_code         VARCHAR2(1);
57916 l_component_appl_id           INTEGER;
57917 l_amb_context_code            VARCHAR2(30);
57918 l_entity_code                 VARCHAR2(30);
57919 l_event_class_code            VARCHAR2(30);
57920 l_ae_header_id                NUMBER;
57921 l_event_type_code             VARCHAR2(30);
57922 l_line_definition_code        VARCHAR2(30);
57923 l_line_definition_owner_code  VARCHAR2(1);
57924 --
57925 -- adr variables
57926 l_segment                     VARCHAR2(30);
57927 l_ccid                        NUMBER;
57928 l_adr_transaction_coa_id      NUMBER;
57929 l_adr_accounting_coa_id       NUMBER;
57930 l_adr_flexfield_segment_code  VARCHAR2(30);
57931 l_adr_flex_value_set_id       NUMBER;
57935 
57932 l_adr_value_type_code         VARCHAR2(30);
57933 l_adr_value_combination_id    NUMBER;
57934 l_adr_value_segment_code      VARCHAR2(30);
57936 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
57937 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
57938 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
57939 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
57940 
57941 -- 4262811 Variables ------------------------------------------------------------------------------------------
57942 l_entered_amt_idx             NUMBER;
57943 l_accted_amt_idx              NUMBER;
57944 l_acc_rev_flag                VARCHAR2(1);
57945 l_accrual_line_num            NUMBER;
57946 l_tmp_amt                     NUMBER;
57947 l_acc_rev_natural_side_code   VARCHAR2(1);
57948 
57949 l_num_entries                 NUMBER;
57950 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
57951 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
57952 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
57953 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
57954 l_recog_line_1                NUMBER;
57955 l_recog_line_2                NUMBER;
57956 
57957 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
57958 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
57959 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
57960 
57961 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
57962 
57963 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
57964 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
57965 
57966 ---------------------------------------------------------------------------------------------------------------
57967 
57968 
57969 --
57970 -- bulk performance
57971 --
57972 l_balance_type_code           VARCHAR2(1);
57973 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
57974 l_log_module                  VARCHAR2(240);
57975 
57976 --
57977 -- Upgrade strategy
57978 --
57979 l_actual_upg_option           VARCHAR2(1);
57980 l_enc_upg_option           VARCHAR2(1);
57981 
57982 --
57983 BEGIN
57984 --
57985 IF g_log_enabled THEN
57986       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_118';
57987 END IF;
57988 --
57989 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57990 
57991       trace
57992          (p_msg      => 'BEGIN of AcctLineType_118'
57993          ,p_level    => C_LEVEL_PROCEDURE
57994          ,p_module   => l_log_module);
57995 
57996 END IF;
57997 --
57998 l_component_type             := 'AMB_JLT';
57999 l_component_code             := 'RCT_REMIT_BR';
58000 l_component_type_code        := 'S';
58001 l_component_appl_id          :=  222;
58002 l_amb_context_code           := 'DEFAULT';
58003 l_entity_code                := 'RECEIPTS';
58004 l_event_class_code           := 'RECEIPT';
58005 l_event_type_code            := 'RECEIPT_ALL';
58006 l_line_definition_owner_code := 'S';
58007 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
58008 --
58009 l_balance_type_code          := 'A';
58010 l_segment                     := NULL;
58011 l_ccid                        := NULL;
58012 l_adr_transaction_coa_id      := NULL;
58013 l_adr_accounting_coa_id       := NULL;
58014 l_adr_flexfield_segment_code  := NULL;
58015 l_adr_flex_value_set_id       := NULL;
58016 l_adr_value_type_code         := NULL;
58017 l_adr_value_combination_id    := NULL;
58018 l_adr_value_segment_code      := NULL;
58019 
58020 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
58021 l_bflow_class_code           := '';    -- 4219869 Business Flow
58022 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
58023 l_budgetary_control_flag     := 'N';
58024 
58025 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
58026 l_bflow_applied_to_amt       := NULL; -- 5132302
58027 l_entered_amt_idx            := NULL;          -- 4262811
58028 l_accted_amt_idx             := NULL;          -- 4262811
58029 l_acc_rev_flag               := NULL;          -- 4262811
58030 l_accrual_line_num           := NULL;          -- 4262811
58031 l_tmp_amt                    := NULL;          -- 4262811
58032 --
58033  
58034 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
58035     l_balance_type_code <> 'B' THEN
58036 IF NVL(p_source_27,'
58037 ') =  'REMITTANCE' AND 
58038 NVL(p_source_102,'
58039 ') =  'RA' AND 
58040 NVL(p_source_88,'
58041 ') =  'N'
58042  THEN 
58043 
58044    --
58045    XLA_AE_LINES_PKG.SetNewLine;
58046 
58047    p_balance_type_code          := l_balance_type_code;
58048    -- set the flag so later we will know whether the gain loss line needs to be created
58049    
58050    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
58051      p_actual_flag :='A';
58052    END IF;
58053 
58054    --
58055    -- bulk performance
58056    --
58057    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
58058                                       p_header_num   => 0); -- 4262811
58059    --
58060    -- set accounting line options
58061    --
58062    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
58063            p_natural_side_code          => 'C'
58067          , p_switch_side_flag           => 'Y'
58064          , p_gain_or_loss_flag          => 'N'
58065          , p_gl_transfer_mode_code      => 'S'
58066          , p_acct_entry_type_code       => 'A'
58068          , p_merge_duplicate_code       => 'A'
58069          );
58070    --
58071    l_acc_rev_natural_side_code := 'D';  -- 4262811
58072    -- 
58073    --
58074    -- set accounting line type info
58075    --
58076    xla_ae_lines_pkg.SetAcctLineType
58077       (p_component_type             => l_component_type
58078       ,p_event_type_code            => l_event_type_code
58079       ,p_line_definition_owner_code => l_line_definition_owner_code
58080       ,p_line_definition_code       => l_line_definition_code
58081       ,p_accounting_line_code       => l_component_code
58082       ,p_accounting_line_type_code  => l_component_type_code
58083       ,p_accounting_line_appl_id    => l_component_appl_id
58084       ,p_amb_context_code           => l_amb_context_code
58085       ,p_entity_code                => l_entity_code
58086       ,p_event_class_code           => l_event_class_code);
58087    --
58088    -- set accounting class
58089    --
58090    xla_ae_lines_pkg.SetAcctClass(
58091            p_accounting_class_code  => 'REM_BR'
58092          , p_ae_header_id           => l_ae_header_id
58093          );
58094 
58095    --
58096    -- set rounding class
58097    --
58098    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
58099                       'RECEIVABLE';
58100 
58101    --
58102    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
58103    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
58104    --
58105    -- bulk performance
58106    --
58107    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
58108 
58109    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
58110       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
58111 
58112    -- 4955764
58113    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58114       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
58115 
58116    -- 4458381 Public Sector Enh
58117    
58118    --
58119    -- set accounting attributes for the line type
58120    --
58121    l_entered_amt_idx := 8;
58122    l_accted_amt_idx  := 13;
58123    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
58124    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
58125    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
58126    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
58127    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
58128    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
58129    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
58130    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
58131    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
58132    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
58133    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
58134    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
58135    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
58136    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
58137    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
58138    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
58139    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
58140    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
58141    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
58142    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
58143    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
58144    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
58145    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
58146    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
58147    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
58148    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
58149    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
58150    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
58151    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
58152    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
58153    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
58154    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
58155    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
58156 
58157    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
58158    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
58159 
58160    ---------------------------------------------------------------------------------------------------------------
58161    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
58162    ---------------------------------------------------------------------------------------------------------------
58163    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58164 
58165    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58169          (p_source_code         => 'LEDGER_CATEGORY_CODE'
58166    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58167 
58168    IF xla_accounting_cache_pkg.GetValueChar
58170          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58171    AND l_bflow_method_code = 'PRIOR_ENTRY'
58172 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58173    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58174          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58175        )
58176    THEN
58177          xla_ae_lines_pkg.BflowUpgEntry
58178            (p_business_method_code    => l_bflow_method_code
58179            ,p_business_class_code     => l_bflow_class_code
58180            ,p_balance_type            => l_balance_type_code);
58181    ELSE
58182       NULL;
58183 -- No business flow processing for business flow method of NONE.
58184    END IF;
58185 
58186    --
58187    -- call analytical criteria
58188    --
58189    
58190 
58191 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
58192 xla_ae_lines_pkg.SetAnalyticalCriteria(
58193    p_analytical_criterion_name    => 'Check Id'
58194  , p_analytical_criterion_owner   => 'S'
58195  , p_analytical_criterion_code    => 'CHECK_ID'
58196  , p_amb_context_code             => 'DEFAULT'
58197  , p_balancing_flag               => 'N'
58198  
58199  , p_analytical_detail_char_1    =>  NULL
58200  , p_analytical_detail_num_1     =>  p_source_90
58201  , p_analytical_detail_date_1    =>  NULL
58202 
58203  , p_ae_header_id                 => l_ae_header_id
58204 )
58205 ;
58206 --
58207 
58208    --
58209    -- call description
58210    --
58211    -- No description or it is inherited.
58212    --
58213    -- call ADRs
58214    -- Bug 4922099
58215    --
58216    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58217         (NVL(l_actual_upg_option, 'N') = 'O') OR
58218         (NVL(l_enc_upg_option, 'N') = 'O')
58219       )
58220    THEN
58221    NULL;
58222    --
58223    --
58224    
58225   l_ccid := AcctDerRule_20(
58226            p_application_id           => p_application_id
58227          , p_ae_header_id             => l_ae_header_id 
58228 , p_source_22 => p_source_22
58229          , x_transaction_coa_id       => l_adr_transaction_coa_id
58230          , x_accounting_coa_id        => l_adr_accounting_coa_id
58231          , x_value_type_code          => l_adr_value_type_code
58232          , p_side                     => 'NA'
58233    );
58234 
58235    xla_ae_lines_pkg.set_ccid(
58236     p_code_combination_id          => l_ccid
58237   , p_value_type_code              => l_adr_value_type_code
58238   , p_transaction_coa_id           => l_adr_transaction_coa_id
58239   , p_accounting_coa_id            => l_adr_accounting_coa_id
58240   , p_adr_code                     => 'DIST_CCID'
58241   , p_adr_type_code                => 'S'
58242   , p_component_type               => l_component_type
58243   , p_component_code               => l_component_code
58244   , p_component_type_code          => l_component_type_code
58245   , p_component_appl_id            => l_component_appl_id
58246   , p_amb_context_code             => l_amb_context_code
58247   , p_side                         => 'NA'
58248   );
58249 
58250 
58251    --
58252    --
58253    END IF;
58254    --
58255    -- Bug 4922099
58256    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58257           (NVL(l_enc_upg_option, 'N') = 'O')
58258         ) AND
58259         (l_bflow_method_code = 'PRIOR_ENTRY')
58260       )
58261    THEN
58262       IF
58263       --
58264       1 = 2
58265       --
58266       THEN
58267       xla_accounting_err_pkg.build_message
58268                                     (p_appli_s_name            => 'XLA'
58269                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58270                                     ,p_token_1                 => 'LINE_NUMBER'
58271                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
58272                                     ,p_token_2                 => 'LINE_TYPE_NAME'
58273                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
58274                                                                              l_component_type
58275                                                                             ,l_component_code
58276                                                                             ,l_component_type_code
58277                                                                             ,l_component_appl_id
58278                                                                             ,l_amb_context_code
58279                                                                             ,l_entity_code
58280                                                                             ,l_event_class_code
58281                                                                            )
58282                                     ,p_token_3                 => 'OWNER'
58283                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
58284                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
58288                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58285                                                                           ,p_lookup_code    => l_component_type_code
58286                                                                          )
58287                                     ,p_token_4                 => 'PRODUCT_NAME'
58289                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58290                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58291                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58292                                     ,p_ae_header_id            =>  NULL
58293                                        );
58294 
58295         IF (C_LEVEL_ERROR>= g_log_level) THEN
58296                  trace
58297                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58298                       ,p_level    => C_LEVEL_ERROR
58299                       ,p_module   => l_log_module);
58300         END IF;
58301       END IF;
58302    END IF;
58303    --
58304    --
58305    ------------------------------------------------------------------------------------------------
58306    -- 4219869 Business Flow
58307    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58308    -- Prior Entry.  Currently, the following code is always generated.
58309    ------------------------------------------------------------------------------------------------
58310    XLA_AE_LINES_PKG.ValidateCurrentLine;
58311 
58312    ------------------------------------------------------------------------------------
58313    -- 4219869 Business Flow
58314    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58315    ------------------------------------------------------------------------------------
58316    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58317 
58318    ----------------------------------------------------------------------------------
58319    -- 4219869 Business Flow
58320    -- Update journal entry status -- Need to generate this within IF <condition>
58321    ----------------------------------------------------------------------------------
58322    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58323          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58324          ,p_balance_type_code => l_balance_type_code
58325          );
58326 
58327    -------------------------------------------------------------------------------------------
58328    -- 4262811 - Generate the Accrual Reversal lines
58329    -------------------------------------------------------------------------------------------
58330    BEGIN
58331       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58332                               (g_array_event(p_event_id).array_value_num('header_index'));
58333       IF l_acc_rev_flag IS NULL THEN
58334          l_acc_rev_flag := 'N';
58335       END IF;
58336    EXCEPTION
58337       WHEN OTHERS THEN
58338          l_acc_rev_flag := 'N';
58339    END;
58340    --
58341    IF (l_acc_rev_flag = 'Y') THEN
58342 
58343        -- 4645092  ------------------------------------------------------------------------------
58344        -- To allow MPA report to determine if it should generate report process
58345        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58346        ------------------------------------------------------------------------------------------
58347 
58348        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58349        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
58350    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
58351    -- call ADRs
58352    -- Bug 4922099
58353    --
58354    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58355         (NVL(l_actual_upg_option, 'N') = 'O') OR
58356         (NVL(l_enc_upg_option, 'N') = 'O')
58357       )
58358    THEN
58359    NULL;
58360    --
58361    --
58362    
58363   l_ccid := AcctDerRule_20(
58364            p_application_id           => p_application_id
58365          , p_ae_header_id             => l_ae_header_id 
58366 , p_source_22 => p_source_22
58367          , x_transaction_coa_id       => l_adr_transaction_coa_id
58368          , x_accounting_coa_id        => l_adr_accounting_coa_id
58369          , x_value_type_code          => l_adr_value_type_code
58370          , p_side                     => 'NA'
58371    );
58372 
58373    xla_ae_lines_pkg.set_ccid(
58374     p_code_combination_id          => l_ccid
58375   , p_value_type_code              => l_adr_value_type_code
58376   , p_transaction_coa_id           => l_adr_transaction_coa_id
58377   , p_accounting_coa_id            => l_adr_accounting_coa_id
58378   , p_adr_code                     => 'DIST_CCID'
58379   , p_adr_type_code                => 'S'
58380   , p_component_type               => l_component_type
58381   , p_component_code               => l_component_code
58382   , p_component_type_code          => l_component_type_code
58383   , p_component_appl_id            => l_component_appl_id
58384   , p_amb_context_code             => l_amb_context_code
58385   , p_side                         => 'NA'
58386   );
58387 
58388 
58389    --
58390    --
58391    END IF;
58392 
58393        --
58397                                          p_header_num   => 1);
58394        -- Update the line information that should be overwritten
58395        --
58396        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
58398        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
58399 
58400        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
58401 
58402        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
58403           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
58404        END IF;
58405 
58406       --
58407       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
58408       --
58409       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
58410           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
58411       ELSE
58412           ---------------------------------------------------------------------------------------------------
58413           -- 4262811a Switch Sign
58414           ---------------------------------------------------------------------------------------------------
58415           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
58416           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58417                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58418           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58419                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58420           -- 5132302
58421           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
58422                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58423 
58424       END IF;
58425 
58426       -- 4955764
58427       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58428       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
58429 
58430 
58431       XLA_AE_LINES_PKG.ValidateCurrentLine;
58432       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58433 
58434       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58435                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
58436                ,p_balance_type_code => l_balance_type_code);
58437 
58438    END IF;
58439 
58440    -----------------------------------------------------------------------------------------
58441    -- 4262811 Multiperiod Accounting
58442    -----------------------------------------------------------------------------------------
58443      -- No MPA option is assigned.
58444 
58445 
58446 END IF;
58447 END IF;
58448 --
58449 
58450 --
58451 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58452    trace
58453       (p_msg      => 'END of AcctLineType_118'
58454       ,p_level    => C_LEVEL_PROCEDURE
58455       ,p_module   => l_log_module);
58456 END IF;
58457 --
58458 EXCEPTION
58459   WHEN xla_exceptions_pkg.application_exception THEN
58460       RAISE;
58461   WHEN OTHERS THEN
58462        xla_exceptions_pkg.raise_message
58463            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_118');
58464 END AcctLineType_118;
58465 --
58466 
58467 ---------------------------------------
58468 --
58469 -- PRIVATE FUNCTION
58470 --         AcctLineType_119
58471 --
58472 ---------------------------------------
58473 PROCEDURE AcctLineType_119 (
58474   p_application_id        IN NUMBER
58475  ,p_event_id              IN NUMBER
58476  ,p_calculate_acctd_flag  IN VARCHAR2
58477  ,p_calculate_g_l_flag    IN VARCHAR2
58478  ,p_actual_flag           IN OUT VARCHAR2
58479  ,p_balance_type_code     OUT VARCHAR2
58480  ,p_gain_or_loss_ref      OUT VARCHAR2
58481  
58482 --Distribution GL Account
58483  , p_source_22            IN NUMBER
58484 --Distribution Source Type
58485  , p_source_27            IN VARCHAR2
58486 --Distribution Line Identifier
58487  , p_source_29            IN NUMBER
58488 --Distribution Type
58489  , p_source_30            IN VARCHAR2
58490 --Entered Amount
58491  , p_source_31            IN NUMBER
58492 --Currency Code
58493  , p_source_32            IN VARCHAR2
58494 --Applied To Document Accounting Amount
58495  , p_source_36            IN NUMBER
58496 --Transaction Distribution Identifier
58497  , p_source_44            IN NUMBER
58498 --Transaction Distribution Type
58499  , p_source_45            IN VARCHAR2
58500 --Distribution Multi Fund Additional Entry
58501  , p_source_88            IN VARCHAR2
58502 --Applied To Document Exchange Date
58503  , p_source_89            IN DATE
58504 --Cash Receipt Identifier
58505  , p_source_90            IN NUMBER
58506 --Receipt Applied To Application Identifier
58507  , p_source_92            IN NUMBER
58508 --Transaction Entity Code
58509  , p_source_93            IN VARCHAR2
58510 --Transaction Identifier
58511  , p_source_94            IN NUMBER
58512 --Distribution Party Identifier
58513  , p_source_97            IN NUMBER
58514 --Distribution Party Site Id
58515  , p_source_98            IN NUMBER
58516 --Distribution Party Type
58517  , p_source_99            IN VARCHAR2
58521  , p_source_101            IN NUMBER
58518 --Applied To Document Exchange Rate Type
58519  , p_source_100            IN VARCHAR2
58520 --Applied To Document Exchange Rate
58522 )
58523 IS
58524 
58525 l_component_type              VARCHAR2(80);
58526 l_component_code              VARCHAR2(30);
58527 l_component_type_code         VARCHAR2(1);
58528 l_component_appl_id           INTEGER;
58529 l_amb_context_code            VARCHAR2(30);
58530 l_entity_code                 VARCHAR2(30);
58531 l_event_class_code            VARCHAR2(30);
58532 l_ae_header_id                NUMBER;
58533 l_event_type_code             VARCHAR2(30);
58534 l_line_definition_code        VARCHAR2(30);
58535 l_line_definition_owner_code  VARCHAR2(1);
58536 --
58537 -- adr variables
58538 l_segment                     VARCHAR2(30);
58539 l_ccid                        NUMBER;
58540 l_adr_transaction_coa_id      NUMBER;
58541 l_adr_accounting_coa_id       NUMBER;
58542 l_adr_flexfield_segment_code  VARCHAR2(30);
58543 l_adr_flex_value_set_id       NUMBER;
58544 l_adr_value_type_code         VARCHAR2(30);
58545 l_adr_value_combination_id    NUMBER;
58546 l_adr_value_segment_code      VARCHAR2(30);
58547 
58548 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
58549 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
58550 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
58551 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
58552 
58553 -- 4262811 Variables ------------------------------------------------------------------------------------------
58554 l_entered_amt_idx             NUMBER;
58555 l_accted_amt_idx              NUMBER;
58556 l_acc_rev_flag                VARCHAR2(1);
58557 l_accrual_line_num            NUMBER;
58558 l_tmp_amt                     NUMBER;
58559 l_acc_rev_natural_side_code   VARCHAR2(1);
58560 
58561 l_num_entries                 NUMBER;
58562 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
58563 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
58564 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
58565 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
58566 l_recog_line_1                NUMBER;
58567 l_recog_line_2                NUMBER;
58568 
58569 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
58570 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
58571 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
58572 
58573 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
58574 
58575 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
58576 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
58577 
58578 ---------------------------------------------------------------------------------------------------------------
58579 
58580 
58581 --
58582 -- bulk performance
58583 --
58584 l_balance_type_code           VARCHAR2(1);
58585 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
58586 l_log_module                  VARCHAR2(240);
58587 
58588 --
58589 -- Upgrade strategy
58590 --
58591 l_actual_upg_option           VARCHAR2(1);
58592 l_enc_upg_option           VARCHAR2(1);
58593 
58594 --
58595 BEGIN
58596 --
58597 IF g_log_enabled THEN
58598       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_119';
58599 END IF;
58600 --
58601 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58602 
58603       trace
58604          (p_msg      => 'BEGIN of AcctLineType_119'
58605          ,p_level    => C_LEVEL_PROCEDURE
58606          ,p_module   => l_log_module);
58607 
58608 END IF;
58609 --
58610 l_component_type             := 'AMB_JLT';
58611 l_component_code             := 'RCT_TAX';
58612 l_component_type_code        := 'S';
58613 l_component_appl_id          :=  222;
58614 l_amb_context_code           := 'DEFAULT';
58615 l_entity_code                := 'RECEIPTS';
58616 l_event_class_code           := 'RECEIPT';
58617 l_event_type_code            := 'RECEIPT_ALL';
58618 l_line_definition_owner_code := 'S';
58619 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
58620 --
58621 l_balance_type_code          := 'A';
58622 l_segment                     := NULL;
58623 l_ccid                        := NULL;
58624 l_adr_transaction_coa_id      := NULL;
58625 l_adr_accounting_coa_id       := NULL;
58626 l_adr_flexfield_segment_code  := NULL;
58627 l_adr_flex_value_set_id       := NULL;
58628 l_adr_value_type_code         := NULL;
58629 l_adr_value_combination_id    := NULL;
58630 l_adr_value_segment_code      := NULL;
58631 
58632 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
58633 l_bflow_class_code           := '';    -- 4219869 Business Flow
58634 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
58635 l_budgetary_control_flag     := 'N';
58636 
58637 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
58638 l_bflow_applied_to_amt       := NULL; -- 5132302
58639 l_entered_amt_idx            := NULL;          -- 4262811
58640 l_accted_amt_idx             := NULL;          -- 4262811
58641 l_acc_rev_flag               := NULL;          -- 4262811
58642 l_accrual_line_num           := NULL;          -- 4262811
58643 l_tmp_amt                    := NULL;          -- 4262811
58644 --
58645  
58649 ') =  'TAX' AND 
58646 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
58647     l_balance_type_code <> 'B' THEN
58648 IF NVL(p_source_27,'
58650 NVL(p_source_88,'
58651 ') =  'N'
58652  THEN 
58653 
58654    --
58655    XLA_AE_LINES_PKG.SetNewLine;
58656 
58657    p_balance_type_code          := l_balance_type_code;
58658    -- set the flag so later we will know whether the gain loss line needs to be created
58659    
58660    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
58661      p_actual_flag :='A';
58662    END IF;
58663 
58664    --
58665    -- bulk performance
58666    --
58667    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
58668                                       p_header_num   => 0); -- 4262811
58669    --
58670    -- set accounting line options
58671    --
58672    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
58673            p_natural_side_code          => 'C'
58674          , p_gain_or_loss_flag          => 'N'
58675          , p_gl_transfer_mode_code      => 'S'
58676          , p_acct_entry_type_code       => 'A'
58677          , p_switch_side_flag           => 'Y'
58678          , p_merge_duplicate_code       => 'A'
58679          );
58680    --
58681    l_acc_rev_natural_side_code := 'D';  -- 4262811
58682    -- 
58683    --
58684    -- set accounting line type info
58685    --
58686    xla_ae_lines_pkg.SetAcctLineType
58687       (p_component_type             => l_component_type
58688       ,p_event_type_code            => l_event_type_code
58689       ,p_line_definition_owner_code => l_line_definition_owner_code
58690       ,p_line_definition_code       => l_line_definition_code
58691       ,p_accounting_line_code       => l_component_code
58692       ,p_accounting_line_type_code  => l_component_type_code
58693       ,p_accounting_line_appl_id    => l_component_appl_id
58694       ,p_amb_context_code           => l_amb_context_code
58695       ,p_entity_code                => l_entity_code
58696       ,p_event_class_code           => l_event_class_code);
58697    --
58698    -- set accounting class
58699    --
58700    xla_ae_lines_pkg.SetAcctClass(
58701            p_accounting_class_code  => 'TAX'
58702          , p_ae_header_id           => l_ae_header_id
58703          );
58704 
58705    --
58706    -- set rounding class
58707    --
58708    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
58709                       'RECEIVABLE';
58710 
58711    --
58712    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
58713    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
58714    --
58715    -- bulk performance
58716    --
58717    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
58718 
58719    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
58720       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
58721 
58722    -- 4955764
58723    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58724       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
58725 
58726    -- 4458381 Public Sector Enh
58727    
58728    --
58729    -- set accounting attributes for the line type
58730    --
58731    l_entered_amt_idx := 8;
58732    l_accted_amt_idx  := 13;
58733    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
58734    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
58735    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
58736    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
58737    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
58738    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
58739    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
58740    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
58741    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
58742    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
58743    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
58744    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
58745    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
58746    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
58747    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
58748    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
58749    l_rec_acct_attrs.array_num_value(8)  := p_source_31;
58750    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
58751    l_rec_acct_attrs.array_char_value(9)  := p_source_32;
58752    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
58753    l_rec_acct_attrs.array_date_value(10)  := p_source_89;
58754    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
58755    l_rec_acct_attrs.array_num_value(11)  := p_source_101;
58756    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
58757    l_rec_acct_attrs.array_char_value(12)  := p_source_100;
58758    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
58759    l_rec_acct_attrs.array_num_value(13)  := p_source_36;
58763    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
58760    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
58761    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
58762    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
58764    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
58765    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
58766 
58767    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
58768    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
58769 
58770    ---------------------------------------------------------------------------------------------------------------
58771    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
58772    ---------------------------------------------------------------------------------------------------------------
58773    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58774 
58775    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58776    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58777 
58778    IF xla_accounting_cache_pkg.GetValueChar
58779          (p_source_code         => 'LEDGER_CATEGORY_CODE'
58780          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58781    AND l_bflow_method_code = 'PRIOR_ENTRY'
58782 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58783    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58784          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58785        )
58786    THEN
58787          xla_ae_lines_pkg.BflowUpgEntry
58788            (p_business_method_code    => l_bflow_method_code
58789            ,p_business_class_code     => l_bflow_class_code
58790            ,p_balance_type            => l_balance_type_code);
58791    ELSE
58792       NULL;
58793 -- No business flow processing for business flow method of NONE.
58794    END IF;
58795 
58796    --
58797    -- call analytical criteria
58798    --
58799    
58800 
58801 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
58802 xla_ae_lines_pkg.SetAnalyticalCriteria(
58803    p_analytical_criterion_name    => 'Check Id'
58804  , p_analytical_criterion_owner   => 'S'
58805  , p_analytical_criterion_code    => 'CHECK_ID'
58806  , p_amb_context_code             => 'DEFAULT'
58807  , p_balancing_flag               => 'N'
58808  
58809  , p_analytical_detail_char_1    =>  NULL
58810  , p_analytical_detail_num_1     =>  p_source_90
58811  , p_analytical_detail_date_1    =>  NULL
58812 
58813  , p_ae_header_id                 => l_ae_header_id
58814 )
58815 ;
58816 --
58817 
58818    --
58819    -- call description
58820    --
58821    -- No description or it is inherited.
58822    --
58823    -- call ADRs
58824    -- Bug 4922099
58825    --
58826    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58827         (NVL(l_actual_upg_option, 'N') = 'O') OR
58828         (NVL(l_enc_upg_option, 'N') = 'O')
58829       )
58830    THEN
58831    NULL;
58832    --
58833    --
58834    
58835   l_ccid := AcctDerRule_20(
58836            p_application_id           => p_application_id
58837          , p_ae_header_id             => l_ae_header_id 
58838 , p_source_22 => p_source_22
58839          , x_transaction_coa_id       => l_adr_transaction_coa_id
58840          , x_accounting_coa_id        => l_adr_accounting_coa_id
58841          , x_value_type_code          => l_adr_value_type_code
58842          , p_side                     => 'NA'
58843    );
58844 
58845    xla_ae_lines_pkg.set_ccid(
58846     p_code_combination_id          => l_ccid
58847   , p_value_type_code              => l_adr_value_type_code
58848   , p_transaction_coa_id           => l_adr_transaction_coa_id
58849   , p_accounting_coa_id            => l_adr_accounting_coa_id
58850   , p_adr_code                     => 'DIST_CCID'
58851   , p_adr_type_code                => 'S'
58852   , p_component_type               => l_component_type
58853   , p_component_code               => l_component_code
58854   , p_component_type_code          => l_component_type_code
58855   , p_component_appl_id            => l_component_appl_id
58856   , p_amb_context_code             => l_amb_context_code
58857   , p_side                         => 'NA'
58858   );
58859 
58860 
58861    --
58862    --
58863    END IF;
58864    --
58865    -- Bug 4922099
58866    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58867           (NVL(l_enc_upg_option, 'N') = 'O')
58868         ) AND
58869         (l_bflow_method_code = 'PRIOR_ENTRY')
58870       )
58871    THEN
58872       IF
58873       --
58874       1 = 2
58875       --
58876       THEN
58877       xla_accounting_err_pkg.build_message
58878                                     (p_appli_s_name            => 'XLA'
58879                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58880                                     ,p_token_1                 => 'LINE_NUMBER'
58881                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
58882                                     ,p_token_2                 => 'LINE_TYPE_NAME'
58886                                                                             ,l_component_type_code
58883                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
58884                                                                              l_component_type
58885                                                                             ,l_component_code
58887                                                                             ,l_component_appl_id
58888                                                                             ,l_amb_context_code
58889                                                                             ,l_entity_code
58890                                                                             ,l_event_class_code
58891                                                                            )
58892                                     ,p_token_3                 => 'OWNER'
58893                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
58894                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
58895                                                                           ,p_lookup_code    => l_component_type_code
58896                                                                          )
58897                                     ,p_token_4                 => 'PRODUCT_NAME'
58898                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58899                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58900                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58901                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58902                                     ,p_ae_header_id            =>  NULL
58903                                        );
58904 
58905         IF (C_LEVEL_ERROR>= g_log_level) THEN
58906                  trace
58907                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58908                       ,p_level    => C_LEVEL_ERROR
58909                       ,p_module   => l_log_module);
58910         END IF;
58911       END IF;
58912    END IF;
58913    --
58914    --
58915    ------------------------------------------------------------------------------------------------
58916    -- 4219869 Business Flow
58917    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58918    -- Prior Entry.  Currently, the following code is always generated.
58919    ------------------------------------------------------------------------------------------------
58920    XLA_AE_LINES_PKG.ValidateCurrentLine;
58921 
58922    ------------------------------------------------------------------------------------
58923    -- 4219869 Business Flow
58924    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58925    ------------------------------------------------------------------------------------
58926    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58927 
58928    ----------------------------------------------------------------------------------
58929    -- 4219869 Business Flow
58930    -- Update journal entry status -- Need to generate this within IF <condition>
58931    ----------------------------------------------------------------------------------
58932    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58933          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58934          ,p_balance_type_code => l_balance_type_code
58935          );
58936 
58937    -------------------------------------------------------------------------------------------
58938    -- 4262811 - Generate the Accrual Reversal lines
58939    -------------------------------------------------------------------------------------------
58940    BEGIN
58941       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58942                               (g_array_event(p_event_id).array_value_num('header_index'));
58943       IF l_acc_rev_flag IS NULL THEN
58944          l_acc_rev_flag := 'N';
58945       END IF;
58946    EXCEPTION
58947       WHEN OTHERS THEN
58948          l_acc_rev_flag := 'N';
58949    END;
58950    --
58951    IF (l_acc_rev_flag = 'Y') THEN
58952 
58953        -- 4645092  ------------------------------------------------------------------------------
58954        -- To allow MPA report to determine if it should generate report process
58955        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58956        ------------------------------------------------------------------------------------------
58957 
58958        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58959        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
58960    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
58961    -- call ADRs
58962    -- Bug 4922099
58963    --
58964    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58965         (NVL(l_actual_upg_option, 'N') = 'O') OR
58966         (NVL(l_enc_upg_option, 'N') = 'O')
58967       )
58968    THEN
58969    NULL;
58970    --
58971    --
58972    
58973   l_ccid := AcctDerRule_20(
58974            p_application_id           => p_application_id
58975          , p_ae_header_id             => l_ae_header_id 
58976 , p_source_22 => p_source_22
58977          , x_transaction_coa_id       => l_adr_transaction_coa_id
58978          , x_accounting_coa_id        => l_adr_accounting_coa_id
58979          , x_value_type_code          => l_adr_value_type_code
58983    xla_ae_lines_pkg.set_ccid(
58980          , p_side                     => 'NA'
58981    );
58982 
58984     p_code_combination_id          => l_ccid
58985   , p_value_type_code              => l_adr_value_type_code
58986   , p_transaction_coa_id           => l_adr_transaction_coa_id
58987   , p_accounting_coa_id            => l_adr_accounting_coa_id
58988   , p_adr_code                     => 'DIST_CCID'
58989   , p_adr_type_code                => 'S'
58990   , p_component_type               => l_component_type
58991   , p_component_code               => l_component_code
58992   , p_component_type_code          => l_component_type_code
58993   , p_component_appl_id            => l_component_appl_id
58994   , p_amb_context_code             => l_amb_context_code
58995   , p_side                         => 'NA'
58996   );
58997 
58998 
58999    --
59000    --
59001    END IF;
59002 
59003        --
59004        -- Update the line information that should be overwritten
59005        --
59006        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59007                                          p_header_num   => 1);
59008        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
59009 
59010        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59011 
59012        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
59013           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59014        END IF;
59015 
59016       --
59017       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59018       --
59019       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59020           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
59021       ELSE
59022           ---------------------------------------------------------------------------------------------------
59023           -- 4262811a Switch Sign
59024           ---------------------------------------------------------------------------------------------------
59025           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
59026           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59027                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59028           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59029                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59030           -- 5132302
59031           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59032                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59033 
59034       END IF;
59035 
59036       -- 4955764
59037       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59038       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59039 
59040 
59041       XLA_AE_LINES_PKG.ValidateCurrentLine;
59042       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59043 
59044       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59045                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59046                ,p_balance_type_code => l_balance_type_code);
59047 
59048    END IF;
59049 
59050    -----------------------------------------------------------------------------------------
59051    -- 4262811 Multiperiod Accounting
59052    -----------------------------------------------------------------------------------------
59053      -- No MPA option is assigned.
59054 
59055 
59056 END IF;
59057 END IF;
59058 --
59059 
59060 --
59061 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59062    trace
59063       (p_msg      => 'END of AcctLineType_119'
59064       ,p_level    => C_LEVEL_PROCEDURE
59065       ,p_module   => l_log_module);
59066 END IF;
59067 --
59068 EXCEPTION
59069   WHEN xla_exceptions_pkg.application_exception THEN
59070       RAISE;
59071   WHEN OTHERS THEN
59072        xla_exceptions_pkg.raise_message
59073            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_119');
59074 END AcctLineType_119;
59075 --
59076 
59077 ---------------------------------------
59078 --
59079 -- PRIVATE FUNCTION
59080 --         AcctLineType_120
59081 --
59082 ---------------------------------------
59083 PROCEDURE AcctLineType_120 (
59084   p_application_id        IN NUMBER
59085  ,p_event_id              IN NUMBER
59086  ,p_calculate_acctd_flag  IN VARCHAR2
59087  ,p_calculate_g_l_flag    IN VARCHAR2
59088  ,p_actual_flag           IN OUT VARCHAR2
59089  ,p_balance_type_code     OUT VARCHAR2
59090  ,p_gain_or_loss_ref      OUT VARCHAR2
59091  
59092 --Remittance Bank Account Unapplied Account
59093  , p_source_23            IN NUMBER
59094 --Distribution Source Type
59095  , p_source_27            IN VARCHAR2
59096 --Receivable Activity Type
59097  , p_source_28            IN VARCHAR2
59098 --Distribution Line Identifier
59099  , p_source_29            IN NUMBER
59100 --Distribution Type
59101  , p_source_30            IN VARCHAR2
59102 --Exchange Date
59103  , p_source_33            IN DATE
59107  , p_source_35            IN VARCHAR2
59104 --Exchange Rate
59105  , p_source_34            IN NUMBER
59106 --Exchange Rate Type
59108 --Accounting Amount
59109  , p_source_40            IN NUMBER
59110 --Transaction Distribution Identifier
59111  , p_source_44            IN NUMBER
59112 --Transaction Distribution Type
59113  , p_source_45            IN VARCHAR2
59114 --Distribution Multi Fund Additional Entry
59115  , p_source_88            IN VARCHAR2
59116 --Cash Receipt Identifier
59117  , p_source_90            IN NUMBER
59118 --Receipt Applied To Application Identifier
59119  , p_source_92            IN NUMBER
59120 --Transaction Entity Code
59121  , p_source_93            IN VARCHAR2
59122 --Transaction Identifier
59123  , p_source_94            IN NUMBER
59124 --DIST_ENT_AMT_FROM
59125  , p_source_95            IN NUMBER
59126 --Applying Document Currency Code
59127  , p_source_96            IN VARCHAR2
59128 --Distribution Party Type
59129  , p_source_99            IN VARCHAR2
59130 --Distribution Source Table
59131  , p_source_102            IN VARCHAR2
59132 --Receipt Pay From Customer
59133  , p_source_104            IN NUMBER
59134 --Receipt Customer Site Use Identifier
59135  , p_source_105            IN NUMBER
59136 --Receipt Application Status
59137  , p_source_106            IN VARCHAR2
59138 )
59139 IS
59140 
59141 l_component_type              VARCHAR2(80);
59142 l_component_code              VARCHAR2(30);
59143 l_component_type_code         VARCHAR2(1);
59144 l_component_appl_id           INTEGER;
59145 l_amb_context_code            VARCHAR2(30);
59146 l_entity_code                 VARCHAR2(30);
59147 l_event_class_code            VARCHAR2(30);
59148 l_ae_header_id                NUMBER;
59149 l_event_type_code             VARCHAR2(30);
59150 l_line_definition_code        VARCHAR2(30);
59151 l_line_definition_owner_code  VARCHAR2(1);
59152 --
59153 -- adr variables
59154 l_segment                     VARCHAR2(30);
59155 l_ccid                        NUMBER;
59156 l_adr_transaction_coa_id      NUMBER;
59157 l_adr_accounting_coa_id       NUMBER;
59158 l_adr_flexfield_segment_code  VARCHAR2(30);
59159 l_adr_flex_value_set_id       NUMBER;
59160 l_adr_value_type_code         VARCHAR2(30);
59161 l_adr_value_combination_id    NUMBER;
59162 l_adr_value_segment_code      VARCHAR2(30);
59163 
59164 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
59165 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
59166 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
59167 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
59168 
59169 -- 4262811 Variables ------------------------------------------------------------------------------------------
59170 l_entered_amt_idx             NUMBER;
59171 l_accted_amt_idx              NUMBER;
59172 l_acc_rev_flag                VARCHAR2(1);
59173 l_accrual_line_num            NUMBER;
59174 l_tmp_amt                     NUMBER;
59175 l_acc_rev_natural_side_code   VARCHAR2(1);
59176 
59177 l_num_entries                 NUMBER;
59178 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
59179 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
59180 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
59181 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
59182 l_recog_line_1                NUMBER;
59183 l_recog_line_2                NUMBER;
59184 
59185 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
59186 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
59187 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
59188 
59189 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
59190 
59191 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
59192 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
59193 
59194 ---------------------------------------------------------------------------------------------------------------
59195 
59196 
59197 --
59198 -- bulk performance
59199 --
59200 l_balance_type_code           VARCHAR2(1);
59201 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
59202 l_log_module                  VARCHAR2(240);
59203 
59204 --
59205 -- Upgrade strategy
59206 --
59207 l_actual_upg_option           VARCHAR2(1);
59208 l_enc_upg_option           VARCHAR2(1);
59209 
59210 --
59211 BEGIN
59212 --
59213 IF g_log_enabled THEN
59214       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_120';
59215 END IF;
59216 --
59217 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59218 
59219       trace
59220          (p_msg      => 'BEGIN of AcctLineType_120'
59221          ,p_level    => C_LEVEL_PROCEDURE
59222          ,p_module   => l_log_module);
59223 
59224 END IF;
59225 --
59226 l_component_type             := 'AMB_JLT';
59227 l_component_code             := 'RCT_UNAPP';
59228 l_component_type_code        := 'S';
59229 l_component_appl_id          :=  222;
59230 l_amb_context_code           := 'DEFAULT';
59231 l_entity_code                := 'RECEIPTS';
59232 l_event_class_code           := 'RECEIPT';
59233 l_event_type_code            := 'RECEIPT_ALL';
59234 l_line_definition_owner_code := 'S';
59238 l_segment                     := NULL;
59235 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
59236 --
59237 l_balance_type_code          := 'A';
59239 l_ccid                        := NULL;
59240 l_adr_transaction_coa_id      := NULL;
59241 l_adr_accounting_coa_id       := NULL;
59242 l_adr_flexfield_segment_code  := NULL;
59243 l_adr_flex_value_set_id       := NULL;
59244 l_adr_value_type_code         := NULL;
59245 l_adr_value_combination_id    := NULL;
59246 l_adr_value_segment_code      := NULL;
59247 
59248 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
59249 l_bflow_class_code           := '';    -- 4219869 Business Flow
59250 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
59251 l_budgetary_control_flag     := 'N';
59252 
59253 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
59254 l_bflow_applied_to_amt       := NULL; -- 5132302
59255 l_entered_amt_idx            := NULL;          -- 4262811
59256 l_accted_amt_idx             := NULL;          -- 4262811
59257 l_acc_rev_flag               := NULL;          -- 4262811
59258 l_accrual_line_num           := NULL;          -- 4262811
59259 l_tmp_amt                    := NULL;          -- 4262811
59260 --
59261  
59262 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59263     l_balance_type_code <> 'B' THEN
59264 IF (NVL(p_source_27,'
59265 ') =  'OTHER ACC' AND 
59266 NVL(p_source_28,'
59267 ') =  'CLAIM_INVESTIGATION' AND 
59268 NVL(p_source_88,'
59269 ') =  'N') OR 
59270 (NVL(p_source_27,'
59271 ') =  'FACTOR' AND 
59272 NVL(p_source_102,'
59273 ') =  'RA' AND 
59274 NVL(p_source_88,'
59275 ') =  'N') OR 
59276 (NVL(p_source_27,'
59277 ') =  'OTHER ACC' AND 
59278 NVL(p_source_88,'
59279 ') =  'N' AND 
59280 NVL(p_source_28,'
59281 ') =  'NETTING') OR 
59282 (NVL(p_source_27,'
59283 ') =  'OTHER ACC' AND 
59284 NVL(p_source_88,'
59285 ') =  'N' AND 
59286 NVL(p_source_28,'
59287 ') =  'PREPAYMENT') OR 
59288 (NVL(p_source_27,'
59289 ') =  'ACTIVITY' AND 
59290 NVL(p_source_88,'
59291 ') =  'N' AND 
59292 NVL(p_source_28,'
59293 ') =  'CCREFUND') OR 
59294 (NVL(p_source_27,'
59295 ') =  'REMITTANCE' AND 
59296 NVL(p_source_88,'
59297 ') =  'N' AND 
59298 NVL(p_source_102,'
59299 ') =  'RA') OR 
59300 (NVL(p_source_27,'
59301 ') =  'ACTIVITY' AND 
59302 NVL(p_source_88,'
59303 ') =  'N' AND 
59304 NVL(p_source_28,'
59305 ') =  'WRITEOFF') OR 
59306 (NVL(p_source_27,'
59307 ') =  'ACTIVITY' AND 
59308 NVL(p_source_88,'
59309 ') =  'N' AND 
59310 NVL(p_source_28,'
59311 ') =  'CM_REFUND') OR 
59312 (NVL(p_source_27,'
59313 ') =  'ACTIVITY' AND 
59314 NVL(p_source_28,'
59315 ') =  'ADJUST' AND 
59316 NVL(p_source_88,'
59317 ') =  'N') OR 
59318 (NVL(p_source_27,'
59319 ') =  'ACTIVITY' AND 
59320 NVL(p_source_88,'
59321 ') =  'N' AND 
59322 NVL(p_source_28,'
59323 ') =  'CC_CHARGEBACK') OR 
59324 (NVL(p_source_27,'
59325 ') =  'ACTIVITY' AND 
59326 NVL(p_source_88,'
59327 ') =  'N' AND 
59328 NVL(p_source_28,'
59329 ') =  'NETTING')
59330  THEN 
59331 
59332    --
59333    XLA_AE_LINES_PKG.SetNewLine;
59334 
59335    p_balance_type_code          := l_balance_type_code;
59336    -- set the flag so later we will know whether the gain loss line needs to be created
59337    
59338    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59339      p_actual_flag :='A';
59340    END IF;
59341 
59342    --
59343    -- bulk performance
59344    --
59345    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59346                                       p_header_num   => 0); -- 4262811
59347    --
59348    -- set accounting line options
59349    --
59350    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59351            p_natural_side_code          => 'D'
59352          , p_gain_or_loss_flag          => 'N'
59353          , p_gl_transfer_mode_code      => 'S'
59354          , p_acct_entry_type_code       => 'A'
59355          , p_switch_side_flag           => 'Y'
59356          , p_merge_duplicate_code       => 'A'
59357          );
59358    --
59359    l_acc_rev_natural_side_code := 'C';  -- 4262811
59360    -- 
59361    --
59362    -- set accounting line type info
59363    --
59364    xla_ae_lines_pkg.SetAcctLineType
59365       (p_component_type             => l_component_type
59366       ,p_event_type_code            => l_event_type_code
59367       ,p_line_definition_owner_code => l_line_definition_owner_code
59368       ,p_line_definition_code       => l_line_definition_code
59369       ,p_accounting_line_code       => l_component_code
59370       ,p_accounting_line_type_code  => l_component_type_code
59371       ,p_accounting_line_appl_id    => l_component_appl_id
59372       ,p_amb_context_code           => l_amb_context_code
59373       ,p_entity_code                => l_entity_code
59374       ,p_event_class_code           => l_event_class_code);
59375    --
59376    -- set accounting class
59377    --
59378    xla_ae_lines_pkg.SetAcctClass(
59379            p_accounting_class_code  => 'UNAPP'
59380          , p_ae_header_id           => l_ae_header_id
59381          );
59382 
59383    --
59384    -- set rounding class
59388 
59385    --
59386    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59387                       'RECEIVABLE';
59389    --
59390    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59391    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59392    --
59393    -- bulk performance
59394    --
59395    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59396 
59397    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59398       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59399 
59400    -- 4955764
59401    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59402       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59403 
59404    -- 4458381 Public Sector Enh
59405    
59406    --
59407    -- set accounting attributes for the line type
59408    --
59409    l_entered_amt_idx := 8;
59410    l_accted_amt_idx  := 13;
59411    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
59412    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
59413    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
59414    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
59415    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
59416    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
59417    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
59418    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
59419    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
59420    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
59421    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
59422    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
59423    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
59424    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
59425    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
59426    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
59427    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
59428    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
59429    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
59430    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
59431    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
59432    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
59433    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
59434    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
59435    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
59436    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
59437    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
59438    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
59439    l_rec_acct_attrs.array_num_value(14)  := p_source_104;
59440    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
59441    l_rec_acct_attrs.array_num_value(15)  := p_source_105;
59442    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
59443    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
59444 
59445    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
59446    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
59447 
59448    ---------------------------------------------------------------------------------------------------------------
59449    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
59450    ---------------------------------------------------------------------------------------------------------------
59451    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
59452 
59453    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59454    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59455 
59456    IF xla_accounting_cache_pkg.GetValueChar
59457          (p_source_code         => 'LEDGER_CATEGORY_CODE'
59458          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
59459    AND l_bflow_method_code = 'PRIOR_ENTRY'
59460 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
59461    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
59462          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
59463        )
59464    THEN
59465          xla_ae_lines_pkg.BflowUpgEntry
59466            (p_business_method_code    => l_bflow_method_code
59467            ,p_business_class_code     => l_bflow_class_code
59468            ,p_balance_type            => l_balance_type_code);
59469    ELSE
59470       NULL;
59471 -- No business flow processing for business flow method of NONE.
59472    END IF;
59473 
59474    --
59475    -- call analytical criteria
59476    --
59477    
59478 
59479 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
59480 xla_ae_lines_pkg.SetAnalyticalCriteria(
59481    p_analytical_criterion_name    => 'Check Id'
59482  , p_analytical_criterion_owner   => 'S'
59483  , p_analytical_criterion_code    => 'CHECK_ID'
59484  , p_amb_context_code             => 'DEFAULT'
59485  , p_balancing_flag               => 'N'
59486  
59490 
59487  , p_analytical_detail_char_1    =>  NULL
59488  , p_analytical_detail_num_1     =>  p_source_90
59489  , p_analytical_detail_date_1    =>  NULL
59491  , p_ae_header_id                 => l_ae_header_id
59492 )
59493 ;
59494 --
59495 
59496 
59497 xla_ae_lines_pkg.g_rec_lines.array_anc_id_2(xla_ae_lines_pkg.g_LineNumber) :=
59498 xla_ae_lines_pkg.SetAnalyticalCriteria(
59499    p_analytical_criterion_name    => 'Receipt Application Status'
59500  , p_analytical_criterion_owner   => 'S'
59501  , p_analytical_criterion_code    => 'RECEIPT_APPLICATION_STATUS'
59502  , p_amb_context_code             => 'DEFAULT'
59503  , p_balancing_flag               => 'N'
59504  
59505  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_106)
59506  , p_analytical_detail_num_1     =>  NULL
59507  , p_analytical_detail_date_1    =>  NULL
59508 
59509  , p_ae_header_id                 => l_ae_header_id
59510 )
59511 ;
59512 --
59513 
59514    --
59515    -- call description
59516    --
59517    -- No description or it is inherited.
59518    --
59519    -- call ADRs
59520    -- Bug 4922099
59521    --
59522    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59523         (NVL(l_actual_upg_option, 'N') = 'O') OR
59524         (NVL(l_enc_upg_option, 'N') = 'O')
59525       )
59526    THEN
59527    NULL;
59528    --
59529    --
59530    
59531   l_ccid := AcctDerRule_21(
59532            p_application_id           => p_application_id
59533          , p_ae_header_id             => l_ae_header_id 
59534 , p_source_23 => p_source_23
59535          , x_transaction_coa_id       => l_adr_transaction_coa_id
59536          , x_accounting_coa_id        => l_adr_accounting_coa_id
59537          , x_value_type_code          => l_adr_value_type_code
59538          , p_side                     => 'NA'
59539    );
59540 
59541    xla_ae_lines_pkg.set_ccid(
59542     p_code_combination_id          => l_ccid
59543   , p_value_type_code              => l_adr_value_type_code
59544   , p_transaction_coa_id           => l_adr_transaction_coa_id
59545   , p_accounting_coa_id            => l_adr_accounting_coa_id
59546   , p_adr_code                     => 'RMT_BNK_UNAPP_CCID'
59547   , p_adr_type_code                => 'S'
59548   , p_component_type               => l_component_type
59549   , p_component_code               => l_component_code
59550   , p_component_type_code          => l_component_type_code
59551   , p_component_appl_id            => l_component_appl_id
59552   , p_amb_context_code             => l_amb_context_code
59553   , p_side                         => 'NA'
59554   );
59555 
59556 
59557    --
59558    --
59559    END IF;
59560    --
59561    -- Bug 4922099
59562    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
59563           (NVL(l_enc_upg_option, 'N') = 'O')
59564         ) AND
59565         (l_bflow_method_code = 'PRIOR_ENTRY')
59566       )
59567    THEN
59568       IF
59569       --
59570       1 = 2
59571       --
59572       THEN
59573       xla_accounting_err_pkg.build_message
59574                                     (p_appli_s_name            => 'XLA'
59575                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59576                                     ,p_token_1                 => 'LINE_NUMBER'
59577                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
59578                                     ,p_token_2                 => 'LINE_TYPE_NAME'
59579                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
59580                                                                              l_component_type
59581                                                                             ,l_component_code
59582                                                                             ,l_component_type_code
59583                                                                             ,l_component_appl_id
59584                                                                             ,l_amb_context_code
59585                                                                             ,l_entity_code
59586                                                                             ,l_event_class_code
59587                                                                            )
59588                                     ,p_token_3                 => 'OWNER'
59589                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
59590                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
59591                                                                           ,p_lookup_code    => l_component_type_code
59592                                                                          )
59593                                     ,p_token_4                 => 'PRODUCT_NAME'
59594                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
59595                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
59596                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
59597                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
59598                                     ,p_ae_header_id            =>  NULL
59599                                        );
59600 
59604                       ,p_level    => C_LEVEL_ERROR
59601         IF (C_LEVEL_ERROR>= g_log_level) THEN
59602                  trace
59603                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59605                       ,p_module   => l_log_module);
59606         END IF;
59607       END IF;
59608    END IF;
59609    --
59610    --
59611    ------------------------------------------------------------------------------------------------
59612    -- 4219869 Business Flow
59613    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
59614    -- Prior Entry.  Currently, the following code is always generated.
59615    ------------------------------------------------------------------------------------------------
59616    XLA_AE_LINES_PKG.ValidateCurrentLine;
59617 
59618    ------------------------------------------------------------------------------------
59619    -- 4219869 Business Flow
59620    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
59621    ------------------------------------------------------------------------------------
59622    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59623 
59624    ----------------------------------------------------------------------------------
59625    -- 4219869 Business Flow
59626    -- Update journal entry status -- Need to generate this within IF <condition>
59627    ----------------------------------------------------------------------------------
59628    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59629          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
59630          ,p_balance_type_code => l_balance_type_code
59631          );
59632 
59633    -------------------------------------------------------------------------------------------
59634    -- 4262811 - Generate the Accrual Reversal lines
59635    -------------------------------------------------------------------------------------------
59636    BEGIN
59637       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
59638                               (g_array_event(p_event_id).array_value_num('header_index'));
59639       IF l_acc_rev_flag IS NULL THEN
59640          l_acc_rev_flag := 'N';
59641       END IF;
59642    EXCEPTION
59643       WHEN OTHERS THEN
59644          l_acc_rev_flag := 'N';
59645    END;
59646    --
59647    IF (l_acc_rev_flag = 'Y') THEN
59648 
59649        -- 4645092  ------------------------------------------------------------------------------
59650        -- To allow MPA report to determine if it should generate report process
59651        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
59652        ------------------------------------------------------------------------------------------
59653 
59654        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
59655        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
59656    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
59657    -- call ADRs
59658    -- Bug 4922099
59659    --
59660    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59661         (NVL(l_actual_upg_option, 'N') = 'O') OR
59662         (NVL(l_enc_upg_option, 'N') = 'O')
59663       )
59664    THEN
59665    NULL;
59666    --
59667    --
59668    
59669   l_ccid := AcctDerRule_21(
59670            p_application_id           => p_application_id
59671          , p_ae_header_id             => l_ae_header_id 
59672 , p_source_23 => p_source_23
59673          , x_transaction_coa_id       => l_adr_transaction_coa_id
59674          , x_accounting_coa_id        => l_adr_accounting_coa_id
59675          , x_value_type_code          => l_adr_value_type_code
59676          , p_side                     => 'NA'
59677    );
59678 
59679    xla_ae_lines_pkg.set_ccid(
59680     p_code_combination_id          => l_ccid
59681   , p_value_type_code              => l_adr_value_type_code
59682   , p_transaction_coa_id           => l_adr_transaction_coa_id
59683   , p_accounting_coa_id            => l_adr_accounting_coa_id
59684   , p_adr_code                     => 'RMT_BNK_UNAPP_CCID'
59685   , p_adr_type_code                => 'S'
59686   , p_component_type               => l_component_type
59687   , p_component_code               => l_component_code
59688   , p_component_type_code          => l_component_type_code
59689   , p_component_appl_id            => l_component_appl_id
59690   , p_amb_context_code             => l_amb_context_code
59691   , p_side                         => 'NA'
59692   );
59693 
59694 
59695    --
59696    --
59697    END IF;
59698 
59699        --
59700        -- Update the line information that should be overwritten
59701        --
59702        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59703                                          p_header_num   => 1);
59704        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
59705 
59706        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59707 
59708        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
59709           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59710        END IF;
59711 
59712       --
59713       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59714       --
59715       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59719           -- 4262811a Switch Sign
59716           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
59717       ELSE
59718           ---------------------------------------------------------------------------------------------------
59720           ---------------------------------------------------------------------------------------------------
59721           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
59722           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59723                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59724           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59725                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59726           -- 5132302
59727           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59728                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59729 
59730       END IF;
59731 
59732       -- 4955764
59733       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59734       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59735 
59736 
59737       XLA_AE_LINES_PKG.ValidateCurrentLine;
59738       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59739 
59740       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59741                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59742                ,p_balance_type_code => l_balance_type_code);
59743 
59744    END IF;
59745 
59746    -----------------------------------------------------------------------------------------
59747    -- 4262811 Multiperiod Accounting
59748    -----------------------------------------------------------------------------------------
59749      -- No MPA option is assigned.
59750 
59751 
59752 END IF;
59753 END IF;
59754 --
59755 
59756 --
59757 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59758    trace
59759       (p_msg      => 'END of AcctLineType_120'
59760       ,p_level    => C_LEVEL_PROCEDURE
59761       ,p_module   => l_log_module);
59762 END IF;
59763 --
59764 EXCEPTION
59765   WHEN xla_exceptions_pkg.application_exception THEN
59766       RAISE;
59767   WHEN OTHERS THEN
59768        xla_exceptions_pkg.raise_message
59769            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_120');
59770 END AcctLineType_120;
59771 --
59772 
59773 ---------------------------------------
59774 --
59775 -- PRIVATE FUNCTION
59776 --         AcctLineType_121
59777 --
59778 ---------------------------------------
59779 PROCEDURE AcctLineType_121 (
59780   p_application_id        IN NUMBER
59781  ,p_event_id              IN NUMBER
59782  ,p_calculate_acctd_flag  IN VARCHAR2
59783  ,p_calculate_g_l_flag    IN VARCHAR2
59784  ,p_actual_flag           IN OUT VARCHAR2
59785  ,p_balance_type_code     OUT VARCHAR2
59786  ,p_gain_or_loss_ref      OUT VARCHAR2
59787  
59788 --Remittance Bank Account Unapplied Account
59789  , p_source_23            IN NUMBER
59790 --Distribution Source Type
59791  , p_source_27            IN VARCHAR2
59792 --Distribution Line Identifier
59793  , p_source_29            IN NUMBER
59794 --Distribution Type
59795  , p_source_30            IN VARCHAR2
59796 --Exchange Date
59797  , p_source_33            IN DATE
59798 --Exchange Rate
59799  , p_source_34            IN NUMBER
59800 --Exchange Rate Type
59801  , p_source_35            IN VARCHAR2
59802 --Accounting Amount
59803  , p_source_40            IN NUMBER
59804 --Transaction Distribution Identifier
59805  , p_source_44            IN NUMBER
59806 --Transaction Distribution Type
59807  , p_source_45            IN VARCHAR2
59808 --Distribution Multi Fund Additional Entry
59809  , p_source_88            IN VARCHAR2
59810 --Cash Receipt Identifier
59811  , p_source_90            IN NUMBER
59812 --Receipt Applied To Application Identifier
59813  , p_source_92            IN NUMBER
59814 --Transaction Entity Code
59815  , p_source_93            IN VARCHAR2
59816 --Transaction Identifier
59817  , p_source_94            IN NUMBER
59818 --DIST_ENT_AMT_FROM
59819  , p_source_95            IN NUMBER
59820 --Applying Document Currency Code
59821  , p_source_96            IN VARCHAR2
59822 --Distribution Party Type
59823  , p_source_99            IN VARCHAR2
59824 --Distribution Source Table
59825  , p_source_102            IN VARCHAR2
59826 --Receipt Pay From Customer
59827  , p_source_104            IN NUMBER
59828 --Receipt Customer Site Use Identifier
59829  , p_source_105            IN NUMBER
59830 --Receipt Application Status
59831  , p_source_106            IN VARCHAR2
59832 )
59833 IS
59834 
59835 l_component_type              VARCHAR2(80);
59836 l_component_code              VARCHAR2(30);
59837 l_component_type_code         VARCHAR2(1);
59838 l_component_appl_id           INTEGER;
59839 l_amb_context_code            VARCHAR2(30);
59840 l_entity_code                 VARCHAR2(30);
59841 l_event_class_code            VARCHAR2(30);
59842 l_ae_header_id                NUMBER;
59843 l_event_type_code             VARCHAR2(30);
59847 -- adr variables
59844 l_line_definition_code        VARCHAR2(30);
59845 l_line_definition_owner_code  VARCHAR2(1);
59846 --
59848 l_segment                     VARCHAR2(30);
59849 l_ccid                        NUMBER;
59850 l_adr_transaction_coa_id      NUMBER;
59851 l_adr_accounting_coa_id       NUMBER;
59852 l_adr_flexfield_segment_code  VARCHAR2(30);
59853 l_adr_flex_value_set_id       NUMBER;
59854 l_adr_value_type_code         VARCHAR2(30);
59855 l_adr_value_combination_id    NUMBER;
59856 l_adr_value_segment_code      VARCHAR2(30);
59857 
59858 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
59859 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
59860 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
59861 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
59862 
59863 -- 4262811 Variables ------------------------------------------------------------------------------------------
59864 l_entered_amt_idx             NUMBER;
59865 l_accted_amt_idx              NUMBER;
59866 l_acc_rev_flag                VARCHAR2(1);
59867 l_accrual_line_num            NUMBER;
59868 l_tmp_amt                     NUMBER;
59869 l_acc_rev_natural_side_code   VARCHAR2(1);
59870 
59871 l_num_entries                 NUMBER;
59872 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
59873 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
59874 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
59875 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
59876 l_recog_line_1                NUMBER;
59877 l_recog_line_2                NUMBER;
59878 
59879 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
59880 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
59881 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
59882 
59883 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
59884 
59885 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
59886 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
59887 
59888 ---------------------------------------------------------------------------------------------------------------
59889 
59890 
59891 --
59892 -- bulk performance
59893 --
59894 l_balance_type_code           VARCHAR2(1);
59895 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
59896 l_log_module                  VARCHAR2(240);
59897 
59898 --
59899 -- Upgrade strategy
59900 --
59901 l_actual_upg_option           VARCHAR2(1);
59902 l_enc_upg_option           VARCHAR2(1);
59903 
59904 --
59905 BEGIN
59906 --
59907 IF g_log_enabled THEN
59908       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_121';
59909 END IF;
59910 --
59911 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59912 
59913       trace
59914          (p_msg      => 'BEGIN of AcctLineType_121'
59915          ,p_level    => C_LEVEL_PROCEDURE
59916          ,p_module   => l_log_module);
59917 
59918 END IF;
59919 --
59920 l_component_type             := 'AMB_JLT';
59921 l_component_code             := 'RCT_UNAPP_DEBIT';
59922 l_component_type_code        := 'S';
59923 l_component_appl_id          :=  222;
59924 l_amb_context_code           := 'DEFAULT';
59925 l_entity_code                := 'RECEIPTS';
59926 l_event_class_code           := 'RECEIPT';
59927 l_event_type_code            := 'RECEIPT_ALL';
59928 l_line_definition_owner_code := 'S';
59929 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
59930 --
59931 l_balance_type_code          := 'A';
59932 l_segment                     := NULL;
59933 l_ccid                        := NULL;
59934 l_adr_transaction_coa_id      := NULL;
59935 l_adr_accounting_coa_id       := NULL;
59936 l_adr_flexfield_segment_code  := NULL;
59937 l_adr_flex_value_set_id       := NULL;
59938 l_adr_value_type_code         := NULL;
59939 l_adr_value_combination_id    := NULL;
59940 l_adr_value_segment_code      := NULL;
59941 
59942 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
59943 l_bflow_class_code           := '';    -- 4219869 Business Flow
59944 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
59945 l_budgetary_control_flag     := 'N';
59946 
59947 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
59948 l_bflow_applied_to_amt       := NULL; -- 5132302
59949 l_entered_amt_idx            := NULL;          -- 4262811
59950 l_accted_amt_idx             := NULL;          -- 4262811
59951 l_acc_rev_flag               := NULL;          -- 4262811
59952 l_accrual_line_num           := NULL;          -- 4262811
59953 l_tmp_amt                    := NULL;          -- 4262811
59954 --
59955  
59956 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59957     l_balance_type_code <> 'B' THEN
59958 IF ((NVL(p_source_27,'
59959 ') =  'REC' AND 
59960 NVL(p_source_88,'
59961 ') =  'N') OR 
59962 (NVL(p_source_88,'
59963 ') =  'N' AND 
59964 NVL(p_source_27,'
59965 ') =  'CASH') OR 
59966 (NVL(p_source_88,'
59967 ') =  'N' AND 
59968 NVL(p_source_27,'
59969 ') =  'CONFIRMATION') OR 
59970 (NVL(p_source_88,'
59971 ') =  'N' AND 
59972 NVL(p_source_27,'
59973 ') =  'CURR_ROUND') OR 
59974 (NVL(p_source_88,'
59978 (NVL(p_source_88,'
59975 ') =  'N' AND 
59976 NVL(p_source_27,'
59977 ') =  'DEFERRED_TAX') OR 
59979 ') =  'N' AND 
59980 NVL(p_source_102,'
59981 ') =  'CRH' AND 
59982 NVL(p_source_27,'
59983 ') =  'FACTOR') OR 
59984 (NVL(p_source_88,'
59985 ') =  'N' AND 
59986 NVL(p_source_27,'
59987 ') =  'ACC') OR 
59988 (NVL(p_source_88,'
59989 ') =  'N' AND 
59990 NVL(p_source_27,'
59991 ') =  'REMITTANCE' AND 
59992 NVL(p_source_102,'
59993 ') =  'CRH') OR 
59994 (NVL(p_source_88,'
59995 ') =  'N' AND 
59996 NVL(p_source_27,'
59997 ') =  'SHORT_TERM_DEBT') OR 
59998 (NVL(p_source_88,'
59999 ') =  'N' AND 
60000 NVL(p_source_27,'
60001 ') =  'TAX') OR 
60002 (NVL(p_source_88,'
60003 ') =  'N' AND 
60004 NVL(p_source_27,'
60005 ') =  'UNID') OR 
60006 (NVL(p_source_88,'
60007 ') =  'N' AND 
60008 NVL(p_source_27,'
60009 ') =  'BANK_CHARGES') OR 
60010 (NVL(p_source_88,'
60011 ') =  'N' AND 
60012 NVL(p_source_27,'
60013 ') =  'EDISC') OR 
60014 (NVL(p_source_88,'
60015 ') =  'N' AND 
60016 NVL(p_source_27,'
60017 ') =  'UNEDISC')
60018 ) AND NVL(p_source_106,'
60019 ') <>  'UNID'
60020  THEN 
60021 
60022    --
60023    XLA_AE_LINES_PKG.SetNewLine;
60024 
60025    p_balance_type_code          := l_balance_type_code;
60026    -- set the flag so later we will know whether the gain loss line needs to be created
60027    
60028    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60029      p_actual_flag :='A';
60030    END IF;
60031 
60032    --
60033    -- bulk performance
60034    --
60035    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60036                                       p_header_num   => 0); -- 4262811
60037    --
60038    -- set accounting line options
60039    --
60040    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60041            p_natural_side_code          => 'D'
60042          , p_gain_or_loss_flag          => 'N'
60043          , p_gl_transfer_mode_code      => 'S'
60044          , p_acct_entry_type_code       => 'A'
60045          , p_switch_side_flag           => 'Y'
60046          , p_merge_duplicate_code       => 'A'
60047          );
60048    --
60049    l_acc_rev_natural_side_code := 'C';  -- 4262811
60050    -- 
60051    --
60052    -- set accounting line type info
60053    --
60054    xla_ae_lines_pkg.SetAcctLineType
60055       (p_component_type             => l_component_type
60056       ,p_event_type_code            => l_event_type_code
60057       ,p_line_definition_owner_code => l_line_definition_owner_code
60058       ,p_line_definition_code       => l_line_definition_code
60059       ,p_accounting_line_code       => l_component_code
60060       ,p_accounting_line_type_code  => l_component_type_code
60061       ,p_accounting_line_appl_id    => l_component_appl_id
60062       ,p_amb_context_code           => l_amb_context_code
60063       ,p_entity_code                => l_entity_code
60064       ,p_event_class_code           => l_event_class_code);
60065    --
60066    -- set accounting class
60067    --
60068    xla_ae_lines_pkg.SetAcctClass(
60069            p_accounting_class_code  => 'UNAPP'
60070          , p_ae_header_id           => l_ae_header_id
60071          );
60072 
60073    --
60074    -- set rounding class
60075    --
60076    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
60077                       'RECEIVABLE';
60078 
60079    --
60080    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
60081    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
60082    --
60083    -- bulk performance
60084    --
60085    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
60086 
60087    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
60088       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
60089 
60090    -- 4955764
60091    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60092       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
60093 
60094    -- 4458381 Public Sector Enh
60095    
60096    --
60097    -- set accounting attributes for the line type
60098    --
60099    l_entered_amt_idx := 8;
60100    l_accted_amt_idx  := 13;
60101    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
60102    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
60103    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
60104    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
60105    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
60106    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
60107    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
60108    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
60109    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
60110    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
60111    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
60112    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
60113    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
60114    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
60118    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
60115    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
60116    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
60117    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
60119    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
60120    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
60121    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
60122    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
60123    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
60124    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
60125    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
60126    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
60127    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
60128    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
60129    l_rec_acct_attrs.array_num_value(14)  := p_source_104;
60130    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
60131    l_rec_acct_attrs.array_num_value(15)  := p_source_105;
60132    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
60133    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
60134 
60135    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
60136    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
60137 
60138    ---------------------------------------------------------------------------------------------------------------
60139    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
60140    ---------------------------------------------------------------------------------------------------------------
60141    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
60142 
60143    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60144    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60145 
60146    IF xla_accounting_cache_pkg.GetValueChar
60147          (p_source_code         => 'LEDGER_CATEGORY_CODE'
60148          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
60149    AND l_bflow_method_code = 'PRIOR_ENTRY'
60150 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
60151    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
60152          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
60153        )
60154    THEN
60155          xla_ae_lines_pkg.BflowUpgEntry
60156            (p_business_method_code    => l_bflow_method_code
60157            ,p_business_class_code     => l_bflow_class_code
60158            ,p_balance_type            => l_balance_type_code);
60159    ELSE
60160       NULL;
60161 -- No business flow processing for business flow method of NONE.
60162    END IF;
60163 
60164    --
60165    -- call analytical criteria
60166    --
60167    
60168 
60169 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
60170 xla_ae_lines_pkg.SetAnalyticalCriteria(
60171    p_analytical_criterion_name    => 'Check Id'
60172  , p_analytical_criterion_owner   => 'S'
60173  , p_analytical_criterion_code    => 'CHECK_ID'
60174  , p_amb_context_code             => 'DEFAULT'
60175  , p_balancing_flag               => 'N'
60176  
60177  , p_analytical_detail_char_1    =>  NULL
60178  , p_analytical_detail_num_1     =>  p_source_90
60179  , p_analytical_detail_date_1    =>  NULL
60180 
60181  , p_ae_header_id                 => l_ae_header_id
60182 )
60183 ;
60184 --
60185 
60186 
60187 xla_ae_lines_pkg.g_rec_lines.array_anc_id_2(xla_ae_lines_pkg.g_LineNumber) :=
60188 xla_ae_lines_pkg.SetAnalyticalCriteria(
60189    p_analytical_criterion_name    => 'Receipt Application Status'
60190  , p_analytical_criterion_owner   => 'S'
60191  , p_analytical_criterion_code    => 'RECEIPT_APPLICATION_STATUS'
60192  , p_amb_context_code             => 'DEFAULT'
60193  , p_balancing_flag               => 'N'
60194  
60195  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_106)
60196  , p_analytical_detail_num_1     =>  NULL
60197  , p_analytical_detail_date_1    =>  NULL
60198 
60199  , p_ae_header_id                 => l_ae_header_id
60200 )
60201 ;
60202 --
60203 
60204    --
60205    -- call description
60206    --
60207    -- No description or it is inherited.
60208    --
60209    -- call ADRs
60210    -- Bug 4922099
60211    --
60212    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60213         (NVL(l_actual_upg_option, 'N') = 'O') OR
60214         (NVL(l_enc_upg_option, 'N') = 'O')
60215       )
60216    THEN
60217    NULL;
60218    --
60219    --
60220    
60221   l_ccid := AcctDerRule_21(
60222            p_application_id           => p_application_id
60223          , p_ae_header_id             => l_ae_header_id 
60224 , p_source_23 => p_source_23
60225          , x_transaction_coa_id       => l_adr_transaction_coa_id
60226          , x_accounting_coa_id        => l_adr_accounting_coa_id
60227          , x_value_type_code          => l_adr_value_type_code
60228          , p_side                     => 'NA'
60229    );
60230 
60231    xla_ae_lines_pkg.set_ccid(
60232     p_code_combination_id          => l_ccid
60233   , p_value_type_code              => l_adr_value_type_code
60237   , p_adr_type_code                => 'S'
60234   , p_transaction_coa_id           => l_adr_transaction_coa_id
60235   , p_accounting_coa_id            => l_adr_accounting_coa_id
60236   , p_adr_code                     => 'RMT_BNK_UNAPP_CCID'
60238   , p_component_type               => l_component_type
60239   , p_component_code               => l_component_code
60240   , p_component_type_code          => l_component_type_code
60241   , p_component_appl_id            => l_component_appl_id
60242   , p_amb_context_code             => l_amb_context_code
60243   , p_side                         => 'NA'
60244   );
60245 
60246 
60247    --
60248    --
60249    END IF;
60250    --
60251    -- Bug 4922099
60252    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60253           (NVL(l_enc_upg_option, 'N') = 'O')
60254         ) AND
60255         (l_bflow_method_code = 'PRIOR_ENTRY')
60256       )
60257    THEN
60258       IF
60259       --
60260       1 = 2
60261       --
60262       THEN
60263       xla_accounting_err_pkg.build_message
60264                                     (p_appli_s_name            => 'XLA'
60265                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60266                                     ,p_token_1                 => 'LINE_NUMBER'
60267                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
60268                                     ,p_token_2                 => 'LINE_TYPE_NAME'
60269                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
60270                                                                              l_component_type
60271                                                                             ,l_component_code
60272                                                                             ,l_component_type_code
60273                                                                             ,l_component_appl_id
60274                                                                             ,l_amb_context_code
60275                                                                             ,l_entity_code
60276                                                                             ,l_event_class_code
60277                                                                            )
60278                                     ,p_token_3                 => 'OWNER'
60279                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
60280                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
60281                                                                           ,p_lookup_code    => l_component_type_code
60282                                                                          )
60283                                     ,p_token_4                 => 'PRODUCT_NAME'
60284                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60285                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60286                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60287                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60288                                     ,p_ae_header_id            =>  NULL
60289                                        );
60290 
60291         IF (C_LEVEL_ERROR>= g_log_level) THEN
60292                  trace
60293                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60294                       ,p_level    => C_LEVEL_ERROR
60295                       ,p_module   => l_log_module);
60296         END IF;
60297       END IF;
60298    END IF;
60299    --
60300    --
60301    ------------------------------------------------------------------------------------------------
60302    -- 4219869 Business Flow
60303    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60304    -- Prior Entry.  Currently, the following code is always generated.
60305    ------------------------------------------------------------------------------------------------
60306    XLA_AE_LINES_PKG.ValidateCurrentLine;
60307 
60308    ------------------------------------------------------------------------------------
60309    -- 4219869 Business Flow
60310    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60311    ------------------------------------------------------------------------------------
60312    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60313 
60314    ----------------------------------------------------------------------------------
60315    -- 4219869 Business Flow
60316    -- Update journal entry status -- Need to generate this within IF <condition>
60317    ----------------------------------------------------------------------------------
60318    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60319          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60320          ,p_balance_type_code => l_balance_type_code
60321          );
60322 
60323    -------------------------------------------------------------------------------------------
60324    -- 4262811 - Generate the Accrual Reversal lines
60325    -------------------------------------------------------------------------------------------
60326    BEGIN
60327       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60331       END IF;
60328                               (g_array_event(p_event_id).array_value_num('header_index'));
60329       IF l_acc_rev_flag IS NULL THEN
60330          l_acc_rev_flag := 'N';
60332    EXCEPTION
60333       WHEN OTHERS THEN
60334          l_acc_rev_flag := 'N';
60335    END;
60336    --
60337    IF (l_acc_rev_flag = 'Y') THEN
60338 
60339        -- 4645092  ------------------------------------------------------------------------------
60340        -- To allow MPA report to determine if it should generate report process
60341        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
60342        ------------------------------------------------------------------------------------------
60343 
60344        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
60345        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
60346    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
60347    -- call ADRs
60348    -- Bug 4922099
60349    --
60350    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60351         (NVL(l_actual_upg_option, 'N') = 'O') OR
60352         (NVL(l_enc_upg_option, 'N') = 'O')
60353       )
60354    THEN
60355    NULL;
60356    --
60357    --
60358    
60359   l_ccid := AcctDerRule_21(
60360            p_application_id           => p_application_id
60361          , p_ae_header_id             => l_ae_header_id 
60362 , p_source_23 => p_source_23
60363          , x_transaction_coa_id       => l_adr_transaction_coa_id
60364          , x_accounting_coa_id        => l_adr_accounting_coa_id
60365          , x_value_type_code          => l_adr_value_type_code
60366          , p_side                     => 'NA'
60367    );
60368 
60369    xla_ae_lines_pkg.set_ccid(
60370     p_code_combination_id          => l_ccid
60371   , p_value_type_code              => l_adr_value_type_code
60372   , p_transaction_coa_id           => l_adr_transaction_coa_id
60373   , p_accounting_coa_id            => l_adr_accounting_coa_id
60374   , p_adr_code                     => 'RMT_BNK_UNAPP_CCID'
60375   , p_adr_type_code                => 'S'
60376   , p_component_type               => l_component_type
60377   , p_component_code               => l_component_code
60378   , p_component_type_code          => l_component_type_code
60379   , p_component_appl_id            => l_component_appl_id
60380   , p_amb_context_code             => l_amb_context_code
60381   , p_side                         => 'NA'
60382   );
60383 
60384 
60385    --
60386    --
60387    END IF;
60388 
60389        --
60390        -- Update the line information that should be overwritten
60391        --
60392        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
60393                                          p_header_num   => 1);
60394        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
60395 
60396        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
60397 
60398        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
60399           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
60400        END IF;
60401 
60402       --
60403       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
60404       --
60405       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
60406           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
60407       ELSE
60408           ---------------------------------------------------------------------------------------------------
60409           -- 4262811a Switch Sign
60410           ---------------------------------------------------------------------------------------------------
60411           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
60412           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60413                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60414           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60415                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60416           -- 5132302
60417           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
60418                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60419 
60420       END IF;
60421 
60422       -- 4955764
60423       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60424       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
60425 
60426 
60427       XLA_AE_LINES_PKG.ValidateCurrentLine;
60428       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60429 
60430       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60431                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
60432                ,p_balance_type_code => l_balance_type_code);
60433 
60434    END IF;
60435 
60436    -----------------------------------------------------------------------------------------
60437    -- 4262811 Multiperiod Accounting
60441 
60438    -----------------------------------------------------------------------------------------
60439      -- No MPA option is assigned.
60440 
60442 END IF;
60443 END IF;
60444 --
60445 
60446 --
60447 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60448    trace
60449       (p_msg      => 'END of AcctLineType_121'
60450       ,p_level    => C_LEVEL_PROCEDURE
60451       ,p_module   => l_log_module);
60452 END IF;
60453 --
60454 EXCEPTION
60455   WHEN xla_exceptions_pkg.application_exception THEN
60456       RAISE;
60457   WHEN OTHERS THEN
60458        xla_exceptions_pkg.raise_message
60459            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_121');
60460 END AcctLineType_121;
60461 --
60462 
60463 ---------------------------------------
60464 --
60465 -- PRIVATE FUNCTION
60466 --         AcctLineType_122
60467 --
60468 ---------------------------------------
60469 PROCEDURE AcctLineType_122 (
60470   p_application_id        IN NUMBER
60471  ,p_event_id              IN NUMBER
60472  ,p_calculate_acctd_flag  IN VARCHAR2
60473  ,p_calculate_g_l_flag    IN VARCHAR2
60474  ,p_actual_flag           IN OUT VARCHAR2
60475  ,p_balance_type_code     OUT VARCHAR2
60476  ,p_gain_or_loss_ref      OUT VARCHAR2
60477  
60478 --Distribution GL Account
60479  , p_source_22            IN NUMBER
60480 --Distribution Source Type
60481  , p_source_27            IN VARCHAR2
60482 --Distribution Line Identifier
60483  , p_source_29            IN NUMBER
60484 --Distribution Type
60485  , p_source_30            IN VARCHAR2
60486 --Entered Amount
60487  , p_source_31            IN NUMBER
60488 --Currency Code
60489  , p_source_32            IN VARCHAR2
60490 --Applied To Document Accounting Amount
60491  , p_source_36            IN NUMBER
60492 --Transaction Distribution Identifier
60493  , p_source_44            IN NUMBER
60494 --Transaction Distribution Type
60495  , p_source_45            IN VARCHAR2
60496 --Distribution Multi Fund Additional Entry
60497  , p_source_88            IN VARCHAR2
60498 --Applied To Document Exchange Date
60499  , p_source_89            IN DATE
60500 --Cash Receipt Identifier
60501  , p_source_90            IN NUMBER
60502 --Receipt Applied To Application Identifier
60503  , p_source_92            IN NUMBER
60504 --Transaction Entity Code
60505  , p_source_93            IN VARCHAR2
60506 --Transaction Identifier
60507  , p_source_94            IN NUMBER
60508 --Distribution Party Identifier
60509  , p_source_97            IN NUMBER
60510 --Distribution Party Site Id
60511  , p_source_98            IN NUMBER
60512 --Distribution Party Type
60513  , p_source_99            IN VARCHAR2
60514 --Applied To Document Exchange Rate Type
60515  , p_source_100            IN VARCHAR2
60516 --Applied To Document Exchange Rate
60517  , p_source_101            IN NUMBER
60518 )
60519 IS
60520 
60521 l_component_type              VARCHAR2(80);
60522 l_component_code              VARCHAR2(30);
60523 l_component_type_code         VARCHAR2(1);
60524 l_component_appl_id           INTEGER;
60525 l_amb_context_code            VARCHAR2(30);
60526 l_entity_code                 VARCHAR2(30);
60527 l_event_class_code            VARCHAR2(30);
60528 l_ae_header_id                NUMBER;
60529 l_event_type_code             VARCHAR2(30);
60530 l_line_definition_code        VARCHAR2(30);
60531 l_line_definition_owner_code  VARCHAR2(1);
60532 --
60533 -- adr variables
60534 l_segment                     VARCHAR2(30);
60535 l_ccid                        NUMBER;
60536 l_adr_transaction_coa_id      NUMBER;
60537 l_adr_accounting_coa_id       NUMBER;
60538 l_adr_flexfield_segment_code  VARCHAR2(30);
60539 l_adr_flex_value_set_id       NUMBER;
60540 l_adr_value_type_code         VARCHAR2(30);
60541 l_adr_value_combination_id    NUMBER;
60542 l_adr_value_segment_code      VARCHAR2(30);
60543 
60544 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
60545 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
60546 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
60547 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
60548 
60549 -- 4262811 Variables ------------------------------------------------------------------------------------------
60550 l_entered_amt_idx             NUMBER;
60551 l_accted_amt_idx              NUMBER;
60552 l_acc_rev_flag                VARCHAR2(1);
60553 l_accrual_line_num            NUMBER;
60554 l_tmp_amt                     NUMBER;
60555 l_acc_rev_natural_side_code   VARCHAR2(1);
60556 
60557 l_num_entries                 NUMBER;
60558 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
60559 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
60560 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
60561 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
60562 l_recog_line_1                NUMBER;
60563 l_recog_line_2                NUMBER;
60564 
60565 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
60566 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
60567 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
60568 
60569 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
60570 
60571 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
60575 
60572 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
60573 
60574 ---------------------------------------------------------------------------------------------------------------
60576 
60577 --
60578 -- bulk performance
60579 --
60580 l_balance_type_code           VARCHAR2(1);
60581 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
60582 l_log_module                  VARCHAR2(240);
60583 
60584 --
60585 -- Upgrade strategy
60586 --
60587 l_actual_upg_option           VARCHAR2(1);
60588 l_enc_upg_option           VARCHAR2(1);
60589 
60590 --
60591 BEGIN
60592 --
60593 IF g_log_enabled THEN
60594       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_122';
60595 END IF;
60596 --
60597 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60598 
60599       trace
60600          (p_msg      => 'BEGIN of AcctLineType_122'
60601          ,p_level    => C_LEVEL_PROCEDURE
60602          ,p_module   => l_log_module);
60603 
60604 END IF;
60605 --
60606 l_component_type             := 'AMB_JLT';
60607 l_component_code             := 'RCT_UNEDISC';
60608 l_component_type_code        := 'S';
60609 l_component_appl_id          :=  222;
60610 l_amb_context_code           := 'DEFAULT';
60611 l_entity_code                := 'RECEIPTS';
60612 l_event_class_code           := 'RECEIPT';
60613 l_event_type_code            := 'RECEIPT_ALL';
60614 l_line_definition_owner_code := 'S';
60615 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
60616 --
60617 l_balance_type_code          := 'A';
60618 l_segment                     := NULL;
60619 l_ccid                        := NULL;
60620 l_adr_transaction_coa_id      := NULL;
60621 l_adr_accounting_coa_id       := NULL;
60622 l_adr_flexfield_segment_code  := NULL;
60623 l_adr_flex_value_set_id       := NULL;
60624 l_adr_value_type_code         := NULL;
60625 l_adr_value_combination_id    := NULL;
60626 l_adr_value_segment_code      := NULL;
60627 
60628 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
60629 l_bflow_class_code           := '';    -- 4219869 Business Flow
60630 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
60631 l_budgetary_control_flag     := 'N';
60632 
60633 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
60634 l_bflow_applied_to_amt       := NULL; -- 5132302
60635 l_entered_amt_idx            := NULL;          -- 4262811
60636 l_accted_amt_idx             := NULL;          -- 4262811
60637 l_acc_rev_flag               := NULL;          -- 4262811
60638 l_accrual_line_num           := NULL;          -- 4262811
60639 l_tmp_amt                    := NULL;          -- 4262811
60640 --
60641  
60642 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
60643     l_balance_type_code <> 'B' THEN
60644 IF NVL(p_source_27,'
60645 ') =  'UNEDISC' AND 
60646 NVL(p_source_88,'
60647 ') =  'N'
60648  THEN 
60649 
60650    --
60651    XLA_AE_LINES_PKG.SetNewLine;
60652 
60653    p_balance_type_code          := l_balance_type_code;
60654    -- set the flag so later we will know whether the gain loss line needs to be created
60655    
60656    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60657      p_actual_flag :='A';
60658    END IF;
60659 
60660    --
60661    -- bulk performance
60662    --
60663    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60664                                       p_header_num   => 0); -- 4262811
60665    --
60666    -- set accounting line options
60667    --
60668    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60669            p_natural_side_code          => 'C'
60670          , p_gain_or_loss_flag          => 'N'
60671          , p_gl_transfer_mode_code      => 'S'
60672          , p_acct_entry_type_code       => 'A'
60673          , p_switch_side_flag           => 'Y'
60674          , p_merge_duplicate_code       => 'A'
60675          );
60676    --
60677    l_acc_rev_natural_side_code := 'D';  -- 4262811
60678    -- 
60679    --
60680    -- set accounting line type info
60681    --
60682    xla_ae_lines_pkg.SetAcctLineType
60683       (p_component_type             => l_component_type
60684       ,p_event_type_code            => l_event_type_code
60685       ,p_line_definition_owner_code => l_line_definition_owner_code
60686       ,p_line_definition_code       => l_line_definition_code
60687       ,p_accounting_line_code       => l_component_code
60688       ,p_accounting_line_type_code  => l_component_type_code
60689       ,p_accounting_line_appl_id    => l_component_appl_id
60690       ,p_amb_context_code           => l_amb_context_code
60691       ,p_entity_code                => l_entity_code
60692       ,p_event_class_code           => l_event_class_code);
60693    --
60694    -- set accounting class
60695    --
60696    xla_ae_lines_pkg.SetAcctClass(
60697            p_accounting_class_code  => 'UNEDISC'
60698          , p_ae_header_id           => l_ae_header_id
60699          );
60700 
60701    --
60702    -- set rounding class
60703    --
60704    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
60705                       'RECEIVABLE';
60706 
60707    --
60708    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
60712    --
60709    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
60710    --
60711    -- bulk performance
60713    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
60714 
60715    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
60716       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
60717 
60718    -- 4955764
60719    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60720       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
60721 
60722    -- 4458381 Public Sector Enh
60723    
60724    --
60725    -- set accounting attributes for the line type
60726    --
60727    l_entered_amt_idx := 8;
60728    l_accted_amt_idx  := 13;
60729    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
60730    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
60731    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
60732    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
60733    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
60734    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
60735    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
60736    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
60737    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
60738    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
60739    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
60740    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
60741    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
60742    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
60743    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
60744    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
60745    l_rec_acct_attrs.array_num_value(8)  := p_source_31;
60746    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
60747    l_rec_acct_attrs.array_char_value(9)  := p_source_32;
60748    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
60749    l_rec_acct_attrs.array_date_value(10)  := p_source_89;
60750    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
60751    l_rec_acct_attrs.array_num_value(11)  := p_source_101;
60752    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
60753    l_rec_acct_attrs.array_char_value(12)  := p_source_100;
60754    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
60755    l_rec_acct_attrs.array_num_value(13)  := p_source_36;
60756    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
60757    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
60758    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
60759    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
60760    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
60761    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
60762 
60763    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
60764    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
60765 
60766    ---------------------------------------------------------------------------------------------------------------
60767    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
60768    ---------------------------------------------------------------------------------------------------------------
60769    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
60770 
60771    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60772    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60773 
60774    IF xla_accounting_cache_pkg.GetValueChar
60775          (p_source_code         => 'LEDGER_CATEGORY_CODE'
60776          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
60777    AND l_bflow_method_code = 'PRIOR_ENTRY'
60778 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
60779    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
60780          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
60781        )
60782    THEN
60783          xla_ae_lines_pkg.BflowUpgEntry
60784            (p_business_method_code    => l_bflow_method_code
60785            ,p_business_class_code     => l_bflow_class_code
60786            ,p_balance_type            => l_balance_type_code);
60787    ELSE
60788       NULL;
60789 -- No business flow processing for business flow method of NONE.
60790    END IF;
60791 
60792    --
60793    -- call analytical criteria
60794    --
60795    
60796 
60797 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
60798 xla_ae_lines_pkg.SetAnalyticalCriteria(
60799    p_analytical_criterion_name    => 'Check Id'
60800  , p_analytical_criterion_owner   => 'S'
60801  , p_analytical_criterion_code    => 'CHECK_ID'
60802  , p_amb_context_code             => 'DEFAULT'
60803  , p_balancing_flag               => 'N'
60804  
60805  , p_analytical_detail_char_1    =>  NULL
60806  , p_analytical_detail_num_1     =>  p_source_90
60807  , p_analytical_detail_date_1    =>  NULL
60808 
60809  , p_ae_header_id                 => l_ae_header_id
60810 )
60814    --
60811 ;
60812 --
60813 
60815    -- call description
60816    --
60817    -- No description or it is inherited.
60818    --
60819    -- call ADRs
60820    -- Bug 4922099
60821    --
60822    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60823         (NVL(l_actual_upg_option, 'N') = 'O') OR
60824         (NVL(l_enc_upg_option, 'N') = 'O')
60825       )
60826    THEN
60827    NULL;
60828    --
60829    --
60830    
60831   l_ccid := AcctDerRule_20(
60832            p_application_id           => p_application_id
60833          , p_ae_header_id             => l_ae_header_id 
60834 , p_source_22 => p_source_22
60835          , x_transaction_coa_id       => l_adr_transaction_coa_id
60836          , x_accounting_coa_id        => l_adr_accounting_coa_id
60837          , x_value_type_code          => l_adr_value_type_code
60838          , p_side                     => 'NA'
60839    );
60840 
60841    xla_ae_lines_pkg.set_ccid(
60842     p_code_combination_id          => l_ccid
60843   , p_value_type_code              => l_adr_value_type_code
60844   , p_transaction_coa_id           => l_adr_transaction_coa_id
60845   , p_accounting_coa_id            => l_adr_accounting_coa_id
60846   , p_adr_code                     => 'DIST_CCID'
60847   , p_adr_type_code                => 'S'
60848   , p_component_type               => l_component_type
60849   , p_component_code               => l_component_code
60850   , p_component_type_code          => l_component_type_code
60851   , p_component_appl_id            => l_component_appl_id
60852   , p_amb_context_code             => l_amb_context_code
60853   , p_side                         => 'NA'
60854   );
60855 
60856 
60857    --
60858    --
60859    END IF;
60860    --
60861    -- Bug 4922099
60862    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60863           (NVL(l_enc_upg_option, 'N') = 'O')
60864         ) AND
60865         (l_bflow_method_code = 'PRIOR_ENTRY')
60866       )
60867    THEN
60868       IF
60869       --
60870       1 = 2
60871       --
60872       THEN
60873       xla_accounting_err_pkg.build_message
60874                                     (p_appli_s_name            => 'XLA'
60875                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60876                                     ,p_token_1                 => 'LINE_NUMBER'
60877                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
60878                                     ,p_token_2                 => 'LINE_TYPE_NAME'
60879                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
60880                                                                              l_component_type
60881                                                                             ,l_component_code
60882                                                                             ,l_component_type_code
60883                                                                             ,l_component_appl_id
60884                                                                             ,l_amb_context_code
60885                                                                             ,l_entity_code
60886                                                                             ,l_event_class_code
60887                                                                            )
60888                                     ,p_token_3                 => 'OWNER'
60889                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
60890                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
60891                                                                           ,p_lookup_code    => l_component_type_code
60892                                                                          )
60893                                     ,p_token_4                 => 'PRODUCT_NAME'
60894                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60895                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60896                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60897                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60898                                     ,p_ae_header_id            =>  NULL
60899                                        );
60900 
60901         IF (C_LEVEL_ERROR>= g_log_level) THEN
60902                  trace
60903                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60904                       ,p_level    => C_LEVEL_ERROR
60905                       ,p_module   => l_log_module);
60906         END IF;
60907       END IF;
60908    END IF;
60909    --
60910    --
60911    ------------------------------------------------------------------------------------------------
60912    -- 4219869 Business Flow
60913    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60914    -- Prior Entry.  Currently, the following code is always generated.
60915    ------------------------------------------------------------------------------------------------
60916    XLA_AE_LINES_PKG.ValidateCurrentLine;
60917 
60918    ------------------------------------------------------------------------------------
60922    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60919    -- 4219869 Business Flow
60920    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60921    ------------------------------------------------------------------------------------
60923 
60924    ----------------------------------------------------------------------------------
60925    -- 4219869 Business Flow
60926    -- Update journal entry status -- Need to generate this within IF <condition>
60927    ----------------------------------------------------------------------------------
60928    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60929          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60930          ,p_balance_type_code => l_balance_type_code
60931          );
60932 
60933    -------------------------------------------------------------------------------------------
60934    -- 4262811 - Generate the Accrual Reversal lines
60935    -------------------------------------------------------------------------------------------
60936    BEGIN
60937       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60938                               (g_array_event(p_event_id).array_value_num('header_index'));
60939       IF l_acc_rev_flag IS NULL THEN
60940          l_acc_rev_flag := 'N';
60941       END IF;
60942    EXCEPTION
60943       WHEN OTHERS THEN
60944          l_acc_rev_flag := 'N';
60945    END;
60946    --
60947    IF (l_acc_rev_flag = 'Y') THEN
60948 
60949        -- 4645092  ------------------------------------------------------------------------------
60950        -- To allow MPA report to determine if it should generate report process
60951        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
60952        ------------------------------------------------------------------------------------------
60953 
60954        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
60955        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
60956    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
60957    -- call ADRs
60958    -- Bug 4922099
60959    --
60960    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60961         (NVL(l_actual_upg_option, 'N') = 'O') OR
60962         (NVL(l_enc_upg_option, 'N') = 'O')
60963       )
60964    THEN
60965    NULL;
60966    --
60967    --
60968    
60969   l_ccid := AcctDerRule_20(
60970            p_application_id           => p_application_id
60971          , p_ae_header_id             => l_ae_header_id 
60972 , p_source_22 => p_source_22
60973          , x_transaction_coa_id       => l_adr_transaction_coa_id
60974          , x_accounting_coa_id        => l_adr_accounting_coa_id
60975          , x_value_type_code          => l_adr_value_type_code
60976          , p_side                     => 'NA'
60977    );
60978 
60979    xla_ae_lines_pkg.set_ccid(
60980     p_code_combination_id          => l_ccid
60981   , p_value_type_code              => l_adr_value_type_code
60982   , p_transaction_coa_id           => l_adr_transaction_coa_id
60983   , p_accounting_coa_id            => l_adr_accounting_coa_id
60984   , p_adr_code                     => 'DIST_CCID'
60985   , p_adr_type_code                => 'S'
60986   , p_component_type               => l_component_type
60987   , p_component_code               => l_component_code
60988   , p_component_type_code          => l_component_type_code
60989   , p_component_appl_id            => l_component_appl_id
60990   , p_amb_context_code             => l_amb_context_code
60991   , p_side                         => 'NA'
60992   );
60993 
60994 
60995    --
60996    --
60997    END IF;
60998 
60999        --
61000        -- Update the line information that should be overwritten
61001        --
61002        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61003                                          p_header_num   => 1);
61004        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
61005 
61006        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61007 
61008        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
61009           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61010        END IF;
61011 
61012       --
61013       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61014       --
61015       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61016           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
61017       ELSE
61018           ---------------------------------------------------------------------------------------------------
61019           -- 4262811a Switch Sign
61020           ---------------------------------------------------------------------------------------------------
61021           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
61022           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61023                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61024           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61025                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61026           -- 5132302
61027           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61031 
61028                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61029 
61030       END IF;
61032       -- 4955764
61033       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61034       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61035 
61036 
61037       XLA_AE_LINES_PKG.ValidateCurrentLine;
61038       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61039 
61040       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61041                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61042                ,p_balance_type_code => l_balance_type_code);
61043 
61044    END IF;
61045 
61046    -----------------------------------------------------------------------------------------
61047    -- 4262811 Multiperiod Accounting
61048    -----------------------------------------------------------------------------------------
61049      -- No MPA option is assigned.
61050 
61051 
61052 END IF;
61053 END IF;
61054 --
61055 
61056 --
61057 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61058    trace
61059       (p_msg      => 'END of AcctLineType_122'
61060       ,p_level    => C_LEVEL_PROCEDURE
61061       ,p_module   => l_log_module);
61062 END IF;
61063 --
61064 EXCEPTION
61065   WHEN xla_exceptions_pkg.application_exception THEN
61066       RAISE;
61067   WHEN OTHERS THEN
61068        xla_exceptions_pkg.raise_message
61069            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_122');
61070 END AcctLineType_122;
61071 --
61072 
61073 ---------------------------------------
61074 --
61075 -- PRIVATE FUNCTION
61076 --         AcctLineType_123
61077 --
61078 ---------------------------------------
61079 PROCEDURE AcctLineType_123 (
61080   p_application_id        IN NUMBER
61081  ,p_event_id              IN NUMBER
61082  ,p_calculate_acctd_flag  IN VARCHAR2
61083  ,p_calculate_g_l_flag    IN VARCHAR2
61084  ,p_actual_flag           IN OUT VARCHAR2
61085  ,p_balance_type_code     OUT VARCHAR2
61086  ,p_gain_or_loss_ref      OUT VARCHAR2
61087  
61088 --Distribution GL Account
61089  , p_source_22            IN NUMBER
61090 --Distribution Source Type
61091  , p_source_27            IN VARCHAR2
61092 --Distribution Line Identifier
61093  , p_source_29            IN NUMBER
61094 --Distribution Type
61095  , p_source_30            IN VARCHAR2
61096 --Entered Amount
61097  , p_source_31            IN NUMBER
61098 --Currency Code
61099  , p_source_32            IN VARCHAR2
61100 --Applied To Document Accounting Amount
61101  , p_source_36            IN NUMBER
61102 --Transaction Distribution Identifier
61103  , p_source_44            IN NUMBER
61104 --Transaction Distribution Type
61105  , p_source_45            IN VARCHAR2
61106 --Distribution Multi Fund Additional Entry
61107  , p_source_88            IN VARCHAR2
61108 --Applied To Document Exchange Date
61109  , p_source_89            IN DATE
61110 --Cash Receipt Identifier
61111  , p_source_90            IN NUMBER
61112 --Receipt Applied To Application Identifier
61113  , p_source_92            IN NUMBER
61114 --Transaction Entity Code
61115  , p_source_93            IN VARCHAR2
61116 --Transaction Identifier
61117  , p_source_94            IN NUMBER
61118 --Distribution Party Identifier
61119  , p_source_97            IN NUMBER
61120 --Distribution Party Site Id
61121  , p_source_98            IN NUMBER
61122 --Distribution Party Type
61123  , p_source_99            IN VARCHAR2
61124 --Applied To Document Exchange Rate Type
61125  , p_source_100            IN VARCHAR2
61126 --Applied To Document Exchange Rate
61127  , p_source_101            IN NUMBER
61128 )
61129 IS
61130 
61131 l_component_type              VARCHAR2(80);
61132 l_component_code              VARCHAR2(30);
61133 l_component_type_code         VARCHAR2(1);
61134 l_component_appl_id           INTEGER;
61135 l_amb_context_code            VARCHAR2(30);
61136 l_entity_code                 VARCHAR2(30);
61137 l_event_class_code            VARCHAR2(30);
61138 l_ae_header_id                NUMBER;
61139 l_event_type_code             VARCHAR2(30);
61140 l_line_definition_code        VARCHAR2(30);
61141 l_line_definition_owner_code  VARCHAR2(1);
61142 --
61143 -- adr variables
61144 l_segment                     VARCHAR2(30);
61145 l_ccid                        NUMBER;
61146 l_adr_transaction_coa_id      NUMBER;
61147 l_adr_accounting_coa_id       NUMBER;
61148 l_adr_flexfield_segment_code  VARCHAR2(30);
61149 l_adr_flex_value_set_id       NUMBER;
61150 l_adr_value_type_code         VARCHAR2(30);
61151 l_adr_value_combination_id    NUMBER;
61152 l_adr_value_segment_code      VARCHAR2(30);
61153 
61154 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
61155 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
61156 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
61157 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
61158 
61159 -- 4262811 Variables ------------------------------------------------------------------------------------------
61160 l_entered_amt_idx             NUMBER;
61161 l_accted_amt_idx              NUMBER;
61162 l_acc_rev_flag                VARCHAR2(1);
61163 l_accrual_line_num            NUMBER;
61164 l_tmp_amt                     NUMBER;
61168 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
61165 l_acc_rev_natural_side_code   VARCHAR2(1);
61166 
61167 l_num_entries                 NUMBER;
61169 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
61170 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
61171 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
61172 l_recog_line_1                NUMBER;
61173 l_recog_line_2                NUMBER;
61174 
61175 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
61176 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
61177 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
61178 
61179 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61180 
61181 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
61182 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
61183 
61184 ---------------------------------------------------------------------------------------------------------------
61185 
61186 
61187 --
61188 -- bulk performance
61189 --
61190 l_balance_type_code           VARCHAR2(1);
61191 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
61192 l_log_module                  VARCHAR2(240);
61193 
61194 --
61195 -- Upgrade strategy
61196 --
61197 l_actual_upg_option           VARCHAR2(1);
61198 l_enc_upg_option           VARCHAR2(1);
61199 
61200 --
61201 BEGIN
61202 --
61203 IF g_log_enabled THEN
61204       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_123';
61205 END IF;
61206 --
61207 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61208 
61209       trace
61210          (p_msg      => 'BEGIN of AcctLineType_123'
61211          ,p_level    => C_LEVEL_PROCEDURE
61212          ,p_module   => l_log_module);
61213 
61214 END IF;
61215 --
61216 l_component_type             := 'AMB_JLT';
61217 l_component_code             := 'RCT_UNEDISC_NON_REC_TAX';
61218 l_component_type_code        := 'S';
61219 l_component_appl_id          :=  222;
61220 l_amb_context_code           := 'DEFAULT';
61221 l_entity_code                := 'RECEIPTS';
61222 l_event_class_code           := 'RECEIPT';
61223 l_event_type_code            := 'RECEIPT_ALL';
61224 l_line_definition_owner_code := 'S';
61225 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
61226 --
61227 l_balance_type_code          := 'A';
61228 l_segment                     := NULL;
61229 l_ccid                        := NULL;
61230 l_adr_transaction_coa_id      := NULL;
61231 l_adr_accounting_coa_id       := NULL;
61232 l_adr_flexfield_segment_code  := NULL;
61233 l_adr_flex_value_set_id       := NULL;
61234 l_adr_value_type_code         := NULL;
61235 l_adr_value_combination_id    := NULL;
61236 l_adr_value_segment_code      := NULL;
61237 
61238 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
61239 l_bflow_class_code           := '';    -- 4219869 Business Flow
61240 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
61241 l_budgetary_control_flag     := 'N';
61242 
61243 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
61244 l_bflow_applied_to_amt       := NULL; -- 5132302
61245 l_entered_amt_idx            := NULL;          -- 4262811
61246 l_accted_amt_idx             := NULL;          -- 4262811
61247 l_acc_rev_flag               := NULL;          -- 4262811
61248 l_accrual_line_num           := NULL;          -- 4262811
61249 l_tmp_amt                    := NULL;          -- 4262811
61250 --
61251  
61252 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61253     l_balance_type_code <> 'B' THEN
61254 IF NVL(p_source_27,'
61255 ') =  'UNEDISC_NON_REC_TAX' AND 
61256 NVL(p_source_88,'
61257 ') =  'N'
61258  THEN 
61259 
61260    --
61261    XLA_AE_LINES_PKG.SetNewLine;
61262 
61263    p_balance_type_code          := l_balance_type_code;
61264    -- set the flag so later we will know whether the gain loss line needs to be created
61265    
61266    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61267      p_actual_flag :='A';
61268    END IF;
61269 
61270    --
61271    -- bulk performance
61272    --
61273    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61274                                       p_header_num   => 0); -- 4262811
61275    --
61276    -- set accounting line options
61277    --
61278    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61279            p_natural_side_code          => 'C'
61280          , p_gain_or_loss_flag          => 'N'
61281          , p_gl_transfer_mode_code      => 'S'
61282          , p_acct_entry_type_code       => 'A'
61283          , p_switch_side_flag           => 'Y'
61284          , p_merge_duplicate_code       => 'A'
61285          );
61286    --
61287    l_acc_rev_natural_side_code := 'D';  -- 4262811
61288    -- 
61289    --
61290    -- set accounting line type info
61291    --
61292    xla_ae_lines_pkg.SetAcctLineType
61293       (p_component_type             => l_component_type
61294       ,p_event_type_code            => l_event_type_code
61295       ,p_line_definition_owner_code => l_line_definition_owner_code
61296       ,p_line_definition_code       => l_line_definition_code
61300       ,p_amb_context_code           => l_amb_context_code
61297       ,p_accounting_line_code       => l_component_code
61298       ,p_accounting_line_type_code  => l_component_type_code
61299       ,p_accounting_line_appl_id    => l_component_appl_id
61301       ,p_entity_code                => l_entity_code
61302       ,p_event_class_code           => l_event_class_code);
61303    --
61304    -- set accounting class
61305    --
61306    xla_ae_lines_pkg.SetAcctClass(
61307            p_accounting_class_code  => 'UNEDISC_NON_REC_TAX'
61308          , p_ae_header_id           => l_ae_header_id
61309          );
61310 
61311    --
61312    -- set rounding class
61313    --
61314    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61315                       'RECEIVABLE';
61316 
61317    --
61318    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61319    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61320    --
61321    -- bulk performance
61322    --
61323    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61324 
61325    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61326       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61327 
61328    -- 4955764
61329    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61330       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61331 
61332    -- 4458381 Public Sector Enh
61333    
61334    --
61335    -- set accounting attributes for the line type
61336    --
61337    l_entered_amt_idx := 8;
61338    l_accted_amt_idx  := 13;
61339    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
61340    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
61341    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
61342    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
61343    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
61344    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
61345    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
61346    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
61347    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
61348    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
61349    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
61350    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
61351    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
61352    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
61353    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
61354    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
61355    l_rec_acct_attrs.array_num_value(8)  := p_source_31;
61356    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
61357    l_rec_acct_attrs.array_char_value(9)  := p_source_32;
61358    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
61359    l_rec_acct_attrs.array_date_value(10)  := p_source_89;
61360    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
61361    l_rec_acct_attrs.array_num_value(11)  := p_source_101;
61362    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
61363    l_rec_acct_attrs.array_char_value(12)  := p_source_100;
61364    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
61365    l_rec_acct_attrs.array_num_value(13)  := p_source_36;
61366    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
61367    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
61368    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
61369    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
61370    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
61371    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
61372 
61373    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61374    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61375 
61376    ---------------------------------------------------------------------------------------------------------------
61377    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61378    ---------------------------------------------------------------------------------------------------------------
61379    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61380 
61381    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61382    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61383 
61384    IF xla_accounting_cache_pkg.GetValueChar
61385          (p_source_code         => 'LEDGER_CATEGORY_CODE'
61386          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61387    AND l_bflow_method_code = 'PRIOR_ENTRY'
61388 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61389    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61390          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61391        )
61392    THEN
61393          xla_ae_lines_pkg.BflowUpgEntry
61394            (p_business_method_code    => l_bflow_method_code
61398       NULL;
61395            ,p_business_class_code     => l_bflow_class_code
61396            ,p_balance_type            => l_balance_type_code);
61397    ELSE
61399 -- No business flow processing for business flow method of NONE.
61400    END IF;
61401 
61402    --
61403    -- call analytical criteria
61404    --
61405    
61406 
61407 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
61408 xla_ae_lines_pkg.SetAnalyticalCriteria(
61409    p_analytical_criterion_name    => 'Check Id'
61410  , p_analytical_criterion_owner   => 'S'
61411  , p_analytical_criterion_code    => 'CHECK_ID'
61412  , p_amb_context_code             => 'DEFAULT'
61413  , p_balancing_flag               => 'N'
61414  
61415  , p_analytical_detail_char_1    =>  NULL
61416  , p_analytical_detail_num_1     =>  p_source_90
61417  , p_analytical_detail_date_1    =>  NULL
61418 
61419  , p_ae_header_id                 => l_ae_header_id
61420 )
61421 ;
61422 --
61423 
61424    --
61425    -- call description
61426    --
61427    -- No description or it is inherited.
61428    --
61429    -- call ADRs
61430    -- Bug 4922099
61431    --
61432    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61433         (NVL(l_actual_upg_option, 'N') = 'O') OR
61434         (NVL(l_enc_upg_option, 'N') = 'O')
61435       )
61436    THEN
61437    NULL;
61438    --
61439    --
61440    
61441   l_ccid := AcctDerRule_20(
61442            p_application_id           => p_application_id
61443          , p_ae_header_id             => l_ae_header_id 
61444 , p_source_22 => p_source_22
61445          , x_transaction_coa_id       => l_adr_transaction_coa_id
61446          , x_accounting_coa_id        => l_adr_accounting_coa_id
61447          , x_value_type_code          => l_adr_value_type_code
61448          , p_side                     => 'NA'
61449    );
61450 
61451    xla_ae_lines_pkg.set_ccid(
61452     p_code_combination_id          => l_ccid
61453   , p_value_type_code              => l_adr_value_type_code
61454   , p_transaction_coa_id           => l_adr_transaction_coa_id
61455   , p_accounting_coa_id            => l_adr_accounting_coa_id
61456   , p_adr_code                     => 'DIST_CCID'
61457   , p_adr_type_code                => 'S'
61458   , p_component_type               => l_component_type
61459   , p_component_code               => l_component_code
61460   , p_component_type_code          => l_component_type_code
61461   , p_component_appl_id            => l_component_appl_id
61462   , p_amb_context_code             => l_amb_context_code
61463   , p_side                         => 'NA'
61464   );
61465 
61466 
61467    --
61468    --
61469    END IF;
61470    --
61471    -- Bug 4922099
61472    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61473           (NVL(l_enc_upg_option, 'N') = 'O')
61474         ) AND
61475         (l_bflow_method_code = 'PRIOR_ENTRY')
61476       )
61477    THEN
61478       IF
61479       --
61480       1 = 2
61481       --
61482       THEN
61483       xla_accounting_err_pkg.build_message
61484                                     (p_appli_s_name            => 'XLA'
61485                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61486                                     ,p_token_1                 => 'LINE_NUMBER'
61487                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
61488                                     ,p_token_2                 => 'LINE_TYPE_NAME'
61489                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
61490                                                                              l_component_type
61491                                                                             ,l_component_code
61492                                                                             ,l_component_type_code
61493                                                                             ,l_component_appl_id
61494                                                                             ,l_amb_context_code
61495                                                                             ,l_entity_code
61496                                                                             ,l_event_class_code
61497                                                                            )
61498                                     ,p_token_3                 => 'OWNER'
61499                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
61500                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
61501                                                                           ,p_lookup_code    => l_component_type_code
61502                                                                          )
61503                                     ,p_token_4                 => 'PRODUCT_NAME'
61504                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
61505                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
61506                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
61507                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
61508                                     ,p_ae_header_id            =>  NULL
61509                                        );
61510 
61514                       ,p_level    => C_LEVEL_ERROR
61511         IF (C_LEVEL_ERROR>= g_log_level) THEN
61512                  trace
61513                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61515                       ,p_module   => l_log_module);
61516         END IF;
61517       END IF;
61518    END IF;
61519    --
61520    --
61521    ------------------------------------------------------------------------------------------------
61522    -- 4219869 Business Flow
61523    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
61524    -- Prior Entry.  Currently, the following code is always generated.
61525    ------------------------------------------------------------------------------------------------
61526    XLA_AE_LINES_PKG.ValidateCurrentLine;
61527 
61528    ------------------------------------------------------------------------------------
61529    -- 4219869 Business Flow
61530    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
61531    ------------------------------------------------------------------------------------
61532    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61533 
61534    ----------------------------------------------------------------------------------
61535    -- 4219869 Business Flow
61536    -- Update journal entry status -- Need to generate this within IF <condition>
61537    ----------------------------------------------------------------------------------
61538    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61539          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
61540          ,p_balance_type_code => l_balance_type_code
61541          );
61542 
61543    -------------------------------------------------------------------------------------------
61544    -- 4262811 - Generate the Accrual Reversal lines
61545    -------------------------------------------------------------------------------------------
61546    BEGIN
61547       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
61548                               (g_array_event(p_event_id).array_value_num('header_index'));
61549       IF l_acc_rev_flag IS NULL THEN
61550          l_acc_rev_flag := 'N';
61551       END IF;
61552    EXCEPTION
61553       WHEN OTHERS THEN
61554          l_acc_rev_flag := 'N';
61555    END;
61556    --
61557    IF (l_acc_rev_flag = 'Y') THEN
61558 
61559        -- 4645092  ------------------------------------------------------------------------------
61560        -- To allow MPA report to determine if it should generate report process
61561        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
61562        ------------------------------------------------------------------------------------------
61563 
61564        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
61565        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
61566    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
61567    -- call ADRs
61568    -- Bug 4922099
61569    --
61570    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61571         (NVL(l_actual_upg_option, 'N') = 'O') OR
61572         (NVL(l_enc_upg_option, 'N') = 'O')
61573       )
61574    THEN
61575    NULL;
61576    --
61577    --
61578    
61579   l_ccid := AcctDerRule_20(
61580            p_application_id           => p_application_id
61581          , p_ae_header_id             => l_ae_header_id 
61582 , p_source_22 => p_source_22
61583          , x_transaction_coa_id       => l_adr_transaction_coa_id
61584          , x_accounting_coa_id        => l_adr_accounting_coa_id
61585          , x_value_type_code          => l_adr_value_type_code
61586          , p_side                     => 'NA'
61587    );
61588 
61589    xla_ae_lines_pkg.set_ccid(
61590     p_code_combination_id          => l_ccid
61591   , p_value_type_code              => l_adr_value_type_code
61592   , p_transaction_coa_id           => l_adr_transaction_coa_id
61593   , p_accounting_coa_id            => l_adr_accounting_coa_id
61594   , p_adr_code                     => 'DIST_CCID'
61595   , p_adr_type_code                => 'S'
61596   , p_component_type               => l_component_type
61597   , p_component_code               => l_component_code
61598   , p_component_type_code          => l_component_type_code
61599   , p_component_appl_id            => l_component_appl_id
61600   , p_amb_context_code             => l_amb_context_code
61601   , p_side                         => 'NA'
61602   );
61603 
61604 
61605    --
61606    --
61607    END IF;
61608 
61609        --
61610        -- Update the line information that should be overwritten
61611        --
61612        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61613                                          p_header_num   => 1);
61614        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
61615 
61616        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61617 
61618        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
61619           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61620        END IF;
61621 
61622       --
61623       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61624       --
61625       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61629           -- 4262811a Switch Sign
61626           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
61627       ELSE
61628           ---------------------------------------------------------------------------------------------------
61630           ---------------------------------------------------------------------------------------------------
61631           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
61632           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61633                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61634           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61635                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61636           -- 5132302
61637           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61638                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61639 
61640       END IF;
61641 
61642       -- 4955764
61643       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61644       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61645 
61646 
61647       XLA_AE_LINES_PKG.ValidateCurrentLine;
61648       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61649 
61650       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61651                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61652                ,p_balance_type_code => l_balance_type_code);
61653 
61654    END IF;
61655 
61656    -----------------------------------------------------------------------------------------
61657    -- 4262811 Multiperiod Accounting
61658    -----------------------------------------------------------------------------------------
61659      -- No MPA option is assigned.
61660 
61661 
61662 END IF;
61663 END IF;
61664 --
61665 
61666 --
61667 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61668    trace
61669       (p_msg      => 'END of AcctLineType_123'
61670       ,p_level    => C_LEVEL_PROCEDURE
61671       ,p_module   => l_log_module);
61672 END IF;
61673 --
61674 EXCEPTION
61675   WHEN xla_exceptions_pkg.application_exception THEN
61676       RAISE;
61677   WHEN OTHERS THEN
61678        xla_exceptions_pkg.raise_message
61679            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_123');
61680 END AcctLineType_123;
61681 --
61682 
61683 ---------------------------------------
61684 --
61685 -- PRIVATE FUNCTION
61686 --         AcctLineType_124
61687 --
61688 ---------------------------------------
61689 PROCEDURE AcctLineType_124 (
61690   p_application_id        IN NUMBER
61691  ,p_event_id              IN NUMBER
61692  ,p_calculate_acctd_flag  IN VARCHAR2
61693  ,p_calculate_g_l_flag    IN VARCHAR2
61694  ,p_actual_flag           IN OUT VARCHAR2
61695  ,p_balance_type_code     OUT VARCHAR2
61696  ,p_gain_or_loss_ref      OUT VARCHAR2
61697  
61698 --Distribution GL Account
61699  , p_source_22            IN NUMBER
61700 --Distribution Source Type
61701  , p_source_27            IN VARCHAR2
61702 --Distribution Line Identifier
61703  , p_source_29            IN NUMBER
61704 --Distribution Type
61705  , p_source_30            IN VARCHAR2
61706 --Exchange Date
61707  , p_source_33            IN DATE
61708 --Exchange Rate
61709  , p_source_34            IN NUMBER
61710 --Exchange Rate Type
61711  , p_source_35            IN VARCHAR2
61712 --Accounting Amount
61713  , p_source_40            IN NUMBER
61714 --Transaction Distribution Identifier
61715  , p_source_44            IN NUMBER
61716 --Transaction Distribution Type
61717  , p_source_45            IN VARCHAR2
61718 --Distribution Multi Fund Additional Entry
61719  , p_source_88            IN VARCHAR2
61720 --Cash Receipt Identifier
61721  , p_source_90            IN NUMBER
61722 --Receipt Applied To Application Identifier
61723  , p_source_92            IN NUMBER
61724 --Transaction Entity Code
61725  , p_source_93            IN VARCHAR2
61726 --Transaction Identifier
61727  , p_source_94            IN NUMBER
61728 --DIST_ENT_AMT_FROM
61729  , p_source_95            IN NUMBER
61730 --Applying Document Currency Code
61731  , p_source_96            IN VARCHAR2
61732 --Distribution Party Identifier
61733  , p_source_97            IN NUMBER
61734 --Distribution Party Site Id
61735  , p_source_98            IN NUMBER
61736 --Distribution Party Type
61737  , p_source_99            IN VARCHAR2
61738 )
61739 IS
61740 
61741 l_component_type              VARCHAR2(80);
61742 l_component_code              VARCHAR2(30);
61743 l_component_type_code         VARCHAR2(1);
61744 l_component_appl_id           INTEGER;
61745 l_amb_context_code            VARCHAR2(30);
61746 l_entity_code                 VARCHAR2(30);
61747 l_event_class_code            VARCHAR2(30);
61748 l_ae_header_id                NUMBER;
61749 l_event_type_code             VARCHAR2(30);
61750 l_line_definition_code        VARCHAR2(30);
61751 l_line_definition_owner_code  VARCHAR2(1);
61752 --
61753 -- adr variables
61754 l_segment                     VARCHAR2(30);
61755 l_ccid                        NUMBER;
61759 l_adr_flex_value_set_id       NUMBER;
61756 l_adr_transaction_coa_id      NUMBER;
61757 l_adr_accounting_coa_id       NUMBER;
61758 l_adr_flexfield_segment_code  VARCHAR2(30);
61760 l_adr_value_type_code         VARCHAR2(30);
61761 l_adr_value_combination_id    NUMBER;
61762 l_adr_value_segment_code      VARCHAR2(30);
61763 
61764 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
61765 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
61766 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
61767 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
61768 
61769 -- 4262811 Variables ------------------------------------------------------------------------------------------
61770 l_entered_amt_idx             NUMBER;
61771 l_accted_amt_idx              NUMBER;
61772 l_acc_rev_flag                VARCHAR2(1);
61773 l_accrual_line_num            NUMBER;
61774 l_tmp_amt                     NUMBER;
61775 l_acc_rev_natural_side_code   VARCHAR2(1);
61776 
61777 l_num_entries                 NUMBER;
61778 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
61779 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
61780 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
61781 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
61782 l_recog_line_1                NUMBER;
61783 l_recog_line_2                NUMBER;
61784 
61785 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
61786 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
61787 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
61788 
61789 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61790 
61791 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
61792 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
61793 
61794 ---------------------------------------------------------------------------------------------------------------
61795 
61796 
61797 --
61798 -- bulk performance
61799 --
61800 l_balance_type_code           VARCHAR2(1);
61801 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
61802 l_log_module                  VARCHAR2(240);
61803 
61804 --
61805 -- Upgrade strategy
61806 --
61807 l_actual_upg_option           VARCHAR2(1);
61808 l_enc_upg_option           VARCHAR2(1);
61809 
61810 --
61811 BEGIN
61812 --
61813 IF g_log_enabled THEN
61814       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_124';
61815 END IF;
61816 --
61817 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61818 
61819       trace
61820          (p_msg      => 'BEGIN of AcctLineType_124'
61821          ,p_level    => C_LEVEL_PROCEDURE
61822          ,p_module   => l_log_module);
61823 
61824 END IF;
61825 --
61826 l_component_type             := 'AMB_JLT';
61827 l_component_code             := 'RCT_UNID';
61828 l_component_type_code        := 'S';
61829 l_component_appl_id          :=  222;
61830 l_amb_context_code           := 'DEFAULT';
61831 l_entity_code                := 'RECEIPTS';
61832 l_event_class_code           := 'RECEIPT';
61833 l_event_type_code            := 'RECEIPT_ALL';
61834 l_line_definition_owner_code := 'S';
61835 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
61836 --
61837 l_balance_type_code          := 'A';
61838 l_segment                     := NULL;
61839 l_ccid                        := NULL;
61840 l_adr_transaction_coa_id      := NULL;
61841 l_adr_accounting_coa_id       := NULL;
61842 l_adr_flexfield_segment_code  := NULL;
61843 l_adr_flex_value_set_id       := NULL;
61844 l_adr_value_type_code         := NULL;
61845 l_adr_value_combination_id    := NULL;
61846 l_adr_value_segment_code      := NULL;
61847 
61848 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
61849 l_bflow_class_code           := '';    -- 4219869 Business Flow
61850 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
61851 l_budgetary_control_flag     := 'N';
61852 
61853 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
61854 l_bflow_applied_to_amt       := NULL; -- 5132302
61855 l_entered_amt_idx            := NULL;          -- 4262811
61856 l_accted_amt_idx             := NULL;          -- 4262811
61857 l_acc_rev_flag               := NULL;          -- 4262811
61858 l_accrual_line_num           := NULL;          -- 4262811
61859 l_tmp_amt                    := NULL;          -- 4262811
61860 --
61861  
61862 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61863     l_balance_type_code <> 'B' THEN
61864 IF NVL(p_source_27,'
61865 ') =  'UNID' AND 
61866 NVL(p_source_88,'
61867 ') =  'N'
61868  THEN 
61869 
61870    --
61871    XLA_AE_LINES_PKG.SetNewLine;
61872 
61873    p_balance_type_code          := l_balance_type_code;
61874    -- set the flag so later we will know whether the gain loss line needs to be created
61875    
61876    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61877      p_actual_flag :='A';
61878    END IF;
61879 
61880    --
61881    -- bulk performance
61882    --
61883    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61887    --
61884                                       p_header_num   => 0); -- 4262811
61885    --
61886    -- set accounting line options
61888    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61889            p_natural_side_code          => 'C'
61890          , p_gain_or_loss_flag          => 'N'
61891          , p_gl_transfer_mode_code      => 'S'
61892          , p_acct_entry_type_code       => 'A'
61893          , p_switch_side_flag           => 'Y'
61894          , p_merge_duplicate_code       => 'A'
61895          );
61896    --
61897    l_acc_rev_natural_side_code := 'D';  -- 4262811
61898    -- 
61899    --
61900    -- set accounting line type info
61901    --
61902    xla_ae_lines_pkg.SetAcctLineType
61903       (p_component_type             => l_component_type
61904       ,p_event_type_code            => l_event_type_code
61905       ,p_line_definition_owner_code => l_line_definition_owner_code
61906       ,p_line_definition_code       => l_line_definition_code
61907       ,p_accounting_line_code       => l_component_code
61908       ,p_accounting_line_type_code  => l_component_type_code
61909       ,p_accounting_line_appl_id    => l_component_appl_id
61910       ,p_amb_context_code           => l_amb_context_code
61911       ,p_entity_code                => l_entity_code
61912       ,p_event_class_code           => l_event_class_code);
61913    --
61914    -- set accounting class
61915    --
61916    xla_ae_lines_pkg.SetAcctClass(
61917            p_accounting_class_code  => 'UNID'
61918          , p_ae_header_id           => l_ae_header_id
61919          );
61920 
61921    --
61922    -- set rounding class
61923    --
61924    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61925                       'RECEIVABLE';
61926 
61927    --
61928    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61929    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61930    --
61931    -- bulk performance
61932    --
61933    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61934 
61935    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61936       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61937 
61938    -- 4955764
61939    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61940       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61941 
61942    -- 4458381 Public Sector Enh
61943    
61944    --
61945    -- set accounting attributes for the line type
61946    --
61947    l_entered_amt_idx := 8;
61948    l_accted_amt_idx  := 13;
61949    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
61950    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
61951    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
61952    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
61953    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
61954    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
61955    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
61956    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
61957    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
61958    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
61959    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
61960    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
61961    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
61962    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
61963    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
61964    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
61965    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
61966    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
61967    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
61968    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
61969    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
61970    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
61971    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
61972    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
61973    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
61974    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
61975    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
61976    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
61977    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
61978    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
61979    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
61980    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
61981    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
61982 
61983    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61984    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61985 
61986    ---------------------------------------------------------------------------------------------------------------
61987    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61988    ---------------------------------------------------------------------------------------------------------------
61992    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61989    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61990 
61991    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61993 
61994    IF xla_accounting_cache_pkg.GetValueChar
61995          (p_source_code         => 'LEDGER_CATEGORY_CODE'
61996          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61997    AND l_bflow_method_code = 'PRIOR_ENTRY'
61998 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61999    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
62000          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
62001        )
62002    THEN
62003          xla_ae_lines_pkg.BflowUpgEntry
62004            (p_business_method_code    => l_bflow_method_code
62005            ,p_business_class_code     => l_bflow_class_code
62006            ,p_balance_type            => l_balance_type_code);
62007    ELSE
62008       NULL;
62009 -- No business flow processing for business flow method of NONE.
62010    END IF;
62011 
62012    --
62013    -- call analytical criteria
62014    --
62015    
62016 
62017 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
62018 xla_ae_lines_pkg.SetAnalyticalCriteria(
62019    p_analytical_criterion_name    => 'Check Id'
62020  , p_analytical_criterion_owner   => 'S'
62021  , p_analytical_criterion_code    => 'CHECK_ID'
62022  , p_amb_context_code             => 'DEFAULT'
62023  , p_balancing_flag               => 'N'
62024  
62025  , p_analytical_detail_char_1    =>  NULL
62026  , p_analytical_detail_num_1     =>  p_source_90
62027  , p_analytical_detail_date_1    =>  NULL
62028 
62029  , p_ae_header_id                 => l_ae_header_id
62030 )
62031 ;
62032 --
62033 
62034 
62035 xla_ae_lines_pkg.g_rec_lines.array_anc_id_2(xla_ae_lines_pkg.g_LineNumber) :=
62036 xla_ae_lines_pkg.SetAnalyticalCriteria(
62037    p_analytical_criterion_name    => 'Distribution Source Type'
62038  , p_analytical_criterion_owner   => 'S'
62039  , p_analytical_criterion_code    => 'DISTRIBUTION_SOURCE_TYPE'
62040  , p_amb_context_code             => 'DEFAULT'
62041  , p_balancing_flag               => 'N'
62042  
62043  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_27)
62044  , p_analytical_detail_num_1     =>  NULL
62045  , p_analytical_detail_date_1    =>  NULL
62046 
62047  , p_ae_header_id                 => l_ae_header_id
62048 )
62049 ;
62050 --
62051 
62052    --
62053    -- call description
62054    --
62055    -- No description or it is inherited.
62056    --
62057    -- call ADRs
62058    -- Bug 4922099
62059    --
62060    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62061         (NVL(l_actual_upg_option, 'N') = 'O') OR
62062         (NVL(l_enc_upg_option, 'N') = 'O')
62063       )
62064    THEN
62065    NULL;
62066    --
62067    --
62068    
62069   l_ccid := AcctDerRule_20(
62070            p_application_id           => p_application_id
62071          , p_ae_header_id             => l_ae_header_id 
62072 , p_source_22 => p_source_22
62073          , x_transaction_coa_id       => l_adr_transaction_coa_id
62074          , x_accounting_coa_id        => l_adr_accounting_coa_id
62075          , x_value_type_code          => l_adr_value_type_code
62076          , p_side                     => 'NA'
62077    );
62078 
62079    xla_ae_lines_pkg.set_ccid(
62080     p_code_combination_id          => l_ccid
62081   , p_value_type_code              => l_adr_value_type_code
62082   , p_transaction_coa_id           => l_adr_transaction_coa_id
62083   , p_accounting_coa_id            => l_adr_accounting_coa_id
62084   , p_adr_code                     => 'DIST_CCID'
62085   , p_adr_type_code                => 'S'
62086   , p_component_type               => l_component_type
62087   , p_component_code               => l_component_code
62088   , p_component_type_code          => l_component_type_code
62089   , p_component_appl_id            => l_component_appl_id
62090   , p_amb_context_code             => l_amb_context_code
62091   , p_side                         => 'NA'
62092   );
62093 
62094 
62095    --
62096    --
62097    END IF;
62098    --
62099    -- Bug 4922099
62100    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62101           (NVL(l_enc_upg_option, 'N') = 'O')
62102         ) AND
62103         (l_bflow_method_code = 'PRIOR_ENTRY')
62104       )
62105    THEN
62106       IF
62107       --
62108       1 = 2
62109       --
62110       THEN
62111       xla_accounting_err_pkg.build_message
62112                                     (p_appli_s_name            => 'XLA'
62113                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62114                                     ,p_token_1                 => 'LINE_NUMBER'
62115                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
62116                                     ,p_token_2                 => 'LINE_TYPE_NAME'
62117                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
62118                                                                              l_component_type
62119                                                                             ,l_component_code
62123                                                                             ,l_entity_code
62120                                                                             ,l_component_type_code
62121                                                                             ,l_component_appl_id
62122                                                                             ,l_amb_context_code
62124                                                                             ,l_event_class_code
62125                                                                            )
62126                                     ,p_token_3                 => 'OWNER'
62127                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
62128                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
62129                                                                           ,p_lookup_code    => l_component_type_code
62130                                                                          )
62131                                     ,p_token_4                 => 'PRODUCT_NAME'
62132                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62133                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62134                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62135                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62136                                     ,p_ae_header_id            =>  NULL
62137                                        );
62138 
62139         IF (C_LEVEL_ERROR>= g_log_level) THEN
62140                  trace
62141                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62142                       ,p_level    => C_LEVEL_ERROR
62143                       ,p_module   => l_log_module);
62144         END IF;
62145       END IF;
62146    END IF;
62147    --
62148    --
62149    ------------------------------------------------------------------------------------------------
62150    -- 4219869 Business Flow
62151    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62152    -- Prior Entry.  Currently, the following code is always generated.
62153    ------------------------------------------------------------------------------------------------
62154    XLA_AE_LINES_PKG.ValidateCurrentLine;
62155 
62156    ------------------------------------------------------------------------------------
62157    -- 4219869 Business Flow
62158    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62159    ------------------------------------------------------------------------------------
62160    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62161 
62162    ----------------------------------------------------------------------------------
62163    -- 4219869 Business Flow
62164    -- Update journal entry status -- Need to generate this within IF <condition>
62165    ----------------------------------------------------------------------------------
62166    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62167          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62168          ,p_balance_type_code => l_balance_type_code
62169          );
62170 
62171    -------------------------------------------------------------------------------------------
62172    -- 4262811 - Generate the Accrual Reversal lines
62173    -------------------------------------------------------------------------------------------
62174    BEGIN
62175       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62176                               (g_array_event(p_event_id).array_value_num('header_index'));
62177       IF l_acc_rev_flag IS NULL THEN
62178          l_acc_rev_flag := 'N';
62179       END IF;
62180    EXCEPTION
62181       WHEN OTHERS THEN
62182          l_acc_rev_flag := 'N';
62183    END;
62184    --
62185    IF (l_acc_rev_flag = 'Y') THEN
62186 
62187        -- 4645092  ------------------------------------------------------------------------------
62188        -- To allow MPA report to determine if it should generate report process
62189        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62190        ------------------------------------------------------------------------------------------
62191 
62192        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62193        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62194    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
62195    -- call ADRs
62196    -- Bug 4922099
62197    --
62198    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62199         (NVL(l_actual_upg_option, 'N') = 'O') OR
62200         (NVL(l_enc_upg_option, 'N') = 'O')
62201       )
62202    THEN
62203    NULL;
62204    --
62205    --
62206    
62207   l_ccid := AcctDerRule_20(
62208            p_application_id           => p_application_id
62209          , p_ae_header_id             => l_ae_header_id 
62210 , p_source_22 => p_source_22
62211          , x_transaction_coa_id       => l_adr_transaction_coa_id
62212          , x_accounting_coa_id        => l_adr_accounting_coa_id
62213          , x_value_type_code          => l_adr_value_type_code
62214          , p_side                     => 'NA'
62215    );
62216 
62217    xla_ae_lines_pkg.set_ccid(
62218     p_code_combination_id          => l_ccid
62222   , p_adr_code                     => 'DIST_CCID'
62219   , p_value_type_code              => l_adr_value_type_code
62220   , p_transaction_coa_id           => l_adr_transaction_coa_id
62221   , p_accounting_coa_id            => l_adr_accounting_coa_id
62223   , p_adr_type_code                => 'S'
62224   , p_component_type               => l_component_type
62225   , p_component_code               => l_component_code
62226   , p_component_type_code          => l_component_type_code
62227   , p_component_appl_id            => l_component_appl_id
62228   , p_amb_context_code             => l_amb_context_code
62229   , p_side                         => 'NA'
62230   );
62231 
62232 
62233    --
62234    --
62235    END IF;
62236 
62237        --
62238        -- Update the line information that should be overwritten
62239        --
62240        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62241                                          p_header_num   => 1);
62242        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
62243 
62244        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62245 
62246        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
62247           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62248        END IF;
62249 
62250       --
62251       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62252       --
62253       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62254           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
62255       ELSE
62256           ---------------------------------------------------------------------------------------------------
62257           -- 4262811a Switch Sign
62258           ---------------------------------------------------------------------------------------------------
62259           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
62260           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62261                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62262           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62263                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62264           -- 5132302
62265           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62266                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62267 
62268       END IF;
62269 
62270       -- 4955764
62271       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62272       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62273 
62274 
62275       XLA_AE_LINES_PKG.ValidateCurrentLine;
62276       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62277 
62278       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62279                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62280                ,p_balance_type_code => l_balance_type_code);
62281 
62282    END IF;
62283 
62284    -----------------------------------------------------------------------------------------
62285    -- 4262811 Multiperiod Accounting
62286    -----------------------------------------------------------------------------------------
62287      -- No MPA option is assigned.
62288 
62289 
62290 END IF;
62291 END IF;
62292 --
62293 
62294 --
62295 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62296    trace
62297       (p_msg      => 'END of AcctLineType_124'
62298       ,p_level    => C_LEVEL_PROCEDURE
62299       ,p_module   => l_log_module);
62300 END IF;
62301 --
62302 EXCEPTION
62303   WHEN xla_exceptions_pkg.application_exception THEN
62304       RAISE;
62305   WHEN OTHERS THEN
62306        xla_exceptions_pkg.raise_message
62307            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_124');
62308 END AcctLineType_124;
62309 --
62310 
62311 ---------------------------------------
62312 --
62313 -- PRIVATE FUNCTION
62314 --         AcctLineType_125
62315 --
62316 ---------------------------------------
62317 PROCEDURE AcctLineType_125 (
62318   p_application_id        IN NUMBER
62319  ,p_event_id              IN NUMBER
62320  ,p_calculate_acctd_flag  IN VARCHAR2
62321  ,p_calculate_g_l_flag    IN VARCHAR2
62322  ,p_actual_flag           IN OUT VARCHAR2
62323  ,p_balance_type_code     OUT VARCHAR2
62324  ,p_gain_or_loss_ref      OUT VARCHAR2
62325  
62326 --Distribution GL Account
62327  , p_source_22            IN NUMBER
62328 --Distribution Source Type
62329  , p_source_27            IN VARCHAR2
62330 --Receivable Activity Type
62331  , p_source_28            IN VARCHAR2
62332 --Distribution Line Identifier
62333  , p_source_29            IN NUMBER
62334 --Distribution Type
62335  , p_source_30            IN VARCHAR2
62336 --Exchange Date
62337  , p_source_33            IN DATE
62338 --Exchange Rate
62339  , p_source_34            IN NUMBER
62340 --Exchange Rate Type
62344 --Transaction Distribution Identifier
62341  , p_source_35            IN VARCHAR2
62342 --Accounting Amount
62343  , p_source_40            IN NUMBER
62345  , p_source_44            IN NUMBER
62346 --Transaction Distribution Type
62347  , p_source_45            IN VARCHAR2
62348 --Distribution Multi Fund Additional Entry
62349  , p_source_88            IN VARCHAR2
62350 --Cash Receipt Identifier
62351  , p_source_90            IN NUMBER
62352 --Receipt Applied To Application Identifier
62353  , p_source_92            IN NUMBER
62354 --Transaction Entity Code
62355  , p_source_93            IN VARCHAR2
62356 --Transaction Identifier
62357  , p_source_94            IN NUMBER
62358 --DIST_ENT_AMT_FROM
62359  , p_source_95            IN NUMBER
62360 --Applying Document Currency Code
62361  , p_source_96            IN VARCHAR2
62362 --Distribution Party Identifier
62363  , p_source_97            IN NUMBER
62364 --Distribution Party Site Id
62365  , p_source_98            IN NUMBER
62366 --Distribution Party Type
62367  , p_source_99            IN VARCHAR2
62368 --Receivable Activity Name
62369  , p_source_103            IN VARCHAR2
62370 )
62371 IS
62372 
62373 l_component_type              VARCHAR2(80);
62374 l_component_code              VARCHAR2(30);
62375 l_component_type_code         VARCHAR2(1);
62376 l_component_appl_id           INTEGER;
62377 l_amb_context_code            VARCHAR2(30);
62378 l_entity_code                 VARCHAR2(30);
62379 l_event_class_code            VARCHAR2(30);
62380 l_ae_header_id                NUMBER;
62381 l_event_type_code             VARCHAR2(30);
62382 l_line_definition_code        VARCHAR2(30);
62383 l_line_definition_owner_code  VARCHAR2(1);
62384 --
62385 -- adr variables
62386 l_segment                     VARCHAR2(30);
62387 l_ccid                        NUMBER;
62388 l_adr_transaction_coa_id      NUMBER;
62389 l_adr_accounting_coa_id       NUMBER;
62390 l_adr_flexfield_segment_code  VARCHAR2(30);
62391 l_adr_flex_value_set_id       NUMBER;
62392 l_adr_value_type_code         VARCHAR2(30);
62393 l_adr_value_combination_id    NUMBER;
62394 l_adr_value_segment_code      VARCHAR2(30);
62395 
62396 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
62397 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
62398 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
62399 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
62400 
62401 -- 4262811 Variables ------------------------------------------------------------------------------------------
62402 l_entered_amt_idx             NUMBER;
62403 l_accted_amt_idx              NUMBER;
62404 l_acc_rev_flag                VARCHAR2(1);
62405 l_accrual_line_num            NUMBER;
62406 l_tmp_amt                     NUMBER;
62407 l_acc_rev_natural_side_code   VARCHAR2(1);
62408 
62409 l_num_entries                 NUMBER;
62410 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
62411 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
62412 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
62413 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
62414 l_recog_line_1                NUMBER;
62415 l_recog_line_2                NUMBER;
62416 
62417 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
62418 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
62419 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
62420 
62421 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62422 
62423 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
62424 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
62425 
62426 ---------------------------------------------------------------------------------------------------------------
62427 
62428 
62429 --
62430 -- bulk performance
62431 --
62432 l_balance_type_code           VARCHAR2(1);
62433 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
62434 l_log_module                  VARCHAR2(240);
62435 
62436 --
62437 -- Upgrade strategy
62438 --
62439 l_actual_upg_option           VARCHAR2(1);
62440 l_enc_upg_option           VARCHAR2(1);
62441 
62442 --
62443 BEGIN
62444 --
62445 IF g_log_enabled THEN
62446       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_125';
62447 END IF;
62448 --
62449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62450 
62451       trace
62452          (p_msg      => 'BEGIN of AcctLineType_125'
62453          ,p_level    => C_LEVEL_PROCEDURE
62454          ,p_module   => l_log_module);
62455 
62456 END IF;
62457 --
62458 l_component_type             := 'AMB_JLT';
62459 l_component_code             := 'RCT_WRITEOFF';
62460 l_component_type_code        := 'S';
62461 l_component_appl_id          :=  222;
62462 l_amb_context_code           := 'DEFAULT';
62463 l_entity_code                := 'RECEIPTS';
62464 l_event_class_code           := 'RECEIPT';
62465 l_event_type_code            := 'RECEIPT_ALL';
62466 l_line_definition_owner_code := 'S';
62467 l_line_definition_code       := 'JA_CN_AR_RCT_DEFAULT_ACCRUAL';
62468 --
62469 l_balance_type_code          := 'A';
62470 l_segment                     := NULL;
62474 l_adr_flexfield_segment_code  := NULL;
62471 l_ccid                        := NULL;
62472 l_adr_transaction_coa_id      := NULL;
62473 l_adr_accounting_coa_id       := NULL;
62475 l_adr_flex_value_set_id       := NULL;
62476 l_adr_value_type_code         := NULL;
62477 l_adr_value_combination_id    := NULL;
62478 l_adr_value_segment_code      := NULL;
62479 
62480 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
62481 l_bflow_class_code           := '';    -- 4219869 Business Flow
62482 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
62483 l_budgetary_control_flag     := 'N';
62484 
62485 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
62486 l_bflow_applied_to_amt       := NULL; -- 5132302
62487 l_entered_amt_idx            := NULL;          -- 4262811
62488 l_accted_amt_idx             := NULL;          -- 4262811
62489 l_acc_rev_flag               := NULL;          -- 4262811
62490 l_accrual_line_num           := NULL;          -- 4262811
62491 l_tmp_amt                    := NULL;          -- 4262811
62492 --
62493  
62494 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62495     l_balance_type_code <> 'B' THEN
62496 IF NVL(p_source_27,'
62497 ') =  'ACTIVITY' AND 
62498 NVL(p_source_28,'
62499 ') =  'WRITEOFF' AND 
62500 NVL(p_source_88,'
62501 ') =  'N'
62502  THEN 
62503 
62504    --
62505    XLA_AE_LINES_PKG.SetNewLine;
62506 
62507    p_balance_type_code          := l_balance_type_code;
62508    -- set the flag so later we will know whether the gain loss line needs to be created
62509    
62510    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62511      p_actual_flag :='A';
62512    END IF;
62513 
62514    --
62515    -- bulk performance
62516    --
62517    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62518                                       p_header_num   => 0); -- 4262811
62519    --
62520    -- set accounting line options
62521    --
62522    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62523            p_natural_side_code          => 'C'
62524          , p_gain_or_loss_flag          => 'N'
62525          , p_gl_transfer_mode_code      => 'S'
62526          , p_acct_entry_type_code       => 'A'
62527          , p_switch_side_flag           => 'Y'
62528          , p_merge_duplicate_code       => 'A'
62529          );
62530    --
62531    l_acc_rev_natural_side_code := 'D';  -- 4262811
62532    -- 
62533    --
62534    -- set accounting line type info
62535    --
62536    xla_ae_lines_pkg.SetAcctLineType
62537       (p_component_type             => l_component_type
62538       ,p_event_type_code            => l_event_type_code
62539       ,p_line_definition_owner_code => l_line_definition_owner_code
62540       ,p_line_definition_code       => l_line_definition_code
62541       ,p_accounting_line_code       => l_component_code
62542       ,p_accounting_line_type_code  => l_component_type_code
62543       ,p_accounting_line_appl_id    => l_component_appl_id
62544       ,p_amb_context_code           => l_amb_context_code
62545       ,p_entity_code                => l_entity_code
62546       ,p_event_class_code           => l_event_class_code);
62547    --
62548    -- set accounting class
62549    --
62550    xla_ae_lines_pkg.SetAcctClass(
62551            p_accounting_class_code  => 'WRITE_OFF'
62552          , p_ae_header_id           => l_ae_header_id
62553          );
62554 
62555    --
62556    -- set rounding class
62557    --
62558    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
62559                       'RECEIVABLE';
62560 
62561    --
62562    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
62563    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
62564    --
62565    -- bulk performance
62566    --
62567    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
62568 
62569    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
62570       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
62571 
62572    -- 4955764
62573    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62574       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
62575 
62576    -- 4458381 Public Sector Enh
62577    
62578    --
62579    -- set accounting attributes for the line type
62580    --
62581    l_entered_amt_idx := 8;
62582    l_accted_amt_idx  := 13;
62583    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
62584    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
62585    l_rec_acct_attrs.array_num_value(1)  := p_source_92;
62586    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
62587    l_rec_acct_attrs.array_char_value(2)  := p_source_45;
62588    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
62589    l_rec_acct_attrs.array_char_value(3)  := p_source_93;
62590    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
62591    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_44);
62592    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
62593    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_94);
62594    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
62598    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
62595    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_29);
62596    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
62597    l_rec_acct_attrs.array_char_value(7)  := p_source_30;
62599    l_rec_acct_attrs.array_num_value(8)  := p_source_95;
62600    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
62601    l_rec_acct_attrs.array_char_value(9)  := p_source_96;
62602    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
62603    l_rec_acct_attrs.array_date_value(10)  := p_source_33;
62604    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
62605    l_rec_acct_attrs.array_num_value(11)  := p_source_34;
62606    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
62607    l_rec_acct_attrs.array_char_value(12)  := p_source_35;
62608    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
62609    l_rec_acct_attrs.array_num_value(13)  := p_source_40;
62610    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
62611    l_rec_acct_attrs.array_num_value(14)  := p_source_97;
62612    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
62613    l_rec_acct_attrs.array_num_value(15)  := p_source_98;
62614    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
62615    l_rec_acct_attrs.array_char_value(16)  := p_source_99;
62616 
62617    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
62618    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
62619 
62620    ---------------------------------------------------------------------------------------------------------------
62621    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
62622    ---------------------------------------------------------------------------------------------------------------
62623    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
62624 
62625    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62626    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62627 
62628    IF xla_accounting_cache_pkg.GetValueChar
62629          (p_source_code         => 'LEDGER_CATEGORY_CODE'
62630          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
62631    AND l_bflow_method_code = 'PRIOR_ENTRY'
62632 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
62633    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
62634          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
62635        )
62636    THEN
62637          xla_ae_lines_pkg.BflowUpgEntry
62638            (p_business_method_code    => l_bflow_method_code
62639            ,p_business_class_code     => l_bflow_class_code
62640            ,p_balance_type            => l_balance_type_code);
62641    ELSE
62642       NULL;
62643 -- No business flow processing for business flow method of NONE.
62644    END IF;
62645 
62646    --
62647    -- call analytical criteria
62648    --
62649    
62650 
62651 xla_ae_lines_pkg.g_rec_lines.array_anc_id_1(xla_ae_lines_pkg.g_LineNumber) :=
62652 xla_ae_lines_pkg.SetAnalyticalCriteria(
62653    p_analytical_criterion_name    => 'Check Id'
62654  , p_analytical_criterion_owner   => 'S'
62655  , p_analytical_criterion_code    => 'CHECK_ID'
62656  , p_amb_context_code             => 'DEFAULT'
62657  , p_balancing_flag               => 'N'
62658  
62659  , p_analytical_detail_char_1    =>  NULL
62660  , p_analytical_detail_num_1     =>  p_source_90
62661  , p_analytical_detail_date_1    =>  NULL
62662 
62663  , p_ae_header_id                 => l_ae_header_id
62664 )
62665 ;
62666 --
62667 
62668 
62669 xla_ae_lines_pkg.g_rec_lines.array_anc_id_2(xla_ae_lines_pkg.g_LineNumber) :=
62670 xla_ae_lines_pkg.SetAnalyticalCriteria(
62671    p_analytical_criterion_name    => 'Receivable Activity'
62672  , p_analytical_criterion_owner   => 'S'
62673  , p_analytical_criterion_code    => 'RECEIVABLE_ACTIVITY'
62674  , p_amb_context_code             => 'DEFAULT'
62675  , p_balancing_flag               => 'N'
62676  
62677  , p_analytical_detail_char_1    =>  TO_CHAR(p_source_103)
62678  , p_analytical_detail_num_1     =>  NULL
62679  , p_analytical_detail_date_1    =>  NULL
62680 
62681  , p_ae_header_id                 => l_ae_header_id
62682 )
62683 ;
62684 --
62685 
62686    --
62687    -- call description
62688    --
62689    -- No description or it is inherited.
62690    --
62691    -- call ADRs
62692    -- Bug 4922099
62693    --
62694    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62695         (NVL(l_actual_upg_option, 'N') = 'O') OR
62696         (NVL(l_enc_upg_option, 'N') = 'O')
62697       )
62698    THEN
62699    NULL;
62700    --
62701    --
62702    
62703   l_ccid := AcctDerRule_20(
62704            p_application_id           => p_application_id
62705          , p_ae_header_id             => l_ae_header_id 
62706 , p_source_22 => p_source_22
62707          , x_transaction_coa_id       => l_adr_transaction_coa_id
62708          , x_accounting_coa_id        => l_adr_accounting_coa_id
62709          , x_value_type_code          => l_adr_value_type_code
62710          , p_side                     => 'NA'
62711    );
62712 
62713    xla_ae_lines_pkg.set_ccid(
62717   , p_accounting_coa_id            => l_adr_accounting_coa_id
62714     p_code_combination_id          => l_ccid
62715   , p_value_type_code              => l_adr_value_type_code
62716   , p_transaction_coa_id           => l_adr_transaction_coa_id
62718   , p_adr_code                     => 'DIST_CCID'
62719   , p_adr_type_code                => 'S'
62720   , p_component_type               => l_component_type
62721   , p_component_code               => l_component_code
62722   , p_component_type_code          => l_component_type_code
62723   , p_component_appl_id            => l_component_appl_id
62724   , p_amb_context_code             => l_amb_context_code
62725   , p_side                         => 'NA'
62726   );
62727 
62728 
62729    --
62730    --
62731    END IF;
62732    --
62733    -- Bug 4922099
62734    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62735           (NVL(l_enc_upg_option, 'N') = 'O')
62736         ) AND
62737         (l_bflow_method_code = 'PRIOR_ENTRY')
62738       )
62739    THEN
62740       IF
62741       --
62742       1 = 2
62743       --
62744       THEN
62745       xla_accounting_err_pkg.build_message
62746                                     (p_appli_s_name            => 'XLA'
62747                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62748                                     ,p_token_1                 => 'LINE_NUMBER'
62749                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
62750                                     ,p_token_2                 => 'LINE_TYPE_NAME'
62751                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
62752                                                                              l_component_type
62753                                                                             ,l_component_code
62754                                                                             ,l_component_type_code
62755                                                                             ,l_component_appl_id
62756                                                                             ,l_amb_context_code
62757                                                                             ,l_entity_code
62758                                                                             ,l_event_class_code
62759                                                                            )
62760                                     ,p_token_3                 => 'OWNER'
62761                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
62762                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
62763                                                                           ,p_lookup_code    => l_component_type_code
62764                                                                          )
62765                                     ,p_token_4                 => 'PRODUCT_NAME'
62766                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62767                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62768                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62769                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62770                                     ,p_ae_header_id            =>  NULL
62771                                        );
62772 
62773         IF (C_LEVEL_ERROR>= g_log_level) THEN
62774                  trace
62775                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62776                       ,p_level    => C_LEVEL_ERROR
62777                       ,p_module   => l_log_module);
62778         END IF;
62779       END IF;
62780    END IF;
62781    --
62782    --
62783    ------------------------------------------------------------------------------------------------
62784    -- 4219869 Business Flow
62785    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62786    -- Prior Entry.  Currently, the following code is always generated.
62787    ------------------------------------------------------------------------------------------------
62788    XLA_AE_LINES_PKG.ValidateCurrentLine;
62789 
62790    ------------------------------------------------------------------------------------
62791    -- 4219869 Business Flow
62792    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62793    ------------------------------------------------------------------------------------
62794    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62795 
62796    ----------------------------------------------------------------------------------
62797    -- 4219869 Business Flow
62798    -- Update journal entry status -- Need to generate this within IF <condition>
62799    ----------------------------------------------------------------------------------
62800    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62801          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62802          ,p_balance_type_code => l_balance_type_code
62803          );
62804 
62805    -------------------------------------------------------------------------------------------
62806    -- 4262811 - Generate the Accrual Reversal lines
62807    -------------------------------------------------------------------------------------------
62808    BEGIN
62812          l_acc_rev_flag := 'N';
62809       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62810                               (g_array_event(p_event_id).array_value_num('header_index'));
62811       IF l_acc_rev_flag IS NULL THEN
62813       END IF;
62814    EXCEPTION
62815       WHEN OTHERS THEN
62816          l_acc_rev_flag := 'N';
62817    END;
62818    --
62819    IF (l_acc_rev_flag = 'Y') THEN
62820 
62821        -- 4645092  ------------------------------------------------------------------------------
62822        -- To allow MPA report to determine if it should generate report process
62823        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62824        ------------------------------------------------------------------------------------------
62825 
62826        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62827        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62828    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
62829    -- call ADRs
62830    -- Bug 4922099
62831    --
62832    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62833         (NVL(l_actual_upg_option, 'N') = 'O') OR
62834         (NVL(l_enc_upg_option, 'N') = 'O')
62835       )
62836    THEN
62837    NULL;
62838    --
62839    --
62840    
62841   l_ccid := AcctDerRule_20(
62842            p_application_id           => p_application_id
62843          , p_ae_header_id             => l_ae_header_id 
62844 , p_source_22 => p_source_22
62845          , x_transaction_coa_id       => l_adr_transaction_coa_id
62846          , x_accounting_coa_id        => l_adr_accounting_coa_id
62847          , x_value_type_code          => l_adr_value_type_code
62848          , p_side                     => 'NA'
62849    );
62850 
62851    xla_ae_lines_pkg.set_ccid(
62852     p_code_combination_id          => l_ccid
62853   , p_value_type_code              => l_adr_value_type_code
62854   , p_transaction_coa_id           => l_adr_transaction_coa_id
62855   , p_accounting_coa_id            => l_adr_accounting_coa_id
62856   , p_adr_code                     => 'DIST_CCID'
62857   , p_adr_type_code                => 'S'
62858   , p_component_type               => l_component_type
62859   , p_component_code               => l_component_code
62860   , p_component_type_code          => l_component_type_code
62861   , p_component_appl_id            => l_component_appl_id
62862   , p_amb_context_code             => l_amb_context_code
62863   , p_side                         => 'NA'
62864   );
62865 
62866 
62867    --
62868    --
62869    END IF;
62870 
62871        --
62872        -- Update the line information that should be overwritten
62873        --
62874        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62875                                          p_header_num   => 1);
62876        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
62877 
62878        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62879 
62880        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
62881           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62882        END IF;
62883 
62884       --
62885       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62886       --
62887       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62888           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
62889       ELSE
62890           ---------------------------------------------------------------------------------------------------
62891           -- 4262811a Switch Sign
62892           ---------------------------------------------------------------------------------------------------
62893           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
62894           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62895                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62896           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62897                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62898           -- 5132302
62899           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62900                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62901 
62902       END IF;
62903 
62904       -- 4955764
62905       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62906       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62907 
62908 
62909       XLA_AE_LINES_PKG.ValidateCurrentLine;
62910       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62911 
62912       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62913                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62914                ,p_balance_type_code => l_balance_type_code);
62915 
62916    END IF;
62917 
62918    -----------------------------------------------------------------------------------------
62919    -- 4262811 Multiperiod Accounting
62923 
62920    -----------------------------------------------------------------------------------------
62921      -- No MPA option is assigned.
62922 
62924 END IF;
62925 END IF;
62926 --
62927 
62928 --
62929 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62930    trace
62931       (p_msg      => 'END of AcctLineType_125'
62932       ,p_level    => C_LEVEL_PROCEDURE
62933       ,p_module   => l_log_module);
62934 END IF;
62935 --
62936 EXCEPTION
62937   WHEN xla_exceptions_pkg.application_exception THEN
62938       RAISE;
62939   WHEN OTHERS THEN
62940        xla_exceptions_pkg.raise_message
62941            (p_location => 'XLA_00222_AAD_S_000017_PKG.AcctLineType_125');
62942 END AcctLineType_125;
62943 --
62944 
62945 ---------------------------------------
62946 --
62947 -- PRIVATE PROCEDURE
62948 --         insert_sources_126
62949 --
62950 ----------------------------------------
62951 --
62952 PROCEDURE insert_sources_126(
62953                                 p_target_ledger_id       IN NUMBER
62954                               , p_language               IN VARCHAR2
62955                               , p_sla_ledger_id          IN NUMBER
62956                               , p_pad_start_date         IN DATE
62957                               , p_pad_end_date           IN DATE
62958                          )
62959 IS
62960 
62961 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ADJUSTMENT_ALL';
62962 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'ADJUSTMENT';
62963 p_apps_owner                   VARCHAR2(30);
62964 l_log_module                   VARCHAR2(240);
62965 BEGIN
62966 IF g_log_enabled THEN
62967       l_log_module := C_DEFAULT_MODULE||'.insert_sources_126';
62968 END IF;
62969 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62970 
62971       trace
62972          (p_msg      => 'BEGIN of insert_sources_126'
62973          ,p_level    => C_LEVEL_PROCEDURE
62974          ,p_module   => l_log_module);
62975 
62976 END IF;
62977 
62978 -- select APPS owner
62979 SELECT oracle_username
62980   INTO p_apps_owner
62981   FROM fnd_oracle_userid
62982  WHERE read_only_flag = 'U'
62983 ;
62984 
62985 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
62986       trace
62987          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
62988                         ' - p_language = '||p_language||
62989                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
62990                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
62991                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
62992                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
62993          ,p_level    => C_LEVEL_STATEMENT
62994          ,p_module   => l_log_module);
62995 END IF;
62996 
62997 
62998 --
62999 INSERT INTO xla_diag_sources --hdr2
63000 (
63001         event_id
63002       , ledger_id
63003       , sla_ledger_id
63004       , description_language
63005       , object_name
63006       , object_type_code
63007       , line_number
63008       , source_application_id
63009       , source_type_code
63010       , source_code
63011       , source_value
63012       , source_meaning
63013       , created_by
63014       , creation_date
63015       , last_update_date
63016       , last_updated_by
63017       , last_update_login
63018       , program_update_date
63019       , program_application_id
63020       , program_id
63021       , request_id
63022 )
63023 SELECT
63024         event_id
63025       , p_target_ledger_id
63026       , p_sla_ledger_id
63027       , p_language
63028       , object_name
63029       , object_type_code
63030       , line_number
63031       , source_application_id
63032       , source_type_code
63033       , source_code
63034       , SUBSTR(source_value ,1,1996)
63035       , SUBSTR(source_meaning ,1,200)
63036       , xla_environment_pkg.g_Usr_Id
63037       , TRUNC(SYSDATE)
63038       , TRUNC(SYSDATE)
63039       , xla_environment_pkg.g_Usr_Id
63040       , xla_environment_pkg.g_Login_Id
63041       , TRUNC(SYSDATE)
63042       , xla_environment_pkg.g_Prog_Appl_Id
63043       , xla_environment_pkg.g_Prog_Id
63044       , xla_environment_pkg.g_Req_Id
63045   FROM (
63046        SELECT xet.event_id                  event_id
63047             , 0                          line_number
63048             , CASE r
63049                WHEN 1 THEN 'AR_RECEIVABLES_TRX_ACT_S_V' 
63050                 WHEN 2 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
63051                 WHEN 3 THEN 'AR_BILL_TO_SITE_USES_S_V' 
63052                 WHEN 4 THEN 'AR_TRANSACTIONS_S_V' 
63053                 WHEN 5 THEN 'AR_ADJUSTMENTS_H_V' 
63054                 WHEN 6 THEN 'AR_ADJUSTMENTS_H_V' 
63055                 WHEN 7 THEN 'AR_ADJUSTMENTS_H_V' 
63056                 
63057                ELSE null
63058               END                           object_name
63059             , CASE r
63060                 WHEN 1 THEN 'HEADER' 
63061                 WHEN 2 THEN 'HEADER' 
63062                 WHEN 3 THEN 'HEADER' 
63063                 WHEN 4 THEN 'HEADER' 
63064                 WHEN 5 THEN 'HEADER' 
63065                 WHEN 6 THEN 'HEADER' 
63066                 WHEN 7 THEN 'HEADER' 
63067                 
63068                 ELSE null
63069               END                           object_type_code
63070             , CASE r
63074                 WHEN 4 THEN '222' 
63071                 WHEN 1 THEN '222' 
63072                 WHEN 2 THEN '222' 
63073                 WHEN 3 THEN '222' 
63075                 WHEN 5 THEN '222' 
63076                 WHEN 6 THEN '222' 
63077                 WHEN 7 THEN '222' 
63078                 
63079                 ELSE null
63080               END                           source_application_id
63081             , 'S'             source_type_code
63082             , CASE r
63083                 WHEN 1 THEN 'REC_ACT_TYPE' 
63084                 WHEN 2 THEN 'BILL_CUST_ACCOUNT_ID' 
63085                 WHEN 3 THEN 'BILL_USES_SITE_USE_ID' 
63086                 WHEN 4 THEN 'XLA_PARTY_TYPE' 
63087                 WHEN 5 THEN 'ADJ_DOC_SEQUENCE_CATEGORY' 
63088                 WHEN 6 THEN 'ADJ_DOC_SEQUENCE_ID' 
63089                 WHEN 7 THEN 'ADJ_DOC_SEQUENCE_VALUE' 
63090                 
63091                 ELSE null
63092               END                           source_code
63093             , CASE r
63094                 WHEN 1 THEN TO_CHAR(h6.REC_ACT_TYPE)
63095                 WHEN 2 THEN TO_CHAR(h2.BILL_CUST_ACCOUNT_ID)
63096                 WHEN 3 THEN TO_CHAR(h3.BILL_USES_SITE_USE_ID)
63097                 WHEN 4 THEN TO_CHAR(h7.XLA_PARTY_TYPE)
63098                 WHEN 5 THEN TO_CHAR(h1.ADJ_DOC_SEQUENCE_CATEGORY)
63099                 WHEN 6 THEN TO_CHAR(h1.ADJ_DOC_SEQUENCE_ID)
63100                 WHEN 7 THEN TO_CHAR(h1.ADJ_DOC_SEQUENCE_VALUE)
63101                 
63102                 ELSE null
63103               END                           source_value
63104             , null              source_meaning
63105          FROM xla_events_gt     xet  
63106       , AR_ADJUSTMENTS_H_V  h1
63107       , AR_BILL_TO_CUSTOMERS_S_V  h2
63108       , AR_BILL_TO_SITE_USES_S_V  h3
63109       , AR_RECEIVABLES_TRX_ACT_S_V  h6
63110       , AR_TRANSACTIONS_S_V  h7
63111              ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
63112          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
63113            AND xet.event_class_code = C_EVENT_CLASS_CODE
63114               AND h1.event_id = xet.event_id
63115   AND h2.event_id  = h1.event_id
63116   AND h3.event_id  = h1.event_id
63117   AND h6.event_id (+) = h1.event_id
63118   AND h7.event_id  = h1.event_id
63119 
63120 )
63121 ;
63122 --
63123 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63124 
63125       trace
63126          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
63127          ,p_level    => C_LEVEL_STATEMENT
63128          ,p_module   => l_log_module);
63129 
63130 END IF;
63131 --
63132 
63133 
63134 
63135 --
63136 INSERT INTO xla_diag_sources  --line2
63137 (
63138         event_id
63139       , ledger_id
63140       , sla_ledger_id
63141       , description_language
63142       , object_name
63143       , object_type_code
63144       , line_number
63145       , source_application_id
63146       , source_type_code
63147       , source_code
63148       , source_value
63149       , source_meaning
63150       , created_by
63151       , creation_date
63152       , last_update_date
63153       , last_updated_by
63154       , last_update_login
63155       , program_update_date
63156       , program_application_id
63157       , program_id
63158       , request_id
63159 )
63160 SELECT  event_id
63161       , p_target_ledger_id
63162       , p_sla_ledger_id
63163       , p_language
63164       , object_name
63165       , object_type_code
63166       , line_number
63167       , source_application_id
63168       , source_type_code
63169       , source_code
63170       , SUBSTR(source_value,1,1996)
63171       , SUBSTR(source_meaning ,1,200)
63172       , xla_environment_pkg.g_Usr_Id
63173       , TRUNC(SYSDATE)
63174       , TRUNC(SYSDATE)
63175       , xla_environment_pkg.g_Usr_Id
63176       , xla_environment_pkg.g_Login_Id
63177       , TRUNC(SYSDATE)
63178       , xla_environment_pkg.g_Prog_Appl_Id
63179       , xla_environment_pkg.g_Prog_Id
63180       , xla_environment_pkg.g_Req_Id
63181   FROM (
63182        SELECT xet.event_id                  event_id
63183             , l5.line_number                 line_number
63184             , CASE r
63185                WHEN 1 THEN 'AR_DISTRIBUTIONS_L_V' 
63186                 WHEN 2 THEN 'AR_DISTRIBUTIONS_L_V' 
63187                 WHEN 3 THEN 'AR_DISTRIBUTIONS_L_V' 
63188                 WHEN 4 THEN 'AR_DISTRIBUTIONS_L_V' 
63189                 WHEN 5 THEN 'AR_DISTRIBUTIONS_L_V' 
63190                 WHEN 6 THEN 'AR_DISTRIBUTIONS_L_V' 
63191                 WHEN 7 THEN 'AR_DISTRIBUTIONS_BASE_V' 
63192                 WHEN 8 THEN 'AR_DISTRIBUTIONS_BASE_V' 
63193                 WHEN 9 THEN 'AR_DISTRIBUTIONS_BASE_V' 
63194                 WHEN 10 THEN 'AR_DISTRIBUTIONS_BASE_V' 
63195                 
63196                ELSE null
63197               END                           object_name
63198             , CASE r
63199                 WHEN 1 THEN 'LINE' 
63200                 WHEN 2 THEN 'LINE' 
63201                 WHEN 3 THEN 'LINE' 
63202                 WHEN 4 THEN 'LINE' 
63203                 WHEN 5 THEN 'LINE' 
63204                 WHEN 6 THEN 'LINE' 
63205                 WHEN 7 THEN 'LINE' 
63206                 WHEN 8 THEN 'LINE' 
63207                 WHEN 9 THEN 'LINE' 
63211               END                           object_type_code
63208                 WHEN 10 THEN 'LINE' 
63209                 
63210                 ELSE null
63212             , CASE r
63213                 WHEN 1 THEN '222' 
63214                 WHEN 2 THEN '222' 
63215                 WHEN 3 THEN '222' 
63216                 WHEN 4 THEN '222' 
63217                 WHEN 5 THEN '222' 
63218                 WHEN 6 THEN '222' 
63219                 WHEN 7 THEN '222' 
63220                 WHEN 8 THEN '222' 
63221                 WHEN 9 THEN '222' 
63222                 WHEN 10 THEN '222' 
63223                 
63224                 ELSE null
63225               END                           source_application_id
63226             , 'S'             source_type_code
63227             , CASE r
63228                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
63229                 WHEN 2 THEN 'DIST_SOURCE_TYPE' 
63230                 WHEN 3 THEN 'DIST_LINE_ID' 
63231                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
63232                 WHEN 5 THEN 'DIST_ENT_AMT' 
63233                 WHEN 6 THEN 'DIST_CURRENCY_CODE' 
63234                 WHEN 7 THEN 'DIST_CUR_CONVERSION_DATE' 
63235                 WHEN 8 THEN 'DIST_CUR_CONVERSION_RATE' 
63236                 WHEN 9 THEN 'DIST_CUR_CONVERSION_TYPE' 
63237                 WHEN 10 THEN 'DIST_TO_ACCTD_AMT' 
63238                 
63239                 ELSE null
63240               END                           source_code
63241             , CASE r
63242                 WHEN 1 THEN TO_CHAR(l5.DIST_CODE_COMBINATION_ID)
63243                 WHEN 2 THEN TO_CHAR(l5.DIST_SOURCE_TYPE)
63244                 WHEN 3 THEN TO_CHAR(l5.DIST_LINE_ID)
63245                 WHEN 4 THEN TO_CHAR(l5.DISTRIBUTION_TYPE)
63246                 WHEN 5 THEN TO_CHAR(l5.DIST_ENT_AMT)
63247                 WHEN 6 THEN TO_CHAR(l5.DIST_CURRENCY_CODE)
63248                 WHEN 7 THEN TO_CHAR(l4.DIST_CUR_CONVERSION_DATE)
63249                 WHEN 8 THEN TO_CHAR(l4.DIST_CUR_CONVERSION_RATE)
63250                 WHEN 9 THEN TO_CHAR(l4.DIST_CUR_CONVERSION_TYPE)
63251                 WHEN 10 THEN TO_CHAR(l4.DIST_TO_ACCTD_AMT)
63252                 
63253                 ELSE null
63254               END                           source_value
63255             , null              source_meaning
63256          FROM  xla_events_gt     xet  
63257         , AR_DISTRIBUTIONS_BASE_V  l4
63258         , AR_DISTRIBUTIONS_L_V  l5
63259             , (select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
63260         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
63261           AND xet.event_class_code = C_EVENT_CLASS_CODE
63262             AND l4.event_id          = xet.event_id
63263   AND l5.event_id    = l4.event_id
63264   AND l5.line_number = l4.line_number
63265 
63266 )
63267 ;
63268 --
63269 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63270 
63271       trace
63272          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
63273          ,p_level    => C_LEVEL_STATEMENT
63274          ,p_module   => l_log_module);
63275 
63276 END IF;
63277 
63278 
63279 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63280       trace
63281          (p_msg      => 'END of insert_sources_126'
63282          ,p_level    => C_LEVEL_PROCEDURE
63283          ,p_module   => l_log_module);
63284 END IF;
63285 EXCEPTION
63286   WHEN xla_exceptions_pkg.application_exception THEN
63287       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
63288             trace
63289                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
63290                ,p_level    => C_LEVEL_EXCEPTION
63291                ,p_module   => l_log_module);
63292       END IF;
63293       RAISE;
63294   WHEN OTHERS THEN
63295       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
63296             trace
63297                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
63298                ,p_level    => C_LEVEL_EXCEPTION
63299                ,p_module   => l_log_module);
63300        END IF;
63301        xla_exceptions_pkg.raise_message
63302            (p_location => 'XLA_00222_AAD_S_000017_PKG.insert_sources_126');
63303 END insert_sources_126;
63304 --
63305 
63306 ---------------------------------------
63307 --
63308 -- PRIVATE FUNCTION
63309 --         EventClass_126
63310 --
63311 ----------------------------------------
63312 --
63313 FUNCTION EventClass_126
63314        (p_application_id         IN NUMBER
63315        ,p_base_ledger_id         IN NUMBER
63316        ,p_target_ledger_id       IN NUMBER
63317        ,p_language               IN VARCHAR2
63318        ,p_currency_code          IN VARCHAR2
63319        ,p_sla_ledger_id          IN NUMBER
63320        ,p_pad_start_date         IN DATE
63321        ,p_pad_end_date           IN DATE
63322        ,p_primary_ledger_id      IN NUMBER)
63323 RETURN BOOLEAN IS
63324 --
63325 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ADJUSTMENT_ALL';
63326 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'ADJUSTMENT';
63327 
63328 l_calculate_acctd_flag   VARCHAR2(1) :='N';
63329 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
63330 --
63331 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63332 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63336 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
63333 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
63334 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
63335 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63337 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
63338 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63339 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63340 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63341 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63342 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63343 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63344 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
63345 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
63346 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
63347 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
63348 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
63349 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63350 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63351 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63352 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
63353 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
63354 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
63355 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
63356 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
63357 
63358 l_event_id                             NUMBER;
63359 l_previous_event_id                    NUMBER;
63360 l_first_event_id                       NUMBER;
63361 l_last_event_id                        NUMBER;
63362 
63363 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
63364 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
63365 --
63366 --
63367 l_result                    BOOLEAN := TRUE;
63368 l_rows                      NUMBER  := 1000;
63369 l_event_type_name           VARCHAR2(80) := 'All';
63370 l_event_class_name          VARCHAR2(80) := 'Adjustment';
63371 l_description               VARCHAR2(4000);
63372 l_transaction_reversal      NUMBER;
63373 l_ae_header_id              NUMBER;
63374 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
63375 l_log_module                VARCHAR2(240);
63376 --
63377 l_acct_reversal_source      VARCHAR2(30);
63378 l_trx_reversal_source       VARCHAR2(30);
63379 
63380 l_continue_with_lines       BOOLEAN := TRUE;
63381 --
63382 l_acc_rev_gl_date_source    DATE;                      -- 4262811
63383 --
63384 type t_array_event_id is table of number index by binary_integer;
63385 
63386 l_rec_array_event                    t_rec_array_event;
63387 l_null_rec_array_event               t_rec_array_event;
63388 l_array_ae_header_id                 xla_number_array_type;
63389 l_actual_flag                        VARCHAR2(1) := NULL;
63390 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
63391 l_balance_type_code                  VARCHAR2(1) :=NULL;
63392 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
63393 
63394 --
63395 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
63396 --
63397 
63398 TYPE t_array_source_28 IS TABLE OF AR_RECEIVABLES_TRX_ACT_S_V.REC_ACT_TYPE%TYPE INDEX BY BINARY_INTEGER;
63399 TYPE t_array_source_37 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
63400 TYPE t_array_source_38 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
63401 TYPE t_array_source_39 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
63402 TYPE t_array_source_107 IS TABLE OF AR_ADJUSTMENTS_H_V.ADJ_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
63403 TYPE t_array_source_108 IS TABLE OF AR_ADJUSTMENTS_H_V.ADJ_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
63404 TYPE t_array_source_109 IS TABLE OF AR_ADJUSTMENTS_H_V.ADJ_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
63405 
63406 TYPE t_array_source_22 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
63407 TYPE t_array_source_27 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_SOURCE_TYPE%TYPE INDEX BY BINARY_INTEGER;
63408 TYPE t_array_source_29 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
63409 TYPE t_array_source_30 IS TABLE OF AR_DISTRIBUTIONS_L_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
63410 TYPE t_array_source_31 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_ENT_AMT%TYPE INDEX BY BINARY_INTEGER;
63411 TYPE t_array_source_32 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
63412 TYPE t_array_source_33 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
63413 TYPE t_array_source_34 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
63414 TYPE t_array_source_35 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
63415 TYPE t_array_source_36 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_TO_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
63416 
63417 l_array_source_28              t_array_source_28;
63421 l_array_source_107              t_array_source_107;
63418 l_array_source_37              t_array_source_37;
63419 l_array_source_38              t_array_source_38;
63420 l_array_source_39              t_array_source_39;
63422 l_array_source_108              t_array_source_108;
63423 l_array_source_109              t_array_source_109;
63424 
63425 l_array_source_22      t_array_source_22;
63426 l_array_source_27      t_array_source_27;
63427 l_array_source_29      t_array_source_29;
63428 l_array_source_30      t_array_source_30;
63429 l_array_source_31      t_array_source_31;
63430 l_array_source_32      t_array_source_32;
63431 l_array_source_33      t_array_source_33;
63432 l_array_source_34      t_array_source_34;
63433 l_array_source_35      t_array_source_35;
63434 l_array_source_36      t_array_source_36;
63435 
63436 --
63437 CURSOR header_cur
63438 IS
63439 SELECT /*+ leading(xet) cardinality(xet,1) */
63440 -- Event Class Code: ADJUSTMENT
63441     xet.entity_id
63442    ,xet.legal_entity_id
63443    ,xet.entity_code
63444    ,xet.transaction_number
63445    ,xet.event_id
63446    ,xet.event_class_code
63447    ,xet.event_type_code
63448    ,xet.event_number
63449    ,xet.event_date
63450    ,xet.transaction_date
63451    ,xet.reference_num_1
63452    ,xet.reference_num_2
63453    ,xet.reference_num_3
63454    ,xet.reference_num_4
63455    ,xet.reference_char_1
63456    ,xet.reference_char_2
63457    ,xet.reference_char_3
63458    ,xet.reference_char_4
63459    ,xet.reference_date_1
63460    ,xet.reference_date_2
63461    ,xet.reference_date_3
63462    ,xet.reference_date_4
63463    ,xet.event_created_by
63464    ,xet.budgetary_control_flag 
63465   , h6.REC_ACT_TYPE    source_28
63466   , h2.BILL_CUST_ACCOUNT_ID    source_37
63467   , h3.BILL_USES_SITE_USE_ID    source_38
63468   , h7.XLA_PARTY_TYPE    source_39
63469   , h1.ADJ_DOC_SEQUENCE_CATEGORY    source_107
63470   , h1.ADJ_DOC_SEQUENCE_ID    source_108
63471   , h1.ADJ_DOC_SEQUENCE_VALUE    source_109
63472   FROM xla_events_gt     xet 
63473   , AR_ADJUSTMENTS_H_V  h1
63474   , AR_BILL_TO_CUSTOMERS_S_V  h2
63475   , AR_BILL_TO_SITE_USES_S_V  h3
63476   , AR_RECEIVABLES_TRX_ACT_S_V  h6
63477   , AR_TRANSACTIONS_S_V  h7
63478  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
63479    and xet.event_class_code = C_EVENT_CLASS_CODE
63480    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
63481   AND h2.event_id  = h1.event_id
63482   AND h3.event_id  = h1.event_id
63483   AND h6.event_id (+) = h1.event_id
63484   AND h7.event_id  = h1.event_id
63485 
63486  ORDER BY event_id
63487 ;
63488 
63489 
63490 --
63491 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
63492 IS
63493 SELECT  /*+ leading(xet) cardinality(xet,1) */
63494 -- Event Class Code: ADJUSTMENT
63495     xet.entity_id
63496    ,xet.legal_entity_id
63497    ,xet.entity_code
63498    ,xet.transaction_number
63499    ,xet.event_id
63500    ,xet.event_class_code
63501    ,xet.event_type_code
63502    ,xet.event_number
63503    ,xet.event_date
63504    ,xet.transaction_date
63505    ,xet.reference_num_1
63506    ,xet.reference_num_2
63507    ,xet.reference_num_3
63508    ,xet.reference_num_4
63509    ,xet.reference_char_1
63510    ,xet.reference_char_2
63511    ,xet.reference_char_3
63512    ,xet.reference_char_4
63513    ,xet.reference_date_1
63514    ,xet.reference_date_2
63515    ,xet.reference_date_3
63516    ,xet.reference_date_4
63517    ,xet.event_created_by
63518    ,xet.budgetary_control_flag
63519  , l4.LINE_NUMBER  
63520   , l5.DIST_CODE_COMBINATION_ID    source_22
63521   , l5.DIST_SOURCE_TYPE    source_27
63522   , l5.DIST_LINE_ID    source_29
63523   , l5.DISTRIBUTION_TYPE    source_30
63524   , l5.DIST_ENT_AMT    source_31
63525   , l5.DIST_CURRENCY_CODE    source_32
63526   , l4.DIST_CUR_CONVERSION_DATE    source_33
63527   , l4.DIST_CUR_CONVERSION_RATE    source_34
63528   , l4.DIST_CUR_CONVERSION_TYPE    source_35
63529   , l4.DIST_TO_ACCTD_AMT    source_36
63530   FROM xla_events_gt     xet 
63531   , AR_DISTRIBUTIONS_BASE_V  l4
63532   , AR_DISTRIBUTIONS_L_V  l5
63533  WHERE xet.event_id between x_first_event_id and x_last_event_id
63534    and xet.event_date between p_pad_start_date and p_pad_end_date
63535    and xet.event_class_code = C_EVENT_CLASS_CODE
63536    and xet.event_status_code <> 'N'   AND l4.event_id      = xet.event_id
63537   AND l5.event_id    = l4.event_id
63538   AND l5.line_number = l4.line_number
63539 ;
63540 
63541 --
63542 BEGIN
63543 IF g_log_enabled THEN
63544    l_log_module := C_DEFAULT_MODULE||'.EventClass_126';
63545 END IF;
63546 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63547    trace
63548       (p_msg      => 'BEGIN of EventClass_126'
63549       ,p_level    => C_LEVEL_PROCEDURE
63550       ,p_module   => l_log_module);
63551 END IF;
63552 
63553 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63554    trace
63555       (p_msg      => 'p_application_id = '||p_application_id||
63556                      ' - p_base_ledger_id = '||p_base_ledger_id||
63557                      ' - p_target_ledger_id  = '||p_target_ledger_id||
63558                      ' - p_language = '||p_language||
63559                      ' - p_currency_code = '||p_currency_code||
63560                      ' - p_sla_ledger_id = '||p_sla_ledger_id
63561       ,p_level    => C_LEVEL_STATEMENT
63562       ,p_module   => l_log_module);
63566 --
63563 END IF;
63564 --
63565 -- initialze arrays
63567 g_array_event.DELETE;
63568 l_rec_array_event := l_null_rec_array_event;
63569 --
63570 --------------------------------------
63571 -- 4262811 Initialze MPA Line Number
63572 --------------------------------------
63573 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
63574 
63575 --
63576 
63577 --
63578 OPEN header_cur;
63579 --
63580 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63581    trace
63582    (p_msg      => 'SQL - FETCH header_cur'
63583    ,p_level    => C_LEVEL_STATEMENT
63584    ,p_module   => l_log_module);
63585 END IF;
63586 --
63587 LOOP
63588 FETCH header_cur BULK COLLECT INTO
63589         l_array_entity_id
63590       , l_array_legal_entity_id
63591       , l_array_entity_code
63592       , l_array_transaction_num
63593       , l_array_event_id
63594       , l_array_class_code
63595       , l_array_event_type
63596       , l_array_event_number
63597       , l_array_event_date
63598       , l_array_transaction_date
63599       , l_array_reference_num_1
63600       , l_array_reference_num_2
63601       , l_array_reference_num_3
63602       , l_array_reference_num_4
63603       , l_array_reference_char_1
63604       , l_array_reference_char_2
63605       , l_array_reference_char_3
63606       , l_array_reference_char_4
63607       , l_array_reference_date_1
63608       , l_array_reference_date_2
63609       , l_array_reference_date_3
63610       , l_array_reference_date_4
63611       , l_array_event_created_by
63612       , l_array_budgetary_control_flag 
63613       , l_array_source_28
63614       , l_array_source_37
63615       , l_array_source_38
63616       , l_array_source_39
63617       , l_array_source_107
63618       , l_array_source_108
63619       , l_array_source_109
63620       LIMIT l_rows;
63621 --
63622 IF (C_LEVEL_EVENT >= g_log_level) THEN
63623    trace
63624    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
63625    ,p_level    => C_LEVEL_EVENT
63626    ,p_module   => l_log_module);
63627 END IF;
63628 --
63629 EXIT WHEN l_array_entity_id.COUNT = 0;
63630 
63631 -- initialize arrays
63632 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
63633 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
63634 
63635 --
63636 -- Bug 4458708
63637 --
63638 XLA_AE_LINES_PKG.g_LineNumber := 0;
63639 
63640 
63641 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
63642 g_last_hdr_idx := l_array_event_id.LAST;
63643 --
63644 -- loop for the headers. Each iteration is for each header extract row
63645 -- fetched in header cursor
63646 --
63647 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
63648 
63649 --
63650 -- set event info as cache for other routines to refer event attributes
63651 --
63652 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
63653    (p_application_id           => p_application_id
63654    ,p_primary_ledger_id        => p_primary_ledger_id
63655    ,p_base_ledger_id           => p_base_ledger_id
63656    ,p_target_ledger_id         => p_target_ledger_id
63657    ,p_entity_id                => l_array_entity_id(hdr_idx)
63658    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
63659    ,p_entity_code              => l_array_entity_code(hdr_idx)
63660    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
63661    ,p_event_id                 => l_array_event_id(hdr_idx)
63662    ,p_event_class_code         => l_array_class_code(hdr_idx)
63663    ,p_event_type_code          => l_array_event_type(hdr_idx)
63664    ,p_event_number             => l_array_event_number(hdr_idx)
63665    ,p_event_date               => l_array_event_date(hdr_idx)
63666    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
63667    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
63668    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
63669    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
63670    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
63671    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
63672    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
63673    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
63674    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
63675    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
63676    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
63677    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
63678    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
63679    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
63680    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
63681 
63682 --
63683 -- set the status of entry to C_VALID (0)
63684 --
63685 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
63686 
63687 --
63688 -- initialize a row for ae header
63689 --
63690 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
63691 
63692 l_event_id := l_array_event_id(hdr_idx);
63693 
63694 --
63695 -- storing the hdr_idx for event. May be used by line cursor.
63696 --
63697 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
63698 
63699 --
63703 
63700 -- store sources from header extract. This can be improved to
63701 -- store only those sources from header extract that may be used in lines
63702 --
63704 g_array_event(l_event_id).array_value_char('source_28') := l_array_source_28(hdr_idx);
63705 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
63706 g_array_event(l_event_id).array_value_num('source_38') := l_array_source_38(hdr_idx);
63707 g_array_event(l_event_id).array_value_char('source_39') := l_array_source_39(hdr_idx);
63708 g_array_event(l_event_id).array_value_char('source_107') := l_array_source_107(hdr_idx);
63709 g_array_event(l_event_id).array_value_num('source_108') := l_array_source_108(hdr_idx);
63710 g_array_event(l_event_id).array_value_num('source_109') := l_array_source_109(hdr_idx);
63711 
63712 --
63713 -- initilaize the status of ae headers for diffrent balance types
63714 -- the status is initialised to C_NOT_CREATED (2)
63715 --
63716 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
63717 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
63718 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
63719 
63720 --
63721 -- call api to validate and store accounting attributes for header
63722 --
63723 
63724 ------------------------------------------------------------
63725 -- Accrual Reversal : to get date for Standard Source (NONE)
63726 ------------------------------------------------------------
63727 l_acc_rev_gl_date_source := NULL;
63728 
63729      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
63730       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_107');
63731      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
63732       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_108');
63733      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
63734       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_109');
63735      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
63736       l_rec_acct_attrs.array_date_value(4) := 
63737 xla_ae_sources_pkg.GetSystemSourceDate(
63738    p_source_code           => 'XLA_EVENT_DATE'
63739  , p_source_type_code      => 'Y'
63740  , p_source_application_id =>  602
63741 );
63742 
63743 
63744 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
63745 
63746 XLA_AE_HEADER_PKG.SetJeCategoryName;
63747 
63748 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
63749 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
63750 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
63751 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
63752 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
63753 
63754 
63755 -- No header level analytical criteria
63756 
63757 --
63758 --accounting attribute enhancement, bug 3612931
63759 --
63760 l_trx_reversal_source := SUBSTR(NULL, 1,30);
63761 
63762 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
63763    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
63764 
63765    xla_accounting_err_pkg.build_message
63766       (p_appli_s_name            => 'XLA'
63767       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
63768       ,p_token_1                 => 'ACCT_ATTR_NAME'
63769       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
63770       ,p_token_2                 => 'PRODUCT_NAME'
63771       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
63772       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
63773       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
63774       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
63775 
63776 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
63777    --
63778    -- following sets the accounting attributes needed to reverse
63779    -- accounting for a distributeion
63780    --
63781    xla_ae_lines_pkg.SetTrxReversalAttrs
63782       (p_event_id              => l_event_id
63783       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
63784       ,p_trx_reversal_source   => l_trx_reversal_source);
63785 
63786 END IF;
63787 
63788 
63789 ----------------------------------------------------------------
63790 -- 4262811 -  update the header statuses to invalid in need be
63791 ----------------------------------------------------------------
63792 --
63793 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
63794 
63795 
63796   -----------------------------------------------
63797   -- No accrual reversal for the event class/type
63798   -----------------------------------------------
63799 ----------------------------------------------------------------
63800 
63801 --
63802 -- this ends the header loop iteration for one bulk fetch
63803 --
63804 END LOOP;
63805 
63806 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
63807 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
63811 -- transaction reversals
63808 
63809 --
63810 -- insert dummy rows into lines gt table that were created due to
63812 --
63813 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
63814    l_result := XLA_AE_LINES_PKG.InsertLines;
63815 END IF;
63816 
63817 --
63818 -- reset the temp_line_num for each set of events fetched from header
63819 -- cursor rather than doing it for each new event in line cursor
63820 -- Bug 3939231
63821 --
63822 xla_ae_lines_pkg.g_temp_line_num := 0;
63823 
63824 
63825 
63826 --
63827 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
63828 --
63829 --
63830 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63831 
63832       trace
63833          (p_msg      => 'SQL - FETCH line_cur'
63834          ,p_level    => C_LEVEL_STATEMENT
63835          ,p_module   => l_log_module);
63836 
63837 END IF;
63838 --
63839 --
63840 LOOP
63841   --
63842   FETCH line_cur BULK COLLECT INTO
63843         l_array_entity_id
63844       , l_array_legal_entity_id
63845       , l_array_entity_code
63846       , l_array_transaction_num
63847       , l_array_event_id
63848       , l_array_class_code
63849       , l_array_event_type
63850       , l_array_event_number
63851       , l_array_event_date
63852       , l_array_transaction_date
63853       , l_array_reference_num_1
63854       , l_array_reference_num_2
63855       , l_array_reference_num_3
63856       , l_array_reference_num_4
63857       , l_array_reference_char_1
63858       , l_array_reference_char_2
63859       , l_array_reference_char_3
63860       , l_array_reference_char_4
63861       , l_array_reference_date_1
63862       , l_array_reference_date_2
63863       , l_array_reference_date_3
63864       , l_array_reference_date_4
63865       , l_array_event_created_by
63866       , l_array_budgetary_control_flag
63867       , l_array_extract_line_num 
63868       , l_array_source_22
63869       , l_array_source_27
63870       , l_array_source_29
63871       , l_array_source_30
63872       , l_array_source_31
63873       , l_array_source_32
63874       , l_array_source_33
63875       , l_array_source_34
63876       , l_array_source_35
63877       , l_array_source_36
63878       LIMIT l_rows;
63879 
63880   --
63881   IF (C_LEVEL_EVENT >= g_log_level) THEN
63882             trace
63883                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
63884                ,p_level    => C_LEVEL_EVENT
63885                ,p_module   => l_log_module);
63886   END IF;
63887   --
63888   EXIT WHEN l_array_entity_id.count = 0;
63889 
63890   XLA_AE_LINES_PKG.g_rec_lines := null;
63891 
63892 --
63893 -- Bug 4458708
63894 --
63895 XLA_AE_LINES_PKG.g_LineNumber := 0;
63896 --
63897 --
63898 
63899 FOR Idx IN 1..l_array_event_id.count LOOP
63900    --
63901    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
63902    --
63903    l_event_id := l_array_event_id(idx);  -- 5648433
63904 
63905    --
63906    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
63907    --
63908 
63909    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
63910              (g_array_event(l_event_id).array_value_num('header_index'))
63911          ,'N'
63912          ) <> 'Y'
63913    THEN
63914       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
63915          trace
63916             (p_msg      => 'Trancaction revesal option is not Y '
63917             ,p_level    => C_LEVEL_STATEMENT
63918             ,p_module   => l_log_module);
63919       END IF;
63920 
63921 --
63922 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
63923 --
63924 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
63925 --
63926 -- set event info as cache for other routines to refer event attributes
63927 --
63928 
63929 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
63930    l_previous_event_id := l_event_id;
63931 
63932    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
63933       (p_application_id           => p_application_id
63934       ,p_primary_ledger_id        => p_primary_ledger_id
63935       ,p_base_ledger_id           => p_base_ledger_id
63936       ,p_target_ledger_id         => p_target_ledger_id
63937       ,p_entity_id                => l_array_entity_id(Idx)
63938       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
63939       ,p_entity_code              => l_array_entity_code(Idx)
63940       ,p_transaction_num          => l_array_transaction_num(Idx)
63941       ,p_event_id                 => l_array_event_id(Idx)
63942       ,p_event_class_code         => l_array_class_code(Idx)
63943       ,p_event_type_code          => l_array_event_type(Idx)
63944       ,p_event_number             => l_array_event_number(Idx)
63945       ,p_event_date               => l_array_event_date(Idx)
63946       ,p_transaction_date         => l_array_transaction_date(Idx)
63947       ,p_reference_num_1          => l_array_reference_num_1(Idx)
63948       ,p_reference_num_2          => l_array_reference_num_2(Idx)
63949       ,p_reference_num_3          => l_array_reference_num_3(Idx)
63953       ,p_reference_char_3         => l_array_reference_char_3(Idx)
63950       ,p_reference_num_4          => l_array_reference_num_4(Idx)
63951       ,p_reference_char_1         => l_array_reference_char_1(Idx)
63952       ,p_reference_char_2         => l_array_reference_char_2(Idx)
63954       ,p_reference_char_4         => l_array_reference_char_4(Idx)
63955       ,p_reference_date_1         => l_array_reference_date_1(Idx)
63956       ,p_reference_date_2         => l_array_reference_date_2(Idx)
63957       ,p_reference_date_3         => l_array_reference_date_3(Idx)
63958       ,p_reference_date_4         => l_array_reference_date_4(Idx)
63959       ,p_event_created_by         => l_array_event_created_by(Idx)
63960       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
63961        --
63962 END IF;
63963 
63964 
63965 
63966 --
63967 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
63968 
63969 l_acct_reversal_source := SUBSTR(NULL, 1,30);
63970 
63971 IF l_continue_with_lines THEN
63972    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
63973       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
63974 
63975       xla_accounting_err_pkg.build_message
63976          (p_appli_s_name            => 'XLA'
63977          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
63978          ,p_token_1                 => 'LINE_NUMBER'
63979          ,p_value_1                 => l_array_extract_line_num(Idx)
63980          ,p_token_2                 => 'PRODUCT_NAME'
63981          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
63982          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
63983          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
63984          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
63985 
63986    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
63987       --
63988       -- following sets the accounting attributes needed to reverse
63989       -- accounting for a distributeion
63990       --
63991 
63992       --
63993       -- 5217187
63994       --
63995       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
63996       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
63997                                        g_array_event(l_event_id).array_value_num('header_index'));
63998       --
63999       --
64000 
64001       -- No reversal code generated
64002 
64003       xla_ae_lines_pkg.SetAcctReversalAttrs
64004          (p_event_id             => l_event_id
64005          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
64006          ,p_calculate_acctd_flag => l_calculate_acctd_flag
64007          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
64008    END IF;
64009 
64010    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
64011        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
64012 
64013 --
64014 AcctLineType_25 (
64015  p_application_id  => p_application_id
64016  ,p_event_id     => l_event_id
64017  ,p_calculate_acctd_flag => l_calculate_acctd_flag
64018  ,p_calculate_g_l_flag => l_calculate_g_l_flag
64019  ,p_actual_flag => l_actual_flag
64020  ,p_balance_type_code => l_balance_type_code
64021  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
64022  
64023  , p_source_22 => l_array_source_22(Idx)
64024  , p_source_27 => l_array_source_27(Idx)
64025  , p_source_28 => g_array_event(l_event_id).array_value_char('source_28')
64026  , p_source_29 => l_array_source_29(Idx)
64027  , p_source_30 => l_array_source_30(Idx)
64028  , p_source_31 => l_array_source_31(Idx)
64029  , p_source_32 => l_array_source_32(Idx)
64030  , p_source_33 => l_array_source_33(Idx)
64031  , p_source_34 => l_array_source_34(Idx)
64032  , p_source_35 => l_array_source_35(Idx)
64033  , p_source_36 => l_array_source_36(Idx)
64034  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
64035  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
64036  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
64037  );
64038 If(l_balance_type_code = 'A') THEN
64039   l_actual_gain_loss_ref := l_gain_or_loss_ref;
64040 END IF;
64041 
64042 --
64043 
64044 
64045 --
64046 AcctLineType_26 (
64047  p_application_id  => p_application_id
64048  ,p_event_id     => l_event_id
64049  ,p_calculate_acctd_flag => l_calculate_acctd_flag
64050  ,p_calculate_g_l_flag => l_calculate_g_l_flag
64051  ,p_actual_flag => l_actual_flag
64052  ,p_balance_type_code => l_balance_type_code
64053  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
64054  
64055  , p_source_22 => l_array_source_22(Idx)
64056  , p_source_27 => l_array_source_27(Idx)
64057  , p_source_28 => g_array_event(l_event_id).array_value_char('source_28')
64058  , p_source_29 => l_array_source_29(Idx)
64059  , p_source_30 => l_array_source_30(Idx)
64060  , p_source_31 => l_array_source_31(Idx)
64061  , p_source_32 => l_array_source_32(Idx)
64062  , p_source_33 => l_array_source_33(Idx)
64063  , p_source_34 => l_array_source_34(Idx)
64064  , p_source_35 => l_array_source_35(Idx)
64065  , p_source_36 => l_array_source_36(Idx)
64066  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
64067  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
64068  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
64069  );
64070 If(l_balance_type_code = 'A') THEN
64074 --
64071   l_actual_gain_loss_ref := l_gain_or_loss_ref;
64072 END IF;
64073 
64075 
64076 
64077 --
64078 AcctLineType_27 (
64079  p_application_id  => p_application_id
64080  ,p_event_id     => l_event_id
64081  ,p_calculate_acctd_flag => l_calculate_acctd_flag
64082  ,p_calculate_g_l_flag => l_calculate_g_l_flag
64083  ,p_actual_flag => l_actual_flag
64084  ,p_balance_type_code => l_balance_type_code
64085  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
64086  
64087  , p_source_22 => l_array_source_22(Idx)
64088  , p_source_27 => l_array_source_27(Idx)
64089  , p_source_29 => l_array_source_29(Idx)
64090  , p_source_30 => l_array_source_30(Idx)
64091  , p_source_31 => l_array_source_31(Idx)
64092  , p_source_32 => l_array_source_32(Idx)
64093  , p_source_33 => l_array_source_33(Idx)
64094  , p_source_34 => l_array_source_34(Idx)
64095  , p_source_35 => l_array_source_35(Idx)
64096  , p_source_36 => l_array_source_36(Idx)
64097  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
64098  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
64099  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
64100  );
64101 If(l_balance_type_code = 'A') THEN
64102   l_actual_gain_loss_ref := l_gain_or_loss_ref;
64103 END IF;
64104 
64105 --
64106 
64107 
64108 --
64109 AcctLineType_28 (
64110  p_application_id  => p_application_id
64111  ,p_event_id     => l_event_id
64112  ,p_calculate_acctd_flag => l_calculate_acctd_flag
64113  ,p_calculate_g_l_flag => l_calculate_g_l_flag
64114  ,p_actual_flag => l_actual_flag
64115  ,p_balance_type_code => l_balance_type_code
64116  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
64117  
64118  , p_source_22 => l_array_source_22(Idx)
64119  , p_source_27 => l_array_source_27(Idx)
64120  , p_source_29 => l_array_source_29(Idx)
64121  , p_source_30 => l_array_source_30(Idx)
64122  , p_source_31 => l_array_source_31(Idx)
64123  , p_source_32 => l_array_source_32(Idx)
64124  , p_source_33 => l_array_source_33(Idx)
64125  , p_source_34 => l_array_source_34(Idx)
64126  , p_source_35 => l_array_source_35(Idx)
64127  , p_source_36 => l_array_source_36(Idx)
64128  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
64129  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
64130  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
64131  );
64132 If(l_balance_type_code = 'A') THEN
64133   l_actual_gain_loss_ref := l_gain_or_loss_ref;
64134 END IF;
64135 
64136 --
64137 
64138 
64139 --
64140 AcctLineType_29 (
64141  p_application_id  => p_application_id
64142  ,p_event_id     => l_event_id
64143  ,p_calculate_acctd_flag => l_calculate_acctd_flag
64144  ,p_calculate_g_l_flag => l_calculate_g_l_flag
64145  ,p_actual_flag => l_actual_flag
64146  ,p_balance_type_code => l_balance_type_code
64147  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
64148  
64149  , p_source_22 => l_array_source_22(Idx)
64150  , p_source_27 => l_array_source_27(Idx)
64151  , p_source_29 => l_array_source_29(Idx)
64152  , p_source_30 => l_array_source_30(Idx)
64153  , p_source_31 => l_array_source_31(Idx)
64154  , p_source_32 => l_array_source_32(Idx)
64155  , p_source_33 => l_array_source_33(Idx)
64156  , p_source_34 => l_array_source_34(Idx)
64157  , p_source_35 => l_array_source_35(Idx)
64158  , p_source_36 => l_array_source_36(Idx)
64159  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
64160  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
64161  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
64162  );
64163 If(l_balance_type_code = 'A') THEN
64164   l_actual_gain_loss_ref := l_gain_or_loss_ref;
64165 END IF;
64166 
64167 --
64168 
64169 
64170 --
64171 AcctLineType_30 (
64172  p_application_id  => p_application_id
64173  ,p_event_id     => l_event_id
64174  ,p_calculate_acctd_flag => l_calculate_acctd_flag
64175  ,p_calculate_g_l_flag => l_calculate_g_l_flag
64176  ,p_actual_flag => l_actual_flag
64177  ,p_balance_type_code => l_balance_type_code
64178  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
64179  
64180  , p_source_22 => l_array_source_22(Idx)
64181  , p_source_27 => l_array_source_27(Idx)
64182  , p_source_29 => l_array_source_29(Idx)
64183  , p_source_30 => l_array_source_30(Idx)
64184  , p_source_31 => l_array_source_31(Idx)
64185  , p_source_32 => l_array_source_32(Idx)
64186  , p_source_33 => l_array_source_33(Idx)
64187  , p_source_34 => l_array_source_34(Idx)
64188  , p_source_35 => l_array_source_35(Idx)
64189  , p_source_36 => l_array_source_36(Idx)
64190  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
64191  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
64192  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
64193  );
64194 If(l_balance_type_code = 'A') THEN
64195   l_actual_gain_loss_ref := l_gain_or_loss_ref;
64196 END IF;
64197 
64198 --
64199 
64200 
64201 --
64202 AcctLineType_31 (
64203  p_application_id  => p_application_id
64204  ,p_event_id     => l_event_id
64205  ,p_calculate_acctd_flag => l_calculate_acctd_flag
64206  ,p_calculate_g_l_flag => l_calculate_g_l_flag
64207  ,p_actual_flag => l_actual_flag
64208  ,p_balance_type_code => l_balance_type_code
64209  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
64210  
64214  , p_source_30 => l_array_source_30(Idx)
64211  , p_source_22 => l_array_source_22(Idx)
64212  , p_source_27 => l_array_source_27(Idx)
64213  , p_source_29 => l_array_source_29(Idx)
64215  , p_source_31 => l_array_source_31(Idx)
64216  , p_source_32 => l_array_source_32(Idx)
64217  , p_source_33 => l_array_source_33(Idx)
64218  , p_source_34 => l_array_source_34(Idx)
64219  , p_source_35 => l_array_source_35(Idx)
64220  , p_source_36 => l_array_source_36(Idx)
64221  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
64222  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
64223  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
64224  );
64225 If(l_balance_type_code = 'A') THEN
64226   l_actual_gain_loss_ref := l_gain_or_loss_ref;
64227 END IF;
64228 
64229 --
64230 
64231 
64232 --
64233 AcctLineType_32 (
64234  p_application_id  => p_application_id
64235  ,p_event_id     => l_event_id
64236  ,p_calculate_acctd_flag => l_calculate_acctd_flag
64237  ,p_calculate_g_l_flag => l_calculate_g_l_flag
64238  ,p_actual_flag => l_actual_flag
64239  ,p_balance_type_code => l_balance_type_code
64240  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
64241  
64242  , p_source_22 => l_array_source_22(Idx)
64243  , p_source_27 => l_array_source_27(Idx)
64244  , p_source_29 => l_array_source_29(Idx)
64245  , p_source_30 => l_array_source_30(Idx)
64246  , p_source_31 => l_array_source_31(Idx)
64247  , p_source_32 => l_array_source_32(Idx)
64248  , p_source_33 => l_array_source_33(Idx)
64249  , p_source_34 => l_array_source_34(Idx)
64250  , p_source_35 => l_array_source_35(Idx)
64251  , p_source_36 => l_array_source_36(Idx)
64252  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
64253  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
64254  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
64255  );
64256 If(l_balance_type_code = 'A') THEN
64257   l_actual_gain_loss_ref := l_gain_or_loss_ref;
64258 END IF;
64259 
64260 --
64261 
64262       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
64263       -- or secondary ledger that has different currency with primary
64264       -- or alc that is calculated by sla
64265       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
64266             (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'))
64267 
64268 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
64269 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
64270           AND (l_actual_flag = 'A')) THEN
64271         XLA_AE_LINES_PKG.CreateGainOrLossLines(
64272           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
64273          ,p_application_id   => p_application_id
64274          ,p_amb_context_code => 'DEFAULT'
64275          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
64276          ,p_event_class_code => C_EVENT_CLASS_CODE
64277          ,p_event_type_code  => C_EVENT_TYPE_CODE
64278          
64279          ,p_gain_ccid        => -1
64280          ,p_loss_ccid        => -1
64281 
64282          ,p_actual_flag      => l_actual_flag
64283          ,p_enc_flag         => null
64284          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
64285          ,p_enc_g_l_ref      => null
64286          );
64287       END IF;
64288    END IF;
64289 END IF;
64290 
64291    ELSE
64292       --
64293       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
64294       --
64295       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64296          trace
64297             (p_msg      => 'Trancaction revesal option is Y'
64298             ,p_level    => C_LEVEL_STATEMENT
64299             ,p_module   => l_log_module);
64300       END IF;
64301    END IF;
64302 
64303 END LOOP;
64304 l_result := XLA_AE_LINES_PKG.InsertLines ;
64305 end loop;
64306 close line_cur;
64307 
64308 
64309 --
64310 -- insert headers into xla_ae_headers_gt table
64311 --
64312 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
64313 
64314 -- insert into errors table here.
64315 
64316 END LOOP;
64317 
64318 --
64319 -- 4865292
64320 --
64321 -- Compare g_hdr_extract_count with event count in
64322 -- CreateHeadersAndLines.
64323 --
64324 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
64325 
64326 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64327    trace (p_msg     => '# rows extracted from header extract objects '
64328                     || ' (running total): '
64329                     || g_hdr_extract_count
64330          ,p_level   => C_LEVEL_STATEMENT
64331          ,p_module  => l_log_module);
64332 END IF;
64333 
64334 CLOSE header_cur;
64335 --
64336 
64337 --
64338 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64339    trace
64340       (p_msg      => 'END of EventClass_126'
64341       ,p_level    => C_LEVEL_PROCEDURE
64342       ,p_module   => l_log_module);
64343 END IF;
64344 --
64345 RETURN l_result;
64346 EXCEPTION
64347 WHEN xla_exceptions_pkg.application_exception THEN
64348    
64352 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
64349 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
64350 
64351    
64353 
64354    RAISE;
64355 
64356 WHEN NO_DATA_FOUND THEN
64357 
64358 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
64359 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
64360 
64361 FOR header_record IN header_cur
64362 LOOP
64363     l_array_header_events(header_record.event_id) := header_record.event_id;
64364 END LOOP;
64365 
64366 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
64367 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
64368 
64369 fnd_file.put_line(fnd_file.LOG, '                    ');
64370 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
64371 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
64372 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
64373 
64374 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
64375 LOOP
64376 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
64377 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
64378         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
64379 	END IF;
64380 END LOOP;
64381 
64382 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
64383 fnd_file.put_line(fnd_file.LOG, '                    ');
64384 
64385 
64386 xla_exceptions_pkg.raise_message
64387       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_126');
64388 
64389 
64390 WHEN OTHERS THEN
64391    xla_exceptions_pkg.raise_message
64392       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_126');
64393 END EventClass_126;
64394 --
64395 
64396 ---------------------------------------
64397 --
64398 -- PRIVATE PROCEDURE
64399 --         insert_sources_127
64400 --
64401 ----------------------------------------
64402 --
64403 PROCEDURE insert_sources_127(
64404                                 p_target_ledger_id       IN NUMBER
64405                               , p_language               IN VARCHAR2
64406                               , p_sla_ledger_id          IN NUMBER
64407                               , p_pad_start_date         IN DATE
64408                               , p_pad_end_date           IN DATE
64409                          )
64410 IS
64411 
64412 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BILL_ALL';
64413 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BILL';
64414 p_apps_owner                   VARCHAR2(30);
64415 l_log_module                   VARCHAR2(240);
64416 BEGIN
64417 IF g_log_enabled THEN
64418       l_log_module := C_DEFAULT_MODULE||'.insert_sources_127';
64419 END IF;
64420 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64421 
64422       trace
64423          (p_msg      => 'BEGIN of insert_sources_127'
64424          ,p_level    => C_LEVEL_PROCEDURE
64425          ,p_module   => l_log_module);
64426 
64427 END IF;
64428 
64429 -- select APPS owner
64430 SELECT oracle_username
64431   INTO p_apps_owner
64432   FROM fnd_oracle_userid
64433  WHERE read_only_flag = 'U'
64434 ;
64435 
64436 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64437       trace
64438          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
64439                         ' - p_language = '||p_language||
64440                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
64441                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
64442                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
64443                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
64444          ,p_level    => C_LEVEL_STATEMENT
64445          ,p_module   => l_log_module);
64446 END IF;
64447 
64448 
64449 --
64450 INSERT INTO xla_diag_sources --hdr2
64451 (
64452         event_id
64453       , ledger_id
64454       , sla_ledger_id
64455       , description_language
64456       , object_name
64457       , object_type_code
64458       , line_number
64459       , source_application_id
64460       , source_type_code
64461       , source_code
64462       , source_value
64463       , source_meaning
64464       , created_by
64465       , creation_date
64466       , last_update_date
64467       , last_updated_by
64468       , last_update_login
64469       , program_update_date
64470       , program_application_id
64471       , program_id
64472       , request_id
64473 )
64474 SELECT
64475         event_id
64476       , p_target_ledger_id
64477       , p_sla_ledger_id
64478       , p_language
64479       , object_name
64480       , object_type_code
64481       , line_number
64482       , source_application_id
64483       , source_type_code
64484       , source_code
64485       , SUBSTR(source_value ,1,1996)
64486       , SUBSTR(source_meaning ,1,200)
64487       , xla_environment_pkg.g_Usr_Id
64488       , TRUNC(SYSDATE)
64489       , TRUNC(SYSDATE)
64490       , xla_environment_pkg.g_Usr_Id
64494       , xla_environment_pkg.g_Prog_Id
64491       , xla_environment_pkg.g_Login_Id
64492       , TRUNC(SYSDATE)
64493       , xla_environment_pkg.g_Prog_Appl_Id
64495       , xla_environment_pkg.g_Req_Id
64496   FROM (
64497        SELECT xet.event_id                  event_id
64498             , 0                          line_number
64499             , CASE r
64500                WHEN 1 THEN 'AR_SYSTEM_PARAM_H_V' 
64501                 WHEN 2 THEN 'AR_SYSTEM_PARAM_H_V' 
64502                 WHEN 3 THEN 'AR_TRANSACTIONS_S_V' 
64503                 WHEN 4 THEN 'AR_DRAWEE_CUSTOMERS_H_V' 
64504                 WHEN 5 THEN 'AR_DRAWEE_SITE_USES_H_V' 
64505                 
64506                ELSE null
64507               END                           object_name
64508             , CASE r
64509                 WHEN 1 THEN 'HEADER' 
64510                 WHEN 2 THEN 'HEADER' 
64511                 WHEN 3 THEN 'HEADER' 
64512                 WHEN 4 THEN 'HEADER' 
64513                 WHEN 5 THEN 'HEADER' 
64514                 
64515                 ELSE null
64516               END                           object_type_code
64517             , CASE r
64518                 WHEN 1 THEN '222' 
64519                 WHEN 2 THEN '222' 
64520                 WHEN 3 THEN '222' 
64521                 WHEN 4 THEN '222' 
64522                 WHEN 5 THEN '222' 
64523                 
64524                 ELSE null
64525               END                           source_application_id
64526             , 'S'             source_type_code
64527             , CASE r
64528                 WHEN 1 THEN 'CODE_COMBINATION_ID_GAIN' 
64529                 WHEN 2 THEN 'CODE_COMBINATION_ID_LOSS' 
64530                 WHEN 3 THEN 'XLA_PARTY_TYPE' 
64531                 WHEN 4 THEN 'DRAW_CUST_ACCOUNT_ID' 
64532                 WHEN 5 THEN 'DRAW_SITE_SITE_USE_ID' 
64533                 
64534                 ELSE null
64535               END                           source_code
64536             , CASE r
64537                 WHEN 1 THEN TO_CHAR(h5.CODE_COMBINATION_ID_GAIN)
64538                 WHEN 2 THEN TO_CHAR(h5.CODE_COMBINATION_ID_LOSS)
64539                 WHEN 3 THEN TO_CHAR(h6.XLA_PARTY_TYPE)
64540                 WHEN 4 THEN TO_CHAR(h3.DRAW_CUST_ACCOUNT_ID)
64541                 WHEN 5 THEN TO_CHAR(h4.DRAW_SITE_SITE_USE_ID)
64542                 
64543                 ELSE null
64544               END                           source_value
64545             , null              source_meaning
64546          FROM xla_events_gt     xet  
64547       , AR_DRAWEE_CUSTOMERS_H_V  h3
64548       , AR_DRAWEE_SITE_USES_H_V  h4
64549       , AR_SYSTEM_PARAM_H_V  h5
64550       , AR_TRANSACTIONS_S_V  h6
64551              ,(select rownum r from all_objects where rownum <= 5 and owner = p_apps_owner)
64552          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
64553            AND xet.event_class_code = C_EVENT_CLASS_CODE
64554               AND h3.event_id = xet.event_id
64555   AND h4.event_id  = h3.event_id
64556   AND h5.event_id (+) = h3.event_id
64557   AND h6.event_id (+) = h3.event_id
64558 
64559 )
64560 ;
64561 --
64562 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64563 
64564       trace
64565          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
64566          ,p_level    => C_LEVEL_STATEMENT
64567          ,p_module   => l_log_module);
64568 
64569 END IF;
64570 --
64571 
64572 
64573 
64574 --
64575 INSERT INTO xla_diag_sources  --line2
64576 (
64577         event_id
64578       , ledger_id
64579       , sla_ledger_id
64580       , description_language
64581       , object_name
64582       , object_type_code
64583       , line_number
64584       , source_application_id
64585       , source_type_code
64586       , source_code
64587       , source_value
64588       , source_meaning
64589       , created_by
64590       , creation_date
64591       , last_update_date
64592       , last_updated_by
64593       , last_update_login
64594       , program_update_date
64595       , program_application_id
64596       , program_id
64597       , request_id
64598 )
64599 SELECT  event_id
64600       , p_target_ledger_id
64601       , p_sla_ledger_id
64602       , p_language
64603       , object_name
64604       , object_type_code
64605       , line_number
64606       , source_application_id
64607       , source_type_code
64608       , source_code
64609       , SUBSTR(source_value,1,1996)
64610       , SUBSTR(source_meaning ,1,200)
64611       , xla_environment_pkg.g_Usr_Id
64612       , TRUNC(SYSDATE)
64613       , TRUNC(SYSDATE)
64614       , xla_environment_pkg.g_Usr_Id
64615       , xla_environment_pkg.g_Login_Id
64616       , TRUNC(SYSDATE)
64617       , xla_environment_pkg.g_Prog_Appl_Id
64618       , xla_environment_pkg.g_Prog_Id
64619       , xla_environment_pkg.g_Req_Id
64620   FROM (
64621        SELECT xet.event_id                  event_id
64622             , l2.line_number                 line_number
64623             , CASE r
64624                WHEN 1 THEN 'AR_DISTRIBUTIONS_L_V' 
64625                 WHEN 2 THEN 'AR_DISTRIBUTIONS_L_V' 
64626                 WHEN 3 THEN 'AR_DISTRIBUTIONS_L_V' 
64627                 WHEN 4 THEN 'AR_DISTRIBUTIONS_L_V' 
64628                 WHEN 5 THEN 'AR_DISTRIBUTIONS_L_V' 
64629                 WHEN 6 THEN 'AR_DISTRIBUTIONS_L_V' 
64630                 WHEN 7 THEN 'AR_DISTRIBUTIONS_BASE_V' 
64634                 
64631                 WHEN 8 THEN 'AR_DISTRIBUTIONS_BASE_V' 
64632                 WHEN 9 THEN 'AR_DISTRIBUTIONS_BASE_V' 
64633                 WHEN 10 THEN 'AR_DISTRIBUTIONS_BASE_V' 
64635                ELSE null
64636               END                           object_name
64637             , CASE r
64638                 WHEN 1 THEN 'LINE' 
64639                 WHEN 2 THEN 'LINE' 
64640                 WHEN 3 THEN 'LINE' 
64641                 WHEN 4 THEN 'LINE' 
64642                 WHEN 5 THEN 'LINE' 
64643                 WHEN 6 THEN 'LINE' 
64644                 WHEN 7 THEN 'LINE' 
64645                 WHEN 8 THEN 'LINE' 
64646                 WHEN 9 THEN 'LINE' 
64647                 WHEN 10 THEN 'LINE' 
64648                 
64649                 ELSE null
64650               END                           object_type_code
64651             , CASE r
64652                 WHEN 1 THEN '222' 
64653                 WHEN 2 THEN '222' 
64654                 WHEN 3 THEN '222' 
64655                 WHEN 4 THEN '222' 
64656                 WHEN 5 THEN '222' 
64657                 WHEN 6 THEN '222' 
64658                 WHEN 7 THEN '222' 
64659                 WHEN 8 THEN '222' 
64660                 WHEN 9 THEN '222' 
64661                 WHEN 10 THEN '222' 
64662                 
64663                 ELSE null
64664               END                           source_application_id
64665             , 'S'             source_type_code
64666             , CASE r
64667                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
64668                 WHEN 2 THEN 'DIST_SOURCE_TYPE' 
64669                 WHEN 3 THEN 'DIST_LINE_ID' 
64670                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
64671                 WHEN 5 THEN 'DIST_ENT_AMT' 
64672                 WHEN 6 THEN 'DIST_CURRENCY_CODE' 
64673                 WHEN 7 THEN 'DIST_CUR_CONVERSION_DATE' 
64674                 WHEN 8 THEN 'DIST_CUR_CONVERSION_RATE' 
64675                 WHEN 9 THEN 'DIST_CUR_CONVERSION_TYPE' 
64676                 WHEN 10 THEN 'DIST_ACCTD_AMT' 
64677                 
64678                 ELSE null
64679               END                           source_code
64680             , CASE r
64681                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
64682                 WHEN 2 THEN TO_CHAR(l2.DIST_SOURCE_TYPE)
64683                 WHEN 3 THEN TO_CHAR(l2.DIST_LINE_ID)
64684                 WHEN 4 THEN TO_CHAR(l2.DISTRIBUTION_TYPE)
64685                 WHEN 5 THEN TO_CHAR(l2.DIST_ENT_AMT)
64686                 WHEN 6 THEN TO_CHAR(l2.DIST_CURRENCY_CODE)
64687                 WHEN 7 THEN TO_CHAR(l1.DIST_CUR_CONVERSION_DATE)
64688                 WHEN 8 THEN TO_CHAR(l1.DIST_CUR_CONVERSION_RATE)
64689                 WHEN 9 THEN TO_CHAR(l1.DIST_CUR_CONVERSION_TYPE)
64690                 WHEN 10 THEN TO_CHAR(l1.DIST_ACCTD_AMT)
64691                 
64692                 ELSE null
64693               END                           source_value
64694             , null              source_meaning
64695          FROM  xla_events_gt     xet  
64696         , AR_DISTRIBUTIONS_BASE_V  l1
64697         , AR_DISTRIBUTIONS_L_V  l2
64698             , (select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
64699         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
64700           AND xet.event_class_code = C_EVENT_CLASS_CODE
64701             AND l1.event_id          = xet.event_id
64702   AND l2.event_id    = l1.event_id
64703   AND l2.line_number = l1.line_number
64704 
64705 )
64706 ;
64707 --
64708 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64709 
64710       trace
64711          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
64712          ,p_level    => C_LEVEL_STATEMENT
64713          ,p_module   => l_log_module);
64714 
64715 END IF;
64716 
64717 
64718 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64719       trace
64720          (p_msg      => 'END of insert_sources_127'
64721          ,p_level    => C_LEVEL_PROCEDURE
64722          ,p_module   => l_log_module);
64723 END IF;
64724 EXCEPTION
64725   WHEN xla_exceptions_pkg.application_exception THEN
64726       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
64727             trace
64728                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
64729                ,p_level    => C_LEVEL_EXCEPTION
64730                ,p_module   => l_log_module);
64731       END IF;
64732       RAISE;
64733   WHEN OTHERS THEN
64734       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
64735             trace
64736                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
64737                ,p_level    => C_LEVEL_EXCEPTION
64738                ,p_module   => l_log_module);
64739        END IF;
64740        xla_exceptions_pkg.raise_message
64741            (p_location => 'XLA_00222_AAD_S_000017_PKG.insert_sources_127');
64742 END insert_sources_127;
64743 --
64744 
64745 ---------------------------------------
64746 --
64747 -- PRIVATE FUNCTION
64748 --         EventClass_127
64749 --
64750 ----------------------------------------
64751 --
64752 FUNCTION EventClass_127
64753        (p_application_id         IN NUMBER
64754        ,p_base_ledger_id         IN NUMBER
64755        ,p_target_ledger_id       IN NUMBER
64756        ,p_language               IN VARCHAR2
64757        ,p_currency_code          IN VARCHAR2
64758        ,p_sla_ledger_id          IN NUMBER
64759        ,p_pad_start_date         IN DATE
64763 --
64760        ,p_pad_end_date           IN DATE
64761        ,p_primary_ledger_id      IN NUMBER)
64762 RETURN BOOLEAN IS
64764 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BILL_ALL';
64765 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BILL';
64766 
64767 l_calculate_acctd_flag   VARCHAR2(1) :='N';
64768 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
64769 --
64770 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64771 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64772 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
64773 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64774 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64775 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
64776 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
64777 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64778 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64779 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64780 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64781 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64782 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64783 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
64784 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64785 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64786 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64787 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
64788 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64789 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64790 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64791 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
64792 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
64793 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
64794 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
64795 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
64796 
64797 l_event_id                             NUMBER;
64798 l_previous_event_id                    NUMBER;
64799 l_first_event_id                       NUMBER;
64800 l_last_event_id                        NUMBER;
64801 
64802 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
64803 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
64804 --
64805 --
64806 l_result                    BOOLEAN := TRUE;
64807 l_rows                      NUMBER  := 1000;
64808 l_event_type_name           VARCHAR2(80) := 'All';
64809 l_event_class_name          VARCHAR2(80) := 'Bills Receivable';
64810 l_description               VARCHAR2(4000);
64811 l_transaction_reversal      NUMBER;
64812 l_ae_header_id              NUMBER;
64813 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
64814 l_log_module                VARCHAR2(240);
64815 --
64816 l_acct_reversal_source      VARCHAR2(30);
64817 l_trx_reversal_source       VARCHAR2(30);
64818 
64819 l_continue_with_lines       BOOLEAN := TRUE;
64820 --
64821 l_acc_rev_gl_date_source    DATE;                      -- 4262811
64822 --
64823 type t_array_event_id is table of number index by binary_integer;
64824 
64825 l_rec_array_event                    t_rec_array_event;
64826 l_null_rec_array_event               t_rec_array_event;
64827 l_array_ae_header_id                 xla_number_array_type;
64828 l_actual_flag                        VARCHAR2(1) := NULL;
64829 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
64830 l_balance_type_code                  VARCHAR2(1) :=NULL;
64831 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
64832 
64833 --
64834 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
64835 --
64836 
64837 TYPE t_array_source_24 IS TABLE OF AR_SYSTEM_PARAM_H_V.CODE_COMBINATION_ID_GAIN%TYPE INDEX BY BINARY_INTEGER;
64838 TYPE t_array_source_25 IS TABLE OF AR_SYSTEM_PARAM_H_V.CODE_COMBINATION_ID_LOSS%TYPE INDEX BY BINARY_INTEGER;
64839 TYPE t_array_source_39 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
64840 TYPE t_array_source_41 IS TABLE OF AR_DRAWEE_CUSTOMERS_H_V.DRAW_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
64841 TYPE t_array_source_42 IS TABLE OF AR_DRAWEE_SITE_USES_H_V.DRAW_SITE_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
64842 
64843 TYPE t_array_source_22 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
64844 TYPE t_array_source_27 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_SOURCE_TYPE%TYPE INDEX BY BINARY_INTEGER;
64845 TYPE t_array_source_29 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
64846 TYPE t_array_source_30 IS TABLE OF AR_DISTRIBUTIONS_L_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
64847 TYPE t_array_source_31 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_ENT_AMT%TYPE INDEX BY BINARY_INTEGER;
64848 TYPE t_array_source_32 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
64849 TYPE t_array_source_33 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
64850 TYPE t_array_source_34 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
64854 l_array_source_24              t_array_source_24;
64851 TYPE t_array_source_35 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
64852 TYPE t_array_source_40 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
64853 
64855 l_array_source_25              t_array_source_25;
64856 l_array_source_39              t_array_source_39;
64857 l_array_source_41              t_array_source_41;
64858 l_array_source_42              t_array_source_42;
64859 
64860 l_array_source_22      t_array_source_22;
64861 l_array_source_27      t_array_source_27;
64862 l_array_source_29      t_array_source_29;
64863 l_array_source_30      t_array_source_30;
64864 l_array_source_31      t_array_source_31;
64865 l_array_source_32      t_array_source_32;
64866 l_array_source_33      t_array_source_33;
64867 l_array_source_34      t_array_source_34;
64868 l_array_source_35      t_array_source_35;
64869 l_array_source_40      t_array_source_40;
64870 
64871 --
64872 CURSOR header_cur
64873 IS
64874 SELECT /*+ leading(xet) cardinality(xet,1) */
64875 -- Event Class Code: BILL
64876     xet.entity_id
64877    ,xet.legal_entity_id
64878    ,xet.entity_code
64879    ,xet.transaction_number
64880    ,xet.event_id
64881    ,xet.event_class_code
64882    ,xet.event_type_code
64883    ,xet.event_number
64884    ,xet.event_date
64885    ,xet.transaction_date
64886    ,xet.reference_num_1
64887    ,xet.reference_num_2
64888    ,xet.reference_num_3
64889    ,xet.reference_num_4
64890    ,xet.reference_char_1
64891    ,xet.reference_char_2
64892    ,xet.reference_char_3
64893    ,xet.reference_char_4
64894    ,xet.reference_date_1
64895    ,xet.reference_date_2
64896    ,xet.reference_date_3
64897    ,xet.reference_date_4
64898    ,xet.event_created_by
64899    ,xet.budgetary_control_flag 
64900   , h5.CODE_COMBINATION_ID_GAIN    source_24
64901   , h5.CODE_COMBINATION_ID_LOSS    source_25
64902   , h6.XLA_PARTY_TYPE    source_39
64903   , h3.DRAW_CUST_ACCOUNT_ID    source_41
64904   , h4.DRAW_SITE_SITE_USE_ID    source_42
64905   FROM xla_events_gt     xet 
64906   , AR_DRAWEE_CUSTOMERS_H_V  h3
64907   , AR_DRAWEE_SITE_USES_H_V  h4
64908   , AR_SYSTEM_PARAM_H_V  h5
64909   , AR_TRANSACTIONS_S_V  h6
64910  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
64911    and xet.event_class_code = C_EVENT_CLASS_CODE
64912    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
64913   AND h4.event_id  = h3.event_id
64914   AND h5.event_id (+) = h3.event_id
64915   AND h6.event_id (+) = h3.event_id
64916 
64917  ORDER BY event_id
64918 ;
64919 
64920 
64921 --
64922 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
64923 IS
64924 SELECT  /*+ leading(xet) cardinality(xet,1) */
64925 -- Event Class Code: BILL
64926     xet.entity_id
64927    ,xet.legal_entity_id
64928    ,xet.entity_code
64929    ,xet.transaction_number
64930    ,xet.event_id
64931    ,xet.event_class_code
64932    ,xet.event_type_code
64933    ,xet.event_number
64934    ,xet.event_date
64935    ,xet.transaction_date
64936    ,xet.reference_num_1
64937    ,xet.reference_num_2
64938    ,xet.reference_num_3
64939    ,xet.reference_num_4
64940    ,xet.reference_char_1
64941    ,xet.reference_char_2
64942    ,xet.reference_char_3
64943    ,xet.reference_char_4
64944    ,xet.reference_date_1
64945    ,xet.reference_date_2
64946    ,xet.reference_date_3
64947    ,xet.reference_date_4
64948    ,xet.event_created_by
64949    ,xet.budgetary_control_flag
64950  , l1.LINE_NUMBER  
64951   , l2.DIST_CODE_COMBINATION_ID    source_22
64952   , l2.DIST_SOURCE_TYPE    source_27
64953   , l2.DIST_LINE_ID    source_29
64954   , l2.DISTRIBUTION_TYPE    source_30
64955   , l2.DIST_ENT_AMT    source_31
64956   , l2.DIST_CURRENCY_CODE    source_32
64957   , l1.DIST_CUR_CONVERSION_DATE    source_33
64958   , l1.DIST_CUR_CONVERSION_RATE    source_34
64959   , l1.DIST_CUR_CONVERSION_TYPE    source_35
64960   , l1.DIST_ACCTD_AMT    source_40
64961   FROM xla_events_gt     xet 
64962   , AR_DISTRIBUTIONS_BASE_V  l1
64963   , AR_DISTRIBUTIONS_L_V  l2
64964  WHERE xet.event_id between x_first_event_id and x_last_event_id
64965    and xet.event_date between p_pad_start_date and p_pad_end_date
64966    and xet.event_class_code = C_EVENT_CLASS_CODE
64967    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
64968   AND l2.event_id    = l1.event_id
64969   AND l2.line_number = l1.line_number
64970 ;
64971 
64972 --
64973 BEGIN
64974 IF g_log_enabled THEN
64975    l_log_module := C_DEFAULT_MODULE||'.EventClass_127';
64976 END IF;
64977 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64978    trace
64979       (p_msg      => 'BEGIN of EventClass_127'
64980       ,p_level    => C_LEVEL_PROCEDURE
64981       ,p_module   => l_log_module);
64982 END IF;
64983 
64984 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
64985    trace
64986       (p_msg      => 'p_application_id = '||p_application_id||
64987                      ' - p_base_ledger_id = '||p_base_ledger_id||
64988                      ' - p_target_ledger_id  = '||p_target_ledger_id||
64989                      ' - p_language = '||p_language||
64990                      ' - p_currency_code = '||p_currency_code||
64994 END IF;
64991                      ' - p_sla_ledger_id = '||p_sla_ledger_id
64992       ,p_level    => C_LEVEL_STATEMENT
64993       ,p_module   => l_log_module);
64995 --
64996 -- initialze arrays
64997 --
64998 g_array_event.DELETE;
64999 l_rec_array_event := l_null_rec_array_event;
65000 --
65001 --------------------------------------
65002 -- 4262811 Initialze MPA Line Number
65003 --------------------------------------
65004 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
65005 
65006 --
65007 
65008 --
65009 OPEN header_cur;
65010 --
65011 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65012    trace
65013    (p_msg      => 'SQL - FETCH header_cur'
65014    ,p_level    => C_LEVEL_STATEMENT
65015    ,p_module   => l_log_module);
65016 END IF;
65017 --
65018 LOOP
65019 FETCH header_cur BULK COLLECT INTO
65020         l_array_entity_id
65021       , l_array_legal_entity_id
65022       , l_array_entity_code
65023       , l_array_transaction_num
65024       , l_array_event_id
65025       , l_array_class_code
65026       , l_array_event_type
65027       , l_array_event_number
65028       , l_array_event_date
65029       , l_array_transaction_date
65030       , l_array_reference_num_1
65031       , l_array_reference_num_2
65032       , l_array_reference_num_3
65033       , l_array_reference_num_4
65034       , l_array_reference_char_1
65035       , l_array_reference_char_2
65036       , l_array_reference_char_3
65037       , l_array_reference_char_4
65038       , l_array_reference_date_1
65039       , l_array_reference_date_2
65040       , l_array_reference_date_3
65041       , l_array_reference_date_4
65042       , l_array_event_created_by
65043       , l_array_budgetary_control_flag 
65044       , l_array_source_24
65045       , l_array_source_25
65046       , l_array_source_39
65047       , l_array_source_41
65048       , l_array_source_42
65049       LIMIT l_rows;
65050 --
65051 IF (C_LEVEL_EVENT >= g_log_level) THEN
65052    trace
65053    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
65054    ,p_level    => C_LEVEL_EVENT
65055    ,p_module   => l_log_module);
65056 END IF;
65057 --
65058 EXIT WHEN l_array_entity_id.COUNT = 0;
65059 
65060 -- initialize arrays
65061 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
65062 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
65063 
65064 --
65065 -- Bug 4458708
65066 --
65067 XLA_AE_LINES_PKG.g_LineNumber := 0;
65068 
65069 
65070 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
65071 g_last_hdr_idx := l_array_event_id.LAST;
65072 --
65073 -- loop for the headers. Each iteration is for each header extract row
65074 -- fetched in header cursor
65075 --
65076 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
65077 
65078 --
65079 -- set event info as cache for other routines to refer event attributes
65080 --
65081 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
65082    (p_application_id           => p_application_id
65083    ,p_primary_ledger_id        => p_primary_ledger_id
65084    ,p_base_ledger_id           => p_base_ledger_id
65085    ,p_target_ledger_id         => p_target_ledger_id
65086    ,p_entity_id                => l_array_entity_id(hdr_idx)
65087    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
65088    ,p_entity_code              => l_array_entity_code(hdr_idx)
65089    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
65090    ,p_event_id                 => l_array_event_id(hdr_idx)
65091    ,p_event_class_code         => l_array_class_code(hdr_idx)
65092    ,p_event_type_code          => l_array_event_type(hdr_idx)
65093    ,p_event_number             => l_array_event_number(hdr_idx)
65094    ,p_event_date               => l_array_event_date(hdr_idx)
65095    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
65096    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
65097    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
65098    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
65099    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
65100    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
65101    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
65102    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
65103    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
65104    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
65105    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
65106    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
65107    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
65108    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
65109    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
65110 
65111 --
65112 -- set the status of entry to C_VALID (0)
65113 --
65114 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
65115 
65116 --
65117 -- initialize a row for ae header
65118 --
65119 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
65120 
65121 l_event_id := l_array_event_id(hdr_idx);
65122 
65123 --
65124 -- storing the hdr_idx for event. May be used by line cursor.
65125 --
65126 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
65127 
65128 --
65132 
65129 -- store sources from header extract. This can be improved to
65130 -- store only those sources from header extract that may be used in lines
65131 --
65133 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
65134 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
65135 g_array_event(l_event_id).array_value_char('source_39') := l_array_source_39(hdr_idx);
65136 g_array_event(l_event_id).array_value_num('source_41') := l_array_source_41(hdr_idx);
65137 g_array_event(l_event_id).array_value_num('source_42') := l_array_source_42(hdr_idx);
65138 
65139 --
65140 -- initilaize the status of ae headers for diffrent balance types
65141 -- the status is initialised to C_NOT_CREATED (2)
65142 --
65143 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
65144 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
65145 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
65146 
65147 --
65148 -- call api to validate and store accounting attributes for header
65149 --
65150 
65151 ------------------------------------------------------------
65152 -- Accrual Reversal : to get date for Standard Source (NONE)
65153 ------------------------------------------------------------
65154 l_acc_rev_gl_date_source := NULL;
65155 
65156      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
65157       l_rec_acct_attrs.array_date_value(1) := 
65158 xla_ae_sources_pkg.GetSystemSourceDate(
65159    p_source_code           => 'XLA_EVENT_DATE'
65160  , p_source_type_code      => 'Y'
65161  , p_source_application_id =>  602
65162 );
65163 
65164 
65165 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
65166 
65167 XLA_AE_HEADER_PKG.SetJeCategoryName;
65168 
65169 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
65170 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
65171 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
65172 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
65173 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
65174 
65175 
65176 -- No header level analytical criteria
65177 
65178 --
65179 --accounting attribute enhancement, bug 3612931
65180 --
65181 l_trx_reversal_source := SUBSTR(NULL, 1,30);
65182 
65183 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
65184    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
65185 
65186    xla_accounting_err_pkg.build_message
65187       (p_appli_s_name            => 'XLA'
65188       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
65189       ,p_token_1                 => 'ACCT_ATTR_NAME'
65190       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
65191       ,p_token_2                 => 'PRODUCT_NAME'
65192       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
65193       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
65194       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
65195       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
65196 
65197 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
65198    --
65199    -- following sets the accounting attributes needed to reverse
65200    -- accounting for a distributeion
65201    --
65202    xla_ae_lines_pkg.SetTrxReversalAttrs
65203       (p_event_id              => l_event_id
65204       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
65205       ,p_trx_reversal_source   => l_trx_reversal_source);
65206 
65207 END IF;
65208 
65209 
65210 ----------------------------------------------------------------
65211 -- 4262811 -  update the header statuses to invalid in need be
65212 ----------------------------------------------------------------
65213 --
65214 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
65215 
65216 
65217   -----------------------------------------------
65218   -- No accrual reversal for the event class/type
65219   -----------------------------------------------
65220 ----------------------------------------------------------------
65221 
65222 --
65223 -- this ends the header loop iteration for one bulk fetch
65224 --
65225 END LOOP;
65226 
65227 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
65228 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
65229 
65230 --
65231 -- insert dummy rows into lines gt table that were created due to
65232 -- transaction reversals
65233 --
65234 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
65235    l_result := XLA_AE_LINES_PKG.InsertLines;
65236 END IF;
65237 
65238 --
65239 -- reset the temp_line_num for each set of events fetched from header
65240 -- cursor rather than doing it for each new event in line cursor
65241 -- Bug 3939231
65242 --
65243 xla_ae_lines_pkg.g_temp_line_num := 0;
65244 
65245 
65246 
65247 --
65248 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
65249 --
65250 --
65251 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65252 
65256          ,p_module   => l_log_module);
65253       trace
65254          (p_msg      => 'SQL - FETCH line_cur'
65255          ,p_level    => C_LEVEL_STATEMENT
65257 
65258 END IF;
65259 --
65260 --
65261 LOOP
65262   --
65263   FETCH line_cur BULK COLLECT INTO
65264         l_array_entity_id
65265       , l_array_legal_entity_id
65266       , l_array_entity_code
65267       , l_array_transaction_num
65268       , l_array_event_id
65269       , l_array_class_code
65270       , l_array_event_type
65271       , l_array_event_number
65272       , l_array_event_date
65273       , l_array_transaction_date
65274       , l_array_reference_num_1
65275       , l_array_reference_num_2
65276       , l_array_reference_num_3
65277       , l_array_reference_num_4
65278       , l_array_reference_char_1
65279       , l_array_reference_char_2
65280       , l_array_reference_char_3
65281       , l_array_reference_char_4
65282       , l_array_reference_date_1
65283       , l_array_reference_date_2
65284       , l_array_reference_date_3
65285       , l_array_reference_date_4
65286       , l_array_event_created_by
65287       , l_array_budgetary_control_flag
65288       , l_array_extract_line_num 
65289       , l_array_source_22
65290       , l_array_source_27
65291       , l_array_source_29
65292       , l_array_source_30
65293       , l_array_source_31
65294       , l_array_source_32
65295       , l_array_source_33
65296       , l_array_source_34
65297       , l_array_source_35
65298       , l_array_source_40
65299       LIMIT l_rows;
65300 
65301   --
65302   IF (C_LEVEL_EVENT >= g_log_level) THEN
65303             trace
65304                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
65305                ,p_level    => C_LEVEL_EVENT
65306                ,p_module   => l_log_module);
65307   END IF;
65308   --
65309   EXIT WHEN l_array_entity_id.count = 0;
65310 
65311   XLA_AE_LINES_PKG.g_rec_lines := null;
65312 
65313 --
65314 -- Bug 4458708
65315 --
65316 XLA_AE_LINES_PKG.g_LineNumber := 0;
65317 --
65318 --
65319 
65320 FOR Idx IN 1..l_array_event_id.count LOOP
65321    --
65322    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
65323    --
65324    l_event_id := l_array_event_id(idx);  -- 5648433
65325 
65326    --
65327    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
65328    --
65329 
65330    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
65331              (g_array_event(l_event_id).array_value_num('header_index'))
65332          ,'N'
65333          ) <> 'Y'
65334    THEN
65335       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65336          trace
65337             (p_msg      => 'Trancaction revesal option is not Y '
65338             ,p_level    => C_LEVEL_STATEMENT
65339             ,p_module   => l_log_module);
65340       END IF;
65341 
65342 --
65343 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
65344 --
65345 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
65346 --
65347 -- set event info as cache for other routines to refer event attributes
65348 --
65349 
65350 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
65351    l_previous_event_id := l_event_id;
65352 
65353    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
65354       (p_application_id           => p_application_id
65355       ,p_primary_ledger_id        => p_primary_ledger_id
65356       ,p_base_ledger_id           => p_base_ledger_id
65357       ,p_target_ledger_id         => p_target_ledger_id
65358       ,p_entity_id                => l_array_entity_id(Idx)
65359       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
65360       ,p_entity_code              => l_array_entity_code(Idx)
65361       ,p_transaction_num          => l_array_transaction_num(Idx)
65362       ,p_event_id                 => l_array_event_id(Idx)
65363       ,p_event_class_code         => l_array_class_code(Idx)
65364       ,p_event_type_code          => l_array_event_type(Idx)
65365       ,p_event_number             => l_array_event_number(Idx)
65366       ,p_event_date               => l_array_event_date(Idx)
65367       ,p_transaction_date         => l_array_transaction_date(Idx)
65368       ,p_reference_num_1          => l_array_reference_num_1(Idx)
65369       ,p_reference_num_2          => l_array_reference_num_2(Idx)
65370       ,p_reference_num_3          => l_array_reference_num_3(Idx)
65371       ,p_reference_num_4          => l_array_reference_num_4(Idx)
65372       ,p_reference_char_1         => l_array_reference_char_1(Idx)
65373       ,p_reference_char_2         => l_array_reference_char_2(Idx)
65374       ,p_reference_char_3         => l_array_reference_char_3(Idx)
65375       ,p_reference_char_4         => l_array_reference_char_4(Idx)
65376       ,p_reference_date_1         => l_array_reference_date_1(Idx)
65377       ,p_reference_date_2         => l_array_reference_date_2(Idx)
65378       ,p_reference_date_3         => l_array_reference_date_3(Idx)
65379       ,p_reference_date_4         => l_array_reference_date_4(Idx)
65380       ,p_event_created_by         => l_array_event_created_by(Idx)
65381       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
65382        --
65383 END IF;
65384 
65385 
65386 
65387 --
65391 
65388 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
65389 
65390 l_acct_reversal_source := SUBSTR(NULL, 1,30);
65392 IF l_continue_with_lines THEN
65393    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
65394       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
65395 
65396       xla_accounting_err_pkg.build_message
65397          (p_appli_s_name            => 'XLA'
65398          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
65399          ,p_token_1                 => 'LINE_NUMBER'
65400          ,p_value_1                 => l_array_extract_line_num(Idx)
65401          ,p_token_2                 => 'PRODUCT_NAME'
65402          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
65403          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
65404          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
65405          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
65406 
65407    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
65408       --
65409       -- following sets the accounting attributes needed to reverse
65410       -- accounting for a distributeion
65411       --
65412 
65413       --
65414       -- 5217187
65415       --
65416       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
65417       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
65418                                        g_array_event(l_event_id).array_value_num('header_index'));
65419       --
65420       --
65421 
65422       -- No reversal code generated
65423 
65424       xla_ae_lines_pkg.SetAcctReversalAttrs
65425          (p_event_id             => l_event_id
65426          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
65427          ,p_calculate_acctd_flag => l_calculate_acctd_flag
65428          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
65429    END IF;
65430 
65431    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
65432        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
65433 
65434 --
65435 AcctLineType_33 (
65436  p_application_id  => p_application_id
65437  ,p_event_id     => l_event_id
65438  ,p_calculate_acctd_flag => l_calculate_acctd_flag
65439  ,p_calculate_g_l_flag => l_calculate_g_l_flag
65440  ,p_actual_flag => l_actual_flag
65441  ,p_balance_type_code => l_balance_type_code
65442  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
65443  
65444  , p_source_22 => l_array_source_22(Idx)
65445  , p_source_27 => l_array_source_27(Idx)
65446  , p_source_29 => l_array_source_29(Idx)
65447  , p_source_30 => l_array_source_30(Idx)
65448  , p_source_31 => l_array_source_31(Idx)
65449  , p_source_32 => l_array_source_32(Idx)
65450  , p_source_33 => l_array_source_33(Idx)
65451  , p_source_34 => l_array_source_34(Idx)
65452  , p_source_35 => l_array_source_35(Idx)
65453  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
65454  , p_source_40 => l_array_source_40(Idx)
65455  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
65456  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
65457  );
65458 If(l_balance_type_code = 'A') THEN
65459   l_actual_gain_loss_ref := l_gain_or_loss_ref;
65460 END IF;
65461 
65462 --
65463 
65464 
65465 --
65466 AcctLineType_34 (
65467  p_application_id  => p_application_id
65468  ,p_event_id     => l_event_id
65469  ,p_calculate_acctd_flag => l_calculate_acctd_flag
65470  ,p_calculate_g_l_flag => l_calculate_g_l_flag
65471  ,p_actual_flag => l_actual_flag
65472  ,p_balance_type_code => l_balance_type_code
65473  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
65474  
65475  , p_source_22 => l_array_source_22(Idx)
65476  , p_source_27 => l_array_source_27(Idx)
65477  , p_source_29 => l_array_source_29(Idx)
65478  , p_source_30 => l_array_source_30(Idx)
65479  , p_source_31 => l_array_source_31(Idx)
65480  , p_source_32 => l_array_source_32(Idx)
65481  , p_source_33 => l_array_source_33(Idx)
65482  , p_source_34 => l_array_source_34(Idx)
65483  , p_source_35 => l_array_source_35(Idx)
65484  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
65485  , p_source_40 => l_array_source_40(Idx)
65486  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
65487  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
65488  );
65489 If(l_balance_type_code = 'A') THEN
65490   l_actual_gain_loss_ref := l_gain_or_loss_ref;
65491 END IF;
65492 
65493 --
65494 
65495 
65496 --
65497 AcctLineType_35 (
65498  p_application_id  => p_application_id
65499  ,p_event_id     => l_event_id
65500  ,p_calculate_acctd_flag => l_calculate_acctd_flag
65501  ,p_calculate_g_l_flag => l_calculate_g_l_flag
65502  ,p_actual_flag => l_actual_flag
65503  ,p_balance_type_code => l_balance_type_code
65504  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
65505  
65506  , p_source_22 => l_array_source_22(Idx)
65507  , p_source_27 => l_array_source_27(Idx)
65508  , p_source_29 => l_array_source_29(Idx)
65509  , p_source_30 => l_array_source_30(Idx)
65510  , p_source_31 => l_array_source_31(Idx)
65511  , p_source_32 => l_array_source_32(Idx)
65512  , p_source_33 => l_array_source_33(Idx)
65513  , p_source_34 => l_array_source_34(Idx)
65517  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
65514  , p_source_35 => l_array_source_35(Idx)
65515  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
65516  , p_source_40 => l_array_source_40(Idx)
65518  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
65519  );
65520 If(l_balance_type_code = 'A') THEN
65521   l_actual_gain_loss_ref := l_gain_or_loss_ref;
65522 END IF;
65523 
65524 --
65525 
65526 
65527 --
65528 AcctLineType_36 (
65529  p_application_id  => p_application_id
65530  ,p_event_id     => l_event_id
65531  ,p_calculate_acctd_flag => l_calculate_acctd_flag
65532  ,p_calculate_g_l_flag => l_calculate_g_l_flag
65533  ,p_actual_flag => l_actual_flag
65534  ,p_balance_type_code => l_balance_type_code
65535  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
65536  
65537  , p_source_22 => l_array_source_22(Idx)
65538  , p_source_27 => l_array_source_27(Idx)
65539  , p_source_29 => l_array_source_29(Idx)
65540  , p_source_30 => l_array_source_30(Idx)
65541  , p_source_31 => l_array_source_31(Idx)
65542  , p_source_32 => l_array_source_32(Idx)
65543  , p_source_33 => l_array_source_33(Idx)
65544  , p_source_34 => l_array_source_34(Idx)
65545  , p_source_35 => l_array_source_35(Idx)
65546  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
65547  , p_source_40 => l_array_source_40(Idx)
65548  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
65549  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
65550  );
65551 If(l_balance_type_code = 'A') THEN
65552   l_actual_gain_loss_ref := l_gain_or_loss_ref;
65553 END IF;
65554 
65555 --
65556 
65557 
65558 --
65559 AcctLineType_37 (
65560  p_application_id  => p_application_id
65561  ,p_event_id     => l_event_id
65562  ,p_calculate_acctd_flag => l_calculate_acctd_flag
65563  ,p_calculate_g_l_flag => l_calculate_g_l_flag
65564  ,p_actual_flag => l_actual_flag
65565  ,p_balance_type_code => l_balance_type_code
65566  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
65567  
65568  , p_source_22 => l_array_source_22(Idx)
65569  , p_source_27 => l_array_source_27(Idx)
65570  , p_source_29 => l_array_source_29(Idx)
65571  , p_source_30 => l_array_source_30(Idx)
65572  , p_source_31 => l_array_source_31(Idx)
65573  , p_source_32 => l_array_source_32(Idx)
65574  , p_source_33 => l_array_source_33(Idx)
65575  , p_source_34 => l_array_source_34(Idx)
65576  , p_source_35 => l_array_source_35(Idx)
65577  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
65578  , p_source_40 => l_array_source_40(Idx)
65579  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
65580  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
65581  );
65582 If(l_balance_type_code = 'A') THEN
65583   l_actual_gain_loss_ref := l_gain_or_loss_ref;
65584 END IF;
65585 
65586 --
65587 
65588 
65589 --
65590 AcctLineType_38 (
65591  p_application_id  => p_application_id
65592  ,p_event_id     => l_event_id
65593  ,p_calculate_acctd_flag => l_calculate_acctd_flag
65594  ,p_calculate_g_l_flag => l_calculate_g_l_flag
65595  ,p_actual_flag => l_actual_flag
65596  ,p_balance_type_code => l_balance_type_code
65597  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
65598  
65599  , p_source_22 => l_array_source_22(Idx)
65600  , p_source_27 => l_array_source_27(Idx)
65601  , p_source_29 => l_array_source_29(Idx)
65602  , p_source_30 => l_array_source_30(Idx)
65603  , p_source_31 => l_array_source_31(Idx)
65604  , p_source_32 => l_array_source_32(Idx)
65605  , p_source_33 => l_array_source_33(Idx)
65606  , p_source_34 => l_array_source_34(Idx)
65607  , p_source_35 => l_array_source_35(Idx)
65608  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
65609  , p_source_40 => l_array_source_40(Idx)
65610  , p_source_41 => g_array_event(l_event_id).array_value_num('source_41')
65611  , p_source_42 => g_array_event(l_event_id).array_value_num('source_42')
65612  );
65613 If(l_balance_type_code = 'A') THEN
65614   l_actual_gain_loss_ref := l_gain_or_loss_ref;
65615 END IF;
65616 
65617 --
65618 
65619       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
65620       -- or secondary ledger that has different currency with primary
65621       -- or alc that is calculated by sla
65622       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
65623             (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'))
65624 
65625 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
65626 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
65627           AND (l_actual_flag = 'A')) THEN
65628         XLA_AE_LINES_PKG.CreateGainOrLossLines(
65629           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
65630          ,p_application_id   => p_application_id
65631          ,p_amb_context_code => 'DEFAULT'
65632          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
65633          ,p_event_class_code => C_EVENT_CLASS_CODE
65634          ,p_event_type_code  => C_EVENT_TYPE_CODE
65635          
65636          ,p_gain_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_24'))
65640          ,p_enc_flag         => null
65637          ,p_loss_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_25'))
65638 
65639          ,p_actual_flag      => l_actual_flag
65641          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
65642          ,p_enc_g_l_ref      => null
65643          );
65644       END IF;
65645    END IF;
65646 END IF;
65647 
65648    ELSE
65649       --
65650       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
65651       --
65652       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65653          trace
65654             (p_msg      => 'Trancaction revesal option is Y'
65655             ,p_level    => C_LEVEL_STATEMENT
65656             ,p_module   => l_log_module);
65657       END IF;
65658    END IF;
65659 
65660 END LOOP;
65661 l_result := XLA_AE_LINES_PKG.InsertLines ;
65662 end loop;
65663 close line_cur;
65664 
65665 
65666 --
65667 -- insert headers into xla_ae_headers_gt table
65668 --
65669 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
65670 
65671 -- insert into errors table here.
65672 
65673 END LOOP;
65674 
65675 --
65676 -- 4865292
65677 --
65678 -- Compare g_hdr_extract_count with event count in
65679 -- CreateHeadersAndLines.
65680 --
65681 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
65682 
65683 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65684    trace (p_msg     => '# rows extracted from header extract objects '
65685                     || ' (running total): '
65686                     || g_hdr_extract_count
65687          ,p_level   => C_LEVEL_STATEMENT
65688          ,p_module  => l_log_module);
65689 END IF;
65690 
65691 CLOSE header_cur;
65692 --
65693 
65694 --
65695 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65696    trace
65697       (p_msg      => 'END of EventClass_127'
65698       ,p_level    => C_LEVEL_PROCEDURE
65699       ,p_module   => l_log_module);
65700 END IF;
65701 --
65702 RETURN l_result;
65703 EXCEPTION
65704 WHEN xla_exceptions_pkg.application_exception THEN
65705    
65706 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
65707 
65708    
65709 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
65710 
65711    RAISE;
65712 
65713 WHEN NO_DATA_FOUND THEN
65714 
65715 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
65716 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
65717 
65718 FOR header_record IN header_cur
65719 LOOP
65720     l_array_header_events(header_record.event_id) := header_record.event_id;
65721 END LOOP;
65722 
65723 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
65724 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
65725 
65726 fnd_file.put_line(fnd_file.LOG, '                    ');
65727 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
65728 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
65729 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
65730 
65731 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
65732 LOOP
65733 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
65734 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
65735         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
65736 	END IF;
65737 END LOOP;
65738 
65739 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
65740 fnd_file.put_line(fnd_file.LOG, '                    ');
65741 
65742 
65743 xla_exceptions_pkg.raise_message
65744       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_127');
65745 
65746 
65747 WHEN OTHERS THEN
65748    xla_exceptions_pkg.raise_message
65749       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_127');
65750 END EventClass_127;
65751 --
65752 
65753 ---------------------------------------
65754 --
65755 -- PRIVATE PROCEDURE
65756 --         insert_sources_128
65757 --
65758 ----------------------------------------
65759 --
65760 PROCEDURE insert_sources_128(
65761                                 p_target_ledger_id       IN NUMBER
65762                               , p_language               IN VARCHAR2
65763                               , p_sla_ledger_id          IN NUMBER
65764                               , p_pad_start_date         IN DATE
65765                               , p_pad_end_date           IN DATE
65766                          )
65767 IS
65768 
65769 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CHARGEBACK_ALL';
65770 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'CHARGEBACK';
65771 p_apps_owner                   VARCHAR2(30);
65772 l_log_module                   VARCHAR2(240);
65773 BEGIN
65774 IF g_log_enabled THEN
65775       l_log_module := C_DEFAULT_MODULE||'.insert_sources_128';
65776 END IF;
65777 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65778 
65779       trace
65780          (p_msg      => 'BEGIN of insert_sources_128'
65781          ,p_level    => C_LEVEL_PROCEDURE
65782          ,p_module   => l_log_module);
65783 
65784 END IF;
65785 
65786 -- select APPS owner
65790  WHERE read_only_flag = 'U'
65787 SELECT oracle_username
65788   INTO p_apps_owner
65789   FROM fnd_oracle_userid
65791 ;
65792 
65793 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65794       trace
65795          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
65796                         ' - p_language = '||p_language||
65797                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
65798                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
65799                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
65800                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
65801          ,p_level    => C_LEVEL_STATEMENT
65802          ,p_module   => l_log_module);
65803 END IF;
65804 
65805 
65806 --
65807 INSERT INTO xla_diag_sources --hdr2
65808 (
65809         event_id
65810       , ledger_id
65811       , sla_ledger_id
65812       , description_language
65813       , object_name
65814       , object_type_code
65815       , line_number
65816       , source_application_id
65817       , source_type_code
65818       , source_code
65819       , source_value
65820       , source_meaning
65821       , created_by
65822       , creation_date
65823       , last_update_date
65824       , last_updated_by
65825       , last_update_login
65826       , program_update_date
65827       , program_application_id
65828       , program_id
65829       , request_id
65830 )
65831 SELECT
65832         event_id
65833       , p_target_ledger_id
65834       , p_sla_ledger_id
65835       , p_language
65836       , object_name
65837       , object_type_code
65838       , line_number
65839       , source_application_id
65840       , source_type_code
65841       , source_code
65842       , SUBSTR(source_value ,1,1996)
65843       , SUBSTR(source_meaning ,1,200)
65844       , xla_environment_pkg.g_Usr_Id
65845       , TRUNC(SYSDATE)
65846       , TRUNC(SYSDATE)
65847       , xla_environment_pkg.g_Usr_Id
65848       , xla_environment_pkg.g_Login_Id
65849       , TRUNC(SYSDATE)
65850       , xla_environment_pkg.g_Prog_Appl_Id
65851       , xla_environment_pkg.g_Prog_Id
65852       , xla_environment_pkg.g_Req_Id
65853   FROM (
65854        SELECT xet.event_id                  event_id
65855             , 0                          line_number
65856             , CASE r
65857                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
65858                 WHEN 2 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
65859                 WHEN 3 THEN 'AR_BILL_TO_SITE_USES_S_V' 
65860                 WHEN 4 THEN 'AR_TRANSACTIONS_S_V' 
65861                 WHEN 5 THEN 'AR_TRANSACTIONS_S_V' 
65862                 WHEN 6 THEN 'AR_TRANSACTIONS_S_V' 
65863                 WHEN 7 THEN 'AR_TRANSACTIONS_S_V' 
65864                 
65865                ELSE null
65866               END                           object_name
65867             , CASE r
65868                 WHEN 1 THEN 'HEADER' 
65869                 WHEN 2 THEN 'HEADER' 
65870                 WHEN 3 THEN 'HEADER' 
65871                 WHEN 4 THEN 'HEADER' 
65872                 WHEN 5 THEN 'HEADER' 
65873                 WHEN 6 THEN 'HEADER' 
65874                 WHEN 7 THEN 'HEADER' 
65875                 
65876                 ELSE null
65877               END                           object_type_code
65878             , CASE r
65879                 WHEN 1 THEN '222' 
65880                 WHEN 2 THEN '222' 
65881                 WHEN 3 THEN '222' 
65882                 WHEN 4 THEN '222' 
65883                 WHEN 5 THEN '222' 
65884                 WHEN 6 THEN '222' 
65885                 WHEN 7 THEN '222' 
65886                 
65887                 ELSE null
65888               END                           source_application_id
65889             , 'S'             source_type_code
65890             , CASE r
65891                 WHEN 1 THEN 'TRX_DOC_SEQUENCE_VALUE' 
65892                 WHEN 2 THEN 'BILL_CUST_ACCOUNT_ID' 
65893                 WHEN 3 THEN 'BILL_USES_SITE_USE_ID' 
65894                 WHEN 4 THEN 'XLA_PARTY_TYPE' 
65895                 WHEN 5 THEN 'TRX_INVOICE_CURRENCY_CODE' 
65896                 WHEN 6 THEN 'TRX_DOC_SEQUENCE_CATEGORY' 
65897                 WHEN 7 THEN 'TRX_DOC_SEQUENCE_ID' 
65898                 
65899                 ELSE null
65900               END                           source_code
65901             , CASE r
65902                 WHEN 1 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_VALUE)
65903                 WHEN 2 THEN TO_CHAR(h1.BILL_CUST_ACCOUNT_ID)
65904                 WHEN 3 THEN TO_CHAR(h2.BILL_USES_SITE_USE_ID)
65905                 WHEN 4 THEN TO_CHAR(h5.XLA_PARTY_TYPE)
65906                 WHEN 5 THEN TO_CHAR(h5.TRX_INVOICE_CURRENCY_CODE)
65907                 WHEN 6 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_CATEGORY)
65908                 WHEN 7 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_ID)
65909                 
65910                 ELSE null
65911               END                           source_value
65912             , null              source_meaning
65913          FROM xla_events_gt     xet  
65914       , AR_BILL_TO_CUSTOMERS_S_V  h1
65915       , AR_BILL_TO_SITE_USES_S_V  h2
65916       , AR_TRANSACTIONS_S_V  h5
65917              ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
65918          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
65919            AND xet.event_class_code = C_EVENT_CLASS_CODE
65923 
65920               AND h1.event_id = xet.event_id
65921   AND h2.event_id  = h1.event_id
65922   AND h5.event_id  = h1.event_id
65924 )
65925 ;
65926 --
65927 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
65928 
65929       trace
65930          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
65931          ,p_level    => C_LEVEL_STATEMENT
65932          ,p_module   => l_log_module);
65933 
65934 END IF;
65935 --
65936 
65937 
65938 
65939 --
65940 INSERT INTO xla_diag_sources  --line2
65941 (
65942         event_id
65943       , ledger_id
65944       , sla_ledger_id
65945       , description_language
65946       , object_name
65947       , object_type_code
65948       , line_number
65949       , source_application_id
65950       , source_type_code
65951       , source_code
65952       , source_value
65953       , source_meaning
65954       , created_by
65955       , creation_date
65956       , last_update_date
65957       , last_updated_by
65958       , last_update_login
65959       , program_update_date
65960       , program_application_id
65961       , program_id
65962       , request_id
65963 )
65964 SELECT  event_id
65965       , p_target_ledger_id
65966       , p_sla_ledger_id
65967       , p_language
65968       , object_name
65969       , object_type_code
65970       , line_number
65971       , source_application_id
65972       , source_type_code
65973       , source_code
65974       , SUBSTR(source_value,1,1996)
65975       , SUBSTR(source_meaning ,1,200)
65976       , xla_environment_pkg.g_Usr_Id
65977       , TRUNC(SYSDATE)
65978       , TRUNC(SYSDATE)
65979       , xla_environment_pkg.g_Usr_Id
65980       , xla_environment_pkg.g_Login_Id
65981       , TRUNC(SYSDATE)
65982       , xla_environment_pkg.g_Prog_Appl_Id
65983       , xla_environment_pkg.g_Prog_Id
65984       , xla_environment_pkg.g_Req_Id
65985   FROM (
65986        SELECT xet.event_id                  event_id
65987             , l4.line_number                 line_number
65988             , CASE r
65989                WHEN 1 THEN 'AR_CUST_TRX_LINES_L_V' 
65990                 WHEN 2 THEN 'AR_CUST_TRX_LINES_L_V' 
65991                 WHEN 3 THEN 'AR_CUST_TRX_LINES_L_V' 
65992                 WHEN 4 THEN 'AR_CUST_TRX_LINES_L_V' 
65993                 WHEN 5 THEN 'AR_CUST_TRX_LINES_L_V' 
65994                 WHEN 6 THEN 'AR_CUST_TRX_LINES_BASE_V' 
65995                 WHEN 7 THEN 'AR_CUST_TRX_LINES_BASE_V' 
65996                 WHEN 8 THEN 'AR_CUST_TRX_LINES_BASE_V' 
65997                 WHEN 9 THEN 'AR_CUST_TRX_LINES_BASE_V' 
65998                 
65999                ELSE null
66000               END                           object_name
66001             , CASE r
66002                 WHEN 1 THEN 'LINE' 
66003                 WHEN 2 THEN 'LINE' 
66004                 WHEN 3 THEN 'LINE' 
66005                 WHEN 4 THEN 'LINE' 
66006                 WHEN 5 THEN 'LINE' 
66007                 WHEN 6 THEN 'LINE' 
66008                 WHEN 7 THEN 'LINE' 
66009                 WHEN 8 THEN 'LINE' 
66010                 WHEN 9 THEN 'LINE' 
66011                 
66012                 ELSE null
66013               END                           object_type_code
66014             , CASE r
66015                 WHEN 1 THEN '222' 
66016                 WHEN 2 THEN '222' 
66017                 WHEN 3 THEN '222' 
66018                 WHEN 4 THEN '222' 
66019                 WHEN 5 THEN '222' 
66020                 WHEN 6 THEN '222' 
66021                 WHEN 7 THEN '222' 
66022                 WHEN 8 THEN '222' 
66023                 WHEN 9 THEN '222' 
66024                 
66025                 ELSE null
66026               END                           source_application_id
66027             , 'S'             source_type_code
66028             , CASE r
66029                 WHEN 1 THEN 'TRX_LINE_DIST_CCID' 
66030                 WHEN 2 THEN 'TRX_LINE_DIST_ACCOUNT_CLASS' 
66031                 WHEN 3 THEN 'TRX_LINE_DIST_ID' 
66032                 WHEN 4 THEN 'TRX_DISTRIBUTION_TYPE' 
66033                 WHEN 5 THEN 'TRX_LINE_DIST_AMT' 
66034                 WHEN 6 THEN 'TRX_LINE_CUR_CONVERSION_DATE' 
66035                 WHEN 7 THEN 'TRX_LINE_CUR_CONVERSION_RATE' 
66036                 WHEN 8 THEN 'TRX_LINE_CUR_CONVERSION_TYPE' 
66037                 WHEN 9 THEN 'TRX_LINE_ACCTD_AMT' 
66038                 
66039                 ELSE null
66040               END                           source_code
66041             , CASE r
66042                 WHEN 1 THEN TO_CHAR(l4.TRX_LINE_DIST_CCID)
66043                 WHEN 2 THEN TO_CHAR(l4.TRX_LINE_DIST_ACCOUNT_CLASS)
66044                 WHEN 3 THEN TO_CHAR(l4.TRX_LINE_DIST_ID)
66045                 WHEN 4 THEN TO_CHAR(l4.TRX_DISTRIBUTION_TYPE)
66046                 WHEN 5 THEN TO_CHAR(l4.TRX_LINE_DIST_AMT)
66047                 WHEN 6 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_DATE)
66048                 WHEN 7 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_RATE)
66049                 WHEN 8 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_TYPE)
66050                 WHEN 9 THEN TO_CHAR(l3.TRX_LINE_ACCTD_AMT)
66051                 
66052                 ELSE null
66053               END                           source_value
66054             , null              source_meaning
66055          FROM  xla_events_gt     xet  
66059         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
66056         , AR_CUST_TRX_LINES_BASE_V  l3
66057         , AR_CUST_TRX_LINES_L_V  l4
66058             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
66060           AND xet.event_class_code = C_EVENT_CLASS_CODE
66061             AND l3.event_id          = xet.event_id
66062   AND l4.event_id    = l3.event_id
66063   AND l4.line_number = l3.line_number
66064 
66065 )
66066 ;
66067 --
66068 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66069 
66070       trace
66071          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
66072          ,p_level    => C_LEVEL_STATEMENT
66073          ,p_module   => l_log_module);
66074 
66075 END IF;
66076 
66077 
66078 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66079       trace
66080          (p_msg      => 'END of insert_sources_128'
66081          ,p_level    => C_LEVEL_PROCEDURE
66082          ,p_module   => l_log_module);
66083 END IF;
66084 EXCEPTION
66085   WHEN xla_exceptions_pkg.application_exception THEN
66086       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
66087             trace
66088                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
66089                ,p_level    => C_LEVEL_EXCEPTION
66090                ,p_module   => l_log_module);
66091       END IF;
66092       RAISE;
66093   WHEN OTHERS THEN
66094       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
66095             trace
66096                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
66097                ,p_level    => C_LEVEL_EXCEPTION
66098                ,p_module   => l_log_module);
66099        END IF;
66100        xla_exceptions_pkg.raise_message
66101            (p_location => 'XLA_00222_AAD_S_000017_PKG.insert_sources_128');
66102 END insert_sources_128;
66103 --
66104 
66105 ---------------------------------------
66106 --
66107 -- PRIVATE FUNCTION
66108 --         EventClass_128
66109 --
66110 ----------------------------------------
66111 --
66112 FUNCTION EventClass_128
66113        (p_application_id         IN NUMBER
66114        ,p_base_ledger_id         IN NUMBER
66115        ,p_target_ledger_id       IN NUMBER
66116        ,p_language               IN VARCHAR2
66117        ,p_currency_code          IN VARCHAR2
66118        ,p_sla_ledger_id          IN NUMBER
66119        ,p_pad_start_date         IN DATE
66120        ,p_pad_end_date           IN DATE
66121        ,p_primary_ledger_id      IN NUMBER)
66122 RETURN BOOLEAN IS
66123 --
66124 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CHARGEBACK_ALL';
66125 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'CHARGEBACK';
66126 
66127 l_calculate_acctd_flag   VARCHAR2(1) :='N';
66128 l_calculate_g_l_flag     VARCHAR2(1) :='N';
66129 --
66130 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66131 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66132 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66133 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66134 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66135 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66136 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66137 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66138 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66139 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66140 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66141 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66142 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66143 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66144 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66145 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66146 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66147 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66148 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66149 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66150 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66151 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66152 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
66153 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66154 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
66155 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
66156 
66157 l_event_id                             NUMBER;
66158 l_previous_event_id                    NUMBER;
66159 l_first_event_id                       NUMBER;
66160 l_last_event_id                        NUMBER;
66161 
66162 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
66163 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
66164 --
66165 --
66166 l_result                    BOOLEAN := TRUE;
66167 l_rows                      NUMBER  := 1000;
66168 l_event_type_name           VARCHAR2(80) := 'All';
66172 l_ae_header_id              NUMBER;
66169 l_event_class_name          VARCHAR2(80) := 'Chargeback';
66170 l_description               VARCHAR2(4000);
66171 l_transaction_reversal      NUMBER;
66173 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
66174 l_log_module                VARCHAR2(240);
66175 --
66176 l_acct_reversal_source      VARCHAR2(30);
66177 l_trx_reversal_source       VARCHAR2(30);
66178 
66179 l_continue_with_lines       BOOLEAN := TRUE;
66180 --
66181 l_acc_rev_gl_date_source    DATE;                      -- 4262811
66182 --
66183 type t_array_event_id is table of number index by binary_integer;
66184 
66185 l_rec_array_event                    t_rec_array_event;
66186 l_null_rec_array_event               t_rec_array_event;
66187 l_array_ae_header_id                 xla_number_array_type;
66188 l_actual_flag                        VARCHAR2(1) := NULL;
66189 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
66190 l_balance_type_code                  VARCHAR2(1) :=NULL;
66191 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
66192 
66193 --
66194 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
66195 --
66196 
66197 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
66198 TYPE t_array_source_37 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
66199 TYPE t_array_source_38 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
66200 TYPE t_array_source_39 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
66201 TYPE t_array_source_47 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
66202 TYPE t_array_source_111 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
66203 TYPE t_array_source_112 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
66204 
66205 TYPE t_array_source_26 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
66206 TYPE t_array_source_43 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ACCOUNT_CLASS%TYPE INDEX BY BINARY_INTEGER;
66207 TYPE t_array_source_44 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
66208 TYPE t_array_source_45 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
66209 TYPE t_array_source_46 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_AMT%TYPE INDEX BY BINARY_INTEGER;
66210 TYPE t_array_source_48 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
66211 TYPE t_array_source_49 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
66212 TYPE t_array_source_50 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
66213 TYPE t_array_source_51 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
66214 
66215 l_array_source_3              t_array_source_3;
66216 l_array_source_37              t_array_source_37;
66217 l_array_source_38              t_array_source_38;
66218 l_array_source_39              t_array_source_39;
66219 l_array_source_47              t_array_source_47;
66220 l_array_source_111              t_array_source_111;
66221 l_array_source_112              t_array_source_112;
66222 
66223 l_array_source_26      t_array_source_26;
66224 l_array_source_43      t_array_source_43;
66225 l_array_source_44      t_array_source_44;
66226 l_array_source_45      t_array_source_45;
66227 l_array_source_46      t_array_source_46;
66228 l_array_source_48      t_array_source_48;
66229 l_array_source_49      t_array_source_49;
66230 l_array_source_50      t_array_source_50;
66231 l_array_source_51      t_array_source_51;
66232 
66233 --
66234 CURSOR header_cur
66235 IS
66236 SELECT /*+ leading(xet) cardinality(xet,1) */
66237 -- Event Class Code: CHARGEBACK
66238     xet.entity_id
66239    ,xet.legal_entity_id
66240    ,xet.entity_code
66241    ,xet.transaction_number
66242    ,xet.event_id
66243    ,xet.event_class_code
66244    ,xet.event_type_code
66245    ,xet.event_number
66246    ,xet.event_date
66247    ,xet.transaction_date
66248    ,xet.reference_num_1
66249    ,xet.reference_num_2
66250    ,xet.reference_num_3
66251    ,xet.reference_num_4
66252    ,xet.reference_char_1
66253    ,xet.reference_char_2
66254    ,xet.reference_char_3
66255    ,xet.reference_char_4
66256    ,xet.reference_date_1
66257    ,xet.reference_date_2
66258    ,xet.reference_date_3
66259    ,xet.reference_date_4
66260    ,xet.event_created_by
66261    ,xet.budgetary_control_flag 
66262   , h5.TRX_DOC_SEQUENCE_VALUE    source_3
66263   , h1.BILL_CUST_ACCOUNT_ID    source_37
66264   , h2.BILL_USES_SITE_USE_ID    source_38
66265   , h5.XLA_PARTY_TYPE    source_39
66266   , h5.TRX_INVOICE_CURRENCY_CODE    source_47
66267   , h5.TRX_DOC_SEQUENCE_CATEGORY    source_111
66268   , h5.TRX_DOC_SEQUENCE_ID    source_112
66269   FROM xla_events_gt     xet 
66270   , AR_BILL_TO_CUSTOMERS_S_V  h1
66271   , AR_BILL_TO_SITE_USES_S_V  h2
66272   , AR_TRANSACTIONS_S_V  h5
66273  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
66274    and xet.event_class_code = C_EVENT_CLASS_CODE
66275    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
66276   AND h2.event_id  = h1.event_id
66277   AND h5.event_id  = h1.event_id
66278 
66279  ORDER BY event_id
66280 ;
66281 
66282 
66283 --
66287 -- Event Class Code: CHARGEBACK
66284 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
66285 IS
66286 SELECT  /*+ leading(xet) cardinality(xet,1) */
66288     xet.entity_id
66289    ,xet.legal_entity_id
66290    ,xet.entity_code
66291    ,xet.transaction_number
66292    ,xet.event_id
66293    ,xet.event_class_code
66294    ,xet.event_type_code
66295    ,xet.event_number
66296    ,xet.event_date
66297    ,xet.transaction_date
66298    ,xet.reference_num_1
66299    ,xet.reference_num_2
66300    ,xet.reference_num_3
66301    ,xet.reference_num_4
66302    ,xet.reference_char_1
66303    ,xet.reference_char_2
66304    ,xet.reference_char_3
66305    ,xet.reference_char_4
66306    ,xet.reference_date_1
66307    ,xet.reference_date_2
66308    ,xet.reference_date_3
66309    ,xet.reference_date_4
66310    ,xet.event_created_by
66311    ,xet.budgetary_control_flag
66312  , l3.LINE_NUMBER  
66313   , l4.TRX_LINE_DIST_CCID    source_26
66314   , l4.TRX_LINE_DIST_ACCOUNT_CLASS    source_43
66315   , l4.TRX_LINE_DIST_ID    source_44
66316   , l4.TRX_DISTRIBUTION_TYPE    source_45
66317   , l4.TRX_LINE_DIST_AMT    source_46
66318   , l3.TRX_LINE_CUR_CONVERSION_DATE    source_48
66319   , l3.TRX_LINE_CUR_CONVERSION_RATE    source_49
66320   , l3.TRX_LINE_CUR_CONVERSION_TYPE    source_50
66321   , l3.TRX_LINE_ACCTD_AMT    source_51
66322   FROM xla_events_gt     xet 
66323   , AR_CUST_TRX_LINES_BASE_V  l3
66324   , AR_CUST_TRX_LINES_L_V  l4
66325  WHERE xet.event_id between x_first_event_id and x_last_event_id
66326    and xet.event_date between p_pad_start_date and p_pad_end_date
66327    and xet.event_class_code = C_EVENT_CLASS_CODE
66328    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
66329   AND l4.event_id    = l3.event_id
66330   AND l4.line_number = l3.line_number
66331 ;
66332 
66333 --
66334 BEGIN
66335 IF g_log_enabled THEN
66336    l_log_module := C_DEFAULT_MODULE||'.EventClass_128';
66337 END IF;
66338 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66339    trace
66340       (p_msg      => 'BEGIN of EventClass_128'
66341       ,p_level    => C_LEVEL_PROCEDURE
66342       ,p_module   => l_log_module);
66343 END IF;
66344 
66345 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66346    trace
66347       (p_msg      => 'p_application_id = '||p_application_id||
66348                      ' - p_base_ledger_id = '||p_base_ledger_id||
66349                      ' - p_target_ledger_id  = '||p_target_ledger_id||
66350                      ' - p_language = '||p_language||
66351                      ' - p_currency_code = '||p_currency_code||
66352                      ' - p_sla_ledger_id = '||p_sla_ledger_id
66353       ,p_level    => C_LEVEL_STATEMENT
66354       ,p_module   => l_log_module);
66355 END IF;
66356 --
66357 -- initialze arrays
66358 --
66359 g_array_event.DELETE;
66360 l_rec_array_event := l_null_rec_array_event;
66361 --
66362 --------------------------------------
66363 -- 4262811 Initialze MPA Line Number
66364 --------------------------------------
66365 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
66366 
66367 --
66368 
66369 --
66370 OPEN header_cur;
66371 --
66372 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66373    trace
66374    (p_msg      => 'SQL - FETCH header_cur'
66375    ,p_level    => C_LEVEL_STATEMENT
66376    ,p_module   => l_log_module);
66377 END IF;
66378 --
66379 LOOP
66380 FETCH header_cur BULK COLLECT INTO
66381         l_array_entity_id
66382       , l_array_legal_entity_id
66383       , l_array_entity_code
66384       , l_array_transaction_num
66385       , l_array_event_id
66386       , l_array_class_code
66387       , l_array_event_type
66388       , l_array_event_number
66389       , l_array_event_date
66390       , l_array_transaction_date
66391       , l_array_reference_num_1
66392       , l_array_reference_num_2
66393       , l_array_reference_num_3
66394       , l_array_reference_num_4
66395       , l_array_reference_char_1
66396       , l_array_reference_char_2
66397       , l_array_reference_char_3
66398       , l_array_reference_char_4
66399       , l_array_reference_date_1
66400       , l_array_reference_date_2
66401       , l_array_reference_date_3
66402       , l_array_reference_date_4
66403       , l_array_event_created_by
66404       , l_array_budgetary_control_flag 
66405       , l_array_source_3
66406       , l_array_source_37
66407       , l_array_source_38
66408       , l_array_source_39
66409       , l_array_source_47
66410       , l_array_source_111
66411       , l_array_source_112
66412       LIMIT l_rows;
66413 --
66414 IF (C_LEVEL_EVENT >= g_log_level) THEN
66415    trace
66416    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
66417    ,p_level    => C_LEVEL_EVENT
66418    ,p_module   => l_log_module);
66419 END IF;
66420 --
66421 EXIT WHEN l_array_entity_id.COUNT = 0;
66422 
66423 -- initialize arrays
66424 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
66425 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
66426 
66427 --
66428 -- Bug 4458708
66429 --
66430 XLA_AE_LINES_PKG.g_LineNumber := 0;
66431 
66432 
66433 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
66434 g_last_hdr_idx := l_array_event_id.LAST;
66438 --
66435 --
66436 -- loop for the headers. Each iteration is for each header extract row
66437 -- fetched in header cursor
66439 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
66440 
66441 --
66442 -- set event info as cache for other routines to refer event attributes
66443 --
66444 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
66445    (p_application_id           => p_application_id
66446    ,p_primary_ledger_id        => p_primary_ledger_id
66447    ,p_base_ledger_id           => p_base_ledger_id
66448    ,p_target_ledger_id         => p_target_ledger_id
66449    ,p_entity_id                => l_array_entity_id(hdr_idx)
66450    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
66451    ,p_entity_code              => l_array_entity_code(hdr_idx)
66452    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
66453    ,p_event_id                 => l_array_event_id(hdr_idx)
66454    ,p_event_class_code         => l_array_class_code(hdr_idx)
66455    ,p_event_type_code          => l_array_event_type(hdr_idx)
66456    ,p_event_number             => l_array_event_number(hdr_idx)
66457    ,p_event_date               => l_array_event_date(hdr_idx)
66458    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
66459    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
66460    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
66461    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
66462    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
66463    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
66464    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
66465    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
66466    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
66467    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
66468    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
66469    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
66470    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
66471    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
66472    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
66473 
66474 --
66475 -- set the status of entry to C_VALID (0)
66476 --
66477 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
66478 
66479 --
66480 -- initialize a row for ae header
66481 --
66482 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
66483 
66484 l_event_id := l_array_event_id(hdr_idx);
66485 
66486 --
66487 -- storing the hdr_idx for event. May be used by line cursor.
66488 --
66489 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
66490 
66491 --
66492 -- store sources from header extract. This can be improved to
66493 -- store only those sources from header extract that may be used in lines
66494 --
66495 
66496 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
66497 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
66498 g_array_event(l_event_id).array_value_num('source_38') := l_array_source_38(hdr_idx);
66499 g_array_event(l_event_id).array_value_char('source_39') := l_array_source_39(hdr_idx);
66500 g_array_event(l_event_id).array_value_char('source_47') := l_array_source_47(hdr_idx);
66501 g_array_event(l_event_id).array_value_char('source_111') := l_array_source_111(hdr_idx);
66502 g_array_event(l_event_id).array_value_num('source_112') := l_array_source_112(hdr_idx);
66503 
66504 --
66505 -- initilaize the status of ae headers for diffrent balance types
66506 -- the status is initialised to C_NOT_CREATED (2)
66507 --
66508 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
66509 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
66510 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
66511 
66512 --
66513 -- call api to validate and store accounting attributes for header
66514 --
66515 
66516 ------------------------------------------------------------
66517 -- Accrual Reversal : to get date for Standard Source (NONE)
66518 ------------------------------------------------------------
66519 l_acc_rev_gl_date_source := NULL;
66520 
66521      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
66522       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_111');
66523      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
66524       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_112');
66525      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
66526       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_3');
66527      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
66528       l_rec_acct_attrs.array_date_value(4) := 
66529 xla_ae_sources_pkg.GetSystemSourceDate(
66530    p_source_code           => 'XLA_EVENT_DATE'
66531  , p_source_type_code      => 'Y'
66532  , p_source_application_id =>  602
66533 );
66534 
66535 
66536 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
66537 
66538 XLA_AE_HEADER_PKG.SetJeCategoryName;
66539 
66540 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
66544 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
66541 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
66542 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
66543 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
66545 
66546 
66547 -- No header level analytical criteria
66548 
66549 --
66550 --accounting attribute enhancement, bug 3612931
66551 --
66552 l_trx_reversal_source := SUBSTR(NULL, 1,30);
66553 
66554 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
66555    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
66556 
66557    xla_accounting_err_pkg.build_message
66558       (p_appli_s_name            => 'XLA'
66559       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
66560       ,p_token_1                 => 'ACCT_ATTR_NAME'
66561       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
66562       ,p_token_2                 => 'PRODUCT_NAME'
66563       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
66564       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
66565       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
66566       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
66567 
66568 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
66569    --
66570    -- following sets the accounting attributes needed to reverse
66571    -- accounting for a distributeion
66572    --
66573    xla_ae_lines_pkg.SetTrxReversalAttrs
66574       (p_event_id              => l_event_id
66575       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
66576       ,p_trx_reversal_source   => l_trx_reversal_source);
66577 
66578 END IF;
66579 
66580 
66581 ----------------------------------------------------------------
66582 -- 4262811 -  update the header statuses to invalid in need be
66583 ----------------------------------------------------------------
66584 --
66585 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
66586 
66587 
66588   -----------------------------------------------
66589   -- No accrual reversal for the event class/type
66590   -----------------------------------------------
66591 ----------------------------------------------------------------
66592 
66593 --
66594 -- this ends the header loop iteration for one bulk fetch
66595 --
66596 END LOOP;
66597 
66598 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
66599 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
66600 
66601 --
66602 -- insert dummy rows into lines gt table that were created due to
66603 -- transaction reversals
66604 --
66605 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
66606    l_result := XLA_AE_LINES_PKG.InsertLines;
66607 END IF;
66608 
66609 --
66610 -- reset the temp_line_num for each set of events fetched from header
66611 -- cursor rather than doing it for each new event in line cursor
66612 -- Bug 3939231
66613 --
66614 xla_ae_lines_pkg.g_temp_line_num := 0;
66615 
66616 
66617 
66618 --
66619 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
66620 --
66621 --
66622 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66623 
66624       trace
66625          (p_msg      => 'SQL - FETCH line_cur'
66626          ,p_level    => C_LEVEL_STATEMENT
66627          ,p_module   => l_log_module);
66628 
66629 END IF;
66630 --
66631 --
66632 LOOP
66633   --
66634   FETCH line_cur BULK COLLECT INTO
66635         l_array_entity_id
66636       , l_array_legal_entity_id
66637       , l_array_entity_code
66638       , l_array_transaction_num
66639       , l_array_event_id
66640       , l_array_class_code
66641       , l_array_event_type
66642       , l_array_event_number
66643       , l_array_event_date
66644       , l_array_transaction_date
66645       , l_array_reference_num_1
66646       , l_array_reference_num_2
66647       , l_array_reference_num_3
66648       , l_array_reference_num_4
66649       , l_array_reference_char_1
66650       , l_array_reference_char_2
66651       , l_array_reference_char_3
66652       , l_array_reference_char_4
66653       , l_array_reference_date_1
66654       , l_array_reference_date_2
66655       , l_array_reference_date_3
66656       , l_array_reference_date_4
66657       , l_array_event_created_by
66658       , l_array_budgetary_control_flag
66659       , l_array_extract_line_num 
66660       , l_array_source_26
66661       , l_array_source_43
66662       , l_array_source_44
66663       , l_array_source_45
66664       , l_array_source_46
66665       , l_array_source_48
66666       , l_array_source_49
66667       , l_array_source_50
66668       , l_array_source_51
66669       LIMIT l_rows;
66670 
66671   --
66672   IF (C_LEVEL_EVENT >= g_log_level) THEN
66673             trace
66674                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
66675                ,p_level    => C_LEVEL_EVENT
66676                ,p_module   => l_log_module);
66677   END IF;
66681   XLA_AE_LINES_PKG.g_rec_lines := null;
66678   --
66679   EXIT WHEN l_array_entity_id.count = 0;
66680 
66682 
66683 --
66684 -- Bug 4458708
66685 --
66686 XLA_AE_LINES_PKG.g_LineNumber := 0;
66687 --
66688 --
66689 
66690 FOR Idx IN 1..l_array_event_id.count LOOP
66691    --
66692    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
66693    --
66694    l_event_id := l_array_event_id(idx);  -- 5648433
66695 
66696    --
66697    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
66698    --
66699 
66700    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
66701              (g_array_event(l_event_id).array_value_num('header_index'))
66702          ,'N'
66703          ) <> 'Y'
66704    THEN
66705       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66706          trace
66707             (p_msg      => 'Trancaction revesal option is not Y '
66708             ,p_level    => C_LEVEL_STATEMENT
66709             ,p_module   => l_log_module);
66710       END IF;
66711 
66712 --
66713 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
66714 --
66715 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
66716 --
66717 -- set event info as cache for other routines to refer event attributes
66718 --
66719 
66720 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
66721    l_previous_event_id := l_event_id;
66722 
66723    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
66724       (p_application_id           => p_application_id
66725       ,p_primary_ledger_id        => p_primary_ledger_id
66726       ,p_base_ledger_id           => p_base_ledger_id
66727       ,p_target_ledger_id         => p_target_ledger_id
66728       ,p_entity_id                => l_array_entity_id(Idx)
66729       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
66730       ,p_entity_code              => l_array_entity_code(Idx)
66731       ,p_transaction_num          => l_array_transaction_num(Idx)
66732       ,p_event_id                 => l_array_event_id(Idx)
66733       ,p_event_class_code         => l_array_class_code(Idx)
66734       ,p_event_type_code          => l_array_event_type(Idx)
66735       ,p_event_number             => l_array_event_number(Idx)
66736       ,p_event_date               => l_array_event_date(Idx)
66737       ,p_transaction_date         => l_array_transaction_date(Idx)
66738       ,p_reference_num_1          => l_array_reference_num_1(Idx)
66739       ,p_reference_num_2          => l_array_reference_num_2(Idx)
66740       ,p_reference_num_3          => l_array_reference_num_3(Idx)
66741       ,p_reference_num_4          => l_array_reference_num_4(Idx)
66742       ,p_reference_char_1         => l_array_reference_char_1(Idx)
66743       ,p_reference_char_2         => l_array_reference_char_2(Idx)
66744       ,p_reference_char_3         => l_array_reference_char_3(Idx)
66745       ,p_reference_char_4         => l_array_reference_char_4(Idx)
66746       ,p_reference_date_1         => l_array_reference_date_1(Idx)
66747       ,p_reference_date_2         => l_array_reference_date_2(Idx)
66748       ,p_reference_date_3         => l_array_reference_date_3(Idx)
66749       ,p_reference_date_4         => l_array_reference_date_4(Idx)
66750       ,p_event_created_by         => l_array_event_created_by(Idx)
66751       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
66752        --
66753 END IF;
66754 
66755 
66756 
66757 --
66758 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
66759 
66760 l_acct_reversal_source := SUBSTR(NULL, 1,30);
66761 
66762 IF l_continue_with_lines THEN
66763    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
66764       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
66765 
66766       xla_accounting_err_pkg.build_message
66767          (p_appli_s_name            => 'XLA'
66768          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
66769          ,p_token_1                 => 'LINE_NUMBER'
66770          ,p_value_1                 => l_array_extract_line_num(Idx)
66771          ,p_token_2                 => 'PRODUCT_NAME'
66772          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
66773          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
66774          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
66775          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
66776 
66777    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
66778       --
66779       -- following sets the accounting attributes needed to reverse
66780       -- accounting for a distributeion
66781       --
66782 
66783       --
66784       -- 5217187
66785       --
66786       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
66787       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
66788                                        g_array_event(l_event_id).array_value_num('header_index'));
66789       --
66790       --
66791 
66792       -- No reversal code generated
66793 
66794       xla_ae_lines_pkg.SetAcctReversalAttrs
66795          (p_event_id             => l_event_id
66796          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
66797          ,p_calculate_acctd_flag => l_calculate_acctd_flag
66798          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
66799    END IF;
66800 
66804 --
66801    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
66802        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
66803 
66805 AcctLineType_39 (
66806  p_application_id  => p_application_id
66807  ,p_event_id     => l_event_id
66808  ,p_calculate_acctd_flag => l_calculate_acctd_flag
66809  ,p_calculate_g_l_flag => l_calculate_g_l_flag
66810  ,p_actual_flag => l_actual_flag
66811  ,p_balance_type_code => l_balance_type_code
66812  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
66813  
66814  , p_source_26 => l_array_source_26(Idx)
66815  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
66816  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
66817  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
66818  , p_source_43 => l_array_source_43(Idx)
66819  , p_source_44 => l_array_source_44(Idx)
66820  , p_source_45 => l_array_source_45(Idx)
66821  , p_source_46 => l_array_source_46(Idx)
66822  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
66823  , p_source_48 => l_array_source_48(Idx)
66824  , p_source_49 => l_array_source_49(Idx)
66825  , p_source_50 => l_array_source_50(Idx)
66826  , p_source_51 => l_array_source_51(Idx)
66827  );
66828 If(l_balance_type_code = 'A') THEN
66829   l_actual_gain_loss_ref := l_gain_or_loss_ref;
66830 END IF;
66831 
66832 --
66833 
66834 
66835 --
66836 AcctLineType_40 (
66837  p_application_id  => p_application_id
66838  ,p_event_id     => l_event_id
66839  ,p_calculate_acctd_flag => l_calculate_acctd_flag
66840  ,p_calculate_g_l_flag => l_calculate_g_l_flag
66841  ,p_actual_flag => l_actual_flag
66842  ,p_balance_type_code => l_balance_type_code
66843  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
66844  
66845  , p_source_26 => l_array_source_26(Idx)
66846  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
66847  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
66848  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
66849  , p_source_43 => l_array_source_43(Idx)
66850  , p_source_44 => l_array_source_44(Idx)
66851  , p_source_45 => l_array_source_45(Idx)
66852  , p_source_46 => l_array_source_46(Idx)
66853  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
66854  , p_source_48 => l_array_source_48(Idx)
66855  , p_source_49 => l_array_source_49(Idx)
66856  , p_source_50 => l_array_source_50(Idx)
66857  , p_source_51 => l_array_source_51(Idx)
66858  );
66859 If(l_balance_type_code = 'A') THEN
66860   l_actual_gain_loss_ref := l_gain_or_loss_ref;
66861 END IF;
66862 
66863 --
66864 
66865       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
66866       -- or secondary ledger that has different currency with primary
66867       -- or alc that is calculated by sla
66868       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
66869             (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'))
66870 
66871 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
66872 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
66873           AND (l_actual_flag = 'A')) THEN
66874         XLA_AE_LINES_PKG.CreateGainOrLossLines(
66875           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
66876          ,p_application_id   => p_application_id
66877          ,p_amb_context_code => 'DEFAULT'
66878          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
66879          ,p_event_class_code => C_EVENT_CLASS_CODE
66880          ,p_event_type_code  => C_EVENT_TYPE_CODE
66881          
66882          ,p_gain_ccid        => -1
66883          ,p_loss_ccid        => -1
66884 
66885          ,p_actual_flag      => l_actual_flag
66886          ,p_enc_flag         => null
66887          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
66888          ,p_enc_g_l_ref      => null
66889          );
66890       END IF;
66891    END IF;
66892 END IF;
66893 
66894    ELSE
66895       --
66896       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
66897       --
66898       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66899          trace
66900             (p_msg      => 'Trancaction revesal option is Y'
66901             ,p_level    => C_LEVEL_STATEMENT
66902             ,p_module   => l_log_module);
66903       END IF;
66904    END IF;
66905 
66906 END LOOP;
66907 l_result := XLA_AE_LINES_PKG.InsertLines ;
66908 end loop;
66909 close line_cur;
66910 
66911 
66912 --
66913 -- insert headers into xla_ae_headers_gt table
66914 --
66915 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
66916 
66917 -- insert into errors table here.
66918 
66919 END LOOP;
66920 
66921 --
66922 -- 4865292
66923 --
66924 -- Compare g_hdr_extract_count with event count in
66925 -- CreateHeadersAndLines.
66926 --
66927 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
66928 
66929 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66930    trace (p_msg     => '# rows extracted from header extract objects '
66931                     || ' (running total): '
66932                     || g_hdr_extract_count
66936 
66933          ,p_level   => C_LEVEL_STATEMENT
66934          ,p_module  => l_log_module);
66935 END IF;
66937 CLOSE header_cur;
66938 --
66939 
66940 --
66941 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66942    trace
66943       (p_msg      => 'END of EventClass_128'
66944       ,p_level    => C_LEVEL_PROCEDURE
66945       ,p_module   => l_log_module);
66946 END IF;
66947 --
66948 RETURN l_result;
66949 EXCEPTION
66950 WHEN xla_exceptions_pkg.application_exception THEN
66951    
66952 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
66953 
66954    
66955 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
66956 
66957    RAISE;
66958 
66959 WHEN NO_DATA_FOUND THEN
66960 
66961 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
66962 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
66963 
66964 FOR header_record IN header_cur
66965 LOOP
66966     l_array_header_events(header_record.event_id) := header_record.event_id;
66967 END LOOP;
66968 
66969 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
66970 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
66971 
66972 fnd_file.put_line(fnd_file.LOG, '                    ');
66973 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
66974 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
66975 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
66976 
66977 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
66978 LOOP
66979 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
66980 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
66981         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
66982 	END IF;
66983 END LOOP;
66984 
66985 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
66986 fnd_file.put_line(fnd_file.LOG, '                    ');
66987 
66988 
66989 xla_exceptions_pkg.raise_message
66990       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_128');
66991 
66992 
66993 WHEN OTHERS THEN
66994    xla_exceptions_pkg.raise_message
66995       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_128');
66996 END EventClass_128;
66997 --
66998 
66999 ---------------------------------------
67000 --
67001 -- PRIVATE PROCEDURE
67002 --         insert_sources_129
67003 --
67004 ----------------------------------------
67005 --
67006 PROCEDURE insert_sources_129(
67007                                 p_target_ledger_id       IN NUMBER
67008                               , p_language               IN VARCHAR2
67009                               , p_sla_ledger_id          IN NUMBER
67010                               , p_pad_start_date         IN DATE
67011                               , p_pad_end_date           IN DATE
67012                          )
67013 IS
67014 
67015 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'COLLECTION_OCC_DOCUMENT_ALL';
67016 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'COLLECTION_OCC_DOCUMENT';
67017 p_apps_owner                   VARCHAR2(30);
67018 l_log_module                   VARCHAR2(240);
67019 BEGIN
67020 IF g_log_enabled THEN
67021       l_log_module := C_DEFAULT_MODULE||'.insert_sources_129';
67022 END IF;
67023 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67024 
67025       trace
67026          (p_msg      => 'BEGIN of insert_sources_129'
67027          ,p_level    => C_LEVEL_PROCEDURE
67028          ,p_module   => l_log_module);
67029 
67030 END IF;
67031 
67032 -- select APPS owner
67033 SELECT oracle_username
67034   INTO p_apps_owner
67035   FROM fnd_oracle_userid
67036  WHERE read_only_flag = 'U'
67037 ;
67038 
67039 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67040       trace
67041          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
67042                         ' - p_language = '||p_language||
67043                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
67044                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
67045                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
67046                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
67047          ,p_level    => C_LEVEL_STATEMENT
67048          ,p_module   => l_log_module);
67049 END IF;
67050 
67051 
67052 --
67053 INSERT INTO xla_diag_sources --hdr2
67054 (
67055         event_id
67056       , ledger_id
67057       , sla_ledger_id
67058       , description_language
67059       , object_name
67060       , object_type_code
67061       , line_number
67062       , source_application_id
67063       , source_type_code
67064       , source_code
67065       , source_value
67066       , source_meaning
67067       , created_by
67068       , creation_date
67069       , last_update_date
67070       , last_updated_by
67071       , last_update_login
67072       , program_update_date
67073       , program_application_id
67074       , program_id
67075       , request_id
67076 )
67077 SELECT
67078         event_id
67082       , object_name
67079       , p_target_ledger_id
67080       , p_sla_ledger_id
67081       , p_language
67083       , object_type_code
67084       , line_number
67085       , source_application_id
67086       , source_type_code
67087       , source_code
67088       , SUBSTR(source_value ,1,1996)
67089       , SUBSTR(source_meaning ,1,200)
67090       , xla_environment_pkg.g_Usr_Id
67091       , TRUNC(SYSDATE)
67092       , TRUNC(SYSDATE)
67093       , xla_environment_pkg.g_Usr_Id
67094       , xla_environment_pkg.g_Login_Id
67095       , TRUNC(SYSDATE)
67096       , xla_environment_pkg.g_Prog_Appl_Id
67097       , xla_environment_pkg.g_Prog_Id
67098       , xla_environment_pkg.g_Req_Id
67099   FROM (
67100        SELECT xet.event_id                  event_id
67101             , 0                          line_number
67102             , CASE r
67103                WHEN 1 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
67104                 WHEN 2 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
67105                 WHEN 3 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
67106                 WHEN 4 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
67107                 WHEN 5 THEN 'AR_BILL_TO_SITE_USES_S_V' 
67108                 WHEN 6 THEN 'AR_TRANSACTIONS_S_V' 
67109                 WHEN 7 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
67110                 WHEN 8 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
67111                 WHEN 9 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
67112                 WHEN 10 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
67113                 WHEN 11 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
67114                 
67115                ELSE null
67116               END                           object_name
67117             , CASE r
67118                 WHEN 1 THEN 'HEADER' 
67119                 WHEN 2 THEN 'HEADER' 
67120                 WHEN 3 THEN 'HEADER' 
67121                 WHEN 4 THEN 'HEADER' 
67122                 WHEN 5 THEN 'HEADER' 
67123                 WHEN 6 THEN 'HEADER' 
67124                 WHEN 7 THEN 'HEADER' 
67125                 WHEN 8 THEN 'HEADER' 
67126                 WHEN 9 THEN 'HEADER' 
67127                 WHEN 10 THEN 'HEADER' 
67128                 WHEN 11 THEN 'HEADER' 
67129                 
67130                 ELSE null
67131               END                           object_type_code
67132             , CASE r
67133                 WHEN 1 THEN '222' 
67134                 WHEN 2 THEN '222' 
67135                 WHEN 3 THEN '222' 
67136                 WHEN 4 THEN '222' 
67137                 WHEN 5 THEN '222' 
67138                 WHEN 6 THEN '222' 
67139                 WHEN 7 THEN '222' 
67140                 WHEN 8 THEN '222' 
67141                 WHEN 9 THEN '222' 
67142                 WHEN 10 THEN '222' 
67143                 WHEN 11 THEN '222' 
67144                 
67145                 ELSE null
67146               END                           source_application_id
67147             , 'S'             source_type_code
67148             , CASE r
67149                 WHEN 1 THEN 'JLBR_BANK_OCC_DESC' 
67150                 WHEN 2 THEN 'JLBR_DOCUMENT_NUMBER' 
67151                 WHEN 3 THEN 'JLBR_TRADE_NOTE_NUMBER' 
67152                 WHEN 4 THEN 'BILL_CUST_ACCOUNT_ID' 
67153                 WHEN 5 THEN 'BILL_USES_SITE_USE_ID' 
67154                 WHEN 6 THEN 'XLA_PARTY_TYPE' 
67155                 WHEN 7 THEN 'JLBR_OCCURRENCE_ID' 
67156                 WHEN 8 THEN 'JLBR_EXCHG_GAIN_CCID' 
67157                 WHEN 9 THEN 'JLBR_EXCHG_LOSS_CCID' 
67158                 WHEN 10 THEN 'JLBR_GL_DATE' 
67159                 WHEN 11 THEN 'JLBR_TRANSFER_TO_GL_FLAG' 
67160                 
67161                 ELSE null
67162               END                           source_code
67163             , CASE r
67164                 WHEN 1 THEN TO_CHAR(h5.JLBR_BANK_OCC_DESC)
67165                 WHEN 2 THEN TO_CHAR(h5.JLBR_DOCUMENT_NUMBER)
67166                 WHEN 3 THEN TO_CHAR(h5.JLBR_TRADE_NOTE_NUMBER)
67167                 WHEN 4 THEN TO_CHAR(h1.BILL_CUST_ACCOUNT_ID)
67168                 WHEN 5 THEN TO_CHAR(h2.BILL_USES_SITE_USE_ID)
67169                 WHEN 6 THEN TO_CHAR(h3.XLA_PARTY_TYPE)
67170                 WHEN 7 THEN TO_CHAR(h5.JLBR_OCCURRENCE_ID)
67171                 WHEN 8 THEN TO_CHAR(h5.JLBR_EXCHG_GAIN_CCID)
67172                 WHEN 9 THEN TO_CHAR(h5.JLBR_EXCHG_LOSS_CCID)
67173                 WHEN 10 THEN TO_CHAR(h5.JLBR_GL_DATE)
67174                 WHEN 11 THEN TO_CHAR(h5.JLBR_TRANSFER_TO_GL_FLAG)
67175                 
67176                 ELSE null
67177               END                           source_value
67178             , CASE r
67179                 WHEN 11 THEN fvl116.meaning
67180                 
67181                 ELSE null
67182               END               source_meaning
67183          FROM xla_events_gt     xet  
67184       , AR_BILL_TO_CUSTOMERS_S_V  h1
67185       , AR_BILL_TO_SITE_USES_S_V  h2
67186       , AR_TRANSACTIONS_S_V  h3
67187       , JL_BR_AR_COLL_OCC_DOCS_H_V  h5
67188   , fnd_lookup_values    fvl116
67189              ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
67190          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
67191            AND xet.event_class_code = C_EVENT_CLASS_CODE
67192               AND h5.event_id = xet.event_id
67193   AND h1.event_id (+) = h5.event_id
67194   AND h2.event_id (+) = h5.event_id
67195   AND h3.event_id (+) = h5.event_id
67196    AND fvl116.lookup_type(+)         = 'YES_NO'
67200   
67197   AND fvl116.lookup_code(+)         = h5.JLBR_TRANSFER_TO_GL_FLAG
67198   AND fvl116.view_application_id(+) = 0
67199   AND fvl116.language(+)            = USERENV('LANG')
67201 )
67202 ;
67203 --
67204 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67205 
67206       trace
67207          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
67208          ,p_level    => C_LEVEL_STATEMENT
67209          ,p_module   => l_log_module);
67210 
67211 END IF;
67212 --
67213 
67214 
67215 
67216 --
67217 INSERT INTO xla_diag_sources  --line2
67218 (
67219         event_id
67220       , ledger_id
67221       , sla_ledger_id
67222       , description_language
67223       , object_name
67224       , object_type_code
67225       , line_number
67226       , source_application_id
67227       , source_type_code
67228       , source_code
67229       , source_value
67230       , source_meaning
67231       , created_by
67232       , creation_date
67233       , last_update_date
67234       , last_updated_by
67235       , last_update_login
67236       , program_update_date
67237       , program_application_id
67238       , program_id
67239       , request_id
67240 )
67241 SELECT  event_id
67242       , p_target_ledger_id
67243       , p_sla_ledger_id
67244       , p_language
67245       , object_name
67246       , object_type_code
67247       , line_number
67248       , source_application_id
67249       , source_type_code
67250       , source_code
67251       , SUBSTR(source_value,1,1996)
67252       , SUBSTR(source_meaning ,1,200)
67253       , xla_environment_pkg.g_Usr_Id
67254       , TRUNC(SYSDATE)
67255       , TRUNC(SYSDATE)
67256       , xla_environment_pkg.g_Usr_Id
67257       , xla_environment_pkg.g_Login_Id
67258       , TRUNC(SYSDATE)
67259       , xla_environment_pkg.g_Prog_Appl_Id
67260       , xla_environment_pkg.g_Prog_Id
67261       , xla_environment_pkg.g_Req_Id
67262   FROM (
67263        SELECT xet.event_id                  event_id
67264             , l4.line_number                 line_number
67265             , CASE r
67266                WHEN 1 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67267                 WHEN 2 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67268                 WHEN 3 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67269                 WHEN 4 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67270                 WHEN 5 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67271                 WHEN 6 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67272                 WHEN 7 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67273                 WHEN 8 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67274                 WHEN 9 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67275                 WHEN 10 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67276                 WHEN 11 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67277                 WHEN 12 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67278                 WHEN 13 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67279                 WHEN 14 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67280                 WHEN 15 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67281                 WHEN 16 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67282                 WHEN 17 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67283                 WHEN 18 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67284                 WHEN 19 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67285                 WHEN 20 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67286                 WHEN 21 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67287                 WHEN 22 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
67288                 
67289                ELSE null
67290               END                           object_name
67291             , CASE r
67292                 WHEN 1 THEN 'LINE' 
67293                 WHEN 2 THEN 'LINE' 
67294                 WHEN 3 THEN 'LINE' 
67295                 WHEN 4 THEN 'LINE' 
67296                 WHEN 5 THEN 'LINE' 
67297                 WHEN 6 THEN 'LINE' 
67298                 WHEN 7 THEN 'LINE' 
67299                 WHEN 8 THEN 'LINE' 
67300                 WHEN 9 THEN 'LINE' 
67301                 WHEN 10 THEN 'LINE' 
67302                 WHEN 11 THEN 'LINE' 
67303                 WHEN 12 THEN 'LINE' 
67304                 WHEN 13 THEN 'LINE' 
67305                 WHEN 14 THEN 'LINE' 
67306                 WHEN 15 THEN 'LINE' 
67307                 WHEN 16 THEN 'LINE' 
67308                 WHEN 17 THEN 'LINE' 
67309                 WHEN 18 THEN 'LINE' 
67310                 WHEN 19 THEN 'LINE' 
67311                 WHEN 20 THEN 'LINE' 
67312                 WHEN 21 THEN 'LINE' 
67313                 WHEN 22 THEN 'LINE' 
67314                 
67315                 ELSE null
67316               END                           object_type_code
67317             , CASE r
67318                 WHEN 1 THEN '222' 
67319                 WHEN 2 THEN '222' 
67320                 WHEN 3 THEN '222' 
67321                 WHEN 4 THEN '222' 
67322                 WHEN 5 THEN '222' 
67323                 WHEN 6 THEN '222' 
67324                 WHEN 7 THEN '222' 
67325                 WHEN 8 THEN '222' 
67326                 WHEN 9 THEN '222' 
67327                 WHEN 10 THEN '222' 
67328                 WHEN 11 THEN '222' 
67329                 WHEN 12 THEN '222' 
67330                 WHEN 13 THEN '222' 
67331                 WHEN 14 THEN '222' 
67332                 WHEN 15 THEN '222' 
67333                 WHEN 16 THEN '222' 
67334                 WHEN 17 THEN '222' 
67338                 WHEN 21 THEN '222' 
67335                 WHEN 18 THEN '222' 
67336                 WHEN 19 THEN '222' 
67337                 WHEN 20 THEN '222' 
67339                 WHEN 22 THEN '222' 
67340                 
67341                 ELSE null
67342               END                           source_application_id
67343             , 'S'             source_type_code
67344             , CASE r
67345                 WHEN 1 THEN 'JLBR_BORDERO_TYPE' 
67346                 WHEN 2 THEN 'JLBR_CD_BANK_CHARGES_CCID' 
67347                 WHEN 3 THEN 'JLBR_CD_BIL_UND_COLL_CCID' 
67348                 WHEN 4 THEN 'JLBR_CD_CASH_CCID' 
67349                 WHEN 5 THEN 'JLBR_CD_COLL_ENDRSMNT_CCID' 
67350                 WHEN 6 THEN 'JLBR_DISTRIBUTION_TYPE' 
67351                 WHEN 7 THEN 'JLBR_ACCT_REVERSING_OPTN' 
67352                 WHEN 8 THEN 'JLBR_PRIOR_DIST_LINK_TYPE' 
67353                 WHEN 9 THEN 'JLBR_PRIOR_DIST_ID' 
67354                 WHEN 10 THEN 'JLBR_PRIOR_DOCUMENT_ID' 
67355                 WHEN 11 THEN 'JLBR_PRIOR_OCCURRENCE_ID' 
67356                 WHEN 12 THEN 'JLBR_DISTRIBUTION_ID' 
67357                 WHEN 13 THEN 'JLBR_DISTRIBUTION_LINK_TYPE' 
67358                 WHEN 14 THEN 'JLBR_ENTERED_AMT' 
67359                 WHEN 15 THEN 'JLBR_ENTERED_CURRENCY_CODE' 
67360                 WHEN 16 THEN 'JLBR_CONVERSION_DATE' 
67361                 WHEN 17 THEN 'JLBR_CONVERSION_RATE' 
67362                 WHEN 18 THEN 'JLBR_CONVERSION_RATE_TYPE' 
67363                 WHEN 19 THEN 'JLBR_ACCTD_AMT' 
67364                 WHEN 20 THEN 'JLBR_REVERSED_DIST_ID' 
67365                 WHEN 21 THEN 'JLBR_REVERSED_DIST_LINK_TYPE' 
67366                 WHEN 22 THEN 'JLBR_BANK_OCC_TYPE' 
67367                 
67368                 ELSE null
67369               END                           source_code
67370             , CASE r
67371                 WHEN 1 THEN TO_CHAR(l4.JLBR_BORDERO_TYPE)
67372                 WHEN 2 THEN TO_CHAR(l4.JLBR_CD_BANK_CHARGES_CCID)
67373                 WHEN 3 THEN TO_CHAR(l4.JLBR_CD_BIL_UND_COLL_CCID)
67374                 WHEN 4 THEN TO_CHAR(l4.JLBR_CD_CASH_CCID)
67375                 WHEN 5 THEN TO_CHAR(l4.JLBR_CD_COLL_ENDRSMNT_CCID)
67376                 WHEN 6 THEN TO_CHAR(l4.JLBR_DISTRIBUTION_TYPE)
67377                 WHEN 7 THEN TO_CHAR(l4.JLBR_ACCT_REVERSING_OPTN)
67378                 WHEN 8 THEN TO_CHAR(l4.JLBR_PRIOR_DIST_LINK_TYPE)
67379                 WHEN 9 THEN TO_CHAR(l4.JLBR_PRIOR_DIST_ID)
67380                 WHEN 10 THEN TO_CHAR(l4.JLBR_PRIOR_DOCUMENT_ID)
67381                 WHEN 11 THEN TO_CHAR(l4.JLBR_PRIOR_OCCURRENCE_ID)
67382                 WHEN 12 THEN TO_CHAR(l4.JLBR_DISTRIBUTION_ID)
67383                 WHEN 13 THEN TO_CHAR(l4.JLBR_DISTRIBUTION_LINK_TYPE)
67384                 WHEN 14 THEN TO_CHAR(l4.JLBR_ENTERED_AMT)
67385                 WHEN 15 THEN TO_CHAR(l4.JLBR_ENTERED_CURRENCY_CODE)
67386                 WHEN 16 THEN TO_CHAR(l4.JLBR_CONVERSION_DATE)
67387                 WHEN 17 THEN TO_CHAR(l4.JLBR_CONVERSION_RATE)
67388                 WHEN 18 THEN TO_CHAR(l4.JLBR_CONVERSION_RATE_TYPE)
67389                 WHEN 19 THEN TO_CHAR(l4.JLBR_ACCTD_AMT)
67390                 WHEN 20 THEN TO_CHAR(l4.JLBR_REVERSED_DIST_ID)
67391                 WHEN 21 THEN TO_CHAR(l4.JLBR_REVERSED_DIST_LINK_TYPE)
67392                 WHEN 22 THEN TO_CHAR(l4.JLBR_BANK_OCC_TYPE)
67393                 
67394                 ELSE null
67395               END                           source_value
67396             , CASE r
67397                 WHEN 1 THEN fvl7.meaning
67398                 WHEN 6 THEN fvl66.meaning
67399                 WHEN 7 THEN fvl67.meaning
67400                 WHEN 22 THEN fvl85.meaning
67401                 
67402                 ELSE null
67403               END               source_meaning
67404          FROM  xla_events_gt     xet  
67405         , JL_BR_AR_COLL_DOC_DISTS_L_V  l4
67406   , fnd_lookup_values    fvl7
67407   , fnd_lookup_values    fvl66
67408   , fnd_lookup_values    fvl67
67409   , fnd_lookup_values    fvl85
67410             , (select rownum r from all_objects where rownum <= 22 and owner = p_apps_owner)
67411         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
67412           AND xet.event_class_code = C_EVENT_CLASS_CODE
67413             AND l4.event_id          = xet.event_id
67414    AND fvl7.lookup_type(+)         = 'JLBR_AR_BORDERO_TYPE'
67415   AND fvl7.lookup_code(+)         = l4.JLBR_BORDERO_TYPE
67416   AND fvl7.view_application_id(+) = 0
67417   AND fvl7.language(+)            = USERENV('LANG')
67418      AND fvl66.lookup_type(+)         = 'JLBR_AR_DIST_TYPE'
67419   AND fvl66.lookup_code(+)         = l4.JLBR_DISTRIBUTION_TYPE
67420   AND fvl66.view_application_id(+) = 0
67421   AND fvl66.language(+)            = USERENV('LANG')
67422      AND fvl67.lookup_type(+)         = 'YES_NO'
67423   AND fvl67.lookup_code(+)         = l4.JLBR_ACCT_REVERSING_OPTN
67424   AND fvl67.view_application_id(+) = 0
67425   AND fvl67.language(+)            = USERENV('LANG')
67426      AND fvl85.lookup_type(+)         = 'JLBR_AR_BANK_OCCURRENCE_TYPE'
67427   AND fvl85.lookup_code(+)         = l4.JLBR_BANK_OCC_TYPE
67428   AND fvl85.view_application_id(+) = 0
67429   AND fvl85.language(+)            = USERENV('LANG')
67430   
67431 )
67432 ;
67433 --
67434 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67435 
67436       trace
67437          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
67438          ,p_level    => C_LEVEL_STATEMENT
67439          ,p_module   => l_log_module);
67440 
67441 END IF;
67442 
67443 
67447          ,p_level    => C_LEVEL_PROCEDURE
67444 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67445       trace
67446          (p_msg      => 'END of insert_sources_129'
67448          ,p_module   => l_log_module);
67449 END IF;
67450 EXCEPTION
67451   WHEN xla_exceptions_pkg.application_exception THEN
67452       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
67453             trace
67454                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
67455                ,p_level    => C_LEVEL_EXCEPTION
67456                ,p_module   => l_log_module);
67457       END IF;
67458       RAISE;
67459   WHEN OTHERS THEN
67460       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
67461             trace
67462                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
67463                ,p_level    => C_LEVEL_EXCEPTION
67464                ,p_module   => l_log_module);
67465        END IF;
67466        xla_exceptions_pkg.raise_message
67467            (p_location => 'XLA_00222_AAD_S_000017_PKG.insert_sources_129');
67468 END insert_sources_129;
67469 --
67470 
67471 ---------------------------------------
67472 --
67473 -- PRIVATE FUNCTION
67474 --         EventClass_129
67475 --
67476 ----------------------------------------
67477 --
67478 FUNCTION EventClass_129
67479        (p_application_id         IN NUMBER
67480        ,p_base_ledger_id         IN NUMBER
67481        ,p_target_ledger_id       IN NUMBER
67482        ,p_language               IN VARCHAR2
67483        ,p_currency_code          IN VARCHAR2
67484        ,p_sla_ledger_id          IN NUMBER
67485        ,p_pad_start_date         IN DATE
67486        ,p_pad_end_date           IN DATE
67487        ,p_primary_ledger_id      IN NUMBER)
67488 RETURN BOOLEAN IS
67489 --
67490 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'COLLECTION_OCC_DOCUMENT_ALL';
67491 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'COLLECTION_OCC_DOCUMENT';
67492 
67493 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
67494 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
67495 --
67496 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
67497 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
67498 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
67499 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
67500 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
67501 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
67502 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
67503 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
67504 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
67505 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
67506 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
67507 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
67508 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
67509 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
67510 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
67511 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
67512 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
67513 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
67514 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
67515 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
67516 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
67517 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
67518 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
67519 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
67520 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
67521 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
67522 
67523 l_event_id                             NUMBER;
67524 l_previous_event_id                    NUMBER;
67525 l_first_event_id                       NUMBER;
67526 l_last_event_id                        NUMBER;
67527 
67528 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
67529 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
67530 --
67531 --
67532 l_result                    BOOLEAN := TRUE;
67533 l_rows                      NUMBER  := 1000;
67534 l_event_type_name           VARCHAR2(80) := 'All';
67535 l_event_class_name          VARCHAR2(80) := 'Collection Occurrence Documents';
67536 l_description               VARCHAR2(4000);
67537 l_transaction_reversal      NUMBER;
67538 l_ae_header_id              NUMBER;
67539 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
67540 l_log_module                VARCHAR2(240);
67541 --
67542 l_acct_reversal_source      VARCHAR2(30);
67543 l_trx_reversal_source       VARCHAR2(30);
67544 
67545 l_continue_with_lines       BOOLEAN := TRUE;
67546 --
67547 l_acc_rev_gl_date_source    DATE;                      -- 4262811
67548 --
67549 type t_array_event_id is table of number index by binary_integer;
67550 
67551 l_rec_array_event                    t_rec_array_event;
67552 l_null_rec_array_event               t_rec_array_event;
67556 l_balance_type_code                  VARCHAR2(1) :=NULL;
67553 l_array_ae_header_id                 xla_number_array_type;
67554 l_actual_flag                        VARCHAR2(1) := NULL;
67555 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
67557 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
67558 
67559 --
67560 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
67561 --
67562 
67563 TYPE t_array_source_4 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_BANK_OCC_DESC%TYPE INDEX BY BINARY_INTEGER;
67564 TYPE t_array_source_5 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_DOCUMENT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
67565 TYPE t_array_source_6 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_TRADE_NOTE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
67566 TYPE t_array_source_37 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
67567 TYPE t_array_source_38 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
67568 TYPE t_array_source_39 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
67569 TYPE t_array_source_82 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_OCCURRENCE_ID%TYPE INDEX BY BINARY_INTEGER;
67570 TYPE t_array_source_113 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_EXCHG_GAIN_CCID%TYPE INDEX BY BINARY_INTEGER;
67571 TYPE t_array_source_114 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_EXCHG_LOSS_CCID%TYPE INDEX BY BINARY_INTEGER;
67572 TYPE t_array_source_115 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_GL_DATE%TYPE INDEX BY BINARY_INTEGER;
67573 TYPE t_array_source_116 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_TRANSFER_TO_GL_FLAG%TYPE INDEX BY BINARY_INTEGER;
67574 
67575 TYPE t_array_source_7 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_BORDERO_TYPE%TYPE INDEX BY BINARY_INTEGER;
67576 TYPE t_array_source_15 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_BANK_CHARGES_CCID%TYPE INDEX BY BINARY_INTEGER;
67577 TYPE t_array_source_16 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_BIL_UND_COLL_CCID%TYPE INDEX BY BINARY_INTEGER;
67578 TYPE t_array_source_18 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_CASH_CCID%TYPE INDEX BY BINARY_INTEGER;
67579 TYPE t_array_source_19 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_COLL_ENDRSMNT_CCID%TYPE INDEX BY BINARY_INTEGER;
67580 TYPE t_array_source_66 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
67581 TYPE t_array_source_67 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ACCT_REVERSING_OPTN%TYPE INDEX BY BINARY_INTEGER;
67582 TYPE t_array_source_69 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
67583 TYPE t_array_source_71 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
67584 TYPE t_array_source_72 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_DOCUMENT_ID%TYPE INDEX BY BINARY_INTEGER;
67585 TYPE t_array_source_73 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_OCCURRENCE_ID%TYPE INDEX BY BINARY_INTEGER;
67586 TYPE t_array_source_74 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
67587 TYPE t_array_source_75 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_DISTRIBUTION_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
67588 TYPE t_array_source_76 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ENTERED_AMT%TYPE INDEX BY BINARY_INTEGER;
67589 TYPE t_array_source_77 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
67590 TYPE t_array_source_78 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
67591 TYPE t_array_source_79 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
67592 TYPE t_array_source_80 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CONVERSION_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
67593 TYPE t_array_source_81 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
67594 TYPE t_array_source_83 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_REVERSED_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
67595 TYPE t_array_source_84 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_REVERSED_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
67596 TYPE t_array_source_85 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_BANK_OCC_TYPE%TYPE INDEX BY BINARY_INTEGER;
67597 
67598 l_array_source_4              t_array_source_4;
67599 l_array_source_5              t_array_source_5;
67600 l_array_source_6              t_array_source_6;
67601 l_array_source_37              t_array_source_37;
67602 l_array_source_38              t_array_source_38;
67603 l_array_source_39              t_array_source_39;
67604 l_array_source_82              t_array_source_82;
67605 l_array_source_113              t_array_source_113;
67606 l_array_source_114              t_array_source_114;
67607 l_array_source_115              t_array_source_115;
67608 l_array_source_116              t_array_source_116;
67609 l_array_source_116_meaning      t_array_lookup_meaning;
67610 
67611 l_array_source_7      t_array_source_7;
67612 l_array_source_7_meaning      t_array_lookup_meaning;
67613 l_array_source_15      t_array_source_15;
67614 l_array_source_16      t_array_source_16;
67615 l_array_source_18      t_array_source_18;
67616 l_array_source_19      t_array_source_19;
67617 l_array_source_66      t_array_source_66;
67618 l_array_source_66_meaning      t_array_lookup_meaning;
67619 l_array_source_67      t_array_source_67;
67620 l_array_source_67_meaning      t_array_lookup_meaning;
67621 l_array_source_69      t_array_source_69;
67622 l_array_source_71      t_array_source_71;
67623 l_array_source_72      t_array_source_72;
67624 l_array_source_73      t_array_source_73;
67625 l_array_source_74      t_array_source_74;
67626 l_array_source_75      t_array_source_75;
67627 l_array_source_76      t_array_source_76;
67631 l_array_source_80      t_array_source_80;
67628 l_array_source_77      t_array_source_77;
67629 l_array_source_78      t_array_source_78;
67630 l_array_source_79      t_array_source_79;
67632 l_array_source_81      t_array_source_81;
67633 l_array_source_83      t_array_source_83;
67634 l_array_source_84      t_array_source_84;
67635 l_array_source_85      t_array_source_85;
67636 l_array_source_85_meaning      t_array_lookup_meaning;
67637 
67638 --
67639 CURSOR header_cur
67640 IS
67641 SELECT /*+ leading(xet) cardinality(xet,1) */
67642 -- Event Class Code: COLLECTION_OCC_DOCUMENT
67643     xet.entity_id
67644    ,xet.legal_entity_id
67645    ,xet.entity_code
67646    ,xet.transaction_number
67647    ,xet.event_id
67648    ,xet.event_class_code
67649    ,xet.event_type_code
67650    ,xet.event_number
67651    ,xet.event_date
67652    ,xet.transaction_date
67653    ,xet.reference_num_1
67654    ,xet.reference_num_2
67655    ,xet.reference_num_3
67656    ,xet.reference_num_4
67657    ,xet.reference_char_1
67658    ,xet.reference_char_2
67659    ,xet.reference_char_3
67660    ,xet.reference_char_4
67661    ,xet.reference_date_1
67662    ,xet.reference_date_2
67663    ,xet.reference_date_3
67664    ,xet.reference_date_4
67665    ,xet.event_created_by
67666    ,xet.budgetary_control_flag 
67667   , h5.JLBR_BANK_OCC_DESC    source_4
67668   , h5.JLBR_DOCUMENT_NUMBER    source_5
67669   , h5.JLBR_TRADE_NOTE_NUMBER    source_6
67670   , h1.BILL_CUST_ACCOUNT_ID    source_37
67671   , h2.BILL_USES_SITE_USE_ID    source_38
67672   , h3.XLA_PARTY_TYPE    source_39
67673   , h5.JLBR_OCCURRENCE_ID    source_82
67674   , h5.JLBR_EXCHG_GAIN_CCID    source_113
67675   , h5.JLBR_EXCHG_LOSS_CCID    source_114
67676   , h5.JLBR_GL_DATE    source_115
67677   , h5.JLBR_TRANSFER_TO_GL_FLAG    source_116
67678   , fvl116.meaning   source_116_meaning
67679   FROM xla_events_gt     xet 
67680   , AR_BILL_TO_CUSTOMERS_S_V  h1
67681   , AR_BILL_TO_SITE_USES_S_V  h2
67682   , AR_TRANSACTIONS_S_V  h3
67683   , JL_BR_AR_COLL_OCC_DOCS_H_V  h5
67684   , fnd_lookup_values    fvl116
67685  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
67686    and xet.event_class_code = C_EVENT_CLASS_CODE
67687    and xet.event_status_code <> 'N'  AND h5.event_id = xet.event_id
67688   AND h1.event_id (+) = h5.event_id
67689   AND h2.event_id (+) = h5.event_id
67690   AND h3.event_id (+) = h5.event_id
67691    AND fvl116.lookup_type(+)         = 'YES_NO'
67692   AND fvl116.lookup_code(+)         = h5.JLBR_TRANSFER_TO_GL_FLAG
67693   AND fvl116.view_application_id(+) = 0
67694   AND fvl116.language(+)            = USERENV('LANG')
67695   
67696  ORDER BY event_id
67697 ;
67698 
67699 
67700 --
67701 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
67702 IS
67703 SELECT  /*+ leading(xet) cardinality(xet,1) */
67704 -- Event Class Code: COLLECTION_OCC_DOCUMENT
67705     xet.entity_id
67706    ,xet.legal_entity_id
67707    ,xet.entity_code
67708    ,xet.transaction_number
67709    ,xet.event_id
67710    ,xet.event_class_code
67711    ,xet.event_type_code
67712    ,xet.event_number
67713    ,xet.event_date
67714    ,xet.transaction_date
67715    ,xet.reference_num_1
67716    ,xet.reference_num_2
67717    ,xet.reference_num_3
67718    ,xet.reference_num_4
67719    ,xet.reference_char_1
67720    ,xet.reference_char_2
67721    ,xet.reference_char_3
67722    ,xet.reference_char_4
67723    ,xet.reference_date_1
67724    ,xet.reference_date_2
67725    ,xet.reference_date_3
67726    ,xet.reference_date_4
67727    ,xet.event_created_by
67728    ,xet.budgetary_control_flag
67729  , l4.LINE_NUMBER  
67730   , l4.JLBR_BORDERO_TYPE    source_7
67731   , fvl7.meaning   source_7_meaning
67732   , l4.JLBR_CD_BANK_CHARGES_CCID    source_15
67733   , l4.JLBR_CD_BIL_UND_COLL_CCID    source_16
67734   , l4.JLBR_CD_CASH_CCID    source_18
67735   , l4.JLBR_CD_COLL_ENDRSMNT_CCID    source_19
67736   , l4.JLBR_DISTRIBUTION_TYPE    source_66
67737   , fvl66.meaning   source_66_meaning
67738   , l4.JLBR_ACCT_REVERSING_OPTN    source_67
67739   , fvl67.meaning   source_67_meaning
67740   , l4.JLBR_PRIOR_DIST_LINK_TYPE    source_69
67741   , l4.JLBR_PRIOR_DIST_ID    source_71
67742   , l4.JLBR_PRIOR_DOCUMENT_ID    source_72
67743   , l4.JLBR_PRIOR_OCCURRENCE_ID    source_73
67744   , l4.JLBR_DISTRIBUTION_ID    source_74
67745   , l4.JLBR_DISTRIBUTION_LINK_TYPE    source_75
67746   , l4.JLBR_ENTERED_AMT    source_76
67747   , l4.JLBR_ENTERED_CURRENCY_CODE    source_77
67748   , l4.JLBR_CONVERSION_DATE    source_78
67749   , l4.JLBR_CONVERSION_RATE    source_79
67750   , l4.JLBR_CONVERSION_RATE_TYPE    source_80
67751   , l4.JLBR_ACCTD_AMT    source_81
67752   , l4.JLBR_REVERSED_DIST_ID    source_83
67753   , l4.JLBR_REVERSED_DIST_LINK_TYPE    source_84
67754   , l4.JLBR_BANK_OCC_TYPE    source_85
67755   , fvl85.meaning   source_85_meaning
67756   FROM xla_events_gt     xet 
67757   , JL_BR_AR_COLL_DOC_DISTS_L_V  l4
67758   , fnd_lookup_values    fvl7
67759   , fnd_lookup_values    fvl66
67760   , fnd_lookup_values    fvl67
67761   , fnd_lookup_values    fvl85
67762  WHERE xet.event_id between x_first_event_id and x_last_event_id
67763    and xet.event_date between p_pad_start_date and p_pad_end_date
67764    and xet.event_class_code = C_EVENT_CLASS_CODE
67765    and xet.event_status_code <> 'N'   AND l4.event_id      = xet.event_id
67766    AND fvl7.lookup_type(+)         = 'JLBR_AR_BORDERO_TYPE'
67770      AND fvl66.lookup_type(+)         = 'JLBR_AR_DIST_TYPE'
67767   AND fvl7.lookup_code(+)         = l4.JLBR_BORDERO_TYPE
67768   AND fvl7.view_application_id(+) = 0
67769   AND fvl7.language(+)            = USERENV('LANG')
67771   AND fvl66.lookup_code(+)         = l4.JLBR_DISTRIBUTION_TYPE
67772   AND fvl66.view_application_id(+) = 0
67773   AND fvl66.language(+)            = USERENV('LANG')
67774      AND fvl67.lookup_type(+)         = 'YES_NO'
67775   AND fvl67.lookup_code(+)         = l4.JLBR_ACCT_REVERSING_OPTN
67776   AND fvl67.view_application_id(+) = 0
67777   AND fvl67.language(+)            = USERENV('LANG')
67778      AND fvl85.lookup_type(+)         = 'JLBR_AR_BANK_OCCURRENCE_TYPE'
67779   AND fvl85.lookup_code(+)         = l4.JLBR_BANK_OCC_TYPE
67780   AND fvl85.view_application_id(+) = 0
67781   AND fvl85.language(+)            = USERENV('LANG')
67782   ;
67783 
67784 --
67785 BEGIN
67786 IF g_log_enabled THEN
67787    l_log_module := C_DEFAULT_MODULE||'.EventClass_129';
67788 END IF;
67789 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67790    trace
67791       (p_msg      => 'BEGIN of EventClass_129'
67792       ,p_level    => C_LEVEL_PROCEDURE
67793       ,p_module   => l_log_module);
67794 END IF;
67795 
67796 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67797    trace
67798       (p_msg      => 'p_application_id = '||p_application_id||
67799                      ' - p_base_ledger_id = '||p_base_ledger_id||
67800                      ' - p_target_ledger_id  = '||p_target_ledger_id||
67801                      ' - p_language = '||p_language||
67802                      ' - p_currency_code = '||p_currency_code||
67803                      ' - p_sla_ledger_id = '||p_sla_ledger_id
67804       ,p_level    => C_LEVEL_STATEMENT
67805       ,p_module   => l_log_module);
67806 END IF;
67807 --
67808 -- initialze arrays
67809 --
67810 g_array_event.DELETE;
67811 l_rec_array_event := l_null_rec_array_event;
67812 --
67813 --------------------------------------
67814 -- 4262811 Initialze MPA Line Number
67815 --------------------------------------
67816 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
67817 
67818 --
67819 
67820 --
67821 OPEN header_cur;
67822 --
67823 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67824    trace
67825    (p_msg      => 'SQL - FETCH header_cur'
67826    ,p_level    => C_LEVEL_STATEMENT
67827    ,p_module   => l_log_module);
67828 END IF;
67829 --
67830 LOOP
67831 FETCH header_cur BULK COLLECT INTO
67832         l_array_entity_id
67833       , l_array_legal_entity_id
67834       , l_array_entity_code
67835       , l_array_transaction_num
67836       , l_array_event_id
67837       , l_array_class_code
67838       , l_array_event_type
67839       , l_array_event_number
67840       , l_array_event_date
67841       , l_array_transaction_date
67842       , l_array_reference_num_1
67843       , l_array_reference_num_2
67844       , l_array_reference_num_3
67845       , l_array_reference_num_4
67846       , l_array_reference_char_1
67847       , l_array_reference_char_2
67848       , l_array_reference_char_3
67849       , l_array_reference_char_4
67850       , l_array_reference_date_1
67851       , l_array_reference_date_2
67852       , l_array_reference_date_3
67853       , l_array_reference_date_4
67854       , l_array_event_created_by
67855       , l_array_budgetary_control_flag 
67856       , l_array_source_4
67857       , l_array_source_5
67858       , l_array_source_6
67859       , l_array_source_37
67860       , l_array_source_38
67861       , l_array_source_39
67862       , l_array_source_82
67863       , l_array_source_113
67864       , l_array_source_114
67865       , l_array_source_115
67866       , l_array_source_116
67867       , l_array_source_116_meaning
67868       LIMIT l_rows;
67869 --
67870 IF (C_LEVEL_EVENT >= g_log_level) THEN
67871    trace
67872    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
67873    ,p_level    => C_LEVEL_EVENT
67874    ,p_module   => l_log_module);
67875 END IF;
67876 --
67877 EXIT WHEN l_array_entity_id.COUNT = 0;
67878 
67879 -- initialize arrays
67880 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
67881 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
67882 
67883 --
67884 -- Bug 4458708
67885 --
67886 XLA_AE_LINES_PKG.g_LineNumber := 0;
67887 
67888 
67889 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
67890 g_last_hdr_idx := l_array_event_id.LAST;
67891 --
67892 -- loop for the headers. Each iteration is for each header extract row
67893 -- fetched in header cursor
67894 --
67895 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
67896 
67897 --
67898 -- set event info as cache for other routines to refer event attributes
67899 --
67900 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
67901    (p_application_id           => p_application_id
67902    ,p_primary_ledger_id        => p_primary_ledger_id
67903    ,p_base_ledger_id           => p_base_ledger_id
67904    ,p_target_ledger_id         => p_target_ledger_id
67905    ,p_entity_id                => l_array_entity_id(hdr_idx)
67906    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
67907    ,p_entity_code              => l_array_entity_code(hdr_idx)
67911    ,p_event_type_code          => l_array_event_type(hdr_idx)
67908    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
67909    ,p_event_id                 => l_array_event_id(hdr_idx)
67910    ,p_event_class_code         => l_array_class_code(hdr_idx)
67912    ,p_event_number             => l_array_event_number(hdr_idx)
67913    ,p_event_date               => l_array_event_date(hdr_idx)
67914    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
67915    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
67916    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
67917    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
67918    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
67919    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
67920    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
67921    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
67922    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
67923    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
67924    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
67925    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
67926    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
67927    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
67928    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
67929 
67930 --
67931 -- set the status of entry to C_VALID (0)
67932 --
67933 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
67934 
67935 --
67936 -- initialize a row for ae header
67937 --
67938 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
67939 
67940 l_event_id := l_array_event_id(hdr_idx);
67941 
67942 --
67943 -- storing the hdr_idx for event. May be used by line cursor.
67944 --
67945 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
67946 
67947 --
67948 -- store sources from header extract. This can be improved to
67949 -- store only those sources from header extract that may be used in lines
67950 --
67951 
67952 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
67953 g_array_event(l_event_id).array_value_num('source_5') := l_array_source_5(hdr_idx);
67954 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
67955 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
67956 g_array_event(l_event_id).array_value_num('source_38') := l_array_source_38(hdr_idx);
67957 g_array_event(l_event_id).array_value_char('source_39') := l_array_source_39(hdr_idx);
67958 g_array_event(l_event_id).array_value_num('source_82') := l_array_source_82(hdr_idx);
67959 g_array_event(l_event_id).array_value_num('source_113') := l_array_source_113(hdr_idx);
67960 g_array_event(l_event_id).array_value_num('source_114') := l_array_source_114(hdr_idx);
67961 g_array_event(l_event_id).array_value_date('source_115') := l_array_source_115(hdr_idx);
67962 g_array_event(l_event_id).array_value_char('source_116') := l_array_source_116(hdr_idx);
67963 g_array_event(l_event_id).array_value_char('source_116_meaning') := l_array_source_116_meaning(hdr_idx);
67964 
67965 --
67966 -- initilaize the status of ae headers for diffrent balance types
67967 -- the status is initialised to C_NOT_CREATED (2)
67968 --
67969 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
67970 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
67971 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
67972 
67973 --
67974 -- call api to validate and store accounting attributes for header
67975 --
67976 
67977 ------------------------------------------------------------
67978 -- Accrual Reversal : to get date for Standard Source (NONE)
67979 ------------------------------------------------------------
67980 l_acc_rev_gl_date_source := NULL;
67981 
67982      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
67983       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_115');
67984      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
67985       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_116');
67986 
67987 
67988 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
67989 
67990 XLA_AE_HEADER_PKG.SetJeCategoryName;
67991 
67992 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
67993 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
67994 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
67995 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
67996 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
67997 
67998 
67999 -- No header level analytical criteria
68000 
68001 --
68002 --accounting attribute enhancement, bug 3612931
68003 --
68004 l_trx_reversal_source := SUBSTR(NULL, 1,30);
68005 
68006 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
68007    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
68008 
68009    xla_accounting_err_pkg.build_message
68010       (p_appli_s_name            => 'XLA'
68014       ,p_token_2                 => 'PRODUCT_NAME'
68011       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
68012       ,p_token_1                 => 'ACCT_ATTR_NAME'
68013       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
68015       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
68016       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
68017       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
68018       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
68019 
68020 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
68021    --
68022    -- following sets the accounting attributes needed to reverse
68023    -- accounting for a distributeion
68024    --
68025    xla_ae_lines_pkg.SetTrxReversalAttrs
68026       (p_event_id              => l_event_id
68027       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
68028       ,p_trx_reversal_source   => l_trx_reversal_source);
68029 
68030 END IF;
68031 
68032 
68033 ----------------------------------------------------------------
68034 -- 4262811 -  update the header statuses to invalid in need be
68035 ----------------------------------------------------------------
68036 --
68037 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
68038 
68039 
68040   -----------------------------------------------
68041   -- No accrual reversal for the event class/type
68042   -----------------------------------------------
68043 ----------------------------------------------------------------
68044 
68045 --
68046 -- this ends the header loop iteration for one bulk fetch
68047 --
68048 END LOOP;
68049 
68050 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
68051 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
68052 
68053 --
68054 -- insert dummy rows into lines gt table that were created due to
68055 -- transaction reversals
68056 --
68057 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
68058    l_result := XLA_AE_LINES_PKG.InsertLines;
68059 END IF;
68060 
68061 --
68062 -- reset the temp_line_num for each set of events fetched from header
68063 -- cursor rather than doing it for each new event in line cursor
68064 -- Bug 3939231
68065 --
68066 xla_ae_lines_pkg.g_temp_line_num := 0;
68067 
68068 
68069 
68070 --
68071 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
68072 --
68073 --
68074 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68075 
68076       trace
68077          (p_msg      => 'SQL - FETCH line_cur'
68078          ,p_level    => C_LEVEL_STATEMENT
68079          ,p_module   => l_log_module);
68080 
68081 END IF;
68082 --
68083 --
68084 LOOP
68085   --
68086   FETCH line_cur BULK COLLECT INTO
68087         l_array_entity_id
68088       , l_array_legal_entity_id
68089       , l_array_entity_code
68090       , l_array_transaction_num
68091       , l_array_event_id
68092       , l_array_class_code
68093       , l_array_event_type
68094       , l_array_event_number
68095       , l_array_event_date
68096       , l_array_transaction_date
68097       , l_array_reference_num_1
68098       , l_array_reference_num_2
68099       , l_array_reference_num_3
68100       , l_array_reference_num_4
68101       , l_array_reference_char_1
68102       , l_array_reference_char_2
68103       , l_array_reference_char_3
68104       , l_array_reference_char_4
68105       , l_array_reference_date_1
68106       , l_array_reference_date_2
68107       , l_array_reference_date_3
68108       , l_array_reference_date_4
68109       , l_array_event_created_by
68110       , l_array_budgetary_control_flag
68111       , l_array_extract_line_num 
68112       , l_array_source_7
68113       , l_array_source_7_meaning
68114       , l_array_source_15
68115       , l_array_source_16
68116       , l_array_source_18
68117       , l_array_source_19
68118       , l_array_source_66
68119       , l_array_source_66_meaning
68120       , l_array_source_67
68121       , l_array_source_67_meaning
68122       , l_array_source_69
68123       , l_array_source_71
68124       , l_array_source_72
68125       , l_array_source_73
68126       , l_array_source_74
68127       , l_array_source_75
68128       , l_array_source_76
68129       , l_array_source_77
68130       , l_array_source_78
68131       , l_array_source_79
68132       , l_array_source_80
68133       , l_array_source_81
68134       , l_array_source_83
68135       , l_array_source_84
68136       , l_array_source_85
68137       , l_array_source_85_meaning
68138       LIMIT l_rows;
68139 
68140   --
68141   IF (C_LEVEL_EVENT >= g_log_level) THEN
68142             trace
68143                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
68144                ,p_level    => C_LEVEL_EVENT
68145                ,p_module   => l_log_module);
68146   END IF;
68147   --
68148   EXIT WHEN l_array_entity_id.count = 0;
68149 
68150   XLA_AE_LINES_PKG.g_rec_lines := null;
68151 
68152 --
68153 -- Bug 4458708
68154 --
68155 XLA_AE_LINES_PKG.g_LineNumber := 0;
68159 FOR Idx IN 1..l_array_event_id.count LOOP
68156 --
68157 --
68158 
68160    --
68161    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
68162    --
68163    l_event_id := l_array_event_id(idx);  -- 5648433
68164 
68165    --
68166    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
68167    --
68168 
68169    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
68170              (g_array_event(l_event_id).array_value_num('header_index'))
68171          ,'N'
68172          ) <> 'Y'
68173    THEN
68174       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68175          trace
68176             (p_msg      => 'Trancaction revesal option is not Y '
68177             ,p_level    => C_LEVEL_STATEMENT
68178             ,p_module   => l_log_module);
68179       END IF;
68180 
68181 --
68182 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
68183 --
68184 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
68185 --
68186 -- set event info as cache for other routines to refer event attributes
68187 --
68188 
68189 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
68190    l_previous_event_id := l_event_id;
68191 
68192    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
68193       (p_application_id           => p_application_id
68194       ,p_primary_ledger_id        => p_primary_ledger_id
68195       ,p_base_ledger_id           => p_base_ledger_id
68196       ,p_target_ledger_id         => p_target_ledger_id
68197       ,p_entity_id                => l_array_entity_id(Idx)
68198       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
68199       ,p_entity_code              => l_array_entity_code(Idx)
68200       ,p_transaction_num          => l_array_transaction_num(Idx)
68201       ,p_event_id                 => l_array_event_id(Idx)
68202       ,p_event_class_code         => l_array_class_code(Idx)
68203       ,p_event_type_code          => l_array_event_type(Idx)
68204       ,p_event_number             => l_array_event_number(Idx)
68205       ,p_event_date               => l_array_event_date(Idx)
68206       ,p_transaction_date         => l_array_transaction_date(Idx)
68207       ,p_reference_num_1          => l_array_reference_num_1(Idx)
68208       ,p_reference_num_2          => l_array_reference_num_2(Idx)
68209       ,p_reference_num_3          => l_array_reference_num_3(Idx)
68210       ,p_reference_num_4          => l_array_reference_num_4(Idx)
68211       ,p_reference_char_1         => l_array_reference_char_1(Idx)
68212       ,p_reference_char_2         => l_array_reference_char_2(Idx)
68213       ,p_reference_char_3         => l_array_reference_char_3(Idx)
68214       ,p_reference_char_4         => l_array_reference_char_4(Idx)
68215       ,p_reference_date_1         => l_array_reference_date_1(Idx)
68216       ,p_reference_date_2         => l_array_reference_date_2(Idx)
68217       ,p_reference_date_3         => l_array_reference_date_3(Idx)
68218       ,p_reference_date_4         => l_array_reference_date_4(Idx)
68219       ,p_event_created_by         => l_array_event_created_by(Idx)
68220       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
68221        --
68222 END IF;
68223 
68224 
68225 
68226 --
68227 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
68228 
68229 l_acct_reversal_source := SUBSTR(l_array_source_67(Idx), 1,30);
68230 
68231 IF l_continue_with_lines THEN
68232    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
68233       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
68234 
68235       xla_accounting_err_pkg.build_message
68236          (p_appli_s_name            => 'XLA'
68237          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
68238          ,p_token_1                 => 'LINE_NUMBER'
68239          ,p_value_1                 => l_array_extract_line_num(Idx)
68240          ,p_token_2                 => 'PRODUCT_NAME'
68241          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
68242          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
68243          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
68244          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
68245 
68246    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
68247       --
68248       -- following sets the accounting attributes needed to reverse
68249       -- accounting for a distributeion
68250       --
68251 
68252       --
68253       -- 5217187
68254       --
68255       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
68256       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
68257                                        g_array_event(l_event_id).array_value_num('header_index'));
68258       --
68259       --
68260 
68261       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
68262       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_67(Idx);
68263       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
68264       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_74(Idx);
68265       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
68266       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_75(Idx);
68267       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'PARTY_TYPE';
68268       l_rec_rev_acct_attrs.array_char_value(5)  := g_array_event(l_event_id).array_value_char('source_39');
68272       l_rec_rev_acct_attrs.array_char_value(7)  := l_array_source_84(Idx);
68269       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'REVERSED_DISTRIBUTION_ID1';
68270       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_83(Idx);
68271       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'REVERSED_DISTRIBUTION_TYPE';
68273 
68274 
68275       xla_ae_lines_pkg.SetAcctReversalAttrs
68276          (p_event_id             => l_event_id
68277          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
68278          ,p_calculate_acctd_flag => l_calculate_acctd_flag
68279          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
68280    END IF;
68281 
68282    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
68283        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
68284 
68285 --
68286 AcctLineType_54 (
68287  p_application_id  => p_application_id
68288  ,p_event_id     => l_event_id
68289  ,p_calculate_acctd_flag => l_calculate_acctd_flag
68290  ,p_calculate_g_l_flag => l_calculate_g_l_flag
68291  ,p_actual_flag => l_actual_flag
68292  ,p_balance_type_code => l_balance_type_code
68293  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
68294  
68295  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
68296  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
68297  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
68298  , p_source_7 => l_array_source_7(Idx)
68299  , p_source_7_meaning => l_array_source_7_meaning(Idx)
68300  , p_source_15 => l_array_source_15(Idx)
68301  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
68302  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
68303  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
68304  , p_source_66 => l_array_source_66(Idx)
68305  , p_source_66_meaning => l_array_source_66_meaning(Idx)
68306  , p_source_67 => l_array_source_67(Idx)
68307  , p_source_67_meaning => l_array_source_67_meaning(Idx)
68308  , p_source_69 => l_array_source_69(Idx)
68309  , p_source_71 => l_array_source_71(Idx)
68310  , p_source_72 => l_array_source_72(Idx)
68311  , p_source_73 => l_array_source_73(Idx)
68312  , p_source_74 => l_array_source_74(Idx)
68313  , p_source_75 => l_array_source_75(Idx)
68314  , p_source_76 => l_array_source_76(Idx)
68315  , p_source_77 => l_array_source_77(Idx)
68316  , p_source_78 => l_array_source_78(Idx)
68317  , p_source_79 => l_array_source_79(Idx)
68318  , p_source_80 => l_array_source_80(Idx)
68319  , p_source_81 => l_array_source_81(Idx)
68320  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
68321  , p_source_83 => l_array_source_83(Idx)
68322  , p_source_84 => l_array_source_84(Idx)
68323  );
68324 If(l_balance_type_code = 'A') THEN
68325   l_actual_gain_loss_ref := l_gain_or_loss_ref;
68326 END IF;
68327 
68328 --
68329 
68330 
68331 --
68332 AcctLineType_55 (
68333  p_application_id  => p_application_id
68334  ,p_event_id     => l_event_id
68335  ,p_calculate_acctd_flag => l_calculate_acctd_flag
68336  ,p_calculate_g_l_flag => l_calculate_g_l_flag
68337  ,p_actual_flag => l_actual_flag
68338  ,p_balance_type_code => l_balance_type_code
68339  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
68340  
68341  , p_source_7 => l_array_source_7(Idx)
68342  , p_source_7_meaning => l_array_source_7_meaning(Idx)
68343  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
68344  , p_source_66 => l_array_source_66(Idx)
68345  , p_source_66_meaning => l_array_source_66_meaning(Idx)
68346  , p_source_67 => l_array_source_67(Idx)
68347  , p_source_67_meaning => l_array_source_67_meaning(Idx)
68348  , p_source_69 => l_array_source_69(Idx)
68349  , p_source_71 => l_array_source_71(Idx)
68350  , p_source_72 => l_array_source_72(Idx)
68351  , p_source_73 => l_array_source_73(Idx)
68352  , p_source_74 => l_array_source_74(Idx)
68353  , p_source_75 => l_array_source_75(Idx)
68354  , p_source_76 => l_array_source_76(Idx)
68355  , p_source_77 => l_array_source_77(Idx)
68356  , p_source_81 => l_array_source_81(Idx)
68357  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
68358  , p_source_83 => l_array_source_83(Idx)
68359  , p_source_84 => l_array_source_84(Idx)
68360  , p_source_85 => l_array_source_85(Idx)
68361  , p_source_85_meaning => l_array_source_85_meaning(Idx)
68362  );
68363 If(l_balance_type_code = 'A') THEN
68364   l_actual_gain_loss_ref := l_gain_or_loss_ref;
68365 END IF;
68366 
68367 --
68368 
68369 
68370 --
68371 AcctLineType_56 (
68372  p_application_id  => p_application_id
68373  ,p_event_id     => l_event_id
68374  ,p_calculate_acctd_flag => l_calculate_acctd_flag
68375  ,p_calculate_g_l_flag => l_calculate_g_l_flag
68376  ,p_actual_flag => l_actual_flag
68377  ,p_balance_type_code => l_balance_type_code
68378  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
68379  
68380  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
68381  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
68382  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
68383  , p_source_7 => l_array_source_7(Idx)
68384  , p_source_7_meaning => l_array_source_7_meaning(Idx)
68385  , p_source_16 => l_array_source_16(Idx)
68386  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
68387  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
68388  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
68392  , p_source_67_meaning => l_array_source_67_meaning(Idx)
68389  , p_source_66 => l_array_source_66(Idx)
68390  , p_source_66_meaning => l_array_source_66_meaning(Idx)
68391  , p_source_67 => l_array_source_67(Idx)
68393  , p_source_69 => l_array_source_69(Idx)
68394  , p_source_71 => l_array_source_71(Idx)
68395  , p_source_72 => l_array_source_72(Idx)
68396  , p_source_73 => l_array_source_73(Idx)
68397  , p_source_74 => l_array_source_74(Idx)
68398  , p_source_75 => l_array_source_75(Idx)
68399  , p_source_76 => l_array_source_76(Idx)
68400  , p_source_77 => l_array_source_77(Idx)
68401  , p_source_78 => l_array_source_78(Idx)
68402  , p_source_79 => l_array_source_79(Idx)
68403  , p_source_80 => l_array_source_80(Idx)
68404  , p_source_81 => l_array_source_81(Idx)
68405  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
68406  , p_source_83 => l_array_source_83(Idx)
68407  , p_source_84 => l_array_source_84(Idx)
68408  , p_source_85 => l_array_source_85(Idx)
68409  , p_source_85_meaning => l_array_source_85_meaning(Idx)
68410  );
68411 If(l_balance_type_code = 'A') THEN
68412   l_actual_gain_loss_ref := l_gain_or_loss_ref;
68413 END IF;
68414 
68415 --
68416 
68417 
68418 --
68419 AcctLineType_57 (
68420  p_application_id  => p_application_id
68421  ,p_event_id     => l_event_id
68422  ,p_calculate_acctd_flag => l_calculate_acctd_flag
68423  ,p_calculate_g_l_flag => l_calculate_g_l_flag
68424  ,p_actual_flag => l_actual_flag
68425  ,p_balance_type_code => l_balance_type_code
68426  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
68427  
68428  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
68429  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
68430  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
68431  , p_source_7 => l_array_source_7(Idx)
68432  , p_source_7_meaning => l_array_source_7_meaning(Idx)
68433  , p_source_18 => l_array_source_18(Idx)
68434  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
68435  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
68436  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
68437  , p_source_66 => l_array_source_66(Idx)
68438  , p_source_66_meaning => l_array_source_66_meaning(Idx)
68439  , p_source_67 => l_array_source_67(Idx)
68440  , p_source_67_meaning => l_array_source_67_meaning(Idx)
68441  , p_source_69 => l_array_source_69(Idx)
68442  , p_source_71 => l_array_source_71(Idx)
68443  , p_source_72 => l_array_source_72(Idx)
68444  , p_source_73 => l_array_source_73(Idx)
68445  , p_source_74 => l_array_source_74(Idx)
68446  , p_source_75 => l_array_source_75(Idx)
68447  , p_source_76 => l_array_source_76(Idx)
68448  , p_source_77 => l_array_source_77(Idx)
68449  , p_source_78 => l_array_source_78(Idx)
68450  , p_source_79 => l_array_source_79(Idx)
68451  , p_source_80 => l_array_source_80(Idx)
68452  , p_source_81 => l_array_source_81(Idx)
68453  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
68454  , p_source_83 => l_array_source_83(Idx)
68455  , p_source_84 => l_array_source_84(Idx)
68456  );
68457 If(l_balance_type_code = 'A') THEN
68458   l_actual_gain_loss_ref := l_gain_or_loss_ref;
68459 END IF;
68460 
68461 --
68462 
68463 
68464 --
68465 AcctLineType_58 (
68466  p_application_id  => p_application_id
68467  ,p_event_id     => l_event_id
68468  ,p_calculate_acctd_flag => l_calculate_acctd_flag
68469  ,p_calculate_g_l_flag => l_calculate_g_l_flag
68470  ,p_actual_flag => l_actual_flag
68471  ,p_balance_type_code => l_balance_type_code
68472  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
68473  
68474  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
68475  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
68476  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
68477  , p_source_7 => l_array_source_7(Idx)
68478  , p_source_7_meaning => l_array_source_7_meaning(Idx)
68479  , p_source_19 => l_array_source_19(Idx)
68480  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
68481  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
68482  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
68483  , p_source_66 => l_array_source_66(Idx)
68484  , p_source_66_meaning => l_array_source_66_meaning(Idx)
68485  , p_source_67 => l_array_source_67(Idx)
68486  , p_source_67_meaning => l_array_source_67_meaning(Idx)
68487  , p_source_69 => l_array_source_69(Idx)
68488  , p_source_71 => l_array_source_71(Idx)
68489  , p_source_72 => l_array_source_72(Idx)
68490  , p_source_73 => l_array_source_73(Idx)
68491  , p_source_74 => l_array_source_74(Idx)
68492  , p_source_75 => l_array_source_75(Idx)
68493  , p_source_76 => l_array_source_76(Idx)
68494  , p_source_77 => l_array_source_77(Idx)
68495  , p_source_78 => l_array_source_78(Idx)
68496  , p_source_79 => l_array_source_79(Idx)
68497  , p_source_80 => l_array_source_80(Idx)
68498  , p_source_81 => l_array_source_81(Idx)
68499  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
68500  , p_source_83 => l_array_source_83(Idx)
68501  , p_source_84 => l_array_source_84(Idx)
68502  , p_source_85 => l_array_source_85(Idx)
68503  , p_source_85_meaning => l_array_source_85_meaning(Idx)
68504  );
68505 If(l_balance_type_code = 'A') THEN
68506   l_actual_gain_loss_ref := l_gain_or_loss_ref;
68507 END IF;
68508 
68512 --
68509 --
68510 
68511 
68513 AcctLineType_59 (
68514  p_application_id  => p_application_id
68515  ,p_event_id     => l_event_id
68516  ,p_calculate_acctd_flag => l_calculate_acctd_flag
68517  ,p_calculate_g_l_flag => l_calculate_g_l_flag
68518  ,p_actual_flag => l_actual_flag
68519  ,p_balance_type_code => l_balance_type_code
68520  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
68521  
68522  , p_source_7 => l_array_source_7(Idx)
68523  , p_source_7_meaning => l_array_source_7_meaning(Idx)
68524  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
68525  , p_source_66 => l_array_source_66(Idx)
68526  , p_source_66_meaning => l_array_source_66_meaning(Idx)
68527  , p_source_67 => l_array_source_67(Idx)
68528  , p_source_67_meaning => l_array_source_67_meaning(Idx)
68529  , p_source_69 => l_array_source_69(Idx)
68530  , p_source_71 => l_array_source_71(Idx)
68531  , p_source_72 => l_array_source_72(Idx)
68532  , p_source_73 => l_array_source_73(Idx)
68533  , p_source_74 => l_array_source_74(Idx)
68534  , p_source_75 => l_array_source_75(Idx)
68535  , p_source_76 => l_array_source_76(Idx)
68536  , p_source_77 => l_array_source_77(Idx)
68537  , p_source_81 => l_array_source_81(Idx)
68538  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
68539  , p_source_83 => l_array_source_83(Idx)
68540  , p_source_84 => l_array_source_84(Idx)
68541  , p_source_85 => l_array_source_85(Idx)
68542  , p_source_85_meaning => l_array_source_85_meaning(Idx)
68543  );
68544 If(l_balance_type_code = 'A') THEN
68545   l_actual_gain_loss_ref := l_gain_or_loss_ref;
68546 END IF;
68547 
68548 --
68549 
68550       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
68551       -- or secondary ledger that has different currency with primary
68552       -- or alc that is calculated by sla
68553       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
68554             (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'))
68555 
68556 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
68557 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
68558           AND (l_actual_flag = 'A')) THEN
68559         XLA_AE_LINES_PKG.CreateGainOrLossLines(
68560           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
68561          ,p_application_id   => p_application_id
68562          ,p_amb_context_code => 'DEFAULT'
68563          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
68564          ,p_event_class_code => C_EVENT_CLASS_CODE
68565          ,p_event_type_code  => C_EVENT_TYPE_CODE
68566          
68567          ,p_gain_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_113'))
68568          ,p_loss_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_114'))
68569 
68570          ,p_actual_flag      => l_actual_flag
68571          ,p_enc_flag         => null
68572          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
68573          ,p_enc_g_l_ref      => null
68574          );
68575       END IF;
68576    END IF;
68577 END IF;
68578 
68579    ELSE
68580       --
68581       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
68582       --
68583       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68584          trace
68585             (p_msg      => 'Trancaction revesal option is Y'
68586             ,p_level    => C_LEVEL_STATEMENT
68587             ,p_module   => l_log_module);
68588       END IF;
68589    END IF;
68590 
68591 END LOOP;
68592 l_result := XLA_AE_LINES_PKG.InsertLines ;
68593 end loop;
68594 close line_cur;
68595 
68596 
68597 --
68598 -- insert headers into xla_ae_headers_gt table
68599 --
68600 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
68601 
68602 -- insert into errors table here.
68603 
68604 END LOOP;
68605 
68606 --
68607 -- 4865292
68608 --
68609 -- Compare g_hdr_extract_count with event count in
68610 -- CreateHeadersAndLines.
68611 --
68612 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
68613 
68614 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68615    trace (p_msg     => '# rows extracted from header extract objects '
68616                     || ' (running total): '
68617                     || g_hdr_extract_count
68618          ,p_level   => C_LEVEL_STATEMENT
68619          ,p_module  => l_log_module);
68620 END IF;
68621 
68622 CLOSE header_cur;
68623 --
68624 
68625 --
68626 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68627    trace
68628       (p_msg      => 'END of EventClass_129'
68629       ,p_level    => C_LEVEL_PROCEDURE
68630       ,p_module   => l_log_module);
68631 END IF;
68632 --
68633 RETURN l_result;
68634 EXCEPTION
68635 WHEN xla_exceptions_pkg.application_exception THEN
68636    
68637 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
68638 
68639    
68640 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
68641 
68642    RAISE;
68643 
68644 WHEN NO_DATA_FOUND THEN
68645 
68646 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
68650 LOOP
68647 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
68648 
68649 FOR header_record IN header_cur
68651     l_array_header_events(header_record.event_id) := header_record.event_id;
68652 END LOOP;
68653 
68654 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
68655 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
68656 
68657 fnd_file.put_line(fnd_file.LOG, '                    ');
68658 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
68659 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
68660 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
68661 
68662 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
68663 LOOP
68664 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
68665 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
68666         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
68667 	END IF;
68668 END LOOP;
68669 
68670 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
68671 fnd_file.put_line(fnd_file.LOG, '                    ');
68672 
68673 
68674 xla_exceptions_pkg.raise_message
68675       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_129');
68676 
68677 
68678 WHEN OTHERS THEN
68679    xla_exceptions_pkg.raise_message
68680       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_129');
68681 END EventClass_129;
68682 --
68683 
68684 ---------------------------------------
68685 --
68686 -- PRIVATE PROCEDURE
68687 --         insert_sources_130
68688 --
68689 ----------------------------------------
68690 --
68691 PROCEDURE insert_sources_130(
68692                                 p_target_ledger_id       IN NUMBER
68693                               , p_language               IN VARCHAR2
68694                               , p_sla_ledger_id          IN NUMBER
68695                               , p_pad_start_date         IN DATE
68696                               , p_pad_end_date           IN DATE
68697                          )
68698 IS
68699 
68700 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CREDIT_MEMO_ALL';
68701 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'CREDIT_MEMO';
68702 p_apps_owner                   VARCHAR2(30);
68703 l_log_module                   VARCHAR2(240);
68704 BEGIN
68705 IF g_log_enabled THEN
68706       l_log_module := C_DEFAULT_MODULE||'.insert_sources_130';
68707 END IF;
68708 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68709 
68710       trace
68711          (p_msg      => 'BEGIN of insert_sources_130'
68712          ,p_level    => C_LEVEL_PROCEDURE
68713          ,p_module   => l_log_module);
68714 
68715 END IF;
68716 
68717 -- select APPS owner
68718 SELECT oracle_username
68719   INTO p_apps_owner
68720   FROM fnd_oracle_userid
68721  WHERE read_only_flag = 'U'
68722 ;
68723 
68724 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68725       trace
68726          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
68727                         ' - p_language = '||p_language||
68728                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
68729                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
68730                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
68731                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
68732          ,p_level    => C_LEVEL_STATEMENT
68733          ,p_module   => l_log_module);
68734 END IF;
68735 
68736 
68737 --
68738 INSERT INTO xla_diag_sources --hdr2
68739 (
68740         event_id
68741       , ledger_id
68742       , sla_ledger_id
68743       , description_language
68744       , object_name
68745       , object_type_code
68746       , line_number
68747       , source_application_id
68748       , source_type_code
68749       , source_code
68750       , source_value
68751       , source_meaning
68752       , created_by
68753       , creation_date
68754       , last_update_date
68755       , last_updated_by
68756       , last_update_login
68757       , program_update_date
68758       , program_application_id
68759       , program_id
68760       , request_id
68761 )
68762 SELECT
68763         event_id
68764       , p_target_ledger_id
68765       , p_sla_ledger_id
68766       , p_language
68767       , object_name
68768       , object_type_code
68769       , line_number
68770       , source_application_id
68771       , source_type_code
68772       , source_code
68773       , SUBSTR(source_value ,1,1996)
68774       , SUBSTR(source_meaning ,1,200)
68775       , xla_environment_pkg.g_Usr_Id
68776       , TRUNC(SYSDATE)
68777       , TRUNC(SYSDATE)
68778       , xla_environment_pkg.g_Usr_Id
68779       , xla_environment_pkg.g_Login_Id
68780       , TRUNC(SYSDATE)
68781       , xla_environment_pkg.g_Prog_Appl_Id
68782       , xla_environment_pkg.g_Prog_Id
68783       , xla_environment_pkg.g_Req_Id
68784   FROM (
68785        SELECT xet.event_id                  event_id
68786             , 0                          line_number
68787             , CASE r
68788                WHEN 1 THEN 'AR_SYSTEM_PARAM_H_V' 
68789                 WHEN 2 THEN 'AR_SYSTEM_PARAM_H_V' 
68793                 WHEN 6 THEN 'AR_CM_BILL_SITE_USES_H_V' 
68790                 WHEN 3 THEN 'AR_CREDIT_MEMO_H_V' 
68791                 WHEN 4 THEN 'AR_CREDIT_MEMO_H_V' 
68792                 WHEN 5 THEN 'AR_CM_BILL_TO_CUST_H_V' 
68794                 
68795                ELSE null
68796               END                           object_name
68797             , CASE r
68798                 WHEN 1 THEN 'HEADER' 
68799                 WHEN 2 THEN 'HEADER' 
68800                 WHEN 3 THEN 'HEADER' 
68801                 WHEN 4 THEN 'HEADER' 
68802                 WHEN 5 THEN 'HEADER' 
68803                 WHEN 6 THEN 'HEADER' 
68804                 
68805                 ELSE null
68806               END                           object_type_code
68807             , CASE r
68808                 WHEN 1 THEN '222' 
68809                 WHEN 2 THEN '222' 
68810                 WHEN 3 THEN '222' 
68811                 WHEN 4 THEN '222' 
68812                 WHEN 5 THEN '222' 
68813                 WHEN 6 THEN '222' 
68814                 
68815                 ELSE null
68816               END                           source_application_id
68817             , 'S'             source_type_code
68818             , CASE r
68819                 WHEN 1 THEN 'CODE_COMBINATION_ID_GAIN' 
68820                 WHEN 2 THEN 'CODE_COMBINATION_ID_LOSS' 
68821                 WHEN 3 THEN 'XLA_PARTY_TYPE' 
68822                 WHEN 4 THEN 'CM_INVOICE_CURRENCY_CODE' 
68823                 WHEN 5 THEN 'CM_BILL_CUST_ACCOUNT_ID' 
68824                 WHEN 6 THEN 'CM_BILL_USES_SITE_USE_ID' 
68825                 
68826                 ELSE null
68827               END                           source_code
68828             , CASE r
68829                 WHEN 1 THEN TO_CHAR(h9.CODE_COMBINATION_ID_GAIN)
68830                 WHEN 2 THEN TO_CHAR(h9.CODE_COMBINATION_ID_LOSS)
68831                 WHEN 3 THEN TO_CHAR(h5.XLA_PARTY_TYPE)
68832                 WHEN 4 THEN TO_CHAR(h5.CM_INVOICE_CURRENCY_CODE)
68833                 WHEN 5 THEN TO_CHAR(h2.CM_BILL_CUST_ACCOUNT_ID)
68834                 WHEN 6 THEN TO_CHAR(h1.CM_BILL_USES_SITE_USE_ID)
68835                 
68836                 ELSE null
68837               END                           source_value
68838             , null              source_meaning
68839          FROM xla_events_gt     xet  
68840       , AR_CM_BILL_SITE_USES_H_V  h1
68841       , AR_CM_BILL_TO_CUST_H_V  h2
68842       , AR_CREDIT_MEMO_H_V  h5
68843       , AR_SYSTEM_PARAM_H_V  h9
68844              ,(select rownum r from all_objects where rownum <= 6 and owner = p_apps_owner)
68845          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
68846            AND xet.event_class_code = C_EVENT_CLASS_CODE
68847               AND h1.event_id = xet.event_id
68848   AND h2.event_id  = h1.event_id
68849   AND h5.event_id  = h1.event_id
68850   AND h9.event_id (+) = h1.event_id
68851 
68852 )
68853 ;
68854 --
68855 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68856 
68857       trace
68858          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
68859          ,p_level    => C_LEVEL_STATEMENT
68860          ,p_module   => l_log_module);
68861 
68862 END IF;
68863 --
68864 
68865 
68866 
68867 --
68868 INSERT INTO xla_diag_sources  --line2
68869 (
68870         event_id
68871       , ledger_id
68872       , sla_ledger_id
68873       , description_language
68874       , object_name
68875       , object_type_code
68876       , line_number
68877       , source_application_id
68878       , source_type_code
68879       , source_code
68880       , source_value
68881       , source_meaning
68882       , created_by
68883       , creation_date
68884       , last_update_date
68885       , last_updated_by
68886       , last_update_login
68887       , program_update_date
68888       , program_application_id
68889       , program_id
68890       , request_id
68891 )
68892 SELECT  event_id
68893       , p_target_ledger_id
68894       , p_sla_ledger_id
68895       , p_language
68896       , object_name
68897       , object_type_code
68898       , line_number
68899       , source_application_id
68900       , source_type_code
68901       , source_code
68902       , SUBSTR(source_value,1,1996)
68903       , SUBSTR(source_meaning ,1,200)
68904       , xla_environment_pkg.g_Usr_Id
68905       , TRUNC(SYSDATE)
68906       , TRUNC(SYSDATE)
68907       , xla_environment_pkg.g_Usr_Id
68908       , xla_environment_pkg.g_Login_Id
68909       , TRUNC(SYSDATE)
68910       , xla_environment_pkg.g_Prog_Appl_Id
68911       , xla_environment_pkg.g_Prog_Id
68912       , xla_environment_pkg.g_Req_Id
68913   FROM (
68914        SELECT xet.event_id                  event_id
68915             , l3.line_number                 line_number
68916             , CASE r
68917                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
68918                 WHEN 2 THEN 'AR_TRANSACTIONS_S_V' 
68919                 WHEN 3 THEN 'AR_TRANSACTIONS_S_V' 
68920                 WHEN 4 THEN 'AR_CM_LINES_L_V' 
68921                 WHEN 5 THEN 'AR_DISTRIBUTIONS_L_V' 
68922                 WHEN 6 THEN 'AR_DISTRIBUTIONS_L_V' 
68923                 WHEN 7 THEN 'AR_RECEIVABLES_TRX_ACT_S_V' 
68924                 WHEN 8 THEN 'AR_DISTRIBUTIONS_L_V' 
68925                 WHEN 9 THEN 'AR_CM_LINES_BASE_V' 
68926                 WHEN 10 THEN 'AR_CM_LINES_BASE_V' 
68930                 WHEN 14 THEN 'AR_CM_LINES_BASE_V' 
68927                 WHEN 11 THEN 'AR_CM_LINES_BASE_V' 
68928                 WHEN 12 THEN 'AR_CM_LINES_BASE_V' 
68929                 WHEN 13 THEN 'AR_CM_LINES_BASE_V' 
68931                 WHEN 15 THEN 'AR_CM_LINES_BASE_V' 
68932                 WHEN 16 THEN 'AR_CM_LINES_L_V' 
68933                 WHEN 17 THEN 'AR_CM_LINES_L_V' 
68934                 WHEN 18 THEN 'AR_CM_LINES_L_V' 
68935                 WHEN 19 THEN 'AR_CUST_TRX_LINES_L_V' 
68936                 
68937                ELSE null
68938               END                           object_name
68939             , CASE r
68940                 WHEN 1 THEN 'LINE' 
68941                 WHEN 2 THEN 'LINE' 
68942                 WHEN 3 THEN 'LINE' 
68943                 WHEN 4 THEN 'LINE' 
68944                 WHEN 5 THEN 'LINE' 
68945                 WHEN 6 THEN 'LINE' 
68946                 WHEN 7 THEN 'LINE' 
68947                 WHEN 8 THEN 'LINE' 
68948                 WHEN 9 THEN 'LINE' 
68949                 WHEN 10 THEN 'LINE' 
68950                 WHEN 11 THEN 'LINE' 
68951                 WHEN 12 THEN 'LINE' 
68952                 WHEN 13 THEN 'LINE' 
68953                 WHEN 14 THEN 'LINE' 
68954                 WHEN 15 THEN 'LINE' 
68955                 WHEN 16 THEN 'LINE' 
68956                 WHEN 17 THEN 'LINE' 
68957                 WHEN 18 THEN 'LINE' 
68958                 WHEN 19 THEN 'LINE' 
68959                 
68960                 ELSE null
68961               END                           object_type_code
68962             , CASE r
68963                 WHEN 1 THEN '222' 
68964                 WHEN 2 THEN '222' 
68965                 WHEN 3 THEN '222' 
68966                 WHEN 4 THEN '222' 
68967                 WHEN 5 THEN '222' 
68968                 WHEN 6 THEN '222' 
68969                 WHEN 7 THEN '222' 
68970                 WHEN 8 THEN '222' 
68971                 WHEN 9 THEN '222' 
68972                 WHEN 10 THEN '222' 
68973                 WHEN 11 THEN '222' 
68974                 WHEN 12 THEN '222' 
68975                 WHEN 13 THEN '222' 
68976                 WHEN 14 THEN '222' 
68977                 WHEN 15 THEN '222' 
68978                 WHEN 16 THEN '222' 
68979                 WHEN 17 THEN '222' 
68980                 WHEN 18 THEN '222' 
68981                 WHEN 19 THEN '222' 
68982                 
68983                 ELSE null
68984               END                           source_application_id
68985             , 'S'             source_type_code
68986             , CASE r
68987                 WHEN 1 THEN 'TRX_TYPE_NAME' 
68988                 WHEN 2 THEN 'TRX_NUMBER' 
68989                 WHEN 3 THEN 'TRX_DOC_SEQUENCE_VALUE' 
68990                 WHEN 4 THEN 'CM_LINE_DIST_CCID' 
68991                 WHEN 5 THEN 'DIST_CODE_COMBINATION_ID' 
68992                 WHEN 6 THEN 'DIST_SOURCE_TYPE' 
68993                 WHEN 7 THEN 'REC_ACT_TYPE' 
68994                 WHEN 8 THEN 'DIST_ENT_AMT' 
68995                 WHEN 9 THEN 'CM_DIST_IDENTIFER' 
68996                 WHEN 10 THEN 'CM_DIST_TYPE' 
68997                 WHEN 11 THEN 'CM_LINE_CUR_CONVERSION_DATE' 
68998                 WHEN 12 THEN 'CM_LINE_CUR_CONVERSION_RATE' 
68999                 WHEN 13 THEN 'CM_LINE_CUR_CONVERSION_TYPE' 
69000                 WHEN 14 THEN 'GAIN_LOSS_REF' 
69001                 WHEN 15 THEN 'CM_LINE_ACCTD_AMT' 
69002                 WHEN 16 THEN 'CM_TAX_LINE_ID' 
69003                 WHEN 17 THEN 'CM_LINE_DIST_ACCOUNT_CLASS' 
69004                 WHEN 18 THEN 'CM_LINE_DIST_AMT' 
69005                 WHEN 19 THEN 'TRX_LINE_INTERFACE_LINE_ATTR1' 
69006                 
69007                 ELSE null
69008               END                           source_code
69009             , CASE r
69010                 WHEN 1 THEN TO_CHAR(l10.TRX_TYPE_NAME)
69011                 WHEN 2 THEN TO_CHAR(l10.TRX_NUMBER)
69012                 WHEN 3 THEN TO_CHAR(l10.TRX_DOC_SEQUENCE_VALUE)
69013                 WHEN 4 THEN TO_CHAR(l4.CM_LINE_DIST_CCID)
69014                 WHEN 5 THEN TO_CHAR(l7.DIST_CODE_COMBINATION_ID)
69015                 WHEN 6 THEN TO_CHAR(l7.DIST_SOURCE_TYPE)
69016                 WHEN 7 THEN TO_CHAR(l8.REC_ACT_TYPE)
69017                 WHEN 8 THEN TO_CHAR(l7.DIST_ENT_AMT)
69018                 WHEN 9 THEN TO_CHAR(l3.CM_DIST_IDENTIFER)
69019                 WHEN 10 THEN TO_CHAR(l3.CM_DIST_TYPE)
69020                 WHEN 11 THEN TO_CHAR(l3.CM_LINE_CUR_CONVERSION_DATE)
69021                 WHEN 12 THEN TO_CHAR(l3.CM_LINE_CUR_CONVERSION_RATE)
69022                 WHEN 13 THEN TO_CHAR(l3.CM_LINE_CUR_CONVERSION_TYPE)
69023                 WHEN 14 THEN TO_CHAR(l3.GAIN_LOSS_REF)
69024                 WHEN 15 THEN TO_CHAR(l3.CM_LINE_ACCTD_AMT)
69025                 WHEN 16 THEN TO_CHAR(l4.CM_TAX_LINE_ID)
69026                 WHEN 17 THEN TO_CHAR(l4.CM_LINE_DIST_ACCOUNT_CLASS)
69027                 WHEN 18 THEN TO_CHAR(l4.CM_LINE_DIST_AMT)
69028                 WHEN 19 THEN TO_CHAR(l6.TRX_LINE_INTERFACE_LINE_ATTR1)
69029                 
69030                 ELSE null
69031               END                           source_value
69032             , null              source_meaning
69033          FROM  xla_events_gt     xet  
69034         , AR_CM_LINES_BASE_V  l3
69035         , AR_CM_LINES_L_V  l4
69036         , AR_CUST_TRX_LINES_L_V  l6
69037         , AR_DISTRIBUTIONS_L_V  l7
69038         , AR_RECEIVABLES_TRX_ACT_S_V  l8
69039         , AR_TRANSACTIONS_S_V  l10
69043             AND l3.event_id          = xet.event_id
69040             , (select rownum r from all_objects where rownum <= 19 and owner = p_apps_owner)
69041         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
69042           AND xet.event_class_code = C_EVENT_CLASS_CODE
69044   AND l4.event_id (+)    = l3.event_id
69045   AND l4.line_number (+) = l3.line_number
69046   AND l6.event_id (+)    = l3.event_id
69047   AND l6.line_number (+) = l3.line_number
69048   AND l7.event_id (+)    = l3.event_id
69049   AND l7.line_number (+) = l3.line_number
69050   AND l8.event_id (+)    = l3.event_id
69051   AND l8.line_number (+) = l3.line_number
69052   AND l10.event_id (+)    = l3.event_id
69053   AND l10.line_number (+) = l3.line_number
69054 
69055 )
69056 ;
69057 --
69058 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69059 
69060       trace
69061          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
69062          ,p_level    => C_LEVEL_STATEMENT
69063          ,p_module   => l_log_module);
69064 
69065 END IF;
69066 
69067 
69068 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69069       trace
69070          (p_msg      => 'END of insert_sources_130'
69071          ,p_level    => C_LEVEL_PROCEDURE
69072          ,p_module   => l_log_module);
69073 END IF;
69074 EXCEPTION
69075   WHEN xla_exceptions_pkg.application_exception THEN
69076       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
69077             trace
69078                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
69079                ,p_level    => C_LEVEL_EXCEPTION
69080                ,p_module   => l_log_module);
69081       END IF;
69082       RAISE;
69083   WHEN OTHERS THEN
69084       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
69085             trace
69086                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
69087                ,p_level    => C_LEVEL_EXCEPTION
69088                ,p_module   => l_log_module);
69089        END IF;
69090        xla_exceptions_pkg.raise_message
69091            (p_location => 'XLA_00222_AAD_S_000017_PKG.insert_sources_130');
69092 END insert_sources_130;
69093 --
69094 
69095 ---------------------------------------
69096 --
69097 -- PRIVATE FUNCTION
69098 --         EventClass_130
69099 --
69100 ----------------------------------------
69101 --
69102 FUNCTION EventClass_130
69103        (p_application_id         IN NUMBER
69104        ,p_base_ledger_id         IN NUMBER
69105        ,p_target_ledger_id       IN NUMBER
69106        ,p_language               IN VARCHAR2
69107        ,p_currency_code          IN VARCHAR2
69108        ,p_sla_ledger_id          IN NUMBER
69109        ,p_pad_start_date         IN DATE
69110        ,p_pad_end_date           IN DATE
69111        ,p_primary_ledger_id      IN NUMBER)
69112 RETURN BOOLEAN IS
69113 --
69114 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CREDIT_MEMO_ALL';
69115 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'CREDIT_MEMO';
69116 
69117 l_calculate_acctd_flag   VARCHAR2(1) :='N';
69118 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
69119 --
69120 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69121 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69122 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69123 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69124 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69125 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69126 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69127 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69128 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69129 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69130 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69131 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69132 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69133 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69134 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69135 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69136 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69137 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69138 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69139 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69140 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69141 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69142 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
69143 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69144 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
69145 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
69146 
69147 l_event_id                             NUMBER;
69148 l_previous_event_id                    NUMBER;
69149 l_first_event_id                       NUMBER;
69150 l_last_event_id                        NUMBER;
69151 
69155 --
69152 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
69153 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
69154 --
69156 l_result                    BOOLEAN := TRUE;
69157 l_rows                      NUMBER  := 1000;
69158 l_event_type_name           VARCHAR2(80) := 'All';
69159 l_event_class_name          VARCHAR2(80) := 'Credit Memo';
69160 l_description               VARCHAR2(4000);
69161 l_transaction_reversal      NUMBER;
69162 l_ae_header_id              NUMBER;
69163 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
69164 l_log_module                VARCHAR2(240);
69165 --
69166 l_acct_reversal_source      VARCHAR2(30);
69167 l_trx_reversal_source       VARCHAR2(30);
69168 
69169 l_continue_with_lines       BOOLEAN := TRUE;
69170 --
69171 l_acc_rev_gl_date_source    DATE;                      -- 4262811
69172 --
69173 type t_array_event_id is table of number index by binary_integer;
69174 
69175 l_rec_array_event                    t_rec_array_event;
69176 l_null_rec_array_event               t_rec_array_event;
69177 l_array_ae_header_id                 xla_number_array_type;
69178 l_actual_flag                        VARCHAR2(1) := NULL;
69179 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
69180 l_balance_type_code                  VARCHAR2(1) :=NULL;
69181 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
69182 
69183 --
69184 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
69185 --
69186 
69187 TYPE t_array_source_24 IS TABLE OF AR_SYSTEM_PARAM_H_V.CODE_COMBINATION_ID_GAIN%TYPE INDEX BY BINARY_INTEGER;
69188 TYPE t_array_source_25 IS TABLE OF AR_SYSTEM_PARAM_H_V.CODE_COMBINATION_ID_LOSS%TYPE INDEX BY BINARY_INTEGER;
69189 TYPE t_array_source_39 IS TABLE OF AR_CREDIT_MEMO_H_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
69190 TYPE t_array_source_54 IS TABLE OF AR_CREDIT_MEMO_H_V.CM_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
69191 TYPE t_array_source_60 IS TABLE OF AR_CM_BILL_TO_CUST_H_V.CM_BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
69192 TYPE t_array_source_61 IS TABLE OF AR_CM_BILL_SITE_USES_H_V.CM_BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
69193 
69194 TYPE t_array_source_1 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_TYPE_NAME%TYPE INDEX BY BINARY_INTEGER;
69195 TYPE t_array_source_2 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_NUMBER%TYPE INDEX BY BINARY_INTEGER;
69196 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
69197 TYPE t_array_source_14 IS TABLE OF AR_CM_LINES_L_V.CM_LINE_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
69198 TYPE t_array_source_22 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
69199 TYPE t_array_source_27 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_SOURCE_TYPE%TYPE INDEX BY BINARY_INTEGER;
69200 TYPE t_array_source_28 IS TABLE OF AR_RECEIVABLES_TRX_ACT_S_V.REC_ACT_TYPE%TYPE INDEX BY BINARY_INTEGER;
69201 TYPE t_array_source_31 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_ENT_AMT%TYPE INDEX BY BINARY_INTEGER;
69202 TYPE t_array_source_52 IS TABLE OF AR_CM_LINES_BASE_V.CM_DIST_IDENTIFER%TYPE INDEX BY BINARY_INTEGER;
69203 TYPE t_array_source_53 IS TABLE OF AR_CM_LINES_BASE_V.CM_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
69204 TYPE t_array_source_55 IS TABLE OF AR_CM_LINES_BASE_V.CM_LINE_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
69205 TYPE t_array_source_56 IS TABLE OF AR_CM_LINES_BASE_V.CM_LINE_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
69206 TYPE t_array_source_57 IS TABLE OF AR_CM_LINES_BASE_V.CM_LINE_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
69207 TYPE t_array_source_58 IS TABLE OF AR_CM_LINES_BASE_V.GAIN_LOSS_REF%TYPE INDEX BY BINARY_INTEGER;
69208 TYPE t_array_source_59 IS TABLE OF AR_CM_LINES_BASE_V.CM_LINE_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
69209 TYPE t_array_source_62 IS TABLE OF AR_CM_LINES_L_V.CM_TAX_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
69210 TYPE t_array_source_63 IS TABLE OF AR_CM_LINES_L_V.CM_LINE_DIST_ACCOUNT_CLASS%TYPE INDEX BY BINARY_INTEGER;
69211 TYPE t_array_source_64 IS TABLE OF AR_CM_LINES_L_V.CM_LINE_DIST_AMT%TYPE INDEX BY BINARY_INTEGER;
69212 TYPE t_array_source_65 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_INTERFACE_LINE_ATTR1%TYPE INDEX BY BINARY_INTEGER;
69213 
69214 l_array_source_24              t_array_source_24;
69215 l_array_source_25              t_array_source_25;
69216 l_array_source_39              t_array_source_39;
69217 l_array_source_54              t_array_source_54;
69218 l_array_source_60              t_array_source_60;
69219 l_array_source_61              t_array_source_61;
69220 
69221 l_array_source_1      t_array_source_1;
69222 l_array_source_2      t_array_source_2;
69223 l_array_source_3      t_array_source_3;
69224 l_array_source_14      t_array_source_14;
69225 l_array_source_22      t_array_source_22;
69226 l_array_source_27      t_array_source_27;
69227 l_array_source_28      t_array_source_28;
69228 l_array_source_31      t_array_source_31;
69229 l_array_source_52      t_array_source_52;
69230 l_array_source_53      t_array_source_53;
69231 l_array_source_55      t_array_source_55;
69232 l_array_source_56      t_array_source_56;
69233 l_array_source_57      t_array_source_57;
69234 l_array_source_58      t_array_source_58;
69235 l_array_source_59      t_array_source_59;
69236 l_array_source_62      t_array_source_62;
69237 l_array_source_63      t_array_source_63;
69238 l_array_source_64      t_array_source_64;
69239 l_array_source_65      t_array_source_65;
69240 
69241 --
69242 CURSOR header_cur
69243 IS
69244 SELECT /*+ leading(xet) cardinality(xet,1) */
69245 -- Event Class Code: CREDIT_MEMO
69246     xet.entity_id
69247    ,xet.legal_entity_id
69248    ,xet.entity_code
69252    ,xet.event_type_code
69249    ,xet.transaction_number
69250    ,xet.event_id
69251    ,xet.event_class_code
69253    ,xet.event_number
69254    ,xet.event_date
69255    ,xet.transaction_date
69256    ,xet.reference_num_1
69257    ,xet.reference_num_2
69258    ,xet.reference_num_3
69259    ,xet.reference_num_4
69260    ,xet.reference_char_1
69261    ,xet.reference_char_2
69262    ,xet.reference_char_3
69263    ,xet.reference_char_4
69264    ,xet.reference_date_1
69265    ,xet.reference_date_2
69266    ,xet.reference_date_3
69267    ,xet.reference_date_4
69268    ,xet.event_created_by
69269    ,xet.budgetary_control_flag 
69270   , h9.CODE_COMBINATION_ID_GAIN    source_24
69271   , h9.CODE_COMBINATION_ID_LOSS    source_25
69272   , h5.XLA_PARTY_TYPE    source_39
69273   , h5.CM_INVOICE_CURRENCY_CODE    source_54
69274   , h2.CM_BILL_CUST_ACCOUNT_ID    source_60
69275   , h1.CM_BILL_USES_SITE_USE_ID    source_61
69276   FROM xla_events_gt     xet 
69277   , AR_CM_BILL_SITE_USES_H_V  h1
69278   , AR_CM_BILL_TO_CUST_H_V  h2
69279   , AR_CREDIT_MEMO_H_V  h5
69280   , AR_SYSTEM_PARAM_H_V  h9
69281  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
69282    and xet.event_class_code = C_EVENT_CLASS_CODE
69283    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
69284   AND h2.event_id  = h1.event_id
69285   AND h5.event_id  = h1.event_id
69286   AND h9.event_id (+) = h1.event_id
69287 
69288  ORDER BY event_id
69289 ;
69290 
69291 
69292 --
69293 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
69294 IS
69295 SELECT  /*+ leading(xet) cardinality(xet,1) */
69296 -- Event Class Code: CREDIT_MEMO
69297     xet.entity_id
69298    ,xet.legal_entity_id
69299    ,xet.entity_code
69300    ,xet.transaction_number
69301    ,xet.event_id
69302    ,xet.event_class_code
69303    ,xet.event_type_code
69304    ,xet.event_number
69305    ,xet.event_date
69306    ,xet.transaction_date
69307    ,xet.reference_num_1
69308    ,xet.reference_num_2
69309    ,xet.reference_num_3
69310    ,xet.reference_num_4
69311    ,xet.reference_char_1
69312    ,xet.reference_char_2
69313    ,xet.reference_char_3
69314    ,xet.reference_char_4
69315    ,xet.reference_date_1
69316    ,xet.reference_date_2
69317    ,xet.reference_date_3
69318    ,xet.reference_date_4
69319    ,xet.event_created_by
69320    ,xet.budgetary_control_flag
69321  , l3.LINE_NUMBER  
69322   , l10.TRX_TYPE_NAME    source_1
69323   , l10.TRX_NUMBER    source_2
69324   , l10.TRX_DOC_SEQUENCE_VALUE    source_3
69325   , l4.CM_LINE_DIST_CCID    source_14
69326   , l7.DIST_CODE_COMBINATION_ID    source_22
69327   , l7.DIST_SOURCE_TYPE    source_27
69328   , l8.REC_ACT_TYPE    source_28
69329   , l7.DIST_ENT_AMT    source_31
69330   , l3.CM_DIST_IDENTIFER    source_52
69331   , l3.CM_DIST_TYPE    source_53
69332   , l3.CM_LINE_CUR_CONVERSION_DATE    source_55
69333   , l3.CM_LINE_CUR_CONVERSION_RATE    source_56
69334   , l3.CM_LINE_CUR_CONVERSION_TYPE    source_57
69335   , l3.GAIN_LOSS_REF    source_58
69336   , l3.CM_LINE_ACCTD_AMT    source_59
69337   , l4.CM_TAX_LINE_ID    source_62
69338   , l4.CM_LINE_DIST_ACCOUNT_CLASS    source_63
69339   , l4.CM_LINE_DIST_AMT    source_64
69340   , l6.TRX_LINE_INTERFACE_LINE_ATTR1    source_65
69341   FROM xla_events_gt     xet 
69342   , AR_CM_LINES_BASE_V  l3
69343   , AR_CM_LINES_L_V  l4
69344   , AR_CUST_TRX_LINES_L_V  l6
69345   , AR_DISTRIBUTIONS_L_V  l7
69346   , AR_RECEIVABLES_TRX_ACT_S_V  l8
69347   , AR_TRANSACTIONS_S_V  l10
69348  WHERE xet.event_id between x_first_event_id and x_last_event_id
69349    and xet.event_date between p_pad_start_date and p_pad_end_date
69350    and xet.event_class_code = C_EVENT_CLASS_CODE
69351    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
69352   AND l4.event_id (+)    = l3.event_id
69353   AND l4.line_number (+) = l3.line_number
69354   AND l6.event_id (+)    = l3.event_id
69355   AND l6.line_number (+) = l3.line_number
69356   AND l7.event_id (+)    = l3.event_id
69357   AND l7.line_number (+) = l3.line_number
69358   AND l8.event_id (+)    = l3.event_id
69359   AND l8.line_number (+) = l3.line_number
69360   AND l10.event_id (+)    = l3.event_id
69361   AND l10.line_number (+) = l3.line_number
69362 ;
69363 
69364 --
69365 BEGIN
69366 IF g_log_enabled THEN
69367    l_log_module := C_DEFAULT_MODULE||'.EventClass_130';
69368 END IF;
69369 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69370    trace
69371       (p_msg      => 'BEGIN of EventClass_130'
69372       ,p_level    => C_LEVEL_PROCEDURE
69373       ,p_module   => l_log_module);
69374 END IF;
69375 
69376 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69377    trace
69378       (p_msg      => 'p_application_id = '||p_application_id||
69379                      ' - p_base_ledger_id = '||p_base_ledger_id||
69380                      ' - p_target_ledger_id  = '||p_target_ledger_id||
69381                      ' - p_language = '||p_language||
69382                      ' - p_currency_code = '||p_currency_code||
69383                      ' - p_sla_ledger_id = '||p_sla_ledger_id
69384       ,p_level    => C_LEVEL_STATEMENT
69385       ,p_module   => l_log_module);
69386 END IF;
69387 --
69388 -- initialze arrays
69389 --
69390 g_array_event.DELETE;
69394 -- 4262811 Initialze MPA Line Number
69391 l_rec_array_event := l_null_rec_array_event;
69392 --
69393 --------------------------------------
69395 --------------------------------------
69396 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
69397 
69398 --
69399 
69400 --
69401 OPEN header_cur;
69402 --
69403 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69404    trace
69405    (p_msg      => 'SQL - FETCH header_cur'
69406    ,p_level    => C_LEVEL_STATEMENT
69407    ,p_module   => l_log_module);
69408 END IF;
69409 --
69410 LOOP
69411 FETCH header_cur BULK COLLECT INTO
69412         l_array_entity_id
69413       , l_array_legal_entity_id
69414       , l_array_entity_code
69415       , l_array_transaction_num
69416       , l_array_event_id
69417       , l_array_class_code
69418       , l_array_event_type
69419       , l_array_event_number
69420       , l_array_event_date
69421       , l_array_transaction_date
69422       , l_array_reference_num_1
69423       , l_array_reference_num_2
69424       , l_array_reference_num_3
69425       , l_array_reference_num_4
69426       , l_array_reference_char_1
69427       , l_array_reference_char_2
69428       , l_array_reference_char_3
69429       , l_array_reference_char_4
69430       , l_array_reference_date_1
69431       , l_array_reference_date_2
69432       , l_array_reference_date_3
69433       , l_array_reference_date_4
69434       , l_array_event_created_by
69435       , l_array_budgetary_control_flag 
69436       , l_array_source_24
69437       , l_array_source_25
69438       , l_array_source_39
69439       , l_array_source_54
69440       , l_array_source_60
69441       , l_array_source_61
69442       LIMIT l_rows;
69443 --
69444 IF (C_LEVEL_EVENT >= g_log_level) THEN
69445    trace
69446    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
69447    ,p_level    => C_LEVEL_EVENT
69448    ,p_module   => l_log_module);
69449 END IF;
69450 --
69451 EXIT WHEN l_array_entity_id.COUNT = 0;
69452 
69453 -- initialize arrays
69454 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
69455 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
69456 
69457 --
69458 -- Bug 4458708
69459 --
69460 XLA_AE_LINES_PKG.g_LineNumber := 0;
69461 
69462 
69463 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
69464 g_last_hdr_idx := l_array_event_id.LAST;
69465 --
69466 -- loop for the headers. Each iteration is for each header extract row
69467 -- fetched in header cursor
69468 --
69469 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
69470 
69471 --
69472 -- set event info as cache for other routines to refer event attributes
69473 --
69474 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
69475    (p_application_id           => p_application_id
69476    ,p_primary_ledger_id        => p_primary_ledger_id
69477    ,p_base_ledger_id           => p_base_ledger_id
69478    ,p_target_ledger_id         => p_target_ledger_id
69479    ,p_entity_id                => l_array_entity_id(hdr_idx)
69480    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
69481    ,p_entity_code              => l_array_entity_code(hdr_idx)
69482    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
69483    ,p_event_id                 => l_array_event_id(hdr_idx)
69484    ,p_event_class_code         => l_array_class_code(hdr_idx)
69485    ,p_event_type_code          => l_array_event_type(hdr_idx)
69486    ,p_event_number             => l_array_event_number(hdr_idx)
69487    ,p_event_date               => l_array_event_date(hdr_idx)
69488    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
69489    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
69490    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
69491    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
69492    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
69493    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
69494    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
69495    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
69496    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
69497    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
69498    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
69499    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
69500    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
69501    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
69502    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
69503 
69504 --
69505 -- set the status of entry to C_VALID (0)
69506 --
69507 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
69508 
69509 --
69510 -- initialize a row for ae header
69511 --
69512 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
69513 
69514 l_event_id := l_array_event_id(hdr_idx);
69515 
69516 --
69517 -- storing the hdr_idx for event. May be used by line cursor.
69518 --
69519 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
69520 
69521 --
69522 -- store sources from header extract. This can be improved to
69523 -- store only those sources from header extract that may be used in lines
69524 --
69528 g_array_event(l_event_id).array_value_char('source_39') := l_array_source_39(hdr_idx);
69525 
69526 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
69527 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
69529 g_array_event(l_event_id).array_value_char('source_54') := l_array_source_54(hdr_idx);
69530 g_array_event(l_event_id).array_value_num('source_60') := l_array_source_60(hdr_idx);
69531 g_array_event(l_event_id).array_value_num('source_61') := l_array_source_61(hdr_idx);
69532 
69533 --
69534 -- initilaize the status of ae headers for diffrent balance types
69535 -- the status is initialised to C_NOT_CREATED (2)
69536 --
69537 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
69538 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
69539 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
69540 
69541 --
69542 -- call api to validate and store accounting attributes for header
69543 --
69544 
69545 ------------------------------------------------------------
69546 -- Accrual Reversal : to get date for Standard Source (NONE)
69547 ------------------------------------------------------------
69548 l_acc_rev_gl_date_source := NULL;
69549 
69550      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
69551       l_rec_acct_attrs.array_date_value(1) := 
69552 xla_ae_sources_pkg.GetSystemSourceDate(
69553    p_source_code           => 'XLA_EVENT_DATE'
69554  , p_source_type_code      => 'Y'
69555  , p_source_application_id =>  602
69556 );
69557 
69558 
69559 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
69560 
69561 XLA_AE_HEADER_PKG.SetJeCategoryName;
69562 
69563 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
69564 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
69565 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
69566 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
69567 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
69568 
69569 
69570 -- No header level analytical criteria
69571 
69572 --
69573 --accounting attribute enhancement, bug 3612931
69574 --
69575 l_trx_reversal_source := SUBSTR(NULL, 1,30);
69576 
69577 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
69578    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
69579 
69580    xla_accounting_err_pkg.build_message
69581       (p_appli_s_name            => 'XLA'
69582       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
69583       ,p_token_1                 => 'ACCT_ATTR_NAME'
69584       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
69585       ,p_token_2                 => 'PRODUCT_NAME'
69586       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
69587       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
69588       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
69589       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
69590 
69591 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
69592    --
69593    -- following sets the accounting attributes needed to reverse
69594    -- accounting for a distributeion
69595    --
69596    xla_ae_lines_pkg.SetTrxReversalAttrs
69597       (p_event_id              => l_event_id
69598       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
69599       ,p_trx_reversal_source   => l_trx_reversal_source);
69600 
69601 END IF;
69602 
69603 
69604 ----------------------------------------------------------------
69605 -- 4262811 -  update the header statuses to invalid in need be
69606 ----------------------------------------------------------------
69607 --
69608 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
69609 
69610 
69611   -----------------------------------------------
69612   -- No accrual reversal for the event class/type
69613   -----------------------------------------------
69614 ----------------------------------------------------------------
69615 
69616 --
69617 -- this ends the header loop iteration for one bulk fetch
69618 --
69619 END LOOP;
69620 
69621 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
69622 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
69623 
69624 --
69625 -- insert dummy rows into lines gt table that were created due to
69626 -- transaction reversals
69627 --
69628 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
69629    l_result := XLA_AE_LINES_PKG.InsertLines;
69630 END IF;
69631 
69632 --
69633 -- reset the temp_line_num for each set of events fetched from header
69634 -- cursor rather than doing it for each new event in line cursor
69635 -- Bug 3939231
69636 --
69637 xla_ae_lines_pkg.g_temp_line_num := 0;
69638 
69639 
69640 
69641 --
69642 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
69643 --
69644 --
69645 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69646 
69647       trace
69651 
69648          (p_msg      => 'SQL - FETCH line_cur'
69649          ,p_level    => C_LEVEL_STATEMENT
69650          ,p_module   => l_log_module);
69652 END IF;
69653 --
69654 --
69655 LOOP
69656   --
69657   FETCH line_cur BULK COLLECT INTO
69658         l_array_entity_id
69659       , l_array_legal_entity_id
69660       , l_array_entity_code
69661       , l_array_transaction_num
69662       , l_array_event_id
69663       , l_array_class_code
69664       , l_array_event_type
69665       , l_array_event_number
69666       , l_array_event_date
69667       , l_array_transaction_date
69668       , l_array_reference_num_1
69669       , l_array_reference_num_2
69670       , l_array_reference_num_3
69671       , l_array_reference_num_4
69672       , l_array_reference_char_1
69673       , l_array_reference_char_2
69674       , l_array_reference_char_3
69675       , l_array_reference_char_4
69676       , l_array_reference_date_1
69677       , l_array_reference_date_2
69678       , l_array_reference_date_3
69679       , l_array_reference_date_4
69680       , l_array_event_created_by
69681       , l_array_budgetary_control_flag
69682       , l_array_extract_line_num 
69683       , l_array_source_1
69684       , l_array_source_2
69685       , l_array_source_3
69686       , l_array_source_14
69687       , l_array_source_22
69688       , l_array_source_27
69689       , l_array_source_28
69690       , l_array_source_31
69691       , l_array_source_52
69692       , l_array_source_53
69693       , l_array_source_55
69694       , l_array_source_56
69695       , l_array_source_57
69696       , l_array_source_58
69697       , l_array_source_59
69698       , l_array_source_62
69699       , l_array_source_63
69700       , l_array_source_64
69701       , l_array_source_65
69702       LIMIT l_rows;
69703 
69704   --
69705   IF (C_LEVEL_EVENT >= g_log_level) THEN
69706             trace
69707                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
69708                ,p_level    => C_LEVEL_EVENT
69709                ,p_module   => l_log_module);
69710   END IF;
69711   --
69712   EXIT WHEN l_array_entity_id.count = 0;
69713 
69714   XLA_AE_LINES_PKG.g_rec_lines := null;
69715 
69716 --
69717 -- Bug 4458708
69718 --
69719 XLA_AE_LINES_PKG.g_LineNumber := 0;
69720 --
69721 --
69722 
69723 FOR Idx IN 1..l_array_event_id.count LOOP
69724    --
69725    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
69726    --
69727    l_event_id := l_array_event_id(idx);  -- 5648433
69728 
69729    --
69730    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
69731    --
69732 
69733    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
69734              (g_array_event(l_event_id).array_value_num('header_index'))
69735          ,'N'
69736          ) <> 'Y'
69737    THEN
69738       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69739          trace
69740             (p_msg      => 'Trancaction revesal option is not Y '
69741             ,p_level    => C_LEVEL_STATEMENT
69742             ,p_module   => l_log_module);
69743       END IF;
69744 
69745 --
69746 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
69747 --
69748 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
69749 --
69750 -- set event info as cache for other routines to refer event attributes
69751 --
69752 
69753 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
69754    l_previous_event_id := l_event_id;
69755 
69756    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
69757       (p_application_id           => p_application_id
69758       ,p_primary_ledger_id        => p_primary_ledger_id
69759       ,p_base_ledger_id           => p_base_ledger_id
69760       ,p_target_ledger_id         => p_target_ledger_id
69761       ,p_entity_id                => l_array_entity_id(Idx)
69762       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
69763       ,p_entity_code              => l_array_entity_code(Idx)
69764       ,p_transaction_num          => l_array_transaction_num(Idx)
69765       ,p_event_id                 => l_array_event_id(Idx)
69766       ,p_event_class_code         => l_array_class_code(Idx)
69767       ,p_event_type_code          => l_array_event_type(Idx)
69768       ,p_event_number             => l_array_event_number(Idx)
69769       ,p_event_date               => l_array_event_date(Idx)
69770       ,p_transaction_date         => l_array_transaction_date(Idx)
69771       ,p_reference_num_1          => l_array_reference_num_1(Idx)
69772       ,p_reference_num_2          => l_array_reference_num_2(Idx)
69773       ,p_reference_num_3          => l_array_reference_num_3(Idx)
69774       ,p_reference_num_4          => l_array_reference_num_4(Idx)
69775       ,p_reference_char_1         => l_array_reference_char_1(Idx)
69776       ,p_reference_char_2         => l_array_reference_char_2(Idx)
69777       ,p_reference_char_3         => l_array_reference_char_3(Idx)
69778       ,p_reference_char_4         => l_array_reference_char_4(Idx)
69779       ,p_reference_date_1         => l_array_reference_date_1(Idx)
69780       ,p_reference_date_2         => l_array_reference_date_2(Idx)
69781       ,p_reference_date_3         => l_array_reference_date_3(Idx)
69782       ,p_reference_date_4         => l_array_reference_date_4(Idx)
69786 END IF;
69783       ,p_event_created_by         => l_array_event_created_by(Idx)
69784       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
69785        --
69787 
69788 
69789 
69790 --
69791 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
69792 
69793 l_acct_reversal_source := SUBSTR(NULL, 1,30);
69794 
69795 IF l_continue_with_lines THEN
69796    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
69797       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
69798 
69799       xla_accounting_err_pkg.build_message
69800          (p_appli_s_name            => 'XLA'
69801          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
69802          ,p_token_1                 => 'LINE_NUMBER'
69803          ,p_value_1                 => l_array_extract_line_num(Idx)
69804          ,p_token_2                 => 'PRODUCT_NAME'
69805          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
69806          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
69807          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
69808          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
69809 
69810    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
69811       --
69812       -- following sets the accounting attributes needed to reverse
69813       -- accounting for a distributeion
69814       --
69815 
69816       --
69817       -- 5217187
69818       --
69819       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
69820       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
69821                                        g_array_event(l_event_id).array_value_num('header_index'));
69822       --
69823       --
69824 
69825       -- No reversal code generated
69826 
69827       xla_ae_lines_pkg.SetAcctReversalAttrs
69828          (p_event_id             => l_event_id
69829          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
69830          ,p_calculate_acctd_flag => l_calculate_acctd_flag
69831          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
69832    END IF;
69833 
69834    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
69835        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
69836 
69837 --
69838 AcctLineType_41 (
69839  p_application_id  => p_application_id
69840  ,p_event_id     => l_event_id
69841  ,p_calculate_acctd_flag => l_calculate_acctd_flag
69842  ,p_calculate_g_l_flag => l_calculate_g_l_flag
69843  ,p_actual_flag => l_actual_flag
69844  ,p_balance_type_code => l_balance_type_code
69845  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
69846  
69847  , p_source_22 => l_array_source_22(Idx)
69848  , p_source_27 => l_array_source_27(Idx)
69849  , p_source_31 => l_array_source_31(Idx)
69850  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
69851  , p_source_52 => l_array_source_52(Idx)
69852  , p_source_53 => l_array_source_53(Idx)
69853  , p_source_54 => g_array_event(l_event_id).array_value_char('source_54')
69854  , p_source_55 => l_array_source_55(Idx)
69855  , p_source_56 => l_array_source_56(Idx)
69856  , p_source_57 => l_array_source_57(Idx)
69857  , p_source_58 => l_array_source_58(Idx)
69858  , p_source_59 => l_array_source_59(Idx)
69859  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
69860  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
69861  , p_source_62 => l_array_source_62(Idx)
69862  );
69863 If(l_balance_type_code = 'A') THEN
69864   l_actual_gain_loss_ref := l_gain_or_loss_ref;
69865 END IF;
69866 
69867 --
69868 
69869 
69870 --
69871 AcctLineType_42 (
69872  p_application_id  => p_application_id
69873  ,p_event_id     => l_event_id
69874  ,p_calculate_acctd_flag => l_calculate_acctd_flag
69875  ,p_calculate_g_l_flag => l_calculate_g_l_flag
69876  ,p_actual_flag => l_actual_flag
69877  ,p_balance_type_code => l_balance_type_code
69878  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
69879  
69880  , p_source_1 => l_array_source_1(Idx)
69881  , p_source_2 => l_array_source_2(Idx)
69882  , p_source_3 => l_array_source_3(Idx)
69883  , p_source_22 => l_array_source_22(Idx)
69884  , p_source_27 => l_array_source_27(Idx)
69885  , p_source_31 => l_array_source_31(Idx)
69886  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
69887  , p_source_52 => l_array_source_52(Idx)
69888  , p_source_53 => l_array_source_53(Idx)
69889  , p_source_54 => g_array_event(l_event_id).array_value_char('source_54')
69890  , p_source_55 => l_array_source_55(Idx)
69891  , p_source_56 => l_array_source_56(Idx)
69892  , p_source_57 => l_array_source_57(Idx)
69893  , p_source_58 => l_array_source_58(Idx)
69894  , p_source_59 => l_array_source_59(Idx)
69895  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
69896  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
69897  , p_source_62 => l_array_source_62(Idx)
69898  );
69899 If(l_balance_type_code = 'A') THEN
69900   l_actual_gain_loss_ref := l_gain_or_loss_ref;
69901 END IF;
69902 
69903 --
69904 
69905 
69906 --
69907 AcctLineType_43 (
69908  p_application_id  => p_application_id
69909  ,p_event_id     => l_event_id
69910  ,p_calculate_acctd_flag => l_calculate_acctd_flag
69914  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
69911  ,p_calculate_g_l_flag => l_calculate_g_l_flag
69912  ,p_actual_flag => l_actual_flag
69913  ,p_balance_type_code => l_balance_type_code
69915  
69916  , p_source_22 => l_array_source_22(Idx)
69917  , p_source_27 => l_array_source_27(Idx)
69918  , p_source_31 => l_array_source_31(Idx)
69919  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
69920  , p_source_52 => l_array_source_52(Idx)
69921  , p_source_53 => l_array_source_53(Idx)
69922  , p_source_54 => g_array_event(l_event_id).array_value_char('source_54')
69923  , p_source_55 => l_array_source_55(Idx)
69924  , p_source_56 => l_array_source_56(Idx)
69925  , p_source_57 => l_array_source_57(Idx)
69926  , p_source_58 => l_array_source_58(Idx)
69927  , p_source_59 => l_array_source_59(Idx)
69928  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
69929  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
69930  , p_source_62 => l_array_source_62(Idx)
69931  );
69932 If(l_balance_type_code = 'A') THEN
69933   l_actual_gain_loss_ref := l_gain_or_loss_ref;
69934 END IF;
69935 
69936 --
69937 
69938 
69939 --
69940 AcctLineType_44 (
69941  p_application_id  => p_application_id
69942  ,p_event_id     => l_event_id
69943  ,p_calculate_acctd_flag => l_calculate_acctd_flag
69944  ,p_calculate_g_l_flag => l_calculate_g_l_flag
69945  ,p_actual_flag => l_actual_flag
69946  ,p_balance_type_code => l_balance_type_code
69947  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
69948  
69949  , p_source_22 => l_array_source_22(Idx)
69950  , p_source_27 => l_array_source_27(Idx)
69951  , p_source_28 => l_array_source_28(Idx)
69952  , p_source_31 => l_array_source_31(Idx)
69953  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
69954  , p_source_52 => l_array_source_52(Idx)
69955  , p_source_53 => l_array_source_53(Idx)
69956  , p_source_54 => g_array_event(l_event_id).array_value_char('source_54')
69957  , p_source_55 => l_array_source_55(Idx)
69958  , p_source_56 => l_array_source_56(Idx)
69959  , p_source_57 => l_array_source_57(Idx)
69960  , p_source_58 => l_array_source_58(Idx)
69961  , p_source_59 => l_array_source_59(Idx)
69962  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
69963  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
69964  , p_source_62 => l_array_source_62(Idx)
69965  );
69966 If(l_balance_type_code = 'A') THEN
69967   l_actual_gain_loss_ref := l_gain_or_loss_ref;
69968 END IF;
69969 
69970 --
69971 
69972 
69973 --
69974 AcctLineType_45 (
69975  p_application_id  => p_application_id
69976  ,p_event_id     => l_event_id
69977  ,p_calculate_acctd_flag => l_calculate_acctd_flag
69978  ,p_calculate_g_l_flag => l_calculate_g_l_flag
69979  ,p_actual_flag => l_actual_flag
69980  ,p_balance_type_code => l_balance_type_code
69981  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
69982  
69983  , p_source_14 => l_array_source_14(Idx)
69984  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
69985  , p_source_52 => l_array_source_52(Idx)
69986  , p_source_53 => l_array_source_53(Idx)
69987  , p_source_54 => g_array_event(l_event_id).array_value_char('source_54')
69988  , p_source_55 => l_array_source_55(Idx)
69989  , p_source_56 => l_array_source_56(Idx)
69990  , p_source_57 => l_array_source_57(Idx)
69991  , p_source_58 => l_array_source_58(Idx)
69992  , p_source_59 => l_array_source_59(Idx)
69993  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
69994  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
69995  , p_source_62 => l_array_source_62(Idx)
69996  , p_source_63 => l_array_source_63(Idx)
69997  , p_source_64 => l_array_source_64(Idx)
69998  );
69999 If(l_balance_type_code = 'A') THEN
70000   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70001 END IF;
70002 
70003 --
70004 
70005 
70006 --
70007 AcctLineType_46 (
70008  p_application_id  => p_application_id
70009  ,p_event_id     => l_event_id
70010  ,p_calculate_acctd_flag => l_calculate_acctd_flag
70011  ,p_calculate_g_l_flag => l_calculate_g_l_flag
70012  ,p_actual_flag => l_actual_flag
70013  ,p_balance_type_code => l_balance_type_code
70014  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
70015  
70016  , p_source_22 => l_array_source_22(Idx)
70017  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
70018  , p_source_52 => l_array_source_52(Idx)
70019  , p_source_53 => l_array_source_53(Idx)
70020  , p_source_54 => g_array_event(l_event_id).array_value_char('source_54')
70021  , p_source_55 => l_array_source_55(Idx)
70022  , p_source_56 => l_array_source_56(Idx)
70023  , p_source_57 => l_array_source_57(Idx)
70024  , p_source_58 => l_array_source_58(Idx)
70025  , p_source_59 => l_array_source_59(Idx)
70026  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
70027  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
70028  , p_source_62 => l_array_source_62(Idx)
70029  , p_source_63 => l_array_source_63(Idx)
70030  , p_source_64 => l_array_source_64(Idx)
70031  );
70032 If(l_balance_type_code = 'A') THEN
70033   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70034 END IF;
70035 
70036 --
70037 
70038 
70039 --
70040 AcctLineType_47 (
70041  p_application_id  => p_application_id
70042  ,p_event_id     => l_event_id
70046  ,p_balance_type_code => l_balance_type_code
70043  ,p_calculate_acctd_flag => l_calculate_acctd_flag
70044  ,p_calculate_g_l_flag => l_calculate_g_l_flag
70045  ,p_actual_flag => l_actual_flag
70047  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
70048  
70049  , p_source_14 => l_array_source_14(Idx)
70050  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
70051  , p_source_52 => l_array_source_52(Idx)
70052  , p_source_53 => l_array_source_53(Idx)
70053  , p_source_54 => g_array_event(l_event_id).array_value_char('source_54')
70054  , p_source_55 => l_array_source_55(Idx)
70055  , p_source_56 => l_array_source_56(Idx)
70056  , p_source_57 => l_array_source_57(Idx)
70057  , p_source_58 => l_array_source_58(Idx)
70058  , p_source_59 => l_array_source_59(Idx)
70059  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
70060  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
70061  , p_source_62 => l_array_source_62(Idx)
70062  , p_source_63 => l_array_source_63(Idx)
70063  , p_source_64 => l_array_source_64(Idx)
70064  );
70065 If(l_balance_type_code = 'A') THEN
70066   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70067 END IF;
70068 
70069 --
70070 
70071 
70072 --
70073 AcctLineType_48 (
70074  p_application_id  => p_application_id
70075  ,p_event_id     => l_event_id
70076  ,p_calculate_acctd_flag => l_calculate_acctd_flag
70077  ,p_calculate_g_l_flag => l_calculate_g_l_flag
70078  ,p_actual_flag => l_actual_flag
70079  ,p_balance_type_code => l_balance_type_code
70080  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
70081  
70082  , p_source_14 => l_array_source_14(Idx)
70083  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
70084  , p_source_52 => l_array_source_52(Idx)
70085  , p_source_53 => l_array_source_53(Idx)
70086  , p_source_54 => g_array_event(l_event_id).array_value_char('source_54')
70087  , p_source_55 => l_array_source_55(Idx)
70088  , p_source_56 => l_array_source_56(Idx)
70089  , p_source_57 => l_array_source_57(Idx)
70090  , p_source_58 => l_array_source_58(Idx)
70091  , p_source_59 => l_array_source_59(Idx)
70092  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
70093  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
70094  , p_source_62 => l_array_source_62(Idx)
70095  , p_source_63 => l_array_source_63(Idx)
70096  , p_source_64 => l_array_source_64(Idx)
70097  , p_source_65 => l_array_source_65(Idx)
70098  );
70099 If(l_balance_type_code = 'A') THEN
70100   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70101 END IF;
70102 
70103 --
70104 
70105 
70106 --
70107 AcctLineType_49 (
70108  p_application_id  => p_application_id
70109  ,p_event_id     => l_event_id
70110  ,p_calculate_acctd_flag => l_calculate_acctd_flag
70111  ,p_calculate_g_l_flag => l_calculate_g_l_flag
70112  ,p_actual_flag => l_actual_flag
70113  ,p_balance_type_code => l_balance_type_code
70114  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
70115  
70116  , p_source_14 => l_array_source_14(Idx)
70117  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
70118  , p_source_52 => l_array_source_52(Idx)
70119  , p_source_53 => l_array_source_53(Idx)
70120  , p_source_54 => g_array_event(l_event_id).array_value_char('source_54')
70121  , p_source_55 => l_array_source_55(Idx)
70122  , p_source_56 => l_array_source_56(Idx)
70123  , p_source_57 => l_array_source_57(Idx)
70124  , p_source_58 => l_array_source_58(Idx)
70125  , p_source_59 => l_array_source_59(Idx)
70126  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
70127  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
70128  , p_source_62 => l_array_source_62(Idx)
70129  , p_source_63 => l_array_source_63(Idx)
70130  , p_source_64 => l_array_source_64(Idx)
70131  );
70132 If(l_balance_type_code = 'A') THEN
70133   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70134 END IF;
70135 
70136 --
70137 
70138 
70139 --
70140 AcctLineType_50 (
70141  p_application_id  => p_application_id
70142  ,p_event_id     => l_event_id
70143  ,p_calculate_acctd_flag => l_calculate_acctd_flag
70144  ,p_calculate_g_l_flag => l_calculate_g_l_flag
70145  ,p_actual_flag => l_actual_flag
70146  ,p_balance_type_code => l_balance_type_code
70147  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
70148  
70149  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
70150  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
70151  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
70152  , p_source_52 => l_array_source_52(Idx)
70153  , p_source_53 => l_array_source_53(Idx)
70154  , p_source_58 => l_array_source_58(Idx)
70155  , p_source_59 => l_array_source_59(Idx)
70156  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
70157  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
70158  , p_source_62 => l_array_source_62(Idx)
70159  );
70160 If(l_balance_type_code = 'A') THEN
70161   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70162 END IF;
70163 
70164 --
70165 
70166 
70167 --
70168 AcctLineType_51 (
70169  p_application_id  => p_application_id
70170  ,p_event_id     => l_event_id
70171  ,p_calculate_acctd_flag => l_calculate_acctd_flag
70172  ,p_calculate_g_l_flag => l_calculate_g_l_flag
70173  ,p_actual_flag => l_actual_flag
70177  , p_source_14 => l_array_source_14(Idx)
70174  ,p_balance_type_code => l_balance_type_code
70175  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
70176  
70178  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
70179  , p_source_52 => l_array_source_52(Idx)
70180  , p_source_53 => l_array_source_53(Idx)
70181  , p_source_54 => g_array_event(l_event_id).array_value_char('source_54')
70182  , p_source_55 => l_array_source_55(Idx)
70183  , p_source_56 => l_array_source_56(Idx)
70184  , p_source_57 => l_array_source_57(Idx)
70185  , p_source_58 => l_array_source_58(Idx)
70186  , p_source_59 => l_array_source_59(Idx)
70187  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
70188  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
70189  , p_source_62 => l_array_source_62(Idx)
70190  , p_source_63 => l_array_source_63(Idx)
70191  , p_source_64 => l_array_source_64(Idx)
70192  );
70193 If(l_balance_type_code = 'A') THEN
70194   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70195 END IF;
70196 
70197 --
70198 
70199 
70200 --
70201 AcctLineType_52 (
70202  p_application_id  => p_application_id
70203  ,p_event_id     => l_event_id
70204  ,p_calculate_acctd_flag => l_calculate_acctd_flag
70205  ,p_calculate_g_l_flag => l_calculate_g_l_flag
70206  ,p_actual_flag => l_actual_flag
70207  ,p_balance_type_code => l_balance_type_code
70208  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
70209  
70210  , p_source_14 => l_array_source_14(Idx)
70211  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
70212  , p_source_52 => l_array_source_52(Idx)
70213  , p_source_53 => l_array_source_53(Idx)
70214  , p_source_54 => g_array_event(l_event_id).array_value_char('source_54')
70215  , p_source_55 => l_array_source_55(Idx)
70216  , p_source_56 => l_array_source_56(Idx)
70217  , p_source_57 => l_array_source_57(Idx)
70218  , p_source_58 => l_array_source_58(Idx)
70219  , p_source_59 => l_array_source_59(Idx)
70220  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
70221  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
70222  , p_source_62 => l_array_source_62(Idx)
70223  , p_source_63 => l_array_source_63(Idx)
70224  , p_source_64 => l_array_source_64(Idx)
70225  );
70226 If(l_balance_type_code = 'A') THEN
70227   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70228 END IF;
70229 
70230 --
70231 
70232 
70233 --
70234 AcctLineType_53 (
70235  p_application_id  => p_application_id
70236  ,p_event_id     => l_event_id
70237  ,p_calculate_acctd_flag => l_calculate_acctd_flag
70238  ,p_calculate_g_l_flag => l_calculate_g_l_flag
70239  ,p_actual_flag => l_actual_flag
70240  ,p_balance_type_code => l_balance_type_code
70241  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
70242  
70243  , p_source_14 => l_array_source_14(Idx)
70244  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
70245  , p_source_52 => l_array_source_52(Idx)
70246  , p_source_53 => l_array_source_53(Idx)
70247  , p_source_54 => g_array_event(l_event_id).array_value_char('source_54')
70248  , p_source_55 => l_array_source_55(Idx)
70249  , p_source_56 => l_array_source_56(Idx)
70250  , p_source_57 => l_array_source_57(Idx)
70251  , p_source_58 => l_array_source_58(Idx)
70252  , p_source_59 => l_array_source_59(Idx)
70253  , p_source_60 => g_array_event(l_event_id).array_value_num('source_60')
70254  , p_source_61 => g_array_event(l_event_id).array_value_num('source_61')
70255  , p_source_62 => l_array_source_62(Idx)
70256  , p_source_63 => l_array_source_63(Idx)
70257  , p_source_64 => l_array_source_64(Idx)
70258  , p_source_65 => l_array_source_65(Idx)
70259  );
70260 If(l_balance_type_code = 'A') THEN
70261   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70262 END IF;
70263 
70264 --
70265 
70266       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
70267       -- or secondary ledger that has different currency with primary
70268       -- or alc that is calculated by sla
70269       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
70270             (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'))
70271 
70272 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
70273 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
70274           AND (l_actual_flag = 'A')) THEN
70275         XLA_AE_LINES_PKG.CreateGainOrLossLines(
70276           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
70277          ,p_application_id   => p_application_id
70278          ,p_amb_context_code => 'DEFAULT'
70279          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
70280          ,p_event_class_code => C_EVENT_CLASS_CODE
70281          ,p_event_type_code  => C_EVENT_TYPE_CODE
70282          
70283          ,p_gain_ccid        => -1
70284          ,p_loss_ccid        => -1
70285 
70286          ,p_actual_flag      => l_actual_flag
70287          ,p_enc_flag         => null
70288          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
70289          ,p_enc_g_l_ref      => null
70290          );
70291       END IF;
70292    END IF;
70293 END IF;
70294 
70295    ELSE
70296       --
70297       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
70301             (p_msg      => 'Trancaction revesal option is Y'
70298       --
70299       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70300          trace
70302             ,p_level    => C_LEVEL_STATEMENT
70303             ,p_module   => l_log_module);
70304       END IF;
70305    END IF;
70306 
70307 END LOOP;
70308 l_result := XLA_AE_LINES_PKG.InsertLines ;
70309 end loop;
70310 close line_cur;
70311 
70312 
70313 --
70314 -- insert headers into xla_ae_headers_gt table
70315 --
70316 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
70317 
70318 -- insert into errors table here.
70319 
70320 END LOOP;
70321 
70322 --
70323 -- 4865292
70324 --
70325 -- Compare g_hdr_extract_count with event count in
70326 -- CreateHeadersAndLines.
70327 --
70328 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
70329 
70330 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70331    trace (p_msg     => '# rows extracted from header extract objects '
70332                     || ' (running total): '
70333                     || g_hdr_extract_count
70334          ,p_level   => C_LEVEL_STATEMENT
70335          ,p_module  => l_log_module);
70336 END IF;
70337 
70338 CLOSE header_cur;
70339 --
70340 
70341 --
70342 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70343    trace
70344       (p_msg      => 'END of EventClass_130'
70345       ,p_level    => C_LEVEL_PROCEDURE
70346       ,p_module   => l_log_module);
70347 END IF;
70348 --
70349 RETURN l_result;
70350 EXCEPTION
70351 WHEN xla_exceptions_pkg.application_exception THEN
70352    
70353 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
70354 
70355    
70356 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
70357 
70358    RAISE;
70359 
70360 WHEN NO_DATA_FOUND THEN
70361 
70362 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
70363 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
70364 
70365 FOR header_record IN header_cur
70366 LOOP
70367     l_array_header_events(header_record.event_id) := header_record.event_id;
70368 END LOOP;
70369 
70370 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
70371 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
70372 
70373 fnd_file.put_line(fnd_file.LOG, '                    ');
70374 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
70375 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
70376 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
70377 
70378 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
70379 LOOP
70380 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
70381 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
70382         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
70383 	END IF;
70384 END LOOP;
70385 
70386 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
70387 fnd_file.put_line(fnd_file.LOG, '                    ');
70388 
70389 
70390 xla_exceptions_pkg.raise_message
70391       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_130');
70392 
70393 
70394 WHEN OTHERS THEN
70395    xla_exceptions_pkg.raise_message
70396       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_130');
70397 END EventClass_130;
70398 --
70399 
70400 ---------------------------------------
70401 --
70402 -- PRIVATE PROCEDURE
70403 --         insert_sources_131
70404 --
70405 ----------------------------------------
70406 --
70407 PROCEDURE insert_sources_131(
70408                                 p_target_ledger_id       IN NUMBER
70409                               , p_language               IN VARCHAR2
70410                               , p_sla_ledger_id          IN NUMBER
70411                               , p_pad_start_date         IN DATE
70412                               , p_pad_end_date           IN DATE
70413                          )
70414 IS
70415 
70416 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DEBIT_MEMO_ALL';
70417 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DEBIT_MEMO';
70418 p_apps_owner                   VARCHAR2(30);
70419 l_log_module                   VARCHAR2(240);
70420 BEGIN
70421 IF g_log_enabled THEN
70422       l_log_module := C_DEFAULT_MODULE||'.insert_sources_131';
70423 END IF;
70424 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70425 
70426       trace
70427          (p_msg      => 'BEGIN of insert_sources_131'
70428          ,p_level    => C_LEVEL_PROCEDURE
70429          ,p_module   => l_log_module);
70430 
70431 END IF;
70432 
70433 -- select APPS owner
70434 SELECT oracle_username
70435   INTO p_apps_owner
70436   FROM fnd_oracle_userid
70437  WHERE read_only_flag = 'U'
70438 ;
70439 
70440 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70441       trace
70442          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
70443                         ' - p_language = '||p_language||
70444                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
70445                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
70449          ,p_module   => l_log_module);
70446                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
70447                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
70448          ,p_level    => C_LEVEL_STATEMENT
70450 END IF;
70451 
70452 
70453 --
70454 INSERT INTO xla_diag_sources --hdr2
70455 (
70456         event_id
70457       , ledger_id
70458       , sla_ledger_id
70459       , description_language
70460       , object_name
70461       , object_type_code
70462       , line_number
70463       , source_application_id
70464       , source_type_code
70465       , source_code
70466       , source_value
70467       , source_meaning
70468       , created_by
70469       , creation_date
70470       , last_update_date
70471       , last_updated_by
70472       , last_update_login
70473       , program_update_date
70474       , program_application_id
70475       , program_id
70476       , request_id
70477 )
70478 SELECT
70479         event_id
70480       , p_target_ledger_id
70481       , p_sla_ledger_id
70482       , p_language
70483       , object_name
70484       , object_type_code
70485       , line_number
70486       , source_application_id
70487       , source_type_code
70488       , source_code
70489       , SUBSTR(source_value ,1,1996)
70490       , SUBSTR(source_meaning ,1,200)
70491       , xla_environment_pkg.g_Usr_Id
70492       , TRUNC(SYSDATE)
70493       , TRUNC(SYSDATE)
70494       , xla_environment_pkg.g_Usr_Id
70495       , xla_environment_pkg.g_Login_Id
70496       , TRUNC(SYSDATE)
70497       , xla_environment_pkg.g_Prog_Appl_Id
70498       , xla_environment_pkg.g_Prog_Id
70499       , xla_environment_pkg.g_Req_Id
70500   FROM (
70501        SELECT xet.event_id                  event_id
70502             , 0                          line_number
70503             , CASE r
70504                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
70505                 WHEN 2 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
70506                 WHEN 3 THEN 'AR_BILL_TO_SITE_USES_S_V' 
70507                 WHEN 4 THEN 'AR_TRANSACTIONS_S_V' 
70508                 WHEN 5 THEN 'AR_TRANSACTIONS_S_V' 
70509                 WHEN 6 THEN 'AR_TRANSACTIONS_S_V' 
70510                 WHEN 7 THEN 'AR_TRANSACTIONS_S_V' 
70511                 
70512                ELSE null
70513               END                           object_name
70514             , CASE r
70515                 WHEN 1 THEN 'HEADER' 
70516                 WHEN 2 THEN 'HEADER' 
70517                 WHEN 3 THEN 'HEADER' 
70518                 WHEN 4 THEN 'HEADER' 
70519                 WHEN 5 THEN 'HEADER' 
70520                 WHEN 6 THEN 'HEADER' 
70521                 WHEN 7 THEN 'HEADER' 
70522                 
70523                 ELSE null
70524               END                           object_type_code
70525             , CASE r
70526                 WHEN 1 THEN '222' 
70527                 WHEN 2 THEN '222' 
70528                 WHEN 3 THEN '222' 
70529                 WHEN 4 THEN '222' 
70530                 WHEN 5 THEN '222' 
70531                 WHEN 6 THEN '222' 
70532                 WHEN 7 THEN '222' 
70533                 
70534                 ELSE null
70535               END                           source_application_id
70536             , 'S'             source_type_code
70537             , CASE r
70538                 WHEN 1 THEN 'TRX_DOC_SEQUENCE_VALUE' 
70539                 WHEN 2 THEN 'BILL_CUST_ACCOUNT_ID' 
70540                 WHEN 3 THEN 'BILL_USES_SITE_USE_ID' 
70541                 WHEN 4 THEN 'XLA_PARTY_TYPE' 
70542                 WHEN 5 THEN 'TRX_INVOICE_CURRENCY_CODE' 
70543                 WHEN 6 THEN 'TRX_DOC_SEQUENCE_CATEGORY' 
70544                 WHEN 7 THEN 'TRX_DOC_SEQUENCE_ID' 
70545                 
70546                 ELSE null
70547               END                           source_code
70548             , CASE r
70549                 WHEN 1 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_VALUE)
70550                 WHEN 2 THEN TO_CHAR(h1.BILL_CUST_ACCOUNT_ID)
70551                 WHEN 3 THEN TO_CHAR(h2.BILL_USES_SITE_USE_ID)
70552                 WHEN 4 THEN TO_CHAR(h5.XLA_PARTY_TYPE)
70553                 WHEN 5 THEN TO_CHAR(h5.TRX_INVOICE_CURRENCY_CODE)
70554                 WHEN 6 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_CATEGORY)
70555                 WHEN 7 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_ID)
70556                 
70557                 ELSE null
70558               END                           source_value
70559             , null              source_meaning
70560          FROM xla_events_gt     xet  
70561       , AR_BILL_TO_CUSTOMERS_S_V  h1
70562       , AR_BILL_TO_SITE_USES_S_V  h2
70563       , AR_TRANSACTIONS_S_V  h5
70564              ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
70565          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
70566            AND xet.event_class_code = C_EVENT_CLASS_CODE
70567               AND h1.event_id = xet.event_id
70568   AND h2.event_id  = h1.event_id
70569   AND h5.event_id  = h1.event_id
70570 
70571 )
70572 ;
70573 --
70574 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70575 
70576       trace
70577          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
70578          ,p_level    => C_LEVEL_STATEMENT
70582 --
70579          ,p_module   => l_log_module);
70580 
70581 END IF;
70583 
70584 
70585 
70586 --
70587 INSERT INTO xla_diag_sources  --line2
70588 (
70589         event_id
70590       , ledger_id
70591       , sla_ledger_id
70592       , description_language
70593       , object_name
70594       , object_type_code
70595       , line_number
70596       , source_application_id
70597       , source_type_code
70598       , source_code
70599       , source_value
70600       , source_meaning
70601       , created_by
70602       , creation_date
70603       , last_update_date
70604       , last_updated_by
70605       , last_update_login
70606       , program_update_date
70607       , program_application_id
70608       , program_id
70609       , request_id
70610 )
70611 SELECT  event_id
70612       , p_target_ledger_id
70613       , p_sla_ledger_id
70614       , p_language
70615       , object_name
70616       , object_type_code
70617       , line_number
70618       , source_application_id
70619       , source_type_code
70620       , source_code
70621       , SUBSTR(source_value,1,1996)
70622       , SUBSTR(source_meaning ,1,200)
70623       , xla_environment_pkg.g_Usr_Id
70624       , TRUNC(SYSDATE)
70625       , TRUNC(SYSDATE)
70626       , xla_environment_pkg.g_Usr_Id
70627       , xla_environment_pkg.g_Login_Id
70628       , TRUNC(SYSDATE)
70629       , xla_environment_pkg.g_Prog_Appl_Id
70630       , xla_environment_pkg.g_Prog_Id
70631       , xla_environment_pkg.g_Req_Id
70632   FROM (
70633        SELECT xet.event_id                  event_id
70634             , l4.line_number                 line_number
70635             , CASE r
70636                WHEN 1 THEN 'AR_CUST_TRX_LINES_L_V' 
70637                 WHEN 2 THEN 'AR_CUST_TRX_LINES_L_V' 
70638                 WHEN 3 THEN 'AR_CUST_TRX_LINES_L_V' 
70639                 WHEN 4 THEN 'AR_CUST_TRX_LINES_L_V' 
70640                 WHEN 5 THEN 'AR_CUST_TRX_LINES_L_V' 
70641                 WHEN 6 THEN 'AR_CUST_TRX_LINES_BASE_V' 
70642                 WHEN 7 THEN 'AR_CUST_TRX_LINES_BASE_V' 
70643                 WHEN 8 THEN 'AR_CUST_TRX_LINES_BASE_V' 
70644                 WHEN 9 THEN 'AR_CUST_TRX_LINES_BASE_V' 
70645                 WHEN 10 THEN 'AR_CUST_TRX_LINES_L_V' 
70646                 WHEN 11 THEN 'AR_CUST_TRX_LINES_L_V' 
70647                 
70648                ELSE null
70649               END                           object_name
70650             , CASE r
70651                 WHEN 1 THEN 'LINE' 
70652                 WHEN 2 THEN 'LINE' 
70653                 WHEN 3 THEN 'LINE' 
70654                 WHEN 4 THEN 'LINE' 
70655                 WHEN 5 THEN 'LINE' 
70656                 WHEN 6 THEN 'LINE' 
70657                 WHEN 7 THEN 'LINE' 
70658                 WHEN 8 THEN 'LINE' 
70659                 WHEN 9 THEN 'LINE' 
70660                 WHEN 10 THEN 'LINE' 
70661                 WHEN 11 THEN 'LINE' 
70662                 
70663                 ELSE null
70664               END                           object_type_code
70665             , CASE r
70666                 WHEN 1 THEN '222' 
70667                 WHEN 2 THEN '222' 
70668                 WHEN 3 THEN '222' 
70669                 WHEN 4 THEN '222' 
70670                 WHEN 5 THEN '222' 
70671                 WHEN 6 THEN '222' 
70672                 WHEN 7 THEN '222' 
70673                 WHEN 8 THEN '222' 
70674                 WHEN 9 THEN '222' 
70675                 WHEN 10 THEN '222' 
70676                 WHEN 11 THEN '222' 
70677                 
70678                 ELSE null
70679               END                           source_application_id
70680             , 'S'             source_type_code
70681             , CASE r
70682                 WHEN 1 THEN 'TRX_LINE_DIST_CCID' 
70683                 WHEN 2 THEN 'TRX_LINE_DIST_ACCOUNT_CLASS' 
70684                 WHEN 3 THEN 'TRX_LINE_DIST_ID' 
70685                 WHEN 4 THEN 'TRX_DISTRIBUTION_TYPE' 
70686                 WHEN 5 THEN 'TRX_LINE_DIST_AMT' 
70687                 WHEN 6 THEN 'TRX_LINE_CUR_CONVERSION_DATE' 
70688                 WHEN 7 THEN 'TRX_LINE_CUR_CONVERSION_RATE' 
70689                 WHEN 8 THEN 'TRX_LINE_CUR_CONVERSION_TYPE' 
70690                 WHEN 9 THEN 'TRX_LINE_ACCTD_AMT' 
70691                 WHEN 10 THEN 'TRX_LINE_INTERFACE_LINE_ATTR1' 
70692                 WHEN 11 THEN 'TRX_TAX_LINE_ID' 
70693                 
70694                 ELSE null
70695               END                           source_code
70696             , CASE r
70697                 WHEN 1 THEN TO_CHAR(l4.TRX_LINE_DIST_CCID)
70698                 WHEN 2 THEN TO_CHAR(l4.TRX_LINE_DIST_ACCOUNT_CLASS)
70699                 WHEN 3 THEN TO_CHAR(l4.TRX_LINE_DIST_ID)
70700                 WHEN 4 THEN TO_CHAR(l4.TRX_DISTRIBUTION_TYPE)
70701                 WHEN 5 THEN TO_CHAR(l4.TRX_LINE_DIST_AMT)
70702                 WHEN 6 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_DATE)
70703                 WHEN 7 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_RATE)
70704                 WHEN 8 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_TYPE)
70705                 WHEN 9 THEN TO_CHAR(l3.TRX_LINE_ACCTD_AMT)
70706                 WHEN 10 THEN TO_CHAR(l4.TRX_LINE_INTERFACE_LINE_ATTR1)
70707                 WHEN 11 THEN TO_CHAR(l4.TRX_TAX_LINE_ID)
70708                 
70709                 ELSE null
70713         , AR_CUST_TRX_LINES_BASE_V  l3
70710               END                           source_value
70711             , null              source_meaning
70712          FROM  xla_events_gt     xet  
70714         , AR_CUST_TRX_LINES_L_V  l4
70715             , (select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
70716         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
70717           AND xet.event_class_code = C_EVENT_CLASS_CODE
70718             AND l3.event_id          = xet.event_id
70719   AND l4.event_id    = l3.event_id
70720   AND l4.line_number = l3.line_number
70721 
70722 )
70723 ;
70724 --
70725 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70726 
70727       trace
70728          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
70729          ,p_level    => C_LEVEL_STATEMENT
70730          ,p_module   => l_log_module);
70731 
70732 END IF;
70733 
70734 
70735 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70736       trace
70737          (p_msg      => 'END of insert_sources_131'
70738          ,p_level    => C_LEVEL_PROCEDURE
70739          ,p_module   => l_log_module);
70740 END IF;
70741 EXCEPTION
70742   WHEN xla_exceptions_pkg.application_exception THEN
70743       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
70744             trace
70745                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
70746                ,p_level    => C_LEVEL_EXCEPTION
70747                ,p_module   => l_log_module);
70748       END IF;
70749       RAISE;
70750   WHEN OTHERS THEN
70751       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
70752             trace
70753                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
70754                ,p_level    => C_LEVEL_EXCEPTION
70755                ,p_module   => l_log_module);
70756        END IF;
70757        xla_exceptions_pkg.raise_message
70758            (p_location => 'XLA_00222_AAD_S_000017_PKG.insert_sources_131');
70759 END insert_sources_131;
70760 --
70761 
70762 ---------------------------------------
70763 --
70764 -- PRIVATE FUNCTION
70765 --         EventClass_131
70766 --
70767 ----------------------------------------
70768 --
70769 FUNCTION EventClass_131
70770        (p_application_id         IN NUMBER
70771        ,p_base_ledger_id         IN NUMBER
70772        ,p_target_ledger_id       IN NUMBER
70773        ,p_language               IN VARCHAR2
70774        ,p_currency_code          IN VARCHAR2
70775        ,p_sla_ledger_id          IN NUMBER
70776        ,p_pad_start_date         IN DATE
70777        ,p_pad_end_date           IN DATE
70778        ,p_primary_ledger_id      IN NUMBER)
70779 RETURN BOOLEAN IS
70780 --
70781 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DEBIT_MEMO_ALL';
70782 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DEBIT_MEMO';
70783 
70784 l_calculate_acctd_flag   VARCHAR2(1) :='N';
70785 l_calculate_g_l_flag     VARCHAR2(1) :='N';
70786 --
70787 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70788 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70789 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
70790 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70791 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70792 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
70793 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
70794 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70795 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70796 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70797 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70798 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70799 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70800 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
70801 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70802 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70803 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70804 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
70805 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70806 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70807 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70808 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
70809 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
70810 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
70811 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
70812 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
70813 
70814 l_event_id                             NUMBER;
70815 l_previous_event_id                    NUMBER;
70816 l_first_event_id                       NUMBER;
70817 l_last_event_id                        NUMBER;
70818 
70819 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
70820 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
70821 --
70825 l_event_type_name           VARCHAR2(80) := 'All';
70822 --
70823 l_result                    BOOLEAN := TRUE;
70824 l_rows                      NUMBER  := 1000;
70826 l_event_class_name          VARCHAR2(80) := 'Debit Memo';
70827 l_description               VARCHAR2(4000);
70828 l_transaction_reversal      NUMBER;
70829 l_ae_header_id              NUMBER;
70830 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
70831 l_log_module                VARCHAR2(240);
70832 --
70833 l_acct_reversal_source      VARCHAR2(30);
70834 l_trx_reversal_source       VARCHAR2(30);
70835 
70836 l_continue_with_lines       BOOLEAN := TRUE;
70837 --
70838 l_acc_rev_gl_date_source    DATE;                      -- 4262811
70839 --
70840 type t_array_event_id is table of number index by binary_integer;
70841 
70842 l_rec_array_event                    t_rec_array_event;
70843 l_null_rec_array_event               t_rec_array_event;
70844 l_array_ae_header_id                 xla_number_array_type;
70845 l_actual_flag                        VARCHAR2(1) := NULL;
70846 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
70847 l_balance_type_code                  VARCHAR2(1) :=NULL;
70848 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
70849 
70850 --
70851 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
70852 --
70853 
70854 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
70855 TYPE t_array_source_37 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
70856 TYPE t_array_source_38 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
70857 TYPE t_array_source_39 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
70858 TYPE t_array_source_47 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
70859 TYPE t_array_source_111 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
70860 TYPE t_array_source_112 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
70861 
70862 TYPE t_array_source_26 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
70863 TYPE t_array_source_43 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ACCOUNT_CLASS%TYPE INDEX BY BINARY_INTEGER;
70864 TYPE t_array_source_44 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
70865 TYPE t_array_source_45 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
70866 TYPE t_array_source_46 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_AMT%TYPE INDEX BY BINARY_INTEGER;
70867 TYPE t_array_source_48 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
70868 TYPE t_array_source_49 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
70869 TYPE t_array_source_50 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
70870 TYPE t_array_source_51 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
70871 TYPE t_array_source_65 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_INTERFACE_LINE_ATTR1%TYPE INDEX BY BINARY_INTEGER;
70872 TYPE t_array_source_86 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_TAX_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
70873 
70874 l_array_source_3              t_array_source_3;
70875 l_array_source_37              t_array_source_37;
70876 l_array_source_38              t_array_source_38;
70877 l_array_source_39              t_array_source_39;
70878 l_array_source_47              t_array_source_47;
70879 l_array_source_111              t_array_source_111;
70880 l_array_source_112              t_array_source_112;
70881 
70882 l_array_source_26      t_array_source_26;
70883 l_array_source_43      t_array_source_43;
70884 l_array_source_44      t_array_source_44;
70885 l_array_source_45      t_array_source_45;
70886 l_array_source_46      t_array_source_46;
70887 l_array_source_48      t_array_source_48;
70888 l_array_source_49      t_array_source_49;
70889 l_array_source_50      t_array_source_50;
70890 l_array_source_51      t_array_source_51;
70891 l_array_source_65      t_array_source_65;
70892 l_array_source_86      t_array_source_86;
70893 
70894 --
70895 CURSOR header_cur
70896 IS
70897 SELECT /*+ leading(xet) cardinality(xet,1) */
70898 -- Event Class Code: DEBIT_MEMO
70899     xet.entity_id
70900    ,xet.legal_entity_id
70901    ,xet.entity_code
70902    ,xet.transaction_number
70903    ,xet.event_id
70904    ,xet.event_class_code
70905    ,xet.event_type_code
70906    ,xet.event_number
70907    ,xet.event_date
70908    ,xet.transaction_date
70909    ,xet.reference_num_1
70910    ,xet.reference_num_2
70911    ,xet.reference_num_3
70912    ,xet.reference_num_4
70913    ,xet.reference_char_1
70914    ,xet.reference_char_2
70915    ,xet.reference_char_3
70916    ,xet.reference_char_4
70917    ,xet.reference_date_1
70918    ,xet.reference_date_2
70919    ,xet.reference_date_3
70920    ,xet.reference_date_4
70921    ,xet.event_created_by
70922    ,xet.budgetary_control_flag 
70923   , h5.TRX_DOC_SEQUENCE_VALUE    source_3
70924   , h1.BILL_CUST_ACCOUNT_ID    source_37
70925   , h2.BILL_USES_SITE_USE_ID    source_38
70926   , h5.XLA_PARTY_TYPE    source_39
70927   , h5.TRX_INVOICE_CURRENCY_CODE    source_47
70928   , h5.TRX_DOC_SEQUENCE_CATEGORY    source_111
70932   , AR_BILL_TO_SITE_USES_S_V  h2
70929   , h5.TRX_DOC_SEQUENCE_ID    source_112
70930   FROM xla_events_gt     xet 
70931   , AR_BILL_TO_CUSTOMERS_S_V  h1
70933   , AR_TRANSACTIONS_S_V  h5
70934  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
70935    and xet.event_class_code = C_EVENT_CLASS_CODE
70936    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
70937   AND h2.event_id  = h1.event_id
70938   AND h5.event_id  = h1.event_id
70939 
70940  ORDER BY event_id
70941 ;
70942 
70943 
70944 --
70945 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
70946 IS
70947 SELECT  /*+ leading(xet) cardinality(xet,1) */
70948 -- Event Class Code: DEBIT_MEMO
70949     xet.entity_id
70950    ,xet.legal_entity_id
70951    ,xet.entity_code
70952    ,xet.transaction_number
70953    ,xet.event_id
70954    ,xet.event_class_code
70955    ,xet.event_type_code
70956    ,xet.event_number
70957    ,xet.event_date
70958    ,xet.transaction_date
70959    ,xet.reference_num_1
70960    ,xet.reference_num_2
70961    ,xet.reference_num_3
70962    ,xet.reference_num_4
70963    ,xet.reference_char_1
70964    ,xet.reference_char_2
70965    ,xet.reference_char_3
70966    ,xet.reference_char_4
70967    ,xet.reference_date_1
70968    ,xet.reference_date_2
70969    ,xet.reference_date_3
70970    ,xet.reference_date_4
70971    ,xet.event_created_by
70972    ,xet.budgetary_control_flag
70973  , l3.LINE_NUMBER  
70974   , l4.TRX_LINE_DIST_CCID    source_26
70975   , l4.TRX_LINE_DIST_ACCOUNT_CLASS    source_43
70976   , l4.TRX_LINE_DIST_ID    source_44
70977   , l4.TRX_DISTRIBUTION_TYPE    source_45
70978   , l4.TRX_LINE_DIST_AMT    source_46
70979   , l3.TRX_LINE_CUR_CONVERSION_DATE    source_48
70980   , l3.TRX_LINE_CUR_CONVERSION_RATE    source_49
70981   , l3.TRX_LINE_CUR_CONVERSION_TYPE    source_50
70982   , l3.TRX_LINE_ACCTD_AMT    source_51
70983   , l4.TRX_LINE_INTERFACE_LINE_ATTR1    source_65
70984   , l4.TRX_TAX_LINE_ID    source_86
70985   FROM xla_events_gt     xet 
70986   , AR_CUST_TRX_LINES_BASE_V  l3
70987   , AR_CUST_TRX_LINES_L_V  l4
70988  WHERE xet.event_id between x_first_event_id and x_last_event_id
70989    and xet.event_date between p_pad_start_date and p_pad_end_date
70990    and xet.event_class_code = C_EVENT_CLASS_CODE
70991    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
70992   AND l4.event_id    = l3.event_id
70993   AND l4.line_number = l3.line_number
70994 ;
70995 
70996 --
70997 BEGIN
70998 IF g_log_enabled THEN
70999    l_log_module := C_DEFAULT_MODULE||'.EventClass_131';
71000 END IF;
71001 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71002    trace
71003       (p_msg      => 'BEGIN of EventClass_131'
71004       ,p_level    => C_LEVEL_PROCEDURE
71005       ,p_module   => l_log_module);
71006 END IF;
71007 
71008 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71009    trace
71010       (p_msg      => 'p_application_id = '||p_application_id||
71011                      ' - p_base_ledger_id = '||p_base_ledger_id||
71012                      ' - p_target_ledger_id  = '||p_target_ledger_id||
71013                      ' - p_language = '||p_language||
71014                      ' - p_currency_code = '||p_currency_code||
71015                      ' - p_sla_ledger_id = '||p_sla_ledger_id
71016       ,p_level    => C_LEVEL_STATEMENT
71017       ,p_module   => l_log_module);
71018 END IF;
71019 --
71020 -- initialze arrays
71021 --
71022 g_array_event.DELETE;
71023 l_rec_array_event := l_null_rec_array_event;
71024 --
71025 --------------------------------------
71026 -- 4262811 Initialze MPA Line Number
71027 --------------------------------------
71028 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
71029 
71030 --
71031 
71032 --
71033 OPEN header_cur;
71034 --
71035 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71036    trace
71037    (p_msg      => 'SQL - FETCH header_cur'
71038    ,p_level    => C_LEVEL_STATEMENT
71039    ,p_module   => l_log_module);
71040 END IF;
71041 --
71042 LOOP
71043 FETCH header_cur BULK COLLECT INTO
71044         l_array_entity_id
71045       , l_array_legal_entity_id
71046       , l_array_entity_code
71047       , l_array_transaction_num
71048       , l_array_event_id
71049       , l_array_class_code
71050       , l_array_event_type
71051       , l_array_event_number
71052       , l_array_event_date
71053       , l_array_transaction_date
71054       , l_array_reference_num_1
71055       , l_array_reference_num_2
71056       , l_array_reference_num_3
71057       , l_array_reference_num_4
71058       , l_array_reference_char_1
71059       , l_array_reference_char_2
71060       , l_array_reference_char_3
71061       , l_array_reference_char_4
71062       , l_array_reference_date_1
71063       , l_array_reference_date_2
71064       , l_array_reference_date_3
71065       , l_array_reference_date_4
71066       , l_array_event_created_by
71067       , l_array_budgetary_control_flag 
71068       , l_array_source_3
71069       , l_array_source_37
71070       , l_array_source_38
71071       , l_array_source_39
71072       , l_array_source_47
71073       , l_array_source_111
71074       , l_array_source_112
71078    trace
71075       LIMIT l_rows;
71076 --
71077 IF (C_LEVEL_EVENT >= g_log_level) THEN
71079    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
71080    ,p_level    => C_LEVEL_EVENT
71081    ,p_module   => l_log_module);
71082 END IF;
71083 --
71084 EXIT WHEN l_array_entity_id.COUNT = 0;
71085 
71086 -- initialize arrays
71087 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
71088 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
71089 
71090 --
71091 -- Bug 4458708
71092 --
71093 XLA_AE_LINES_PKG.g_LineNumber := 0;
71094 
71095 
71096 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
71097 g_last_hdr_idx := l_array_event_id.LAST;
71098 --
71099 -- loop for the headers. Each iteration is for each header extract row
71100 -- fetched in header cursor
71101 --
71102 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
71103 
71104 --
71105 -- set event info as cache for other routines to refer event attributes
71106 --
71107 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
71108    (p_application_id           => p_application_id
71109    ,p_primary_ledger_id        => p_primary_ledger_id
71110    ,p_base_ledger_id           => p_base_ledger_id
71111    ,p_target_ledger_id         => p_target_ledger_id
71112    ,p_entity_id                => l_array_entity_id(hdr_idx)
71113    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
71114    ,p_entity_code              => l_array_entity_code(hdr_idx)
71115    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
71116    ,p_event_id                 => l_array_event_id(hdr_idx)
71117    ,p_event_class_code         => l_array_class_code(hdr_idx)
71118    ,p_event_type_code          => l_array_event_type(hdr_idx)
71119    ,p_event_number             => l_array_event_number(hdr_idx)
71120    ,p_event_date               => l_array_event_date(hdr_idx)
71121    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
71122    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
71123    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
71124    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
71125    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
71126    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
71127    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
71128    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
71129    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
71130    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
71131    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
71132    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
71133    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
71134    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
71135    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
71136 
71137 --
71138 -- set the status of entry to C_VALID (0)
71139 --
71140 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
71141 
71142 --
71143 -- initialize a row for ae header
71144 --
71145 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
71146 
71147 l_event_id := l_array_event_id(hdr_idx);
71148 
71149 --
71150 -- storing the hdr_idx for event. May be used by line cursor.
71151 --
71152 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
71153 
71154 --
71155 -- store sources from header extract. This can be improved to
71156 -- store only those sources from header extract that may be used in lines
71157 --
71158 
71159 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
71160 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
71161 g_array_event(l_event_id).array_value_num('source_38') := l_array_source_38(hdr_idx);
71162 g_array_event(l_event_id).array_value_char('source_39') := l_array_source_39(hdr_idx);
71163 g_array_event(l_event_id).array_value_char('source_47') := l_array_source_47(hdr_idx);
71164 g_array_event(l_event_id).array_value_char('source_111') := l_array_source_111(hdr_idx);
71165 g_array_event(l_event_id).array_value_num('source_112') := l_array_source_112(hdr_idx);
71166 
71167 --
71168 -- initilaize the status of ae headers for diffrent balance types
71169 -- the status is initialised to C_NOT_CREATED (2)
71170 --
71171 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
71172 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
71173 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
71174 
71175 --
71176 -- call api to validate and store accounting attributes for header
71177 --
71178 
71179 ------------------------------------------------------------
71180 -- Accrual Reversal : to get date for Standard Source (NONE)
71181 ------------------------------------------------------------
71182 l_acc_rev_gl_date_source := NULL;
71183 
71184      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
71185       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_111');
71186      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
71190      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
71187       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_112');
71188      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
71189       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_3');
71191       l_rec_acct_attrs.array_date_value(4) := 
71192 xla_ae_sources_pkg.GetSystemSourceDate(
71193    p_source_code           => 'XLA_EVENT_DATE'
71194  , p_source_type_code      => 'Y'
71195  , p_source_application_id =>  602
71196 );
71197 
71198 
71199 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
71200 
71201 XLA_AE_HEADER_PKG.SetJeCategoryName;
71202 
71203 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
71204 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
71205 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
71206 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
71207 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
71208 
71209 
71210 -- No header level analytical criteria
71211 
71212 --
71213 --accounting attribute enhancement, bug 3612931
71214 --
71215 l_trx_reversal_source := SUBSTR(NULL, 1,30);
71216 
71217 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
71218    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
71219 
71220    xla_accounting_err_pkg.build_message
71221       (p_appli_s_name            => 'XLA'
71222       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
71223       ,p_token_1                 => 'ACCT_ATTR_NAME'
71224       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
71225       ,p_token_2                 => 'PRODUCT_NAME'
71226       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
71227       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
71228       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
71229       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
71230 
71231 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
71232    --
71233    -- following sets the accounting attributes needed to reverse
71234    -- accounting for a distributeion
71235    --
71236    xla_ae_lines_pkg.SetTrxReversalAttrs
71237       (p_event_id              => l_event_id
71238       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
71239       ,p_trx_reversal_source   => l_trx_reversal_source);
71240 
71241 END IF;
71242 
71243 
71244 ----------------------------------------------------------------
71245 -- 4262811 -  update the header statuses to invalid in need be
71246 ----------------------------------------------------------------
71247 --
71248 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
71249 
71250 
71251   -----------------------------------------------
71252   -- No accrual reversal for the event class/type
71253   -----------------------------------------------
71254 ----------------------------------------------------------------
71255 
71256 --
71257 -- this ends the header loop iteration for one bulk fetch
71258 --
71259 END LOOP;
71260 
71261 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
71262 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
71263 
71264 --
71265 -- insert dummy rows into lines gt table that were created due to
71266 -- transaction reversals
71267 --
71268 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
71269    l_result := XLA_AE_LINES_PKG.InsertLines;
71270 END IF;
71271 
71272 --
71273 -- reset the temp_line_num for each set of events fetched from header
71274 -- cursor rather than doing it for each new event in line cursor
71275 -- Bug 3939231
71276 --
71277 xla_ae_lines_pkg.g_temp_line_num := 0;
71278 
71279 
71280 
71281 --
71282 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
71283 --
71284 --
71285 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71286 
71287       trace
71288          (p_msg      => 'SQL - FETCH line_cur'
71289          ,p_level    => C_LEVEL_STATEMENT
71290          ,p_module   => l_log_module);
71291 
71292 END IF;
71293 --
71294 --
71295 LOOP
71296   --
71297   FETCH line_cur BULK COLLECT INTO
71298         l_array_entity_id
71299       , l_array_legal_entity_id
71300       , l_array_entity_code
71301       , l_array_transaction_num
71302       , l_array_event_id
71303       , l_array_class_code
71304       , l_array_event_type
71305       , l_array_event_number
71306       , l_array_event_date
71307       , l_array_transaction_date
71308       , l_array_reference_num_1
71309       , l_array_reference_num_2
71310       , l_array_reference_num_3
71311       , l_array_reference_num_4
71312       , l_array_reference_char_1
71313       , l_array_reference_char_2
71314       , l_array_reference_char_3
71315       , l_array_reference_char_4
71316       , l_array_reference_date_1
71320       , l_array_event_created_by
71317       , l_array_reference_date_2
71318       , l_array_reference_date_3
71319       , l_array_reference_date_4
71321       , l_array_budgetary_control_flag
71322       , l_array_extract_line_num 
71323       , l_array_source_26
71324       , l_array_source_43
71325       , l_array_source_44
71326       , l_array_source_45
71327       , l_array_source_46
71328       , l_array_source_48
71329       , l_array_source_49
71330       , l_array_source_50
71331       , l_array_source_51
71332       , l_array_source_65
71333       , l_array_source_86
71334       LIMIT l_rows;
71335 
71336   --
71337   IF (C_LEVEL_EVENT >= g_log_level) THEN
71338             trace
71339                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
71340                ,p_level    => C_LEVEL_EVENT
71341                ,p_module   => l_log_module);
71342   END IF;
71343   --
71344   EXIT WHEN l_array_entity_id.count = 0;
71345 
71346   XLA_AE_LINES_PKG.g_rec_lines := null;
71347 
71348 --
71349 -- Bug 4458708
71350 --
71351 XLA_AE_LINES_PKG.g_LineNumber := 0;
71352 --
71353 --
71354 
71355 FOR Idx IN 1..l_array_event_id.count LOOP
71356    --
71357    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
71358    --
71359    l_event_id := l_array_event_id(idx);  -- 5648433
71360 
71361    --
71362    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
71363    --
71364 
71365    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
71366              (g_array_event(l_event_id).array_value_num('header_index'))
71367          ,'N'
71368          ) <> 'Y'
71369    THEN
71370       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71371          trace
71372             (p_msg      => 'Trancaction revesal option is not Y '
71373             ,p_level    => C_LEVEL_STATEMENT
71374             ,p_module   => l_log_module);
71375       END IF;
71376 
71377 --
71378 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
71379 --
71380 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
71381 --
71382 -- set event info as cache for other routines to refer event attributes
71383 --
71384 
71385 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
71386    l_previous_event_id := l_event_id;
71387 
71388    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
71389       (p_application_id           => p_application_id
71390       ,p_primary_ledger_id        => p_primary_ledger_id
71391       ,p_base_ledger_id           => p_base_ledger_id
71392       ,p_target_ledger_id         => p_target_ledger_id
71393       ,p_entity_id                => l_array_entity_id(Idx)
71394       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
71395       ,p_entity_code              => l_array_entity_code(Idx)
71396       ,p_transaction_num          => l_array_transaction_num(Idx)
71397       ,p_event_id                 => l_array_event_id(Idx)
71398       ,p_event_class_code         => l_array_class_code(Idx)
71399       ,p_event_type_code          => l_array_event_type(Idx)
71400       ,p_event_number             => l_array_event_number(Idx)
71401       ,p_event_date               => l_array_event_date(Idx)
71402       ,p_transaction_date         => l_array_transaction_date(Idx)
71403       ,p_reference_num_1          => l_array_reference_num_1(Idx)
71404       ,p_reference_num_2          => l_array_reference_num_2(Idx)
71405       ,p_reference_num_3          => l_array_reference_num_3(Idx)
71406       ,p_reference_num_4          => l_array_reference_num_4(Idx)
71407       ,p_reference_char_1         => l_array_reference_char_1(Idx)
71408       ,p_reference_char_2         => l_array_reference_char_2(Idx)
71409       ,p_reference_char_3         => l_array_reference_char_3(Idx)
71410       ,p_reference_char_4         => l_array_reference_char_4(Idx)
71411       ,p_reference_date_1         => l_array_reference_date_1(Idx)
71412       ,p_reference_date_2         => l_array_reference_date_2(Idx)
71413       ,p_reference_date_3         => l_array_reference_date_3(Idx)
71414       ,p_reference_date_4         => l_array_reference_date_4(Idx)
71415       ,p_event_created_by         => l_array_event_created_by(Idx)
71416       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
71417        --
71418 END IF;
71419 
71420 
71421 
71422 --
71423 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
71424 
71425 l_acct_reversal_source := SUBSTR(NULL, 1,30);
71426 
71427 IF l_continue_with_lines THEN
71428    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
71429       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
71430 
71431       xla_accounting_err_pkg.build_message
71432          (p_appli_s_name            => 'XLA'
71433          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
71434          ,p_token_1                 => 'LINE_NUMBER'
71435          ,p_value_1                 => l_array_extract_line_num(Idx)
71436          ,p_token_2                 => 'PRODUCT_NAME'
71437          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
71438          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
71442    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
71439          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
71440          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
71441 
71443       --
71444       -- following sets the accounting attributes needed to reverse
71445       -- accounting for a distributeion
71446       --
71447 
71448       --
71449       -- 5217187
71450       --
71451       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
71452       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
71453                                        g_array_event(l_event_id).array_value_num('header_index'));
71454       --
71455       --
71456 
71457       -- No reversal code generated
71458 
71459       xla_ae_lines_pkg.SetAcctReversalAttrs
71460          (p_event_id             => l_event_id
71461          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
71462          ,p_calculate_acctd_flag => l_calculate_acctd_flag
71463          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
71464    END IF;
71465 
71466    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
71467        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
71468 
71469 --
71470 AcctLineType_62 (
71471  p_application_id  => p_application_id
71472  ,p_event_id     => l_event_id
71473  ,p_calculate_acctd_flag => l_calculate_acctd_flag
71474  ,p_calculate_g_l_flag => l_calculate_g_l_flag
71475  ,p_actual_flag => l_actual_flag
71476  ,p_balance_type_code => l_balance_type_code
71477  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
71478  
71479  , p_source_26 => l_array_source_26(Idx)
71480  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
71481  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
71482  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
71483  , p_source_43 => l_array_source_43(Idx)
71484  , p_source_44 => l_array_source_44(Idx)
71485  , p_source_45 => l_array_source_45(Idx)
71486  , p_source_46 => l_array_source_46(Idx)
71487  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
71488  , p_source_48 => l_array_source_48(Idx)
71489  , p_source_49 => l_array_source_49(Idx)
71490  , p_source_50 => l_array_source_50(Idx)
71491  , p_source_51 => l_array_source_51(Idx)
71492  , p_source_86 => l_array_source_86(Idx)
71493  );
71494 If(l_balance_type_code = 'A') THEN
71495   l_actual_gain_loss_ref := l_gain_or_loss_ref;
71496 END IF;
71497 
71498 --
71499 
71500 
71501 --
71502 AcctLineType_63 (
71503  p_application_id  => p_application_id
71504  ,p_event_id     => l_event_id
71505  ,p_calculate_acctd_flag => l_calculate_acctd_flag
71506  ,p_calculate_g_l_flag => l_calculate_g_l_flag
71507  ,p_actual_flag => l_actual_flag
71508  ,p_balance_type_code => l_balance_type_code
71509  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
71510  
71511  , p_source_26 => l_array_source_26(Idx)
71512  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
71513  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
71514  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
71515  , p_source_43 => l_array_source_43(Idx)
71516  , p_source_44 => l_array_source_44(Idx)
71517  , p_source_45 => l_array_source_45(Idx)
71518  , p_source_46 => l_array_source_46(Idx)
71519  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
71520  , p_source_48 => l_array_source_48(Idx)
71521  , p_source_49 => l_array_source_49(Idx)
71522  , p_source_50 => l_array_source_50(Idx)
71523  , p_source_51 => l_array_source_51(Idx)
71524  , p_source_86 => l_array_source_86(Idx)
71525  );
71526 If(l_balance_type_code = 'A') THEN
71527   l_actual_gain_loss_ref := l_gain_or_loss_ref;
71528 END IF;
71529 
71530 --
71531 
71532 
71533 --
71534 AcctLineType_64 (
71535  p_application_id  => p_application_id
71536  ,p_event_id     => l_event_id
71537  ,p_calculate_acctd_flag => l_calculate_acctd_flag
71538  ,p_calculate_g_l_flag => l_calculate_g_l_flag
71539  ,p_actual_flag => l_actual_flag
71540  ,p_balance_type_code => l_balance_type_code
71541  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
71542  
71543  , p_source_26 => l_array_source_26(Idx)
71544  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
71545  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
71546  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
71547  , p_source_43 => l_array_source_43(Idx)
71548  , p_source_44 => l_array_source_44(Idx)
71549  , p_source_45 => l_array_source_45(Idx)
71550  , p_source_46 => l_array_source_46(Idx)
71551  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
71552  , p_source_48 => l_array_source_48(Idx)
71553  , p_source_49 => l_array_source_49(Idx)
71554  , p_source_50 => l_array_source_50(Idx)
71555  , p_source_51 => l_array_source_51(Idx)
71556  , p_source_86 => l_array_source_86(Idx)
71557  );
71558 If(l_balance_type_code = 'A') THEN
71559   l_actual_gain_loss_ref := l_gain_or_loss_ref;
71560 END IF;
71561 
71562 --
71563 
71564 
71565 --
71566 AcctLineType_65 (
71567  p_application_id  => p_application_id
71568  ,p_event_id     => l_event_id
71572  ,p_balance_type_code => l_balance_type_code
71569  ,p_calculate_acctd_flag => l_calculate_acctd_flag
71570  ,p_calculate_g_l_flag => l_calculate_g_l_flag
71571  ,p_actual_flag => l_actual_flag
71573  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
71574  
71575  , p_source_26 => l_array_source_26(Idx)
71576  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
71577  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
71578  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
71579  , p_source_43 => l_array_source_43(Idx)
71580  , p_source_44 => l_array_source_44(Idx)
71581  , p_source_45 => l_array_source_45(Idx)
71582  , p_source_46 => l_array_source_46(Idx)
71583  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
71584  , p_source_48 => l_array_source_48(Idx)
71585  , p_source_49 => l_array_source_49(Idx)
71586  , p_source_50 => l_array_source_50(Idx)
71587  , p_source_51 => l_array_source_51(Idx)
71588  , p_source_65 => l_array_source_65(Idx)
71589  , p_source_86 => l_array_source_86(Idx)
71590  );
71591 If(l_balance_type_code = 'A') THEN
71592   l_actual_gain_loss_ref := l_gain_or_loss_ref;
71593 END IF;
71594 
71595 --
71596 
71597 
71598 --
71599 AcctLineType_66 (
71600  p_application_id  => p_application_id
71601  ,p_event_id     => l_event_id
71602  ,p_calculate_acctd_flag => l_calculate_acctd_flag
71603  ,p_calculate_g_l_flag => l_calculate_g_l_flag
71604  ,p_actual_flag => l_actual_flag
71605  ,p_balance_type_code => l_balance_type_code
71606  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
71607  
71608  , p_source_26 => l_array_source_26(Idx)
71609  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
71610  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
71611  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
71612  , p_source_43 => l_array_source_43(Idx)
71613  , p_source_44 => l_array_source_44(Idx)
71614  , p_source_45 => l_array_source_45(Idx)
71615  , p_source_46 => l_array_source_46(Idx)
71616  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
71617  , p_source_48 => l_array_source_48(Idx)
71618  , p_source_49 => l_array_source_49(Idx)
71619  , p_source_50 => l_array_source_50(Idx)
71620  , p_source_51 => l_array_source_51(Idx)
71621  , p_source_86 => l_array_source_86(Idx)
71622  );
71623 If(l_balance_type_code = 'A') THEN
71624   l_actual_gain_loss_ref := l_gain_or_loss_ref;
71625 END IF;
71626 
71627 --
71628 
71629 
71630 --
71631 AcctLineType_67 (
71632  p_application_id  => p_application_id
71633  ,p_event_id     => l_event_id
71634  ,p_calculate_acctd_flag => l_calculate_acctd_flag
71635  ,p_calculate_g_l_flag => l_calculate_g_l_flag
71636  ,p_actual_flag => l_actual_flag
71637  ,p_balance_type_code => l_balance_type_code
71638  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
71639  
71640  , p_source_26 => l_array_source_26(Idx)
71641  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
71642  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
71643  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
71644  , p_source_43 => l_array_source_43(Idx)
71645  , p_source_44 => l_array_source_44(Idx)
71646  , p_source_45 => l_array_source_45(Idx)
71647  , p_source_46 => l_array_source_46(Idx)
71648  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
71649  , p_source_48 => l_array_source_48(Idx)
71650  , p_source_49 => l_array_source_49(Idx)
71651  , p_source_50 => l_array_source_50(Idx)
71652  , p_source_51 => l_array_source_51(Idx)
71653  , p_source_86 => l_array_source_86(Idx)
71654  );
71655 If(l_balance_type_code = 'A') THEN
71656   l_actual_gain_loss_ref := l_gain_or_loss_ref;
71657 END IF;
71658 
71659 --
71660 
71661 
71662 --
71663 AcctLineType_68 (
71664  p_application_id  => p_application_id
71665  ,p_event_id     => l_event_id
71666  ,p_calculate_acctd_flag => l_calculate_acctd_flag
71667  ,p_calculate_g_l_flag => l_calculate_g_l_flag
71668  ,p_actual_flag => l_actual_flag
71669  ,p_balance_type_code => l_balance_type_code
71670  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
71671  
71672  , p_source_26 => l_array_source_26(Idx)
71673  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
71674  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
71675  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
71676  , p_source_43 => l_array_source_43(Idx)
71677  , p_source_44 => l_array_source_44(Idx)
71678  , p_source_45 => l_array_source_45(Idx)
71679  , p_source_46 => l_array_source_46(Idx)
71680  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
71681  , p_source_48 => l_array_source_48(Idx)
71682  , p_source_49 => l_array_source_49(Idx)
71683  , p_source_50 => l_array_source_50(Idx)
71684  , p_source_51 => l_array_source_51(Idx)
71685  , p_source_86 => l_array_source_86(Idx)
71686  );
71687 If(l_balance_type_code = 'A') THEN
71688   l_actual_gain_loss_ref := l_gain_or_loss_ref;
71689 END IF;
71690 
71691 --
71692 
71693 
71694 --
71695 AcctLineType_69 (
71696  p_application_id  => p_application_id
71697  ,p_event_id     => l_event_id
71698  ,p_calculate_acctd_flag => l_calculate_acctd_flag
71702  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
71699  ,p_calculate_g_l_flag => l_calculate_g_l_flag
71700  ,p_actual_flag => l_actual_flag
71701  ,p_balance_type_code => l_balance_type_code
71703  
71704  , p_source_26 => l_array_source_26(Idx)
71705  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
71706  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
71707  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
71708  , p_source_43 => l_array_source_43(Idx)
71709  , p_source_44 => l_array_source_44(Idx)
71710  , p_source_45 => l_array_source_45(Idx)
71711  , p_source_46 => l_array_source_46(Idx)
71712  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
71713  , p_source_48 => l_array_source_48(Idx)
71714  , p_source_49 => l_array_source_49(Idx)
71715  , p_source_50 => l_array_source_50(Idx)
71716  , p_source_51 => l_array_source_51(Idx)
71717  , p_source_65 => l_array_source_65(Idx)
71718  , p_source_86 => l_array_source_86(Idx)
71719  );
71720 If(l_balance_type_code = 'A') THEN
71721   l_actual_gain_loss_ref := l_gain_or_loss_ref;
71722 END IF;
71723 
71724 --
71725 
71726       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
71727       -- or secondary ledger that has different currency with primary
71728       -- or alc that is calculated by sla
71729       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
71730             (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'))
71731 
71732 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
71733 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
71734           AND (l_actual_flag = 'A')) THEN
71735         XLA_AE_LINES_PKG.CreateGainOrLossLines(
71736           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
71737          ,p_application_id   => p_application_id
71738          ,p_amb_context_code => 'DEFAULT'
71739          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
71740          ,p_event_class_code => C_EVENT_CLASS_CODE
71741          ,p_event_type_code  => C_EVENT_TYPE_CODE
71742          
71743          ,p_gain_ccid        => -1
71744          ,p_loss_ccid        => -1
71745 
71746          ,p_actual_flag      => l_actual_flag
71747          ,p_enc_flag         => null
71748          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
71749          ,p_enc_g_l_ref      => null
71750          );
71751       END IF;
71752    END IF;
71753 END IF;
71754 
71755    ELSE
71756       --
71757       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
71758       --
71759       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71760          trace
71761             (p_msg      => 'Trancaction revesal option is Y'
71762             ,p_level    => C_LEVEL_STATEMENT
71763             ,p_module   => l_log_module);
71764       END IF;
71765    END IF;
71766 
71767 END LOOP;
71768 l_result := XLA_AE_LINES_PKG.InsertLines ;
71769 end loop;
71770 close line_cur;
71771 
71772 
71773 --
71774 -- insert headers into xla_ae_headers_gt table
71775 --
71776 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
71777 
71778 -- insert into errors table here.
71779 
71780 END LOOP;
71781 
71782 --
71783 -- 4865292
71784 --
71785 -- Compare g_hdr_extract_count with event count in
71786 -- CreateHeadersAndLines.
71787 --
71788 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
71789 
71790 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71791    trace (p_msg     => '# rows extracted from header extract objects '
71792                     || ' (running total): '
71793                     || g_hdr_extract_count
71794          ,p_level   => C_LEVEL_STATEMENT
71795          ,p_module  => l_log_module);
71796 END IF;
71797 
71798 CLOSE header_cur;
71799 --
71800 
71801 --
71802 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71803    trace
71804       (p_msg      => 'END of EventClass_131'
71805       ,p_level    => C_LEVEL_PROCEDURE
71806       ,p_module   => l_log_module);
71807 END IF;
71808 --
71809 RETURN l_result;
71810 EXCEPTION
71811 WHEN xla_exceptions_pkg.application_exception THEN
71812    
71813 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
71814 
71815    
71816 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
71817 
71818    RAISE;
71819 
71820 WHEN NO_DATA_FOUND THEN
71821 
71822 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
71823 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
71824 
71825 FOR header_record IN header_cur
71826 LOOP
71827     l_array_header_events(header_record.event_id) := header_record.event_id;
71828 END LOOP;
71829 
71830 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
71831 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
71832 
71833 fnd_file.put_line(fnd_file.LOG, '                    ');
71834 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
71835 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
71839 LOOP
71836 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
71837 
71838 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
71840 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
71841 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
71842         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
71843 	END IF;
71844 END LOOP;
71845 
71846 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
71847 fnd_file.put_line(fnd_file.LOG, '                    ');
71848 
71849 
71850 xla_exceptions_pkg.raise_message
71851       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_131');
71852 
71853 
71854 WHEN OTHERS THEN
71855    xla_exceptions_pkg.raise_message
71856       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_131');
71857 END EventClass_131;
71858 --
71859 
71860 ---------------------------------------
71861 --
71862 -- PRIVATE PROCEDURE
71863 --         insert_sources_132
71864 --
71865 ----------------------------------------
71866 --
71867 PROCEDURE insert_sources_132(
71868                                 p_target_ledger_id       IN NUMBER
71869                               , p_language               IN VARCHAR2
71870                               , p_sla_ledger_id          IN NUMBER
71871                               , p_pad_start_date         IN DATE
71872                               , p_pad_end_date           IN DATE
71873                          )
71874 IS
71875 
71876 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DEPOSIT_ALL';
71877 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DEPOSIT';
71878 p_apps_owner                   VARCHAR2(30);
71879 l_log_module                   VARCHAR2(240);
71880 BEGIN
71881 IF g_log_enabled THEN
71882       l_log_module := C_DEFAULT_MODULE||'.insert_sources_132';
71883 END IF;
71884 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71885 
71886       trace
71887          (p_msg      => 'BEGIN of insert_sources_132'
71888          ,p_level    => C_LEVEL_PROCEDURE
71889          ,p_module   => l_log_module);
71890 
71891 END IF;
71892 
71893 -- select APPS owner
71894 SELECT oracle_username
71895   INTO p_apps_owner
71896   FROM fnd_oracle_userid
71897  WHERE read_only_flag = 'U'
71898 ;
71899 
71900 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71901       trace
71902          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
71903                         ' - p_language = '||p_language||
71904                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
71905                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
71906                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
71907                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
71908          ,p_level    => C_LEVEL_STATEMENT
71909          ,p_module   => l_log_module);
71910 END IF;
71911 
71912 
71913 --
71914 INSERT INTO xla_diag_sources --hdr2
71915 (
71916         event_id
71917       , ledger_id
71918       , sla_ledger_id
71919       , description_language
71920       , object_name
71921       , object_type_code
71922       , line_number
71923       , source_application_id
71924       , source_type_code
71925       , source_code
71926       , source_value
71927       , source_meaning
71928       , created_by
71929       , creation_date
71930       , last_update_date
71931       , last_updated_by
71932       , last_update_login
71933       , program_update_date
71934       , program_application_id
71935       , program_id
71936       , request_id
71937 )
71938 SELECT
71939         event_id
71940       , p_target_ledger_id
71941       , p_sla_ledger_id
71942       , p_language
71943       , object_name
71944       , object_type_code
71945       , line_number
71946       , source_application_id
71947       , source_type_code
71948       , source_code
71949       , SUBSTR(source_value ,1,1996)
71950       , SUBSTR(source_meaning ,1,200)
71951       , xla_environment_pkg.g_Usr_Id
71952       , TRUNC(SYSDATE)
71953       , TRUNC(SYSDATE)
71954       , xla_environment_pkg.g_Usr_Id
71955       , xla_environment_pkg.g_Login_Id
71956       , TRUNC(SYSDATE)
71957       , xla_environment_pkg.g_Prog_Appl_Id
71958       , xla_environment_pkg.g_Prog_Id
71959       , xla_environment_pkg.g_Req_Id
71960   FROM (
71961        SELECT xet.event_id                  event_id
71962             , 0                          line_number
71963             , CASE r
71964                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
71965                 WHEN 2 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
71966                 WHEN 3 THEN 'AR_BILL_TO_SITE_USES_S_V' 
71967                 WHEN 4 THEN 'AR_TRANSACTIONS_S_V' 
71968                 WHEN 5 THEN 'AR_TRANSACTIONS_S_V' 
71969                 WHEN 6 THEN 'AR_TRANSACTIONS_S_V' 
71970                 WHEN 7 THEN 'AR_TRANSACTIONS_S_V' 
71971                 
71972                ELSE null
71973               END                           object_name
71974             , CASE r
71975                 WHEN 1 THEN 'HEADER' 
71976                 WHEN 2 THEN 'HEADER' 
71977                 WHEN 3 THEN 'HEADER' 
71978                 WHEN 4 THEN 'HEADER' 
71979                 WHEN 5 THEN 'HEADER' 
71980                 WHEN 6 THEN 'HEADER' 
71981                 WHEN 7 THEN 'HEADER' 
71982                 
71983                 ELSE null
71984               END                           object_type_code
71985             , CASE r
71986                 WHEN 1 THEN '222' 
71987                 WHEN 2 THEN '222' 
71988                 WHEN 3 THEN '222' 
71989                 WHEN 4 THEN '222' 
71990                 WHEN 5 THEN '222' 
71994                 ELSE null
71991                 WHEN 6 THEN '222' 
71992                 WHEN 7 THEN '222' 
71993                 
71995               END                           source_application_id
71996             , 'S'             source_type_code
71997             , CASE r
71998                 WHEN 1 THEN 'TRX_DOC_SEQUENCE_VALUE' 
71999                 WHEN 2 THEN 'BILL_CUST_ACCOUNT_ID' 
72000                 WHEN 3 THEN 'BILL_USES_SITE_USE_ID' 
72001                 WHEN 4 THEN 'XLA_PARTY_TYPE' 
72002                 WHEN 5 THEN 'TRX_INVOICE_CURRENCY_CODE' 
72003                 WHEN 6 THEN 'TRX_DOC_SEQUENCE_CATEGORY' 
72004                 WHEN 7 THEN 'TRX_DOC_SEQUENCE_ID' 
72005                 
72006                 ELSE null
72007               END                           source_code
72008             , CASE r
72009                 WHEN 1 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_VALUE)
72010                 WHEN 2 THEN TO_CHAR(h1.BILL_CUST_ACCOUNT_ID)
72011                 WHEN 3 THEN TO_CHAR(h2.BILL_USES_SITE_USE_ID)
72012                 WHEN 4 THEN TO_CHAR(h5.XLA_PARTY_TYPE)
72013                 WHEN 5 THEN TO_CHAR(h5.TRX_INVOICE_CURRENCY_CODE)
72014                 WHEN 6 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_CATEGORY)
72015                 WHEN 7 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_ID)
72016                 
72017                 ELSE null
72018               END                           source_value
72019             , null              source_meaning
72020          FROM xla_events_gt     xet  
72021       , AR_BILL_TO_CUSTOMERS_S_V  h1
72022       , AR_BILL_TO_SITE_USES_S_V  h2
72023       , AR_TRANSACTIONS_S_V  h5
72024              ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
72025          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
72026            AND xet.event_class_code = C_EVENT_CLASS_CODE
72027               AND h1.event_id = xet.event_id
72028   AND h2.event_id  = h1.event_id
72029   AND h5.event_id  = h1.event_id
72030 
72031 )
72032 ;
72033 --
72034 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72035 
72036       trace
72037          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
72038          ,p_level    => C_LEVEL_STATEMENT
72039          ,p_module   => l_log_module);
72040 
72041 END IF;
72042 --
72043 
72044 
72045 
72046 --
72047 INSERT INTO xla_diag_sources  --line2
72048 (
72049         event_id
72050       , ledger_id
72051       , sla_ledger_id
72052       , description_language
72053       , object_name
72054       , object_type_code
72055       , line_number
72056       , source_application_id
72057       , source_type_code
72058       , source_code
72059       , source_value
72060       , source_meaning
72061       , created_by
72062       , creation_date
72063       , last_update_date
72064       , last_updated_by
72065       , last_update_login
72066       , program_update_date
72067       , program_application_id
72068       , program_id
72069       , request_id
72070 )
72071 SELECT  event_id
72072       , p_target_ledger_id
72073       , p_sla_ledger_id
72074       , p_language
72075       , object_name
72076       , object_type_code
72077       , line_number
72078       , source_application_id
72079       , source_type_code
72080       , source_code
72081       , SUBSTR(source_value,1,1996)
72082       , SUBSTR(source_meaning ,1,200)
72083       , xla_environment_pkg.g_Usr_Id
72084       , TRUNC(SYSDATE)
72085       , TRUNC(SYSDATE)
72086       , xla_environment_pkg.g_Usr_Id
72087       , xla_environment_pkg.g_Login_Id
72088       , TRUNC(SYSDATE)
72089       , xla_environment_pkg.g_Prog_Appl_Id
72090       , xla_environment_pkg.g_Prog_Id
72091       , xla_environment_pkg.g_Req_Id
72092   FROM (
72093        SELECT xet.event_id                  event_id
72094             , l4.line_number                 line_number
72095             , CASE r
72096                WHEN 1 THEN 'AR_CUST_TRX_LINES_L_V' 
72097                 WHEN 2 THEN 'AR_CUST_TRX_LINES_L_V' 
72098                 WHEN 3 THEN 'AR_CUST_TRX_LINES_L_V' 
72099                 WHEN 4 THEN 'AR_CUST_TRX_LINES_L_V' 
72100                 WHEN 5 THEN 'AR_CUST_TRX_LINES_L_V' 
72101                 WHEN 6 THEN 'AR_CUST_TRX_LINES_BASE_V' 
72102                 WHEN 7 THEN 'AR_CUST_TRX_LINES_BASE_V' 
72103                 WHEN 8 THEN 'AR_CUST_TRX_LINES_BASE_V' 
72104                 WHEN 9 THEN 'AR_CUST_TRX_LINES_BASE_V' 
72105                 
72106                ELSE null
72107               END                           object_name
72108             , CASE r
72109                 WHEN 1 THEN 'LINE' 
72110                 WHEN 2 THEN 'LINE' 
72111                 WHEN 3 THEN 'LINE' 
72112                 WHEN 4 THEN 'LINE' 
72113                 WHEN 5 THEN 'LINE' 
72114                 WHEN 6 THEN 'LINE' 
72115                 WHEN 7 THEN 'LINE' 
72116                 WHEN 8 THEN 'LINE' 
72117                 WHEN 9 THEN 'LINE' 
72118                 
72119                 ELSE null
72120               END                           object_type_code
72121             , CASE r
72122                 WHEN 1 THEN '222' 
72123                 WHEN 2 THEN '222' 
72124                 WHEN 3 THEN '222' 
72125                 WHEN 4 THEN '222' 
72126                 WHEN 5 THEN '222' 
72127                 WHEN 6 THEN '222' 
72128                 WHEN 7 THEN '222' 
72129                 WHEN 8 THEN '222' 
72130                 WHEN 9 THEN '222' 
72131                 
72132                 ELSE null
72133               END                           source_application_id
72134             , 'S'             source_type_code
72135             , CASE r
72136                 WHEN 1 THEN 'TRX_LINE_DIST_CCID' 
72140                 WHEN 5 THEN 'TRX_LINE_DIST_AMT' 
72137                 WHEN 2 THEN 'TRX_LINE_DIST_ACCOUNT_CLASS' 
72138                 WHEN 3 THEN 'TRX_LINE_DIST_ID' 
72139                 WHEN 4 THEN 'TRX_DISTRIBUTION_TYPE' 
72141                 WHEN 6 THEN 'TRX_LINE_CUR_CONVERSION_DATE' 
72142                 WHEN 7 THEN 'TRX_LINE_CUR_CONVERSION_RATE' 
72143                 WHEN 8 THEN 'TRX_LINE_CUR_CONVERSION_TYPE' 
72144                 WHEN 9 THEN 'TRX_LINE_ACCTD_AMT' 
72145                 
72146                 ELSE null
72147               END                           source_code
72148             , CASE r
72149                 WHEN 1 THEN TO_CHAR(l4.TRX_LINE_DIST_CCID)
72150                 WHEN 2 THEN TO_CHAR(l4.TRX_LINE_DIST_ACCOUNT_CLASS)
72151                 WHEN 3 THEN TO_CHAR(l4.TRX_LINE_DIST_ID)
72152                 WHEN 4 THEN TO_CHAR(l4.TRX_DISTRIBUTION_TYPE)
72153                 WHEN 5 THEN TO_CHAR(l4.TRX_LINE_DIST_AMT)
72154                 WHEN 6 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_DATE)
72155                 WHEN 7 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_RATE)
72156                 WHEN 8 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_TYPE)
72157                 WHEN 9 THEN TO_CHAR(l3.TRX_LINE_ACCTD_AMT)
72158                 
72159                 ELSE null
72160               END                           source_value
72161             , null              source_meaning
72162          FROM  xla_events_gt     xet  
72163         , AR_CUST_TRX_LINES_BASE_V  l3
72164         , AR_CUST_TRX_LINES_L_V  l4
72165             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
72166         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
72167           AND xet.event_class_code = C_EVENT_CLASS_CODE
72168             AND l3.event_id          = xet.event_id
72169   AND l4.event_id    = l3.event_id
72170   AND l4.line_number = l3.line_number
72171 
72172 )
72173 ;
72174 --
72175 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72176 
72177       trace
72178          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
72179          ,p_level    => C_LEVEL_STATEMENT
72180          ,p_module   => l_log_module);
72181 
72182 END IF;
72183 
72184 
72185 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72186       trace
72187          (p_msg      => 'END of insert_sources_132'
72188          ,p_level    => C_LEVEL_PROCEDURE
72189          ,p_module   => l_log_module);
72190 END IF;
72191 EXCEPTION
72192   WHEN xla_exceptions_pkg.application_exception THEN
72193       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
72194             trace
72195                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
72196                ,p_level    => C_LEVEL_EXCEPTION
72197                ,p_module   => l_log_module);
72198       END IF;
72199       RAISE;
72200   WHEN OTHERS THEN
72201       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
72202             trace
72203                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
72204                ,p_level    => C_LEVEL_EXCEPTION
72205                ,p_module   => l_log_module);
72206        END IF;
72207        xla_exceptions_pkg.raise_message
72208            (p_location => 'XLA_00222_AAD_S_000017_PKG.insert_sources_132');
72209 END insert_sources_132;
72210 --
72211 
72212 ---------------------------------------
72213 --
72214 -- PRIVATE FUNCTION
72215 --         EventClass_132
72216 --
72217 ----------------------------------------
72218 --
72219 FUNCTION EventClass_132
72220        (p_application_id         IN NUMBER
72221        ,p_base_ledger_id         IN NUMBER
72222        ,p_target_ledger_id       IN NUMBER
72223        ,p_language               IN VARCHAR2
72224        ,p_currency_code          IN VARCHAR2
72225        ,p_sla_ledger_id          IN NUMBER
72226        ,p_pad_start_date         IN DATE
72227        ,p_pad_end_date           IN DATE
72228        ,p_primary_ledger_id      IN NUMBER)
72229 RETURN BOOLEAN IS
72230 --
72231 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DEPOSIT_ALL';
72232 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DEPOSIT';
72233 
72234 l_calculate_acctd_flag   VARCHAR2(1) :='N';
72235 l_calculate_g_l_flag     VARCHAR2(1) :='N';
72236 --
72237 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72238 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72239 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72240 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72241 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72242 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72243 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72244 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72245 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72246 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72247 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72248 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72249 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72250 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72251 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72252 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72253 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72254 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72255 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72256 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72257 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72261 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
72258 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72259 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
72260 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72262 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
72263 
72264 l_event_id                             NUMBER;
72265 l_previous_event_id                    NUMBER;
72266 l_first_event_id                       NUMBER;
72267 l_last_event_id                        NUMBER;
72268 
72269 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
72270 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
72271 --
72272 --
72273 l_result                    BOOLEAN := TRUE;
72274 l_rows                      NUMBER  := 1000;
72275 l_event_type_name           VARCHAR2(80) := 'All';
72276 l_event_class_name          VARCHAR2(80) := 'Deposit';
72277 l_description               VARCHAR2(4000);
72278 l_transaction_reversal      NUMBER;
72279 l_ae_header_id              NUMBER;
72280 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
72281 l_log_module                VARCHAR2(240);
72282 --
72283 l_acct_reversal_source      VARCHAR2(30);
72284 l_trx_reversal_source       VARCHAR2(30);
72285 
72286 l_continue_with_lines       BOOLEAN := TRUE;
72287 --
72288 l_acc_rev_gl_date_source    DATE;                      -- 4262811
72289 --
72290 type t_array_event_id is table of number index by binary_integer;
72291 
72292 l_rec_array_event                    t_rec_array_event;
72293 l_null_rec_array_event               t_rec_array_event;
72294 l_array_ae_header_id                 xla_number_array_type;
72295 l_actual_flag                        VARCHAR2(1) := NULL;
72296 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
72297 l_balance_type_code                  VARCHAR2(1) :=NULL;
72298 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
72299 
72300 --
72301 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
72302 --
72303 
72304 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
72305 TYPE t_array_source_37 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
72306 TYPE t_array_source_38 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
72307 TYPE t_array_source_39 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
72308 TYPE t_array_source_47 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
72309 TYPE t_array_source_111 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
72310 TYPE t_array_source_112 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
72311 
72312 TYPE t_array_source_26 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
72313 TYPE t_array_source_43 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ACCOUNT_CLASS%TYPE INDEX BY BINARY_INTEGER;
72314 TYPE t_array_source_44 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
72315 TYPE t_array_source_45 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
72316 TYPE t_array_source_46 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_AMT%TYPE INDEX BY BINARY_INTEGER;
72317 TYPE t_array_source_48 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
72318 TYPE t_array_source_49 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
72319 TYPE t_array_source_50 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
72320 TYPE t_array_source_51 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
72321 
72322 l_array_source_3              t_array_source_3;
72323 l_array_source_37              t_array_source_37;
72324 l_array_source_38              t_array_source_38;
72325 l_array_source_39              t_array_source_39;
72326 l_array_source_47              t_array_source_47;
72327 l_array_source_111              t_array_source_111;
72328 l_array_source_112              t_array_source_112;
72329 
72330 l_array_source_26      t_array_source_26;
72331 l_array_source_43      t_array_source_43;
72332 l_array_source_44      t_array_source_44;
72333 l_array_source_45      t_array_source_45;
72334 l_array_source_46      t_array_source_46;
72335 l_array_source_48      t_array_source_48;
72336 l_array_source_49      t_array_source_49;
72337 l_array_source_50      t_array_source_50;
72338 l_array_source_51      t_array_source_51;
72339 
72340 --
72341 CURSOR header_cur
72342 IS
72343 SELECT /*+ leading(xet) cardinality(xet,1) */
72344 -- Event Class Code: DEPOSIT
72345     xet.entity_id
72346    ,xet.legal_entity_id
72347    ,xet.entity_code
72348    ,xet.transaction_number
72349    ,xet.event_id
72350    ,xet.event_class_code
72351    ,xet.event_type_code
72352    ,xet.event_number
72353    ,xet.event_date
72354    ,xet.transaction_date
72355    ,xet.reference_num_1
72356    ,xet.reference_num_2
72357    ,xet.reference_num_3
72358    ,xet.reference_num_4
72359    ,xet.reference_char_1
72360    ,xet.reference_char_2
72361    ,xet.reference_char_3
72362    ,xet.reference_char_4
72363    ,xet.reference_date_1
72364    ,xet.reference_date_2
72365    ,xet.reference_date_3
72366    ,xet.reference_date_4
72367    ,xet.event_created_by
72368    ,xet.budgetary_control_flag 
72369   , h5.TRX_DOC_SEQUENCE_VALUE    source_3
72370   , h1.BILL_CUST_ACCOUNT_ID    source_37
72371   , h2.BILL_USES_SITE_USE_ID    source_38
72372   , h5.XLA_PARTY_TYPE    source_39
72373   , h5.TRX_INVOICE_CURRENCY_CODE    source_47
72374   , h5.TRX_DOC_SEQUENCE_CATEGORY    source_111
72378   , AR_BILL_TO_SITE_USES_S_V  h2
72375   , h5.TRX_DOC_SEQUENCE_ID    source_112
72376   FROM xla_events_gt     xet 
72377   , AR_BILL_TO_CUSTOMERS_S_V  h1
72379   , AR_TRANSACTIONS_S_V  h5
72380  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
72381    and xet.event_class_code = C_EVENT_CLASS_CODE
72382    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
72383   AND h2.event_id  = h1.event_id
72384   AND h5.event_id  = h1.event_id
72385 
72386  ORDER BY event_id
72387 ;
72388 
72389 
72390 --
72391 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
72392 IS
72393 SELECT  /*+ leading(xet) cardinality(xet,1) */
72394 -- Event Class Code: DEPOSIT
72395     xet.entity_id
72396    ,xet.legal_entity_id
72397    ,xet.entity_code
72398    ,xet.transaction_number
72399    ,xet.event_id
72400    ,xet.event_class_code
72401    ,xet.event_type_code
72402    ,xet.event_number
72403    ,xet.event_date
72404    ,xet.transaction_date
72405    ,xet.reference_num_1
72406    ,xet.reference_num_2
72407    ,xet.reference_num_3
72408    ,xet.reference_num_4
72409    ,xet.reference_char_1
72410    ,xet.reference_char_2
72411    ,xet.reference_char_3
72412    ,xet.reference_char_4
72413    ,xet.reference_date_1
72414    ,xet.reference_date_2
72415    ,xet.reference_date_3
72416    ,xet.reference_date_4
72417    ,xet.event_created_by
72418    ,xet.budgetary_control_flag
72419  , l3.LINE_NUMBER  
72420   , l4.TRX_LINE_DIST_CCID    source_26
72421   , l4.TRX_LINE_DIST_ACCOUNT_CLASS    source_43
72422   , l4.TRX_LINE_DIST_ID    source_44
72423   , l4.TRX_DISTRIBUTION_TYPE    source_45
72424   , l4.TRX_LINE_DIST_AMT    source_46
72425   , l3.TRX_LINE_CUR_CONVERSION_DATE    source_48
72426   , l3.TRX_LINE_CUR_CONVERSION_RATE    source_49
72427   , l3.TRX_LINE_CUR_CONVERSION_TYPE    source_50
72428   , l3.TRX_LINE_ACCTD_AMT    source_51
72429   FROM xla_events_gt     xet 
72430   , AR_CUST_TRX_LINES_BASE_V  l3
72431   , AR_CUST_TRX_LINES_L_V  l4
72432  WHERE xet.event_id between x_first_event_id and x_last_event_id
72433    and xet.event_date between p_pad_start_date and p_pad_end_date
72434    and xet.event_class_code = C_EVENT_CLASS_CODE
72435    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
72436   AND l4.event_id    = l3.event_id
72437   AND l4.line_number = l3.line_number
72438 ;
72439 
72440 --
72441 BEGIN
72442 IF g_log_enabled THEN
72443    l_log_module := C_DEFAULT_MODULE||'.EventClass_132';
72444 END IF;
72445 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72446    trace
72447       (p_msg      => 'BEGIN of EventClass_132'
72448       ,p_level    => C_LEVEL_PROCEDURE
72449       ,p_module   => l_log_module);
72450 END IF;
72451 
72452 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72453    trace
72454       (p_msg      => 'p_application_id = '||p_application_id||
72455                      ' - p_base_ledger_id = '||p_base_ledger_id||
72456                      ' - p_target_ledger_id  = '||p_target_ledger_id||
72457                      ' - p_language = '||p_language||
72458                      ' - p_currency_code = '||p_currency_code||
72459                      ' - p_sla_ledger_id = '||p_sla_ledger_id
72460       ,p_level    => C_LEVEL_STATEMENT
72461       ,p_module   => l_log_module);
72462 END IF;
72463 --
72464 -- initialze arrays
72465 --
72466 g_array_event.DELETE;
72467 l_rec_array_event := l_null_rec_array_event;
72468 --
72469 --------------------------------------
72470 -- 4262811 Initialze MPA Line Number
72471 --------------------------------------
72472 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
72473 
72474 --
72475 
72476 --
72477 OPEN header_cur;
72478 --
72479 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72480    trace
72481    (p_msg      => 'SQL - FETCH header_cur'
72482    ,p_level    => C_LEVEL_STATEMENT
72483    ,p_module   => l_log_module);
72484 END IF;
72485 --
72486 LOOP
72487 FETCH header_cur BULK COLLECT INTO
72488         l_array_entity_id
72489       , l_array_legal_entity_id
72490       , l_array_entity_code
72491       , l_array_transaction_num
72492       , l_array_event_id
72493       , l_array_class_code
72494       , l_array_event_type
72495       , l_array_event_number
72496       , l_array_event_date
72497       , l_array_transaction_date
72498       , l_array_reference_num_1
72499       , l_array_reference_num_2
72500       , l_array_reference_num_3
72501       , l_array_reference_num_4
72502       , l_array_reference_char_1
72503       , l_array_reference_char_2
72504       , l_array_reference_char_3
72505       , l_array_reference_char_4
72506       , l_array_reference_date_1
72507       , l_array_reference_date_2
72508       , l_array_reference_date_3
72509       , l_array_reference_date_4
72510       , l_array_event_created_by
72511       , l_array_budgetary_control_flag 
72512       , l_array_source_3
72513       , l_array_source_37
72514       , l_array_source_38
72515       , l_array_source_39
72516       , l_array_source_47
72517       , l_array_source_111
72518       , l_array_source_112
72519       LIMIT l_rows;
72520 --
72521 IF (C_LEVEL_EVENT >= g_log_level) THEN
72522    trace
72523    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
72524    ,p_level    => C_LEVEL_EVENT
72525    ,p_module   => l_log_module);
72526 END IF;
72527 --
72528 EXIT WHEN l_array_entity_id.COUNT = 0;
72529 
72530 -- initialize arrays
72531 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
72532 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
72533 
72534 --
72535 -- Bug 4458708
72536 --
72540 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
72537 XLA_AE_LINES_PKG.g_LineNumber := 0;
72538 
72539 
72541 g_last_hdr_idx := l_array_event_id.LAST;
72542 --
72543 -- loop for the headers. Each iteration is for each header extract row
72544 -- fetched in header cursor
72545 --
72546 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
72547 
72548 --
72549 -- set event info as cache for other routines to refer event attributes
72550 --
72551 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
72552    (p_application_id           => p_application_id
72553    ,p_primary_ledger_id        => p_primary_ledger_id
72554    ,p_base_ledger_id           => p_base_ledger_id
72555    ,p_target_ledger_id         => p_target_ledger_id
72559    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
72556    ,p_entity_id                => l_array_entity_id(hdr_idx)
72557    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
72558    ,p_entity_code              => l_array_entity_code(hdr_idx)
72560    ,p_event_id                 => l_array_event_id(hdr_idx)
72561    ,p_event_class_code         => l_array_class_code(hdr_idx)
72562    ,p_event_type_code          => l_array_event_type(hdr_idx)
72563    ,p_event_number             => l_array_event_number(hdr_idx)
72564    ,p_event_date               => l_array_event_date(hdr_idx)
72565    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
72566    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
72567    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
72568    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
72569    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
72570    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
72571    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
72572    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
72573    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
72574    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
72575    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
72576    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
72577    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
72578    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
72579    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
72580 
72581 --
72582 -- set the status of entry to C_VALID (0)
72583 --
72584 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
72585 
72586 --
72587 -- initialize a row for ae header
72588 --
72589 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
72590 
72591 l_event_id := l_array_event_id(hdr_idx);
72592 
72593 --
72594 -- storing the hdr_idx for event. May be used by line cursor.
72595 --
72596 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
72597 
72598 --
72599 -- store sources from header extract. This can be improved to
72600 -- store only those sources from header extract that may be used in lines
72601 --
72602 
72603 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
72604 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
72605 g_array_event(l_event_id).array_value_num('source_38') := l_array_source_38(hdr_idx);
72606 g_array_event(l_event_id).array_value_char('source_39') := l_array_source_39(hdr_idx);
72607 g_array_event(l_event_id).array_value_char('source_47') := l_array_source_47(hdr_idx);
72608 g_array_event(l_event_id).array_value_char('source_111') := l_array_source_111(hdr_idx);
72609 g_array_event(l_event_id).array_value_num('source_112') := l_array_source_112(hdr_idx);
72610 
72611 --
72612 -- initilaize the status of ae headers for diffrent balance types
72613 -- the status is initialised to C_NOT_CREATED (2)
72614 --
72615 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
72616 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
72617 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
72618 
72619 --
72620 -- call api to validate and store accounting attributes for header
72621 --
72622 
72623 ------------------------------------------------------------
72624 -- Accrual Reversal : to get date for Standard Source (NONE)
72625 ------------------------------------------------------------
72626 l_acc_rev_gl_date_source := NULL;
72627 
72628      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
72629       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_111');
72630      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
72631       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_112');
72632      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
72633       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_3');
72634      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
72635       l_rec_acct_attrs.array_date_value(4) := 
72639  , p_source_application_id =>  602
72636 xla_ae_sources_pkg.GetSystemSourceDate(
72637    p_source_code           => 'XLA_EVENT_DATE'
72638  , p_source_type_code      => 'Y'
72640 );
72641 
72642 
72643 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
72644 
72645 XLA_AE_HEADER_PKG.SetJeCategoryName;
72646 
72647 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
72648 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
72649 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
72650 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
72651 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
72652 
72653 
72654 -- No header level analytical criteria
72655 
72656 --
72657 --accounting attribute enhancement, bug 3612931
72658 --
72659 l_trx_reversal_source := SUBSTR(NULL, 1,30);
72660 
72661 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
72662    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
72663 
72664    xla_accounting_err_pkg.build_message
72665       (p_appli_s_name            => 'XLA'
72666       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
72667       ,p_token_1                 => 'ACCT_ATTR_NAME'
72668       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
72669       ,p_token_2                 => 'PRODUCT_NAME'
72670       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
72671       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
72672       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
72673       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
72674 
72675 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
72676    --
72677    -- following sets the accounting attributes needed to reverse
72678    -- accounting for a distributeion
72679    --
72680    xla_ae_lines_pkg.SetTrxReversalAttrs
72681       (p_event_id              => l_event_id
72682       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
72683       ,p_trx_reversal_source   => l_trx_reversal_source);
72684 
72685 END IF;
72686 
72687 
72688 ----------------------------------------------------------------
72689 -- 4262811 -  update the header statuses to invalid in need be
72690 ----------------------------------------------------------------
72691 --
72692 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
72693 
72694 
72695   -----------------------------------------------
72696   -- No accrual reversal for the event class/type
72697   -----------------------------------------------
72698 ----------------------------------------------------------------
72699 
72700 --
72701 -- this ends the header loop iteration for one bulk fetch
72702 --
72703 END LOOP;
72704 
72705 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
72706 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
72707 
72708 --
72709 -- insert dummy rows into lines gt table that were created due to
72710 -- transaction reversals
72711 --
72712 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
72713    l_result := XLA_AE_LINES_PKG.InsertLines;
72714 END IF;
72715 
72716 --
72717 -- reset the temp_line_num for each set of events fetched from header
72718 -- cursor rather than doing it for each new event in line cursor
72719 -- Bug 3939231
72720 --
72721 xla_ae_lines_pkg.g_temp_line_num := 0;
72722 
72723 
72724 
72725 --
72726 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
72727 --
72728 --
72729 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72730 
72731       trace
72732          (p_msg      => 'SQL - FETCH line_cur'
72733          ,p_level    => C_LEVEL_STATEMENT
72734          ,p_module   => l_log_module);
72735 
72736 END IF;
72737 --
72738 --
72739 LOOP
72740   --
72741   FETCH line_cur BULK COLLECT INTO
72742         l_array_entity_id
72743       , l_array_legal_entity_id
72744       , l_array_entity_code
72745       , l_array_transaction_num
72746       , l_array_event_id
72747       , l_array_class_code
72748       , l_array_event_type
72749       , l_array_event_number
72750       , l_array_event_date
72751       , l_array_transaction_date
72752       , l_array_reference_num_1
72753       , l_array_reference_num_2
72754       , l_array_reference_num_3
72755       , l_array_reference_num_4
72756       , l_array_reference_char_1
72757       , l_array_reference_char_2
72758       , l_array_reference_char_3
72759       , l_array_reference_char_4
72760       , l_array_reference_date_1
72761       , l_array_reference_date_2
72762       , l_array_reference_date_3
72763       , l_array_reference_date_4
72764       , l_array_event_created_by
72765       , l_array_budgetary_control_flag
72766       , l_array_extract_line_num 
72767       , l_array_source_26
72768       , l_array_source_43
72769       , l_array_source_44
72770       , l_array_source_45
72771       , l_array_source_46
72772       , l_array_source_48
72773       , l_array_source_49
72774       , l_array_source_50
72775       , l_array_source_51
72776       LIMIT l_rows;
72777 
72778   --
72779   IF (C_LEVEL_EVENT >= g_log_level) THEN
72780             trace
72781                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
72782                ,p_level    => C_LEVEL_EVENT
72783                ,p_module   => l_log_module);
72784   END IF;
72788   XLA_AE_LINES_PKG.g_rec_lines := null;
72785   --
72786   EXIT WHEN l_array_entity_id.count = 0;
72787 
72789 
72790 --
72791 -- Bug 4458708
72792 --
72793 XLA_AE_LINES_PKG.g_LineNumber := 0;
72794 --
72795 --
72796 
72797 FOR Idx IN 1..l_array_event_id.count LOOP
72798    --
72799    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
72800    --
72801    l_event_id := l_array_event_id(idx);  -- 5648433
72802 
72803    --
72804    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
72805    --
72806 
72807    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
72808              (g_array_event(l_event_id).array_value_num('header_index'))
72809          ,'N'
72810          ) <> 'Y'
72811    THEN
72812       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72813          trace
72814             (p_msg      => 'Trancaction revesal option is not Y '
72815             ,p_level    => C_LEVEL_STATEMENT
72816             ,p_module   => l_log_module);
72817       END IF;
72818 
72819 --
72820 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
72821 --
72822 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
72823 --
72824 -- set event info as cache for other routines to refer event attributes
72825 --
72826 
72827 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
72828    l_previous_event_id := l_event_id;
72829 
72830    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
72831       (p_application_id           => p_application_id
72832       ,p_primary_ledger_id        => p_primary_ledger_id
72833       ,p_base_ledger_id           => p_base_ledger_id
72834       ,p_target_ledger_id         => p_target_ledger_id
72835       ,p_entity_id                => l_array_entity_id(Idx)
72836       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
72837       ,p_entity_code              => l_array_entity_code(Idx)
72838       ,p_transaction_num          => l_array_transaction_num(Idx)
72839       ,p_event_id                 => l_array_event_id(Idx)
72840       ,p_event_class_code         => l_array_class_code(Idx)
72841       ,p_event_type_code          => l_array_event_type(Idx)
72842       ,p_event_number             => l_array_event_number(Idx)
72843       ,p_event_date               => l_array_event_date(Idx)
72844       ,p_transaction_date         => l_array_transaction_date(Idx)
72845       ,p_reference_num_1          => l_array_reference_num_1(Idx)
72846       ,p_reference_num_2          => l_array_reference_num_2(Idx)
72847       ,p_reference_num_3          => l_array_reference_num_3(Idx)
72848       ,p_reference_num_4          => l_array_reference_num_4(Idx)
72849       ,p_reference_char_1         => l_array_reference_char_1(Idx)
72850       ,p_reference_char_2         => l_array_reference_char_2(Idx)
72851       ,p_reference_char_3         => l_array_reference_char_3(Idx)
72852       ,p_reference_char_4         => l_array_reference_char_4(Idx)
72853       ,p_reference_date_1         => l_array_reference_date_1(Idx)
72854       ,p_reference_date_2         => l_array_reference_date_2(Idx)
72855       ,p_reference_date_3         => l_array_reference_date_3(Idx)
72856       ,p_reference_date_4         => l_array_reference_date_4(Idx)
72857       ,p_event_created_by         => l_array_event_created_by(Idx)
72858       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
72859        --
72860 END IF;
72861 
72862 
72863 
72864 --
72865 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
72866 
72867 l_acct_reversal_source := SUBSTR(NULL, 1,30);
72868 
72869 IF l_continue_with_lines THEN
72870    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
72871       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
72872 
72873       xla_accounting_err_pkg.build_message
72874          (p_appli_s_name            => 'XLA'
72875          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
72876          ,p_token_1                 => 'LINE_NUMBER'
72877          ,p_value_1                 => l_array_extract_line_num(Idx)
72878          ,p_token_2                 => 'PRODUCT_NAME'
72879          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
72880          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
72881          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
72882          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
72883 
72884    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
72885       --
72886       -- following sets the accounting attributes needed to reverse
72887       -- accounting for a distributeion
72888       --
72889 
72890       --
72891       -- 5217187
72892       --
72893       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
72894       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
72895                                        g_array_event(l_event_id).array_value_num('header_index'));
72896       --
72897       --
72898 
72899       -- No reversal code generated
72900 
72901       xla_ae_lines_pkg.SetAcctReversalAttrs
72902          (p_event_id             => l_event_id
72903          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
72904          ,p_calculate_acctd_flag => l_calculate_acctd_flag
72905          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
72906    END IF;
72907 
72908    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
72909        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
72910 
72911 --
72912 AcctLineType_60 (
72913  p_application_id  => p_application_id
72914  ,p_event_id     => l_event_id
72915  ,p_calculate_acctd_flag => l_calculate_acctd_flag
72919  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
72916  ,p_calculate_g_l_flag => l_calculate_g_l_flag
72917  ,p_actual_flag => l_actual_flag
72918  ,p_balance_type_code => l_balance_type_code
72920  
72921  , p_source_26 => l_array_source_26(Idx)
72922  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
72923  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
72924  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
72925  , p_source_43 => l_array_source_43(Idx)
72926  , p_source_44 => l_array_source_44(Idx)
72927  , p_source_45 => l_array_source_45(Idx)
72928  , p_source_46 => l_array_source_46(Idx)
72929  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
72930  , p_source_48 => l_array_source_48(Idx)
72931  , p_source_49 => l_array_source_49(Idx)
72932  , p_source_50 => l_array_source_50(Idx)
72933  , p_source_51 => l_array_source_51(Idx)
72934  );
72935 If(l_balance_type_code = 'A') THEN
72936   l_actual_gain_loss_ref := l_gain_or_loss_ref;
72937 END IF;
72938 
72939 --
72940 
72941 
72942 --
72943 AcctLineType_61 (
72944  p_application_id  => p_application_id
72945  ,p_event_id     => l_event_id
72946  ,p_calculate_acctd_flag => l_calculate_acctd_flag
72947  ,p_calculate_g_l_flag => l_calculate_g_l_flag
72948  ,p_actual_flag => l_actual_flag
72949  ,p_balance_type_code => l_balance_type_code
72950  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
72951  
72952  , p_source_26 => l_array_source_26(Idx)
72953  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
72954  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
72955  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
72956  , p_source_43 => l_array_source_43(Idx)
72957  , p_source_44 => l_array_source_44(Idx)
72958  , p_source_45 => l_array_source_45(Idx)
72959  , p_source_46 => l_array_source_46(Idx)
72960  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
72961  , p_source_48 => l_array_source_48(Idx)
72962  , p_source_49 => l_array_source_49(Idx)
72963  , p_source_50 => l_array_source_50(Idx)
72964  , p_source_51 => l_array_source_51(Idx)
72965  );
72966 If(l_balance_type_code = 'A') THEN
72967   l_actual_gain_loss_ref := l_gain_or_loss_ref;
72968 END IF;
72969 
72970 --
72971 
72972       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
72973       -- or secondary ledger that has different currency with primary
72974       -- or alc that is calculated by sla
72975       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
72976             (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'))
72977 
72978 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
72979 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
72980           AND (l_actual_flag = 'A')) THEN
72981         XLA_AE_LINES_PKG.CreateGainOrLossLines(
72982           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
72983          ,p_application_id   => p_application_id
72984          ,p_amb_context_code => 'DEFAULT'
72985          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
72986          ,p_event_class_code => C_EVENT_CLASS_CODE
72987          ,p_event_type_code  => C_EVENT_TYPE_CODE
72988          
72989          ,p_gain_ccid        => -1
72990          ,p_loss_ccid        => -1
72991 
72992          ,p_actual_flag      => l_actual_flag
72993          ,p_enc_flag         => null
72994          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
72995          ,p_enc_g_l_ref      => null
72996          );
72997       END IF;
72998    END IF;
72999 END IF;
73000 
73001    ELSE
73002       --
73003       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
73004       --
73005       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73006          trace
73007             (p_msg      => 'Trancaction revesal option is Y'
73008             ,p_level    => C_LEVEL_STATEMENT
73009             ,p_module   => l_log_module);
73010       END IF;
73011    END IF;
73012 
73013 END LOOP;
73014 l_result := XLA_AE_LINES_PKG.InsertLines ;
73015 end loop;
73016 close line_cur;
73017 
73018 
73019 --
73020 -- insert headers into xla_ae_headers_gt table
73021 --
73022 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
73023 
73024 -- insert into errors table here.
73025 
73026 END LOOP;
73027 
73028 --
73029 -- 4865292
73030 --
73031 -- Compare g_hdr_extract_count with event count in
73032 -- CreateHeadersAndLines.
73033 --
73034 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
73035 
73036 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73037    trace (p_msg     => '# rows extracted from header extract objects '
73038                     || ' (running total): '
73039                     || g_hdr_extract_count
73040          ,p_level   => C_LEVEL_STATEMENT
73041          ,p_module  => l_log_module);
73042 END IF;
73043 
73044 CLOSE header_cur;
73045 --
73046 
73047 --
73048 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73049    trace
73050       (p_msg      => 'END of EventClass_132'
73051       ,p_level    => C_LEVEL_PROCEDURE
73052       ,p_module   => l_log_module);
73053 END IF;
73054 --
73055 RETURN l_result;
73056 EXCEPTION
73057 WHEN xla_exceptions_pkg.application_exception THEN
73058    
73059 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
73060 
73061    
73062 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
73063 
73064    RAISE;
73065 
73069 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
73066 WHEN NO_DATA_FOUND THEN
73067 
73068 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
73070 
73071 FOR header_record IN header_cur
73072 LOOP
73073     l_array_header_events(header_record.event_id) := header_record.event_id;
73074 END LOOP;
73075 
73076 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
73077 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
73078 
73079 fnd_file.put_line(fnd_file.LOG, '                    ');
73080 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
73081 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
73082 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
73083 
73084 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
73085 LOOP
73086 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
73087 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
73088         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
73089 	END IF;
73090 END LOOP;
73091 
73092 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
73093 fnd_file.put_line(fnd_file.LOG, '                    ');
73094 
73095 
73096 xla_exceptions_pkg.raise_message
73097       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_132');
73098 
73099 
73100 WHEN OTHERS THEN
73101    xla_exceptions_pkg.raise_message
73102       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_132');
73103 END EventClass_132;
73104 --
73105 
73106 ---------------------------------------
73107 --
73108 -- PRIVATE PROCEDURE
73109 --         insert_sources_133
73110 --
73111 ----------------------------------------
73112 --
73113 PROCEDURE insert_sources_133(
73114                                 p_target_ledger_id       IN NUMBER
73115                               , p_language               IN VARCHAR2
73116                               , p_sla_ledger_id          IN NUMBER
73117                               , p_pad_start_date         IN DATE
73118                               , p_pad_end_date           IN DATE
73119                          )
73120 IS
73121 
73122 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FACTORING_OCC_DOCUMENT_ALL';
73123 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FACTORING_OCC_DOCUMENT';
73124 p_apps_owner                   VARCHAR2(30);
73125 l_log_module                   VARCHAR2(240);
73126 BEGIN
73127 IF g_log_enabled THEN
73128       l_log_module := C_DEFAULT_MODULE||'.insert_sources_133';
73129 END IF;
73130 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73131 
73132       trace
73133          (p_msg      => 'BEGIN of insert_sources_133'
73134          ,p_level    => C_LEVEL_PROCEDURE
73135          ,p_module   => l_log_module);
73136 
73137 END IF;
73138 
73139 -- select APPS owner
73140 SELECT oracle_username
73141   INTO p_apps_owner
73142   FROM fnd_oracle_userid
73143  WHERE read_only_flag = 'U'
73144 ;
73145 
73146 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73147       trace
73148          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
73149                         ' - p_language = '||p_language||
73150                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
73151                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
73152                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
73153                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
73154          ,p_level    => C_LEVEL_STATEMENT
73155          ,p_module   => l_log_module);
73156 END IF;
73157 
73158 
73159 --
73160 INSERT INTO xla_diag_sources --hdr2
73161 (
73162         event_id
73163       , ledger_id
73164       , sla_ledger_id
73165       , description_language
73166       , object_name
73167       , object_type_code
73168       , line_number
73169       , source_application_id
73170       , source_type_code
73171       , source_code
73172       , source_value
73173       , source_meaning
73174       , created_by
73175       , creation_date
73176       , last_update_date
73177       , last_updated_by
73178       , last_update_login
73179       , program_update_date
73180       , program_application_id
73181       , program_id
73182       , request_id
73183 )
73184 SELECT
73185         event_id
73186       , p_target_ledger_id
73187       , p_sla_ledger_id
73188       , p_language
73189       , object_name
73190       , object_type_code
73191       , line_number
73192       , source_application_id
73193       , source_type_code
73194       , source_code
73195       , SUBSTR(source_value ,1,1996)
73196       , SUBSTR(source_meaning ,1,200)
73197       , xla_environment_pkg.g_Usr_Id
73198       , TRUNC(SYSDATE)
73199       , TRUNC(SYSDATE)
73200       , xla_environment_pkg.g_Usr_Id
73201       , xla_environment_pkg.g_Login_Id
73202       , TRUNC(SYSDATE)
73203       , xla_environment_pkg.g_Prog_Appl_Id
73204       , xla_environment_pkg.g_Prog_Id
73205       , xla_environment_pkg.g_Req_Id
73206   FROM (
73207        SELECT xet.event_id                  event_id
73208             , 0                          line_number
73209             , CASE r
73210                WHEN 1 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
73211                 WHEN 2 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
73212                 WHEN 3 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
73213                 WHEN 4 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
73214                 WHEN 5 THEN 'AR_BILL_TO_SITE_USES_S_V' 
73218                 WHEN 9 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
73215                 WHEN 6 THEN 'AR_TRANSACTIONS_S_V' 
73216                 WHEN 7 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
73217                 WHEN 8 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
73219                 WHEN 10 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
73220                 WHEN 11 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
73221                 
73222                ELSE null
73223               END                           object_name
73224             , CASE r
73225                 WHEN 1 THEN 'HEADER' 
73226                 WHEN 2 THEN 'HEADER' 
73227                 WHEN 3 THEN 'HEADER' 
73228                 WHEN 4 THEN 'HEADER' 
73229                 WHEN 5 THEN 'HEADER' 
73230                 WHEN 6 THEN 'HEADER' 
73231                 WHEN 7 THEN 'HEADER' 
73232                 WHEN 8 THEN 'HEADER' 
73233                 WHEN 9 THEN 'HEADER' 
73234                 WHEN 10 THEN 'HEADER' 
73235                 WHEN 11 THEN 'HEADER' 
73236                 
73237                 ELSE null
73238               END                           object_type_code
73239             , CASE r
73240                 WHEN 1 THEN '222' 
73241                 WHEN 2 THEN '222' 
73242                 WHEN 3 THEN '222' 
73243                 WHEN 4 THEN '222' 
73244                 WHEN 5 THEN '222' 
73245                 WHEN 6 THEN '222' 
73246                 WHEN 7 THEN '222' 
73247                 WHEN 8 THEN '222' 
73248                 WHEN 9 THEN '222' 
73249                 WHEN 10 THEN '222' 
73250                 WHEN 11 THEN '222' 
73251                 
73252                 ELSE null
73253               END                           source_application_id
73254             , 'S'             source_type_code
73255             , CASE r
73256                 WHEN 1 THEN 'JLBR_BANK_OCC_DESC' 
73257                 WHEN 2 THEN 'JLBR_DOCUMENT_NUMBER' 
73258                 WHEN 3 THEN 'JLBR_TRADE_NOTE_NUMBER' 
73259                 WHEN 4 THEN 'BILL_CUST_ACCOUNT_ID' 
73260                 WHEN 5 THEN 'BILL_USES_SITE_USE_ID' 
73261                 WHEN 6 THEN 'XLA_PARTY_TYPE' 
73262                 WHEN 7 THEN 'JLBR_OCCURRENCE_ID' 
73263                 WHEN 8 THEN 'JLBR_EXCHG_GAIN_CCID' 
73264                 WHEN 9 THEN 'JLBR_EXCHG_LOSS_CCID' 
73265                 WHEN 10 THEN 'JLBR_GL_DATE' 
73266                 WHEN 11 THEN 'JLBR_TRANSFER_TO_GL_FLAG' 
73267                 
73268                 ELSE null
73269               END                           source_code
73270             , CASE r
73271                 WHEN 1 THEN TO_CHAR(h5.JLBR_BANK_OCC_DESC)
73272                 WHEN 2 THEN TO_CHAR(h5.JLBR_DOCUMENT_NUMBER)
73273                 WHEN 3 THEN TO_CHAR(h5.JLBR_TRADE_NOTE_NUMBER)
73274                 WHEN 4 THEN TO_CHAR(h1.BILL_CUST_ACCOUNT_ID)
73275                 WHEN 5 THEN TO_CHAR(h2.BILL_USES_SITE_USE_ID)
73276                 WHEN 6 THEN TO_CHAR(h3.XLA_PARTY_TYPE)
73277                 WHEN 7 THEN TO_CHAR(h5.JLBR_OCCURRENCE_ID)
73278                 WHEN 8 THEN TO_CHAR(h5.JLBR_EXCHG_GAIN_CCID)
73279                 WHEN 9 THEN TO_CHAR(h5.JLBR_EXCHG_LOSS_CCID)
73280                 WHEN 10 THEN TO_CHAR(h5.JLBR_GL_DATE)
73281                 WHEN 11 THEN TO_CHAR(h5.JLBR_TRANSFER_TO_GL_FLAG)
73282                 
73283                 ELSE null
73284               END                           source_value
73285             , CASE r
73286                 WHEN 11 THEN fvl116.meaning
73287                 
73288                 ELSE null
73289               END               source_meaning
73290          FROM xla_events_gt     xet  
73291       , AR_BILL_TO_CUSTOMERS_S_V  h1
73292       , AR_BILL_TO_SITE_USES_S_V  h2
73293       , AR_TRANSACTIONS_S_V  h3
73294       , JL_BR_AR_COLL_OCC_DOCS_H_V  h5
73295   , fnd_lookup_values    fvl116
73296              ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
73297          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
73298            AND xet.event_class_code = C_EVENT_CLASS_CODE
73299               AND h5.event_id = xet.event_id
73300   AND h1.event_id (+) = h5.event_id
73301   AND h2.event_id (+) = h5.event_id
73302   AND h3.event_id (+) = h5.event_id
73303    AND fvl116.lookup_type(+)         = 'YES_NO'
73304   AND fvl116.lookup_code(+)         = h5.JLBR_TRANSFER_TO_GL_FLAG
73305   AND fvl116.view_application_id(+) = 0
73306   AND fvl116.language(+)            = USERENV('LANG')
73307   
73308 )
73309 ;
73310 --
73311 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73312 
73313       trace
73314          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
73315          ,p_level    => C_LEVEL_STATEMENT
73316          ,p_module   => l_log_module);
73317 
73318 END IF;
73319 --
73320 
73321 
73322 
73323 --
73324 INSERT INTO xla_diag_sources  --line2
73325 (
73326         event_id
73327       , ledger_id
73328       , sla_ledger_id
73329       , description_language
73330       , object_name
73331       , object_type_code
73332       , line_number
73333       , source_application_id
73334       , source_type_code
73335       , source_code
73336       , source_value
73337       , source_meaning
73338       , created_by
73339       , creation_date
73340       , last_update_date
73341       , last_updated_by
73342       , last_update_login
73343       , program_update_date
73344       , program_application_id
73345       , program_id
73346       , request_id
73347 )
73348 SELECT  event_id
73349       , p_target_ledger_id
73350       , p_sla_ledger_id
73351       , p_language
73352       , object_name
73353       , object_type_code
73354       , line_number
73355       , source_application_id
73356       , source_type_code
73357       , source_code
73361       , TRUNC(SYSDATE)
73358       , SUBSTR(source_value,1,1996)
73359       , SUBSTR(source_meaning ,1,200)
73360       , xla_environment_pkg.g_Usr_Id
73362       , TRUNC(SYSDATE)
73363       , xla_environment_pkg.g_Usr_Id
73364       , xla_environment_pkg.g_Login_Id
73365       , TRUNC(SYSDATE)
73366       , xla_environment_pkg.g_Prog_Appl_Id
73367       , xla_environment_pkg.g_Prog_Id
73368       , xla_environment_pkg.g_Req_Id
73369   FROM (
73370        SELECT xet.event_id                  event_id
73371             , l4.line_number                 line_number
73372             , CASE r
73373                WHEN 1 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73374                 WHEN 2 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73375                 WHEN 3 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73376                 WHEN 4 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73377                 WHEN 5 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73378                 WHEN 6 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73379                 WHEN 7 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73380                 WHEN 8 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73381                 WHEN 9 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73382                 WHEN 10 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73383                 WHEN 11 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73384                 WHEN 12 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73385                 WHEN 13 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73386                 WHEN 14 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73387                 WHEN 15 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73388                 WHEN 16 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73389                 WHEN 17 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73390                 WHEN 18 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73391                 WHEN 19 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73392                 WHEN 20 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73393                 WHEN 21 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73394                 WHEN 22 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73395                 WHEN 23 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
73396                 
73397                ELSE null
73398               END                           object_name
73399             , CASE r
73400                 WHEN 1 THEN 'LINE' 
73401                 WHEN 2 THEN 'LINE' 
73402                 WHEN 3 THEN 'LINE' 
73403                 WHEN 4 THEN 'LINE' 
73404                 WHEN 5 THEN 'LINE' 
73405                 WHEN 6 THEN 'LINE' 
73406                 WHEN 7 THEN 'LINE' 
73407                 WHEN 8 THEN 'LINE' 
73408                 WHEN 9 THEN 'LINE' 
73409                 WHEN 10 THEN 'LINE' 
73410                 WHEN 11 THEN 'LINE' 
73411                 WHEN 12 THEN 'LINE' 
73412                 WHEN 13 THEN 'LINE' 
73413                 WHEN 14 THEN 'LINE' 
73414                 WHEN 15 THEN 'LINE' 
73415                 WHEN 16 THEN 'LINE' 
73416                 WHEN 17 THEN 'LINE' 
73417                 WHEN 18 THEN 'LINE' 
73418                 WHEN 19 THEN 'LINE' 
73419                 WHEN 20 THEN 'LINE' 
73420                 WHEN 21 THEN 'LINE' 
73421                 WHEN 22 THEN 'LINE' 
73422                 WHEN 23 THEN 'LINE' 
73423                 
73424                 ELSE null
73425               END                           object_type_code
73426             , CASE r
73427                 WHEN 1 THEN '222' 
73428                 WHEN 2 THEN '222' 
73429                 WHEN 3 THEN '222' 
73430                 WHEN 4 THEN '222' 
73431                 WHEN 5 THEN '222' 
73432                 WHEN 6 THEN '222' 
73433                 WHEN 7 THEN '222' 
73434                 WHEN 8 THEN '222' 
73435                 WHEN 9 THEN '222' 
73436                 WHEN 10 THEN '222' 
73437                 WHEN 11 THEN '222' 
73438                 WHEN 12 THEN '222' 
73439                 WHEN 13 THEN '222' 
73440                 WHEN 14 THEN '222' 
73441                 WHEN 15 THEN '222' 
73442                 WHEN 16 THEN '222' 
73443                 WHEN 17 THEN '222' 
73444                 WHEN 18 THEN '222' 
73445                 WHEN 19 THEN '222' 
73446                 WHEN 20 THEN '222' 
73447                 WHEN 21 THEN '222' 
73448                 WHEN 22 THEN '222' 
73449                 WHEN 23 THEN '222' 
73450                 
73451                 ELSE null
73452               END                           source_application_id
73453             , 'S'             source_type_code
73454             , CASE r
73455                 WHEN 1 THEN 'JLBR_BORDERO_TYPE' 
73456                 WHEN 2 THEN 'JLBR_CD_BANK_CHARGES_CCID' 
73457                 WHEN 3 THEN 'JLBR_CD_BIL_UND_DISC_CCID' 
73458                 WHEN 4 THEN 'JLBR_CD_CASH_CCID' 
73459                 WHEN 5 THEN 'JLBR_CD_DISC_ENDRSMNT_CCID' 
73460                 WHEN 6 THEN 'JLBR_CD_FACT_CHARGES_CCID' 
73461                 WHEN 7 THEN 'JLBR_DISTRIBUTION_TYPE' 
73462                 WHEN 8 THEN 'JLBR_ACCT_REVERSING_OPTN' 
73463                 WHEN 9 THEN 'JLBR_PRIOR_DIST_LINK_TYPE' 
73464                 WHEN 10 THEN 'JLBR_PRIOR_DIST_ID' 
73465                 WHEN 11 THEN 'JLBR_PRIOR_DOCUMENT_ID' 
73466                 WHEN 12 THEN 'JLBR_PRIOR_OCCURRENCE_ID' 
73467                 WHEN 13 THEN 'JLBR_DISTRIBUTION_ID' 
73468                 WHEN 14 THEN 'JLBR_DISTRIBUTION_LINK_TYPE' 
73469                 WHEN 15 THEN 'JLBR_ENTERED_AMT' 
73470                 WHEN 16 THEN 'JLBR_ENTERED_CURRENCY_CODE' 
73471                 WHEN 17 THEN 'JLBR_CONVERSION_DATE' 
73472                 WHEN 18 THEN 'JLBR_CONVERSION_RATE' 
73473                 WHEN 19 THEN 'JLBR_CONVERSION_RATE_TYPE' 
73474                 WHEN 20 THEN 'JLBR_ACCTD_AMT' 
73475                 WHEN 21 THEN 'JLBR_REVERSED_DIST_ID' 
73476                 WHEN 22 THEN 'JLBR_REVERSED_DIST_LINK_TYPE' 
73477                 WHEN 23 THEN 'JLBR_BANK_OCC_TYPE' 
73478                 
73479                 ELSE null
73480               END                           source_code
73484                 WHEN 3 THEN TO_CHAR(l4.JLBR_CD_BIL_UND_DISC_CCID)
73481             , CASE r
73482                 WHEN 1 THEN TO_CHAR(l4.JLBR_BORDERO_TYPE)
73483                 WHEN 2 THEN TO_CHAR(l4.JLBR_CD_BANK_CHARGES_CCID)
73485                 WHEN 4 THEN TO_CHAR(l4.JLBR_CD_CASH_CCID)
73486                 WHEN 5 THEN TO_CHAR(l4.JLBR_CD_DISC_ENDRSMNT_CCID)
73487                 WHEN 6 THEN TO_CHAR(l4.JLBR_CD_FACT_CHARGES_CCID)
73488                 WHEN 7 THEN TO_CHAR(l4.JLBR_DISTRIBUTION_TYPE)
73489                 WHEN 8 THEN TO_CHAR(l4.JLBR_ACCT_REVERSING_OPTN)
73490                 WHEN 9 THEN TO_CHAR(l4.JLBR_PRIOR_DIST_LINK_TYPE)
73491                 WHEN 10 THEN TO_CHAR(l4.JLBR_PRIOR_DIST_ID)
73492                 WHEN 11 THEN TO_CHAR(l4.JLBR_PRIOR_DOCUMENT_ID)
73493                 WHEN 12 THEN TO_CHAR(l4.JLBR_PRIOR_OCCURRENCE_ID)
73494                 WHEN 13 THEN TO_CHAR(l4.JLBR_DISTRIBUTION_ID)
73495                 WHEN 14 THEN TO_CHAR(l4.JLBR_DISTRIBUTION_LINK_TYPE)
73496                 WHEN 15 THEN TO_CHAR(l4.JLBR_ENTERED_AMT)
73497                 WHEN 16 THEN TO_CHAR(l4.JLBR_ENTERED_CURRENCY_CODE)
73498                 WHEN 17 THEN TO_CHAR(l4.JLBR_CONVERSION_DATE)
73499                 WHEN 18 THEN TO_CHAR(l4.JLBR_CONVERSION_RATE)
73500                 WHEN 19 THEN TO_CHAR(l4.JLBR_CONVERSION_RATE_TYPE)
73501                 WHEN 20 THEN TO_CHAR(l4.JLBR_ACCTD_AMT)
73502                 WHEN 21 THEN TO_CHAR(l4.JLBR_REVERSED_DIST_ID)
73503                 WHEN 22 THEN TO_CHAR(l4.JLBR_REVERSED_DIST_LINK_TYPE)
73504                 WHEN 23 THEN TO_CHAR(l4.JLBR_BANK_OCC_TYPE)
73505                 
73506                 ELSE null
73507               END                           source_value
73508             , CASE r
73509                 WHEN 1 THEN fvl7.meaning
73510                 WHEN 7 THEN fvl66.meaning
73511                 WHEN 8 THEN fvl67.meaning
73512                 WHEN 23 THEN fvl85.meaning
73513                 
73514                 ELSE null
73515               END               source_meaning
73516          FROM  xla_events_gt     xet  
73517         , JL_BR_AR_COLL_DOC_DISTS_L_V  l4
73518   , fnd_lookup_values    fvl7
73519   , fnd_lookup_values    fvl66
73520   , fnd_lookup_values    fvl67
73521   , fnd_lookup_values    fvl85
73522             , (select rownum r from all_objects where rownum <= 23 and owner = p_apps_owner)
73523         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
73524           AND xet.event_class_code = C_EVENT_CLASS_CODE
73525             AND l4.event_id          = xet.event_id
73526    AND fvl7.lookup_type(+)         = 'JLBR_AR_BORDERO_TYPE'
73527   AND fvl7.lookup_code(+)         = l4.JLBR_BORDERO_TYPE
73528   AND fvl7.view_application_id(+) = 0
73529   AND fvl7.language(+)            = USERENV('LANG')
73530      AND fvl66.lookup_type(+)         = 'JLBR_AR_DIST_TYPE'
73531   AND fvl66.lookup_code(+)         = l4.JLBR_DISTRIBUTION_TYPE
73532   AND fvl66.view_application_id(+) = 0
73533   AND fvl66.language(+)            = USERENV('LANG')
73534      AND fvl67.lookup_type(+)         = 'YES_NO'
73535   AND fvl67.lookup_code(+)         = l4.JLBR_ACCT_REVERSING_OPTN
73536   AND fvl67.view_application_id(+) = 0
73537   AND fvl67.language(+)            = USERENV('LANG')
73538      AND fvl85.lookup_type(+)         = 'JLBR_AR_BANK_OCCURRENCE_TYPE'
73539   AND fvl85.lookup_code(+)         = l4.JLBR_BANK_OCC_TYPE
73540   AND fvl85.view_application_id(+) = 0
73541   AND fvl85.language(+)            = USERENV('LANG')
73542   
73543 )
73544 ;
73545 --
73546 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73547 
73548       trace
73549          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
73550          ,p_level    => C_LEVEL_STATEMENT
73551          ,p_module   => l_log_module);
73552 
73553 END IF;
73554 
73555 
73556 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73557       trace
73558          (p_msg      => 'END of insert_sources_133'
73559          ,p_level    => C_LEVEL_PROCEDURE
73560          ,p_module   => l_log_module);
73561 END IF;
73562 EXCEPTION
73563   WHEN xla_exceptions_pkg.application_exception THEN
73564       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
73565             trace
73566                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
73567                ,p_level    => C_LEVEL_EXCEPTION
73568                ,p_module   => l_log_module);
73569       END IF;
73570       RAISE;
73571   WHEN OTHERS THEN
73572       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
73573             trace
73574                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
73575                ,p_level    => C_LEVEL_EXCEPTION
73576                ,p_module   => l_log_module);
73577        END IF;
73578        xla_exceptions_pkg.raise_message
73579            (p_location => 'XLA_00222_AAD_S_000017_PKG.insert_sources_133');
73580 END insert_sources_133;
73581 --
73582 
73583 ---------------------------------------
73584 --
73585 -- PRIVATE FUNCTION
73586 --         EventClass_133
73587 --
73588 ----------------------------------------
73589 --
73590 FUNCTION EventClass_133
73591        (p_application_id         IN NUMBER
73592        ,p_base_ledger_id         IN NUMBER
73593        ,p_target_ledger_id       IN NUMBER
73594        ,p_language               IN VARCHAR2
73595        ,p_currency_code          IN VARCHAR2
73596        ,p_sla_ledger_id          IN NUMBER
73597        ,p_pad_start_date         IN DATE
73598        ,p_pad_end_date           IN DATE
73599        ,p_primary_ledger_id      IN NUMBER)
73600 RETURN BOOLEAN IS
73601 --
73602 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FACTORING_OCC_DOCUMENT_ALL';
73603 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FACTORING_OCC_DOCUMENT';
73604 
73605 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
73606 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
73607 --
73608 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73612 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73609 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73610 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
73611 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73613 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
73614 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
73615 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73616 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73617 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73618 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73619 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73620 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73621 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
73622 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73623 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73624 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73625 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
73626 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73627 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73628 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73629 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
73630 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
73631 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
73632 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
73633 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
73634 
73635 l_event_id                             NUMBER;
73636 l_previous_event_id                    NUMBER;
73637 l_first_event_id                       NUMBER;
73638 l_last_event_id                        NUMBER;
73639 
73640 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
73641 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
73642 --
73643 --
73644 l_result                    BOOLEAN := TRUE;
73645 l_rows                      NUMBER  := 1000;
73646 l_event_type_name           VARCHAR2(80) := 'All';
73647 l_event_class_name          VARCHAR2(80) := 'Factoring Collection Occurrence Documents';
73648 l_description               VARCHAR2(4000);
73649 l_transaction_reversal      NUMBER;
73650 l_ae_header_id              NUMBER;
73651 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
73652 l_log_module                VARCHAR2(240);
73653 --
73654 l_acct_reversal_source      VARCHAR2(30);
73655 l_trx_reversal_source       VARCHAR2(30);
73656 
73657 l_continue_with_lines       BOOLEAN := TRUE;
73658 --
73659 l_acc_rev_gl_date_source    DATE;                      -- 4262811
73660 --
73661 type t_array_event_id is table of number index by binary_integer;
73662 
73663 l_rec_array_event                    t_rec_array_event;
73664 l_null_rec_array_event               t_rec_array_event;
73665 l_array_ae_header_id                 xla_number_array_type;
73666 l_actual_flag                        VARCHAR2(1) := NULL;
73667 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
73668 l_balance_type_code                  VARCHAR2(1) :=NULL;
73669 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
73670 
73671 --
73672 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
73673 --
73674 
73675 TYPE t_array_source_4 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_BANK_OCC_DESC%TYPE INDEX BY BINARY_INTEGER;
73676 TYPE t_array_source_5 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_DOCUMENT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
73677 TYPE t_array_source_6 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_TRADE_NOTE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
73678 TYPE t_array_source_37 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
73679 TYPE t_array_source_38 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
73680 TYPE t_array_source_39 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
73681 TYPE t_array_source_82 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_OCCURRENCE_ID%TYPE INDEX BY BINARY_INTEGER;
73682 TYPE t_array_source_113 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_EXCHG_GAIN_CCID%TYPE INDEX BY BINARY_INTEGER;
73683 TYPE t_array_source_114 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_EXCHG_LOSS_CCID%TYPE INDEX BY BINARY_INTEGER;
73684 TYPE t_array_source_115 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_GL_DATE%TYPE INDEX BY BINARY_INTEGER;
73685 TYPE t_array_source_116 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_TRANSFER_TO_GL_FLAG%TYPE INDEX BY BINARY_INTEGER;
73686 
73687 TYPE t_array_source_7 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_BORDERO_TYPE%TYPE INDEX BY BINARY_INTEGER;
73688 TYPE t_array_source_15 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_BANK_CHARGES_CCID%TYPE INDEX BY BINARY_INTEGER;
73689 TYPE t_array_source_17 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_BIL_UND_DISC_CCID%TYPE INDEX BY BINARY_INTEGER;
73690 TYPE t_array_source_18 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_CASH_CCID%TYPE INDEX BY BINARY_INTEGER;
73691 TYPE t_array_source_20 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_DISC_ENDRSMNT_CCID%TYPE INDEX BY BINARY_INTEGER;
73692 TYPE t_array_source_21 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_FACT_CHARGES_CCID%TYPE INDEX BY BINARY_INTEGER;
73693 TYPE t_array_source_66 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
73694 TYPE t_array_source_67 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ACCT_REVERSING_OPTN%TYPE INDEX BY BINARY_INTEGER;
73695 TYPE t_array_source_69 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
73699 TYPE t_array_source_74 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
73696 TYPE t_array_source_71 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
73697 TYPE t_array_source_72 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_DOCUMENT_ID%TYPE INDEX BY BINARY_INTEGER;
73698 TYPE t_array_source_73 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_OCCURRENCE_ID%TYPE INDEX BY BINARY_INTEGER;
73700 TYPE t_array_source_75 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_DISTRIBUTION_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
73701 TYPE t_array_source_76 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ENTERED_AMT%TYPE INDEX BY BINARY_INTEGER;
73702 TYPE t_array_source_77 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
73703 TYPE t_array_source_78 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
73704 TYPE t_array_source_79 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
73705 TYPE t_array_source_80 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CONVERSION_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
73706 TYPE t_array_source_81 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
73707 TYPE t_array_source_83 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_REVERSED_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
73708 TYPE t_array_source_84 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_REVERSED_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
73709 TYPE t_array_source_85 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_BANK_OCC_TYPE%TYPE INDEX BY BINARY_INTEGER;
73710 
73711 l_array_source_4              t_array_source_4;
73712 l_array_source_5              t_array_source_5;
73713 l_array_source_6              t_array_source_6;
73714 l_array_source_37              t_array_source_37;
73715 l_array_source_38              t_array_source_38;
73716 l_array_source_39              t_array_source_39;
73717 l_array_source_82              t_array_source_82;
73718 l_array_source_113              t_array_source_113;
73719 l_array_source_114              t_array_source_114;
73720 l_array_source_115              t_array_source_115;
73721 l_array_source_116              t_array_source_116;
73722 l_array_source_116_meaning      t_array_lookup_meaning;
73723 
73724 l_array_source_7      t_array_source_7;
73725 l_array_source_7_meaning      t_array_lookup_meaning;
73726 l_array_source_15      t_array_source_15;
73727 l_array_source_17      t_array_source_17;
73728 l_array_source_18      t_array_source_18;
73729 l_array_source_20      t_array_source_20;
73730 l_array_source_21      t_array_source_21;
73731 l_array_source_66      t_array_source_66;
73732 l_array_source_66_meaning      t_array_lookup_meaning;
73733 l_array_source_67      t_array_source_67;
73734 l_array_source_67_meaning      t_array_lookup_meaning;
73735 l_array_source_69      t_array_source_69;
73736 l_array_source_71      t_array_source_71;
73737 l_array_source_72      t_array_source_72;
73738 l_array_source_73      t_array_source_73;
73739 l_array_source_74      t_array_source_74;
73740 l_array_source_75      t_array_source_75;
73741 l_array_source_76      t_array_source_76;
73742 l_array_source_77      t_array_source_77;
73743 l_array_source_78      t_array_source_78;
73744 l_array_source_79      t_array_source_79;
73745 l_array_source_80      t_array_source_80;
73746 l_array_source_81      t_array_source_81;
73747 l_array_source_83      t_array_source_83;
73748 l_array_source_84      t_array_source_84;
73749 l_array_source_85      t_array_source_85;
73750 l_array_source_85_meaning      t_array_lookup_meaning;
73751 
73752 --
73753 CURSOR header_cur
73754 IS
73755 SELECT /*+ leading(xet) cardinality(xet,1) */
73756 -- Event Class Code: FACTORING_OCC_DOCUMENT
73757     xet.entity_id
73758    ,xet.legal_entity_id
73759    ,xet.entity_code
73760    ,xet.transaction_number
73761    ,xet.event_id
73762    ,xet.event_class_code
73763    ,xet.event_type_code
73764    ,xet.event_number
73765    ,xet.event_date
73766    ,xet.transaction_date
73767    ,xet.reference_num_1
73768    ,xet.reference_num_2
73769    ,xet.reference_num_3
73770    ,xet.reference_num_4
73771    ,xet.reference_char_1
73772    ,xet.reference_char_2
73773    ,xet.reference_char_3
73774    ,xet.reference_char_4
73775    ,xet.reference_date_1
73776    ,xet.reference_date_2
73777    ,xet.reference_date_3
73778    ,xet.reference_date_4
73779    ,xet.event_created_by
73780    ,xet.budgetary_control_flag 
73781   , h5.JLBR_BANK_OCC_DESC    source_4
73782   , h5.JLBR_DOCUMENT_NUMBER    source_5
73783   , h5.JLBR_TRADE_NOTE_NUMBER    source_6
73784   , h1.BILL_CUST_ACCOUNT_ID    source_37
73785   , h2.BILL_USES_SITE_USE_ID    source_38
73786   , h3.XLA_PARTY_TYPE    source_39
73787   , h5.JLBR_OCCURRENCE_ID    source_82
73788   , h5.JLBR_EXCHG_GAIN_CCID    source_113
73789   , h5.JLBR_EXCHG_LOSS_CCID    source_114
73790   , h5.JLBR_GL_DATE    source_115
73791   , h5.JLBR_TRANSFER_TO_GL_FLAG    source_116
73792   , fvl116.meaning   source_116_meaning
73793   FROM xla_events_gt     xet 
73794   , AR_BILL_TO_CUSTOMERS_S_V  h1
73795   , AR_BILL_TO_SITE_USES_S_V  h2
73796   , AR_TRANSACTIONS_S_V  h3
73797   , JL_BR_AR_COLL_OCC_DOCS_H_V  h5
73798   , fnd_lookup_values    fvl116
73799  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
73800    and xet.event_class_code = C_EVENT_CLASS_CODE
73801    and xet.event_status_code <> 'N'  AND h5.event_id = xet.event_id
73802   AND h1.event_id (+) = h5.event_id
73803   AND h2.event_id (+) = h5.event_id
73804   AND h3.event_id (+) = h5.event_id
73805    AND fvl116.lookup_type(+)         = 'YES_NO'
73806   AND fvl116.lookup_code(+)         = h5.JLBR_TRANSFER_TO_GL_FLAG
73807   AND fvl116.view_application_id(+) = 0
73808   AND fvl116.language(+)            = USERENV('LANG')
73809   
73810  ORDER BY event_id
73811 ;
73812 
73813 
73814 --
73815 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
73819     xet.entity_id
73816 IS
73817 SELECT  /*+ leading(xet) cardinality(xet,1) */
73818 -- Event Class Code: FACTORING_OCC_DOCUMENT
73820    ,xet.legal_entity_id
73821    ,xet.entity_code
73822    ,xet.transaction_number
73823    ,xet.event_id
73824    ,xet.event_class_code
73825    ,xet.event_type_code
73826    ,xet.event_number
73827    ,xet.event_date
73828    ,xet.transaction_date
73829    ,xet.reference_num_1
73830    ,xet.reference_num_2
73831    ,xet.reference_num_3
73832    ,xet.reference_num_4
73833    ,xet.reference_char_1
73834    ,xet.reference_char_2
73835    ,xet.reference_char_3
73836    ,xet.reference_char_4
73837    ,xet.reference_date_1
73838    ,xet.reference_date_2
73839    ,xet.reference_date_3
73840    ,xet.reference_date_4
73841    ,xet.event_created_by
73842    ,xet.budgetary_control_flag
73843  , l4.LINE_NUMBER  
73844   , l4.JLBR_BORDERO_TYPE    source_7
73845   , fvl7.meaning   source_7_meaning
73846   , l4.JLBR_CD_BANK_CHARGES_CCID    source_15
73847   , l4.JLBR_CD_BIL_UND_DISC_CCID    source_17
73848   , l4.JLBR_CD_CASH_CCID    source_18
73849   , l4.JLBR_CD_DISC_ENDRSMNT_CCID    source_20
73850   , l4.JLBR_CD_FACT_CHARGES_CCID    source_21
73851   , l4.JLBR_DISTRIBUTION_TYPE    source_66
73852   , fvl66.meaning   source_66_meaning
73853   , l4.JLBR_ACCT_REVERSING_OPTN    source_67
73854   , fvl67.meaning   source_67_meaning
73855   , l4.JLBR_PRIOR_DIST_LINK_TYPE    source_69
73856   , l4.JLBR_PRIOR_DIST_ID    source_71
73857   , l4.JLBR_PRIOR_DOCUMENT_ID    source_72
73858   , l4.JLBR_PRIOR_OCCURRENCE_ID    source_73
73859   , l4.JLBR_DISTRIBUTION_ID    source_74
73860   , l4.JLBR_DISTRIBUTION_LINK_TYPE    source_75
73861   , l4.JLBR_ENTERED_AMT    source_76
73862   , l4.JLBR_ENTERED_CURRENCY_CODE    source_77
73863   , l4.JLBR_CONVERSION_DATE    source_78
73864   , l4.JLBR_CONVERSION_RATE    source_79
73865   , l4.JLBR_CONVERSION_RATE_TYPE    source_80
73866   , l4.JLBR_ACCTD_AMT    source_81
73867   , l4.JLBR_REVERSED_DIST_ID    source_83
73868   , l4.JLBR_REVERSED_DIST_LINK_TYPE    source_84
73869   , l4.JLBR_BANK_OCC_TYPE    source_85
73870   , fvl85.meaning   source_85_meaning
73871   FROM xla_events_gt     xet 
73872   , JL_BR_AR_COLL_DOC_DISTS_L_V  l4
73873   , fnd_lookup_values    fvl7
73874   , fnd_lookup_values    fvl66
73875   , fnd_lookup_values    fvl67
73876   , fnd_lookup_values    fvl85
73877  WHERE xet.event_id between x_first_event_id and x_last_event_id
73878    and xet.event_date between p_pad_start_date and p_pad_end_date
73879    and xet.event_class_code = C_EVENT_CLASS_CODE
73880    and xet.event_status_code <> 'N'   AND l4.event_id      = xet.event_id
73881    AND fvl7.lookup_type(+)         = 'JLBR_AR_BORDERO_TYPE'
73882   AND fvl7.lookup_code(+)         = l4.JLBR_BORDERO_TYPE
73883   AND fvl7.view_application_id(+) = 0
73884   AND fvl7.language(+)            = USERENV('LANG')
73885      AND fvl66.lookup_type(+)         = 'JLBR_AR_DIST_TYPE'
73886   AND fvl66.lookup_code(+)         = l4.JLBR_DISTRIBUTION_TYPE
73887   AND fvl66.view_application_id(+) = 0
73888   AND fvl66.language(+)            = USERENV('LANG')
73889      AND fvl67.lookup_type(+)         = 'YES_NO'
73890   AND fvl67.lookup_code(+)         = l4.JLBR_ACCT_REVERSING_OPTN
73891   AND fvl67.view_application_id(+) = 0
73892   AND fvl67.language(+)            = USERENV('LANG')
73893      AND fvl85.lookup_type(+)         = 'JLBR_AR_BANK_OCCURRENCE_TYPE'
73894   AND fvl85.lookup_code(+)         = l4.JLBR_BANK_OCC_TYPE
73895   AND fvl85.view_application_id(+) = 0
73896   AND fvl85.language(+)            = USERENV('LANG')
73897   ;
73898 
73899 --
73900 BEGIN
73901 IF g_log_enabled THEN
73902    l_log_module := C_DEFAULT_MODULE||'.EventClass_133';
73903 END IF;
73904 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73905    trace
73906       (p_msg      => 'BEGIN of EventClass_133'
73907       ,p_level    => C_LEVEL_PROCEDURE
73908       ,p_module   => l_log_module);
73909 END IF;
73910 
73911 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73912    trace
73913       (p_msg      => 'p_application_id = '||p_application_id||
73914                      ' - p_base_ledger_id = '||p_base_ledger_id||
73915                      ' - p_target_ledger_id  = '||p_target_ledger_id||
73916                      ' - p_language = '||p_language||
73917                      ' - p_currency_code = '||p_currency_code||
73918                      ' - p_sla_ledger_id = '||p_sla_ledger_id
73919       ,p_level    => C_LEVEL_STATEMENT
73920       ,p_module   => l_log_module);
73921 END IF;
73922 --
73923 -- initialze arrays
73924 --
73925 g_array_event.DELETE;
73926 l_rec_array_event := l_null_rec_array_event;
73927 --
73928 --------------------------------------
73929 -- 4262811 Initialze MPA Line Number
73930 --------------------------------------
73931 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
73932 
73933 --
73934 
73935 --
73936 OPEN header_cur;
73937 --
73938 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73939    trace
73940    (p_msg      => 'SQL - FETCH header_cur'
73941    ,p_level    => C_LEVEL_STATEMENT
73942    ,p_module   => l_log_module);
73943 END IF;
73944 --
73945 LOOP
73946 FETCH header_cur BULK COLLECT INTO
73947         l_array_entity_id
73948       , l_array_legal_entity_id
73949       , l_array_entity_code
73950       , l_array_transaction_num
73951       , l_array_event_id
73952       , l_array_class_code
73953       , l_array_event_type
73954       , l_array_event_number
73955       , l_array_event_date
73956       , l_array_transaction_date
73957       , l_array_reference_num_1
73958       , l_array_reference_num_2
73959       , l_array_reference_num_3
73960       , l_array_reference_num_4
73961       , l_array_reference_char_1
73962       , l_array_reference_char_2
73963       , l_array_reference_char_3
73967       , l_array_reference_date_3
73964       , l_array_reference_char_4
73965       , l_array_reference_date_1
73966       , l_array_reference_date_2
73968       , l_array_reference_date_4
73969       , l_array_event_created_by
73970       , l_array_budgetary_control_flag 
73971       , l_array_source_4
73972       , l_array_source_5
73973       , l_array_source_6
73974       , l_array_source_37
73975       , l_array_source_38
73976       , l_array_source_39
73977       , l_array_source_82
73978       , l_array_source_113
73979       , l_array_source_114
73980       , l_array_source_115
73981       , l_array_source_116
73982       , l_array_source_116_meaning
73983       LIMIT l_rows;
73984 --
73985 IF (C_LEVEL_EVENT >= g_log_level) THEN
73986    trace
73987    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
73988    ,p_level    => C_LEVEL_EVENT
73989    ,p_module   => l_log_module);
73990 END IF;
73991 --
73992 EXIT WHEN l_array_entity_id.COUNT = 0;
73993 
73994 -- initialize arrays
73995 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
73996 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
73997 
73998 --
73999 -- Bug 4458708
74000 --
74001 XLA_AE_LINES_PKG.g_LineNumber := 0;
74002 
74003 
74004 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
74005 g_last_hdr_idx := l_array_event_id.LAST;
74006 --
74007 -- loop for the headers. Each iteration is for each header extract row
74008 -- fetched in header cursor
74009 --
74010 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
74011 
74012 --
74013 -- set event info as cache for other routines to refer event attributes
74014 --
74015 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
74016    (p_application_id           => p_application_id
74017    ,p_primary_ledger_id        => p_primary_ledger_id
74018    ,p_base_ledger_id           => p_base_ledger_id
74019    ,p_target_ledger_id         => p_target_ledger_id
74020    ,p_entity_id                => l_array_entity_id(hdr_idx)
74021    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
74022    ,p_entity_code              => l_array_entity_code(hdr_idx)
74023    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
74024    ,p_event_id                 => l_array_event_id(hdr_idx)
74025    ,p_event_class_code         => l_array_class_code(hdr_idx)
74026    ,p_event_type_code          => l_array_event_type(hdr_idx)
74027    ,p_event_number             => l_array_event_number(hdr_idx)
74028    ,p_event_date               => l_array_event_date(hdr_idx)
74029    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
74030    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
74031    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
74032    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
74033    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
74034    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
74035    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
74036    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
74037    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
74038    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
74039    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
74040    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
74041    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
74042    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
74043    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
74044 
74045 --
74046 -- set the status of entry to C_VALID (0)
74047 --
74048 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
74049 
74050 --
74051 -- initialize a row for ae header
74052 --
74053 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
74054 
74055 l_event_id := l_array_event_id(hdr_idx);
74056 
74057 --
74058 -- storing the hdr_idx for event. May be used by line cursor.
74059 --
74060 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
74061 
74062 --
74063 -- store sources from header extract. This can be improved to
74064 -- store only those sources from header extract that may be used in lines
74065 --
74066 
74067 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
74068 g_array_event(l_event_id).array_value_num('source_5') := l_array_source_5(hdr_idx);
74069 g_array_event(l_event_id).array_value_char('source_6') := l_array_source_6(hdr_idx);
74070 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
74071 g_array_event(l_event_id).array_value_num('source_38') := l_array_source_38(hdr_idx);
74072 g_array_event(l_event_id).array_value_char('source_39') := l_array_source_39(hdr_idx);
74073 g_array_event(l_event_id).array_value_num('source_82') := l_array_source_82(hdr_idx);
74074 g_array_event(l_event_id).array_value_num('source_113') := l_array_source_113(hdr_idx);
74075 g_array_event(l_event_id).array_value_num('source_114') := l_array_source_114(hdr_idx);
74076 g_array_event(l_event_id).array_value_date('source_115') := l_array_source_115(hdr_idx);
74077 g_array_event(l_event_id).array_value_char('source_116') := l_array_source_116(hdr_idx);
74078 g_array_event(l_event_id).array_value_char('source_116_meaning') := l_array_source_116_meaning(hdr_idx);
74079 
74080 --
74081 -- initilaize the status of ae headers for diffrent balance types
74082 -- the status is initialised to C_NOT_CREATED (2)
74083 --
74084 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
74085 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
74086 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
74087 
74091 
74088 --
74089 -- call api to validate and store accounting attributes for header
74090 --
74092 ------------------------------------------------------------
74093 -- Accrual Reversal : to get date for Standard Source (NONE)
74094 ------------------------------------------------------------
74095 l_acc_rev_gl_date_source := NULL;
74096 
74097      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
74098       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_115');
74099      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
74100       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_116');
74101 
74102 
74103 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
74104 
74105 XLA_AE_HEADER_PKG.SetJeCategoryName;
74106 
74107 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
74108 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
74109 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
74110 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
74111 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
74112 
74113 
74114 -- No header level analytical criteria
74115 
74116 --
74117 --accounting attribute enhancement, bug 3612931
74118 --
74119 l_trx_reversal_source := SUBSTR(NULL, 1,30);
74120 
74121 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
74122    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
74123 
74124    xla_accounting_err_pkg.build_message
74125       (p_appli_s_name            => 'XLA'
74126       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
74127       ,p_token_1                 => 'ACCT_ATTR_NAME'
74128       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
74129       ,p_token_2                 => 'PRODUCT_NAME'
74130       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
74131       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
74132       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
74133       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
74134 
74135 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
74136    --
74137    -- following sets the accounting attributes needed to reverse
74138    -- accounting for a distributeion
74139    --
74140    xla_ae_lines_pkg.SetTrxReversalAttrs
74141       (p_event_id              => l_event_id
74142       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
74143       ,p_trx_reversal_source   => l_trx_reversal_source);
74144 
74145 END IF;
74146 
74147 
74148 ----------------------------------------------------------------
74149 -- 4262811 -  update the header statuses to invalid in need be
74150 ----------------------------------------------------------------
74151 --
74152 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
74153 
74154 
74155   -----------------------------------------------
74156   -- No accrual reversal for the event class/type
74157   -----------------------------------------------
74158 ----------------------------------------------------------------
74159 
74160 --
74161 -- this ends the header loop iteration for one bulk fetch
74162 --
74163 END LOOP;
74164 
74165 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
74166 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
74167 
74168 --
74169 -- insert dummy rows into lines gt table that were created due to
74170 -- transaction reversals
74171 --
74172 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
74173    l_result := XLA_AE_LINES_PKG.InsertLines;
74174 END IF;
74175 
74176 --
74177 -- reset the temp_line_num for each set of events fetched from header
74178 -- cursor rather than doing it for each new event in line cursor
74179 -- Bug 3939231
74180 --
74181 xla_ae_lines_pkg.g_temp_line_num := 0;
74182 
74183 
74184 
74185 --
74186 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
74187 --
74188 --
74189 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74190 
74191       trace
74192          (p_msg      => 'SQL - FETCH line_cur'
74193          ,p_level    => C_LEVEL_STATEMENT
74194          ,p_module   => l_log_module);
74195 
74196 END IF;
74197 --
74198 --
74199 LOOP
74200   --
74201   FETCH line_cur BULK COLLECT INTO
74202         l_array_entity_id
74203       , l_array_legal_entity_id
74204       , l_array_entity_code
74205       , l_array_transaction_num
74206       , l_array_event_id
74207       , l_array_class_code
74208       , l_array_event_type
74209       , l_array_event_number
74210       , l_array_event_date
74211       , l_array_transaction_date
74212       , l_array_reference_num_1
74213       , l_array_reference_num_2
74214       , l_array_reference_num_3
74215       , l_array_reference_num_4
74216       , l_array_reference_char_1
74217       , l_array_reference_char_2
74218       , l_array_reference_char_3
74219       , l_array_reference_char_4
74220       , l_array_reference_date_1
74221       , l_array_reference_date_2
74222       , l_array_reference_date_3
74223       , l_array_reference_date_4
74224       , l_array_event_created_by
74225       , l_array_budgetary_control_flag
74226       , l_array_extract_line_num 
74227       , l_array_source_7
74228       , l_array_source_7_meaning
74229       , l_array_source_15
74230       , l_array_source_17
74234       , l_array_source_66
74231       , l_array_source_18
74232       , l_array_source_20
74233       , l_array_source_21
74235       , l_array_source_66_meaning
74236       , l_array_source_67
74237       , l_array_source_67_meaning
74238       , l_array_source_69
74239       , l_array_source_71
74240       , l_array_source_72
74241       , l_array_source_73
74242       , l_array_source_74
74243       , l_array_source_75
74244       , l_array_source_76
74245       , l_array_source_77
74246       , l_array_source_78
74247       , l_array_source_79
74248       , l_array_source_80
74249       , l_array_source_81
74250       , l_array_source_83
74251       , l_array_source_84
74252       , l_array_source_85
74253       , l_array_source_85_meaning
74254       LIMIT l_rows;
74255 
74256   --
74257   IF (C_LEVEL_EVENT >= g_log_level) THEN
74258             trace
74259                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
74260                ,p_level    => C_LEVEL_EVENT
74261                ,p_module   => l_log_module);
74262   END IF;
74263   --
74264   EXIT WHEN l_array_entity_id.count = 0;
74265 
74266   XLA_AE_LINES_PKG.g_rec_lines := null;
74267 
74268 --
74269 -- Bug 4458708
74270 --
74271 XLA_AE_LINES_PKG.g_LineNumber := 0;
74272 --
74273 --
74274 
74275 FOR Idx IN 1..l_array_event_id.count LOOP
74276    --
74277    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
74278    --
74279    l_event_id := l_array_event_id(idx);  -- 5648433
74280 
74281    --
74282    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
74283    --
74284 
74285    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
74286              (g_array_event(l_event_id).array_value_num('header_index'))
74287          ,'N'
74288          ) <> 'Y'
74289    THEN
74290       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74291          trace
74292             (p_msg      => 'Trancaction revesal option is not Y '
74293             ,p_level    => C_LEVEL_STATEMENT
74294             ,p_module   => l_log_module);
74295       END IF;
74296 
74297 --
74298 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
74299 --
74300 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
74301 --
74302 -- set event info as cache for other routines to refer event attributes
74303 --
74304 
74305 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
74306    l_previous_event_id := l_event_id;
74307 
74308    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
74309       (p_application_id           => p_application_id
74310       ,p_primary_ledger_id        => p_primary_ledger_id
74311       ,p_base_ledger_id           => p_base_ledger_id
74312       ,p_target_ledger_id         => p_target_ledger_id
74313       ,p_entity_id                => l_array_entity_id(Idx)
74314       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
74315       ,p_entity_code              => l_array_entity_code(Idx)
74316       ,p_transaction_num          => l_array_transaction_num(Idx)
74317       ,p_event_id                 => l_array_event_id(Idx)
74318       ,p_event_class_code         => l_array_class_code(Idx)
74319       ,p_event_type_code          => l_array_event_type(Idx)
74320       ,p_event_number             => l_array_event_number(Idx)
74321       ,p_event_date               => l_array_event_date(Idx)
74322       ,p_transaction_date         => l_array_transaction_date(Idx)
74323       ,p_reference_num_1          => l_array_reference_num_1(Idx)
74324       ,p_reference_num_2          => l_array_reference_num_2(Idx)
74325       ,p_reference_num_3          => l_array_reference_num_3(Idx)
74326       ,p_reference_num_4          => l_array_reference_num_4(Idx)
74327       ,p_reference_char_1         => l_array_reference_char_1(Idx)
74328       ,p_reference_char_2         => l_array_reference_char_2(Idx)
74329       ,p_reference_char_3         => l_array_reference_char_3(Idx)
74330       ,p_reference_char_4         => l_array_reference_char_4(Idx)
74331       ,p_reference_date_1         => l_array_reference_date_1(Idx)
74332       ,p_reference_date_2         => l_array_reference_date_2(Idx)
74333       ,p_reference_date_3         => l_array_reference_date_3(Idx)
74334       ,p_reference_date_4         => l_array_reference_date_4(Idx)
74335       ,p_event_created_by         => l_array_event_created_by(Idx)
74336       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
74337        --
74338 END IF;
74339 
74340 
74341 
74342 --
74343 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
74344 
74345 l_acct_reversal_source := SUBSTR(l_array_source_67(Idx), 1,30);
74346 
74347 IF l_continue_with_lines THEN
74348    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
74349       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
74350 
74351       xla_accounting_err_pkg.build_message
74352          (p_appli_s_name            => 'XLA'
74353          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
74354          ,p_token_1                 => 'LINE_NUMBER'
74355          ,p_value_1                 => l_array_extract_line_num(Idx)
74356          ,p_token_2                 => 'PRODUCT_NAME'
74357          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
74358          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
74359          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
74360          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
74361 
74362    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
74363       --
74364       -- following sets the accounting attributes needed to reverse
74368       --
74365       -- accounting for a distributeion
74366       --
74367 
74369       -- 5217187
74370       --
74371       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
74372       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
74373                                        g_array_event(l_event_id).array_value_num('header_index'));
74374       --
74375       --
74376 
74377       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
74378       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_67(Idx);
74379       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
74380       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_74(Idx);
74381       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
74382       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_75(Idx);
74383       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'PARTY_TYPE';
74384       l_rec_rev_acct_attrs.array_char_value(5)  := g_array_event(l_event_id).array_value_char('source_39');
74385       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'REVERSED_DISTRIBUTION_ID1';
74386       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_83(Idx);
74387       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'REVERSED_DISTRIBUTION_TYPE';
74388       l_rec_rev_acct_attrs.array_char_value(7)  := l_array_source_84(Idx);
74389 
74390 
74391       xla_ae_lines_pkg.SetAcctReversalAttrs
74392          (p_event_id             => l_event_id
74393          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
74394          ,p_calculate_acctd_flag => l_calculate_acctd_flag
74395          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
74396    END IF;
74397 
74398    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
74399        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
74400 
74401 --
74402 AcctLineType_70 (
74403  p_application_id  => p_application_id
74404  ,p_event_id     => l_event_id
74405  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74406  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74407  ,p_actual_flag => l_actual_flag
74408  ,p_balance_type_code => l_balance_type_code
74409  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74410  
74411  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
74412  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
74413  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
74414  , p_source_7 => l_array_source_7(Idx)
74415  , p_source_7_meaning => l_array_source_7_meaning(Idx)
74416  , p_source_15 => l_array_source_15(Idx)
74417  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
74418  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
74419  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
74420  , p_source_66 => l_array_source_66(Idx)
74421  , p_source_66_meaning => l_array_source_66_meaning(Idx)
74422  , p_source_67 => l_array_source_67(Idx)
74423  , p_source_67_meaning => l_array_source_67_meaning(Idx)
74424  , p_source_69 => l_array_source_69(Idx)
74425  , p_source_71 => l_array_source_71(Idx)
74426  , p_source_72 => l_array_source_72(Idx)
74427  , p_source_73 => l_array_source_73(Idx)
74428  , p_source_74 => l_array_source_74(Idx)
74429  , p_source_75 => l_array_source_75(Idx)
74430  , p_source_76 => l_array_source_76(Idx)
74431  , p_source_77 => l_array_source_77(Idx)
74432  , p_source_78 => l_array_source_78(Idx)
74433  , p_source_79 => l_array_source_79(Idx)
74434  , p_source_80 => l_array_source_80(Idx)
74435  , p_source_81 => l_array_source_81(Idx)
74436  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
74437  , p_source_83 => l_array_source_83(Idx)
74438  , p_source_84 => l_array_source_84(Idx)
74439  );
74440 If(l_balance_type_code = 'A') THEN
74441   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74442 END IF;
74443 
74444 --
74445 
74446 
74447 --
74448 AcctLineType_71 (
74449  p_application_id  => p_application_id
74450  ,p_event_id     => l_event_id
74451  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74452  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74453  ,p_actual_flag => l_actual_flag
74454  ,p_balance_type_code => l_balance_type_code
74455  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74456  
74457  , p_source_7 => l_array_source_7(Idx)
74458  , p_source_7_meaning => l_array_source_7_meaning(Idx)
74459  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
74460  , p_source_66 => l_array_source_66(Idx)
74461  , p_source_66_meaning => l_array_source_66_meaning(Idx)
74462  , p_source_67 => l_array_source_67(Idx)
74463  , p_source_67_meaning => l_array_source_67_meaning(Idx)
74464  , p_source_69 => l_array_source_69(Idx)
74465  , p_source_71 => l_array_source_71(Idx)
74466  , p_source_72 => l_array_source_72(Idx)
74467  , p_source_73 => l_array_source_73(Idx)
74468  , p_source_74 => l_array_source_74(Idx)
74469  , p_source_75 => l_array_source_75(Idx)
74470  , p_source_76 => l_array_source_76(Idx)
74471  , p_source_77 => l_array_source_77(Idx)
74472  , p_source_81 => l_array_source_81(Idx)
74473  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
74474  , p_source_83 => l_array_source_83(Idx)
74475  , p_source_84 => l_array_source_84(Idx)
74476  , p_source_85 => l_array_source_85(Idx)
74477  , p_source_85_meaning => l_array_source_85_meaning(Idx)
74478  );
74479 If(l_balance_type_code = 'A') THEN
74480   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74481 END IF;
74482 
74483 --
74484 
74485 
74486 --
74487 AcctLineType_72 (
74488  p_application_id  => p_application_id
74489  ,p_event_id     => l_event_id
74490  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74491  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74492  ,p_actual_flag => l_actual_flag
74493  ,p_balance_type_code => l_balance_type_code
74497  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
74494  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74495  
74496  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
74498  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
74499  , p_source_7 => l_array_source_7(Idx)
74500  , p_source_7_meaning => l_array_source_7_meaning(Idx)
74501  , p_source_17 => l_array_source_17(Idx)
74502  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
74503  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
74504  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
74505  , p_source_66 => l_array_source_66(Idx)
74506  , p_source_66_meaning => l_array_source_66_meaning(Idx)
74507  , p_source_67 => l_array_source_67(Idx)
74508  , p_source_67_meaning => l_array_source_67_meaning(Idx)
74509  , p_source_69 => l_array_source_69(Idx)
74510  , p_source_71 => l_array_source_71(Idx)
74511  , p_source_72 => l_array_source_72(Idx)
74512  , p_source_73 => l_array_source_73(Idx)
74513  , p_source_74 => l_array_source_74(Idx)
74514  , p_source_75 => l_array_source_75(Idx)
74515  , p_source_76 => l_array_source_76(Idx)
74516  , p_source_77 => l_array_source_77(Idx)
74517  , p_source_78 => l_array_source_78(Idx)
74518  , p_source_79 => l_array_source_79(Idx)
74519  , p_source_80 => l_array_source_80(Idx)
74520  , p_source_81 => l_array_source_81(Idx)
74521  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
74522  , p_source_83 => l_array_source_83(Idx)
74523  , p_source_84 => l_array_source_84(Idx)
74524  , p_source_85 => l_array_source_85(Idx)
74525  , p_source_85_meaning => l_array_source_85_meaning(Idx)
74526  );
74527 If(l_balance_type_code = 'A') THEN
74528   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74529 END IF;
74530 
74531 --
74532 
74533 
74534 --
74535 AcctLineType_73 (
74536  p_application_id  => p_application_id
74537  ,p_event_id     => l_event_id
74538  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74539  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74540  ,p_actual_flag => l_actual_flag
74541  ,p_balance_type_code => l_balance_type_code
74542  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74543  
74544  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
74545  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
74546  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
74547  , p_source_7 => l_array_source_7(Idx)
74548  , p_source_7_meaning => l_array_source_7_meaning(Idx)
74549  , p_source_18 => l_array_source_18(Idx)
74550  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
74551  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
74552  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
74553  , p_source_66 => l_array_source_66(Idx)
74554  , p_source_66_meaning => l_array_source_66_meaning(Idx)
74555  , p_source_67 => l_array_source_67(Idx)
74556  , p_source_67_meaning => l_array_source_67_meaning(Idx)
74557  , p_source_69 => l_array_source_69(Idx)
74558  , p_source_71 => l_array_source_71(Idx)
74559  , p_source_72 => l_array_source_72(Idx)
74560  , p_source_73 => l_array_source_73(Idx)
74561  , p_source_74 => l_array_source_74(Idx)
74562  , p_source_75 => l_array_source_75(Idx)
74563  , p_source_76 => l_array_source_76(Idx)
74564  , p_source_77 => l_array_source_77(Idx)
74565  , p_source_78 => l_array_source_78(Idx)
74566  , p_source_79 => l_array_source_79(Idx)
74567  , p_source_80 => l_array_source_80(Idx)
74568  , p_source_81 => l_array_source_81(Idx)
74569  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
74570  , p_source_83 => l_array_source_83(Idx)
74571  , p_source_84 => l_array_source_84(Idx)
74572  );
74573 If(l_balance_type_code = 'A') THEN
74574   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74575 END IF;
74576 
74577 --
74578 
74579 
74580 --
74581 AcctLineType_74 (
74582  p_application_id  => p_application_id
74583  ,p_event_id     => l_event_id
74584  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74585  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74586  ,p_actual_flag => l_actual_flag
74587  ,p_balance_type_code => l_balance_type_code
74588  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74589  
74590  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
74591  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
74592  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
74593  , p_source_7 => l_array_source_7(Idx)
74594  , p_source_7_meaning => l_array_source_7_meaning(Idx)
74595  , p_source_20 => l_array_source_20(Idx)
74596  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
74597  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
74598  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
74599  , p_source_66 => l_array_source_66(Idx)
74600  , p_source_66_meaning => l_array_source_66_meaning(Idx)
74601  , p_source_67 => l_array_source_67(Idx)
74602  , p_source_67_meaning => l_array_source_67_meaning(Idx)
74603  , p_source_69 => l_array_source_69(Idx)
74604  , p_source_71 => l_array_source_71(Idx)
74605  , p_source_72 => l_array_source_72(Idx)
74606  , p_source_73 => l_array_source_73(Idx)
74607  , p_source_74 => l_array_source_74(Idx)
74608  , p_source_75 => l_array_source_75(Idx)
74609  , p_source_76 => l_array_source_76(Idx)
74610  , p_source_77 => l_array_source_77(Idx)
74611  , p_source_78 => l_array_source_78(Idx)
74612  , p_source_79 => l_array_source_79(Idx)
74613  , p_source_80 => l_array_source_80(Idx)
74614  , p_source_81 => l_array_source_81(Idx)
74615  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
74616  , p_source_83 => l_array_source_83(Idx)
74617  , p_source_84 => l_array_source_84(Idx)
74618  , p_source_85 => l_array_source_85(Idx)
74622   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74619  , p_source_85_meaning => l_array_source_85_meaning(Idx)
74620  );
74621 If(l_balance_type_code = 'A') THEN
74623 END IF;
74624 
74625 --
74626 
74627 
74628 --
74629 AcctLineType_75 (
74630  p_application_id  => p_application_id
74631  ,p_event_id     => l_event_id
74632  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74633  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74634  ,p_actual_flag => l_actual_flag
74635  ,p_balance_type_code => l_balance_type_code
74636  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74637  
74638  , p_source_7 => l_array_source_7(Idx)
74639  , p_source_7_meaning => l_array_source_7_meaning(Idx)
74640  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
74641  , p_source_66 => l_array_source_66(Idx)
74642  , p_source_66_meaning => l_array_source_66_meaning(Idx)
74643  , p_source_67 => l_array_source_67(Idx)
74644  , p_source_67_meaning => l_array_source_67_meaning(Idx)
74645  , p_source_69 => l_array_source_69(Idx)
74646  , p_source_71 => l_array_source_71(Idx)
74647  , p_source_72 => l_array_source_72(Idx)
74648  , p_source_73 => l_array_source_73(Idx)
74649  , p_source_74 => l_array_source_74(Idx)
74650  , p_source_75 => l_array_source_75(Idx)
74651  , p_source_76 => l_array_source_76(Idx)
74652  , p_source_77 => l_array_source_77(Idx)
74653  , p_source_81 => l_array_source_81(Idx)
74654  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
74655  , p_source_83 => l_array_source_83(Idx)
74656  , p_source_84 => l_array_source_84(Idx)
74657  , p_source_85 => l_array_source_85(Idx)
74658  , p_source_85_meaning => l_array_source_85_meaning(Idx)
74659  );
74660 If(l_balance_type_code = 'A') THEN
74661   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74662 END IF;
74663 
74664 --
74665 
74666 
74667 --
74668 AcctLineType_76 (
74669  p_application_id  => p_application_id
74670  ,p_event_id     => l_event_id
74671  ,p_calculate_acctd_flag => l_calculate_acctd_flag
74672  ,p_calculate_g_l_flag => l_calculate_g_l_flag
74673  ,p_actual_flag => l_actual_flag
74674  ,p_balance_type_code => l_balance_type_code
74675  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
74676  
74677  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
74678  , p_source_5 => g_array_event(l_event_id).array_value_num('source_5')
74679  , p_source_6 => g_array_event(l_event_id).array_value_char('source_6')
74680  , p_source_7 => l_array_source_7(Idx)
74681  , p_source_7_meaning => l_array_source_7_meaning(Idx)
74682  , p_source_21 => l_array_source_21(Idx)
74683  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
74684  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
74685  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
74686  , p_source_66 => l_array_source_66(Idx)
74687  , p_source_66_meaning => l_array_source_66_meaning(Idx)
74688  , p_source_67 => l_array_source_67(Idx)
74689  , p_source_67_meaning => l_array_source_67_meaning(Idx)
74690  , p_source_69 => l_array_source_69(Idx)
74691  , p_source_71 => l_array_source_71(Idx)
74692  , p_source_72 => l_array_source_72(Idx)
74693  , p_source_73 => l_array_source_73(Idx)
74694  , p_source_74 => l_array_source_74(Idx)
74695  , p_source_75 => l_array_source_75(Idx)
74696  , p_source_76 => l_array_source_76(Idx)
74697  , p_source_77 => l_array_source_77(Idx)
74698  , p_source_78 => l_array_source_78(Idx)
74699  , p_source_79 => l_array_source_79(Idx)
74700  , p_source_80 => l_array_source_80(Idx)
74701  , p_source_81 => l_array_source_81(Idx)
74702  , p_source_82 => g_array_event(l_event_id).array_value_num('source_82')
74703  , p_source_83 => l_array_source_83(Idx)
74704  , p_source_84 => l_array_source_84(Idx)
74705  );
74706 If(l_balance_type_code = 'A') THEN
74707   l_actual_gain_loss_ref := l_gain_or_loss_ref;
74708 END IF;
74709 
74710 --
74711 
74712       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
74713       -- or secondary ledger that has different currency with primary
74714       -- or alc that is calculated by sla
74715       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
74716             (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'))
74717 
74718 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
74719 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
74720           AND (l_actual_flag = 'A')) THEN
74721         XLA_AE_LINES_PKG.CreateGainOrLossLines(
74722           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
74723          ,p_application_id   => p_application_id
74724          ,p_amb_context_code => 'DEFAULT'
74725          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
74726          ,p_event_class_code => C_EVENT_CLASS_CODE
74727          ,p_event_type_code  => C_EVENT_TYPE_CODE
74728          
74729          ,p_gain_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_113'))
74730          ,p_loss_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_114'))
74731 
74732          ,p_actual_flag      => l_actual_flag
74733          ,p_enc_flag         => null
74734          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
74735          ,p_enc_g_l_ref      => null
74736          );
74737       END IF;
74738    END IF;
74739 END IF;
74740 
74741    ELSE
74742       --
74743       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
74744       --
74745       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74746          trace
74747             (p_msg      => 'Trancaction revesal option is Y'
74748             ,p_level    => C_LEVEL_STATEMENT
74752 
74749             ,p_module   => l_log_module);
74750       END IF;
74751    END IF;
74753 END LOOP;
74754 l_result := XLA_AE_LINES_PKG.InsertLines ;
74755 end loop;
74756 close line_cur;
74757 
74758 
74759 --
74760 -- insert headers into xla_ae_headers_gt table
74761 --
74762 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
74763 
74764 -- insert into errors table here.
74765 
74766 END LOOP;
74767 
74768 --
74769 -- 4865292
74770 --
74771 -- Compare g_hdr_extract_count with event count in
74772 -- CreateHeadersAndLines.
74773 --
74774 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
74775 
74776 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74777    trace (p_msg     => '# rows extracted from header extract objects '
74778                     || ' (running total): '
74779                     || g_hdr_extract_count
74780          ,p_level   => C_LEVEL_STATEMENT
74781          ,p_module  => l_log_module);
74782 END IF;
74783 
74784 CLOSE header_cur;
74785 --
74786 
74787 --
74788 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74789    trace
74790       (p_msg      => 'END of EventClass_133'
74791       ,p_level    => C_LEVEL_PROCEDURE
74792       ,p_module   => l_log_module);
74793 END IF;
74794 --
74795 RETURN l_result;
74796 EXCEPTION
74797 WHEN xla_exceptions_pkg.application_exception THEN
74798    
74799 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
74800 
74801    
74802 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
74803 
74804    RAISE;
74805 
74806 WHEN NO_DATA_FOUND THEN
74807 
74808 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
74809 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
74810 
74811 FOR header_record IN header_cur
74812 LOOP
74813     l_array_header_events(header_record.event_id) := header_record.event_id;
74814 END LOOP;
74815 
74816 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
74817 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
74818 
74819 fnd_file.put_line(fnd_file.LOG, '                    ');
74820 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
74821 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
74822 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
74823 
74824 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
74825 LOOP
74826 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
74827 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
74828         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
74829 	END IF;
74830 END LOOP;
74831 
74832 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
74833 fnd_file.put_line(fnd_file.LOG, '                    ');
74834 
74835 
74836 xla_exceptions_pkg.raise_message
74837       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_133');
74838 
74839 
74840 WHEN OTHERS THEN
74841    xla_exceptions_pkg.raise_message
74842       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_133');
74843 END EventClass_133;
74844 --
74845 
74846 ---------------------------------------
74847 --
74848 -- PRIVATE PROCEDURE
74849 --         insert_sources_134
74850 --
74851 ----------------------------------------
74852 --
74853 PROCEDURE insert_sources_134(
74854                                 p_target_ledger_id       IN NUMBER
74855                               , p_language               IN VARCHAR2
74856                               , p_sla_ledger_id          IN NUMBER
74857                               , p_pad_start_date         IN DATE
74858                               , p_pad_end_date           IN DATE
74859                          )
74860 IS
74861 
74862 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'GUARANTEE_ALL';
74863 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'GUARANTEE';
74864 p_apps_owner                   VARCHAR2(30);
74865 l_log_module                   VARCHAR2(240);
74866 BEGIN
74867 IF g_log_enabled THEN
74868       l_log_module := C_DEFAULT_MODULE||'.insert_sources_134';
74869 END IF;
74870 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74871 
74872       trace
74873          (p_msg      => 'BEGIN of insert_sources_134'
74874          ,p_level    => C_LEVEL_PROCEDURE
74875          ,p_module   => l_log_module);
74876 
74877 END IF;
74878 
74879 -- select APPS owner
74880 SELECT oracle_username
74881   INTO p_apps_owner
74882   FROM fnd_oracle_userid
74883  WHERE read_only_flag = 'U'
74884 ;
74885 
74886 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74887       trace
74888          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
74889                         ' - p_language = '||p_language||
74890                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
74891                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
74892                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
74893                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
74894          ,p_level    => C_LEVEL_STATEMENT
74895          ,p_module   => l_log_module);
74896 END IF;
74897 
74898 
74899 --
74900 INSERT INTO xla_diag_sources --hdr2
74901 (
74902         event_id
74903       , ledger_id
74904       , sla_ledger_id
74905       , description_language
74906       , object_name
74907       , object_type_code
74908       , line_number
74909       , source_application_id
74910       , source_type_code
74914       , created_by
74911       , source_code
74912       , source_value
74913       , source_meaning
74915       , creation_date
74916       , last_update_date
74917       , last_updated_by
74918       , last_update_login
74919       , program_update_date
74920       , program_application_id
74921       , program_id
74922       , request_id
74923 )
74924 SELECT
74925         event_id
74926       , p_target_ledger_id
74927       , p_sla_ledger_id
74928       , p_language
74929       , object_name
74930       , object_type_code
74931       , line_number
74932       , source_application_id
74933       , source_type_code
74934       , source_code
74935       , SUBSTR(source_value ,1,1996)
74936       , SUBSTR(source_meaning ,1,200)
74937       , xla_environment_pkg.g_Usr_Id
74938       , TRUNC(SYSDATE)
74939       , TRUNC(SYSDATE)
74940       , xla_environment_pkg.g_Usr_Id
74941       , xla_environment_pkg.g_Login_Id
74942       , TRUNC(SYSDATE)
74943       , xla_environment_pkg.g_Prog_Appl_Id
74944       , xla_environment_pkg.g_Prog_Id
74945       , xla_environment_pkg.g_Req_Id
74946   FROM (
74947        SELECT xet.event_id                  event_id
74948             , 0                          line_number
74949             , CASE r
74950                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
74951                 WHEN 2 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
74952                 WHEN 3 THEN 'AR_BILL_TO_SITE_USES_S_V' 
74953                 WHEN 4 THEN 'AR_TRANSACTIONS_S_V' 
74954                 WHEN 5 THEN 'AR_TRANSACTIONS_S_V' 
74955                 WHEN 6 THEN 'AR_TRANSACTIONS_S_V' 
74956                 WHEN 7 THEN 'AR_TRANSACTIONS_S_V' 
74957                 
74958                ELSE null
74959               END                           object_name
74960             , CASE r
74961                 WHEN 1 THEN 'HEADER' 
74962                 WHEN 2 THEN 'HEADER' 
74963                 WHEN 3 THEN 'HEADER' 
74964                 WHEN 4 THEN 'HEADER' 
74965                 WHEN 5 THEN 'HEADER' 
74966                 WHEN 6 THEN 'HEADER' 
74967                 WHEN 7 THEN 'HEADER' 
74968                 
74969                 ELSE null
74970               END                           object_type_code
74971             , CASE r
74972                 WHEN 1 THEN '222' 
74973                 WHEN 2 THEN '222' 
74974                 WHEN 3 THEN '222' 
74975                 WHEN 4 THEN '222' 
74976                 WHEN 5 THEN '222' 
74977                 WHEN 6 THEN '222' 
74978                 WHEN 7 THEN '222' 
74979                 
74980                 ELSE null
74981               END                           source_application_id
74982             , 'S'             source_type_code
74983             , CASE r
74984                 WHEN 1 THEN 'TRX_DOC_SEQUENCE_VALUE' 
74985                 WHEN 2 THEN 'BILL_CUST_ACCOUNT_ID' 
74986                 WHEN 3 THEN 'BILL_USES_SITE_USE_ID' 
74987                 WHEN 4 THEN 'XLA_PARTY_TYPE' 
74988                 WHEN 5 THEN 'TRX_INVOICE_CURRENCY_CODE' 
74989                 WHEN 6 THEN 'TRX_DOC_SEQUENCE_CATEGORY' 
74990                 WHEN 7 THEN 'TRX_DOC_SEQUENCE_ID' 
74991                 
74992                 ELSE null
74993               END                           source_code
74994             , CASE r
74995                 WHEN 1 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_VALUE)
74996                 WHEN 2 THEN TO_CHAR(h1.BILL_CUST_ACCOUNT_ID)
74997                 WHEN 3 THEN TO_CHAR(h2.BILL_USES_SITE_USE_ID)
74998                 WHEN 4 THEN TO_CHAR(h5.XLA_PARTY_TYPE)
74999                 WHEN 5 THEN TO_CHAR(h5.TRX_INVOICE_CURRENCY_CODE)
75000                 WHEN 6 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_CATEGORY)
75001                 WHEN 7 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_ID)
75002                 
75003                 ELSE null
75004               END                           source_value
75005             , null              source_meaning
75006          FROM xla_events_gt     xet  
75007       , AR_BILL_TO_CUSTOMERS_S_V  h1
75008       , AR_BILL_TO_SITE_USES_S_V  h2
75009       , AR_TRANSACTIONS_S_V  h5
75010              ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
75011          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
75012            AND xet.event_class_code = C_EVENT_CLASS_CODE
75013               AND h1.event_id = xet.event_id
75014   AND h2.event_id  = h1.event_id
75015   AND h5.event_id  = h1.event_id
75016 
75017 )
75018 ;
75019 --
75020 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75021 
75022       trace
75023          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
75024          ,p_level    => C_LEVEL_STATEMENT
75025          ,p_module   => l_log_module);
75026 
75027 END IF;
75028 --
75029 
75030 
75031 
75032 --
75033 INSERT INTO xla_diag_sources  --line2
75034 (
75035         event_id
75036       , ledger_id
75037       , sla_ledger_id
75038       , description_language
75039       , object_name
75040       , object_type_code
75041       , line_number
75042       , source_application_id
75043       , source_type_code
75044       , source_code
75045       , source_value
75046       , source_meaning
75047       , created_by
75048       , creation_date
75049       , last_update_date
75050       , last_updated_by
75051       , last_update_login
75052       , program_update_date
75053       , program_application_id
75054       , program_id
75055       , request_id
75056 )
75057 SELECT  event_id
75058       , p_target_ledger_id
75059       , p_sla_ledger_id
75060       , p_language
75061       , object_name
75062       , object_type_code
75063       , line_number
75064       , source_application_id
75068       , SUBSTR(source_meaning ,1,200)
75065       , source_type_code
75066       , source_code
75067       , SUBSTR(source_value,1,1996)
75069       , xla_environment_pkg.g_Usr_Id
75070       , TRUNC(SYSDATE)
75071       , TRUNC(SYSDATE)
75072       , xla_environment_pkg.g_Usr_Id
75073       , xla_environment_pkg.g_Login_Id
75074       , TRUNC(SYSDATE)
75075       , xla_environment_pkg.g_Prog_Appl_Id
75076       , xla_environment_pkg.g_Prog_Id
75077       , xla_environment_pkg.g_Req_Id
75078   FROM (
75079        SELECT xet.event_id                  event_id
75080             , l4.line_number                 line_number
75081             , CASE r
75082                WHEN 1 THEN 'AR_CUST_TRX_LINES_L_V' 
75083                 WHEN 2 THEN 'AR_CUST_TRX_LINES_L_V' 
75084                 WHEN 3 THEN 'AR_CUST_TRX_LINES_L_V' 
75085                 WHEN 4 THEN 'AR_CUST_TRX_LINES_L_V' 
75086                 WHEN 5 THEN 'AR_CUST_TRX_LINES_L_V' 
75087                 WHEN 6 THEN 'AR_CUST_TRX_LINES_BASE_V' 
75088                 WHEN 7 THEN 'AR_CUST_TRX_LINES_BASE_V' 
75089                 WHEN 8 THEN 'AR_CUST_TRX_LINES_BASE_V' 
75090                 WHEN 9 THEN 'AR_CUST_TRX_LINES_BASE_V' 
75091                 
75092                ELSE null
75093               END                           object_name
75094             , CASE r
75095                 WHEN 1 THEN 'LINE' 
75096                 WHEN 2 THEN 'LINE' 
75097                 WHEN 3 THEN 'LINE' 
75098                 WHEN 4 THEN 'LINE' 
75099                 WHEN 5 THEN 'LINE' 
75100                 WHEN 6 THEN 'LINE' 
75101                 WHEN 7 THEN 'LINE' 
75102                 WHEN 8 THEN 'LINE' 
75103                 WHEN 9 THEN 'LINE' 
75104                 
75105                 ELSE null
75106               END                           object_type_code
75107             , CASE r
75108                 WHEN 1 THEN '222' 
75109                 WHEN 2 THEN '222' 
75110                 WHEN 3 THEN '222' 
75111                 WHEN 4 THEN '222' 
75112                 WHEN 5 THEN '222' 
75113                 WHEN 6 THEN '222' 
75114                 WHEN 7 THEN '222' 
75115                 WHEN 8 THEN '222' 
75116                 WHEN 9 THEN '222' 
75117                 
75118                 ELSE null
75119               END                           source_application_id
75120             , 'S'             source_type_code
75121             , CASE r
75122                 WHEN 1 THEN 'TRX_LINE_DIST_CCID' 
75123                 WHEN 2 THEN 'TRX_LINE_DIST_ACCOUNT_CLASS' 
75124                 WHEN 3 THEN 'TRX_LINE_DIST_ID' 
75125                 WHEN 4 THEN 'TRX_DISTRIBUTION_TYPE' 
75126                 WHEN 5 THEN 'TRX_LINE_DIST_AMT' 
75127                 WHEN 6 THEN 'TRX_LINE_CUR_CONVERSION_DATE' 
75128                 WHEN 7 THEN 'TRX_LINE_CUR_CONVERSION_RATE' 
75129                 WHEN 8 THEN 'TRX_LINE_CUR_CONVERSION_TYPE' 
75130                 WHEN 9 THEN 'TRX_LINE_ACCTD_AMT' 
75131                 
75132                 ELSE null
75133               END                           source_code
75134             , CASE r
75135                 WHEN 1 THEN TO_CHAR(l4.TRX_LINE_DIST_CCID)
75136                 WHEN 2 THEN TO_CHAR(l4.TRX_LINE_DIST_ACCOUNT_CLASS)
75137                 WHEN 3 THEN TO_CHAR(l4.TRX_LINE_DIST_ID)
75138                 WHEN 4 THEN TO_CHAR(l4.TRX_DISTRIBUTION_TYPE)
75139                 WHEN 5 THEN TO_CHAR(l4.TRX_LINE_DIST_AMT)
75140                 WHEN 6 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_DATE)
75141                 WHEN 7 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_RATE)
75142                 WHEN 8 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_TYPE)
75143                 WHEN 9 THEN TO_CHAR(l3.TRX_LINE_ACCTD_AMT)
75144                 
75145                 ELSE null
75146               END                           source_value
75147             , null              source_meaning
75148          FROM  xla_events_gt     xet  
75149         , AR_CUST_TRX_LINES_BASE_V  l3
75150         , AR_CUST_TRX_LINES_L_V  l4
75151             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
75152         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
75153           AND xet.event_class_code = C_EVENT_CLASS_CODE
75154             AND l3.event_id          = xet.event_id
75155   AND l4.event_id    = l3.event_id
75156   AND l4.line_number = l3.line_number
75157 
75158 )
75159 ;
75160 --
75161 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75162 
75163       trace
75164          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
75165          ,p_level    => C_LEVEL_STATEMENT
75166          ,p_module   => l_log_module);
75167 
75168 END IF;
75169 
75170 
75171 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75172       trace
75173          (p_msg      => 'END of insert_sources_134'
75174          ,p_level    => C_LEVEL_PROCEDURE
75175          ,p_module   => l_log_module);
75176 END IF;
75177 EXCEPTION
75178   WHEN xla_exceptions_pkg.application_exception THEN
75179       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
75180             trace
75181                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
75182                ,p_level    => C_LEVEL_EXCEPTION
75183                ,p_module   => l_log_module);
75184       END IF;
75185       RAISE;
75186   WHEN OTHERS THEN
75187       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
75188             trace
75189                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
75190                ,p_level    => C_LEVEL_EXCEPTION
75191                ,p_module   => l_log_module);
75192        END IF;
75193        xla_exceptions_pkg.raise_message
75194            (p_location => 'XLA_00222_AAD_S_000017_PKG.insert_sources_134');
75195 END insert_sources_134;
75196 --
75197 
75198 ---------------------------------------
75199 --
75203 ----------------------------------------
75200 -- PRIVATE FUNCTION
75201 --         EventClass_134
75202 --
75204 --
75205 FUNCTION EventClass_134
75206        (p_application_id         IN NUMBER
75207        ,p_base_ledger_id         IN NUMBER
75208        ,p_target_ledger_id       IN NUMBER
75209        ,p_language               IN VARCHAR2
75210        ,p_currency_code          IN VARCHAR2
75211        ,p_sla_ledger_id          IN NUMBER
75212        ,p_pad_start_date         IN DATE
75213        ,p_pad_end_date           IN DATE
75214        ,p_primary_ledger_id      IN NUMBER)
75215 RETURN BOOLEAN IS
75216 --
75217 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'GUARANTEE_ALL';
75218 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'GUARANTEE';
75219 
75220 l_calculate_acctd_flag   VARCHAR2(1) :='N';
75221 l_calculate_g_l_flag     VARCHAR2(1) :='N';
75222 --
75223 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75224 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75225 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
75226 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75227 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75228 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
75229 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
75230 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75231 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75232 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75233 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75234 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75235 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75236 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
75237 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75238 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75239 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75240 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
75241 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75242 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75243 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75244 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
75245 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
75246 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
75247 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
75248 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
75249 
75250 l_event_id                             NUMBER;
75251 l_previous_event_id                    NUMBER;
75252 l_first_event_id                       NUMBER;
75253 l_last_event_id                        NUMBER;
75254 
75255 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
75256 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
75257 --
75258 --
75259 l_result                    BOOLEAN := TRUE;
75260 l_rows                      NUMBER  := 1000;
75261 l_event_type_name           VARCHAR2(80) := 'All';
75262 l_event_class_name          VARCHAR2(80) := 'Guarantee';
75263 l_description               VARCHAR2(4000);
75264 l_transaction_reversal      NUMBER;
75265 l_ae_header_id              NUMBER;
75266 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
75267 l_log_module                VARCHAR2(240);
75268 --
75269 l_acct_reversal_source      VARCHAR2(30);
75270 l_trx_reversal_source       VARCHAR2(30);
75271 
75272 l_continue_with_lines       BOOLEAN := TRUE;
75273 --
75274 l_acc_rev_gl_date_source    DATE;                      -- 4262811
75275 --
75276 type t_array_event_id is table of number index by binary_integer;
75277 
75278 l_rec_array_event                    t_rec_array_event;
75279 l_null_rec_array_event               t_rec_array_event;
75280 l_array_ae_header_id                 xla_number_array_type;
75281 l_actual_flag                        VARCHAR2(1) := NULL;
75282 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
75283 l_balance_type_code                  VARCHAR2(1) :=NULL;
75284 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
75285 
75286 --
75287 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
75288 --
75289 
75290 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
75291 TYPE t_array_source_37 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
75292 TYPE t_array_source_38 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
75293 TYPE t_array_source_39 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
75294 TYPE t_array_source_47 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
75295 TYPE t_array_source_111 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
75296 TYPE t_array_source_112 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
75297 
75298 TYPE t_array_source_26 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
75299 TYPE t_array_source_43 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ACCOUNT_CLASS%TYPE INDEX BY BINARY_INTEGER;
75300 TYPE t_array_source_44 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
75301 TYPE t_array_source_45 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
75302 TYPE t_array_source_46 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_AMT%TYPE INDEX BY BINARY_INTEGER;
75306 TYPE t_array_source_51 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
75303 TYPE t_array_source_48 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
75304 TYPE t_array_source_49 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
75305 TYPE t_array_source_50 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
75307 
75308 l_array_source_3              t_array_source_3;
75309 l_array_source_37              t_array_source_37;
75310 l_array_source_38              t_array_source_38;
75311 l_array_source_39              t_array_source_39;
75312 l_array_source_47              t_array_source_47;
75313 l_array_source_111              t_array_source_111;
75314 l_array_source_112              t_array_source_112;
75315 
75316 l_array_source_26      t_array_source_26;
75317 l_array_source_43      t_array_source_43;
75318 l_array_source_44      t_array_source_44;
75319 l_array_source_45      t_array_source_45;
75320 l_array_source_46      t_array_source_46;
75321 l_array_source_48      t_array_source_48;
75322 l_array_source_49      t_array_source_49;
75323 l_array_source_50      t_array_source_50;
75324 l_array_source_51      t_array_source_51;
75325 
75326 --
75327 CURSOR header_cur
75328 IS
75329 SELECT /*+ leading(xet) cardinality(xet,1) */
75330 -- Event Class Code: GUARANTEE
75331     xet.entity_id
75332    ,xet.legal_entity_id
75333    ,xet.entity_code
75334    ,xet.transaction_number
75335    ,xet.event_id
75336    ,xet.event_class_code
75337    ,xet.event_type_code
75338    ,xet.event_number
75339    ,xet.event_date
75340    ,xet.transaction_date
75341    ,xet.reference_num_1
75342    ,xet.reference_num_2
75343    ,xet.reference_num_3
75344    ,xet.reference_num_4
75345    ,xet.reference_char_1
75346    ,xet.reference_char_2
75347    ,xet.reference_char_3
75348    ,xet.reference_char_4
75349    ,xet.reference_date_1
75350    ,xet.reference_date_2
75351    ,xet.reference_date_3
75352    ,xet.reference_date_4
75353    ,xet.event_created_by
75354    ,xet.budgetary_control_flag 
75355   , h5.TRX_DOC_SEQUENCE_VALUE    source_3
75356   , h1.BILL_CUST_ACCOUNT_ID    source_37
75357   , h2.BILL_USES_SITE_USE_ID    source_38
75358   , h5.XLA_PARTY_TYPE    source_39
75359   , h5.TRX_INVOICE_CURRENCY_CODE    source_47
75360   , h5.TRX_DOC_SEQUENCE_CATEGORY    source_111
75361   , h5.TRX_DOC_SEQUENCE_ID    source_112
75362   FROM xla_events_gt     xet 
75363   , AR_BILL_TO_CUSTOMERS_S_V  h1
75364   , AR_BILL_TO_SITE_USES_S_V  h2
75365   , AR_TRANSACTIONS_S_V  h5
75366  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
75367    and xet.event_class_code = C_EVENT_CLASS_CODE
75368    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
75369   AND h2.event_id  = h1.event_id
75370   AND h5.event_id  = h1.event_id
75371 
75372  ORDER BY event_id
75373 ;
75374 
75375 
75376 --
75377 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
75378 IS
75379 SELECT  /*+ leading(xet) cardinality(xet,1) */
75380 -- Event Class Code: GUARANTEE
75381     xet.entity_id
75382    ,xet.legal_entity_id
75383    ,xet.entity_code
75384    ,xet.transaction_number
75385    ,xet.event_id
75386    ,xet.event_class_code
75387    ,xet.event_type_code
75388    ,xet.event_number
75389    ,xet.event_date
75390    ,xet.transaction_date
75391    ,xet.reference_num_1
75392    ,xet.reference_num_2
75393    ,xet.reference_num_3
75394    ,xet.reference_num_4
75395    ,xet.reference_char_1
75396    ,xet.reference_char_2
75397    ,xet.reference_char_3
75398    ,xet.reference_char_4
75399    ,xet.reference_date_1
75400    ,xet.reference_date_2
75401    ,xet.reference_date_3
75402    ,xet.reference_date_4
75403    ,xet.event_created_by
75404    ,xet.budgetary_control_flag
75405  , l3.LINE_NUMBER  
75406   , l4.TRX_LINE_DIST_CCID    source_26
75407   , l4.TRX_LINE_DIST_ACCOUNT_CLASS    source_43
75408   , l4.TRX_LINE_DIST_ID    source_44
75409   , l4.TRX_DISTRIBUTION_TYPE    source_45
75410   , l4.TRX_LINE_DIST_AMT    source_46
75411   , l3.TRX_LINE_CUR_CONVERSION_DATE    source_48
75412   , l3.TRX_LINE_CUR_CONVERSION_RATE    source_49
75413   , l3.TRX_LINE_CUR_CONVERSION_TYPE    source_50
75414   , l3.TRX_LINE_ACCTD_AMT    source_51
75415   FROM xla_events_gt     xet 
75416   , AR_CUST_TRX_LINES_BASE_V  l3
75417   , AR_CUST_TRX_LINES_L_V  l4
75418  WHERE xet.event_id between x_first_event_id and x_last_event_id
75419    and xet.event_date between p_pad_start_date and p_pad_end_date
75420    and xet.event_class_code = C_EVENT_CLASS_CODE
75421    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
75422   AND l4.event_id    = l3.event_id
75423   AND l4.line_number = l3.line_number
75424 ;
75425 
75426 --
75427 BEGIN
75428 IF g_log_enabled THEN
75429    l_log_module := C_DEFAULT_MODULE||'.EventClass_134';
75430 END IF;
75431 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75432    trace
75433       (p_msg      => 'BEGIN of EventClass_134'
75434       ,p_level    => C_LEVEL_PROCEDURE
75435       ,p_module   => l_log_module);
75436 END IF;
75437 
75438 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75439    trace
75440       (p_msg      => 'p_application_id = '||p_application_id||
75441                      ' - p_base_ledger_id = '||p_base_ledger_id||
75442                      ' - p_target_ledger_id  = '||p_target_ledger_id||
75443                      ' - p_language = '||p_language||
75444                      ' - p_currency_code = '||p_currency_code||
75445                      ' - p_sla_ledger_id = '||p_sla_ledger_id
75446       ,p_level    => C_LEVEL_STATEMENT
75447       ,p_module   => l_log_module);
75448 END IF;
75449 --
75453 l_rec_array_event := l_null_rec_array_event;
75450 -- initialze arrays
75451 --
75452 g_array_event.DELETE;
75454 --
75455 --------------------------------------
75456 -- 4262811 Initialze MPA Line Number
75457 --------------------------------------
75458 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
75459 
75460 --
75461 
75462 --
75463 OPEN header_cur;
75464 --
75465 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75466    trace
75467    (p_msg      => 'SQL - FETCH header_cur'
75468    ,p_level    => C_LEVEL_STATEMENT
75469    ,p_module   => l_log_module);
75470 END IF;
75471 --
75472 LOOP
75473 FETCH header_cur BULK COLLECT INTO
75474         l_array_entity_id
75475       , l_array_legal_entity_id
75476       , l_array_entity_code
75477       , l_array_transaction_num
75478       , l_array_event_id
75479       , l_array_class_code
75480       , l_array_event_type
75481       , l_array_event_number
75482       , l_array_event_date
75483       , l_array_transaction_date
75484       , l_array_reference_num_1
75485       , l_array_reference_num_2
75486       , l_array_reference_num_3
75487       , l_array_reference_num_4
75488       , l_array_reference_char_1
75489       , l_array_reference_char_2
75490       , l_array_reference_char_3
75491       , l_array_reference_char_4
75492       , l_array_reference_date_1
75493       , l_array_reference_date_2
75494       , l_array_reference_date_3
75495       , l_array_reference_date_4
75496       , l_array_event_created_by
75497       , l_array_budgetary_control_flag 
75498       , l_array_source_3
75499       , l_array_source_37
75500       , l_array_source_38
75501       , l_array_source_39
75502       , l_array_source_47
75503       , l_array_source_111
75504       , l_array_source_112
75505       LIMIT l_rows;
75506 --
75507 IF (C_LEVEL_EVENT >= g_log_level) THEN
75508    trace
75509    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
75510    ,p_level    => C_LEVEL_EVENT
75511    ,p_module   => l_log_module);
75512 END IF;
75513 --
75514 EXIT WHEN l_array_entity_id.COUNT = 0;
75515 
75516 -- initialize arrays
75517 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
75518 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
75519 
75520 --
75521 -- Bug 4458708
75522 --
75523 XLA_AE_LINES_PKG.g_LineNumber := 0;
75524 
75525 
75526 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
75527 g_last_hdr_idx := l_array_event_id.LAST;
75528 --
75529 -- loop for the headers. Each iteration is for each header extract row
75530 -- fetched in header cursor
75531 --
75532 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
75533 
75534 --
75535 -- set event info as cache for other routines to refer event attributes
75536 --
75537 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
75538    (p_application_id           => p_application_id
75539    ,p_primary_ledger_id        => p_primary_ledger_id
75540    ,p_base_ledger_id           => p_base_ledger_id
75541    ,p_target_ledger_id         => p_target_ledger_id
75542    ,p_entity_id                => l_array_entity_id(hdr_idx)
75543    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
75544    ,p_entity_code              => l_array_entity_code(hdr_idx)
75545    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
75546    ,p_event_id                 => l_array_event_id(hdr_idx)
75547    ,p_event_class_code         => l_array_class_code(hdr_idx)
75548    ,p_event_type_code          => l_array_event_type(hdr_idx)
75549    ,p_event_number             => l_array_event_number(hdr_idx)
75550    ,p_event_date               => l_array_event_date(hdr_idx)
75551    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
75552    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
75553    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
75554    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
75555    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
75556    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
75557    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
75558    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
75559    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
75560    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
75561    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
75562    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
75563    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
75564    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
75565    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
75566 
75567 --
75568 -- set the status of entry to C_VALID (0)
75569 --
75570 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
75571 
75572 --
75573 -- initialize a row for ae header
75574 --
75575 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
75576 
75577 l_event_id := l_array_event_id(hdr_idx);
75578 
75579 --
75580 -- storing the hdr_idx for event. May be used by line cursor.
75581 --
75582 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
75583 
75584 --
75585 -- store sources from header extract. This can be improved to
75586 -- store only those sources from header extract that may be used in lines
75587 --
75588 
75589 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
75590 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
75591 g_array_event(l_event_id).array_value_num('source_38') := l_array_source_38(hdr_idx);
75595 g_array_event(l_event_id).array_value_num('source_112') := l_array_source_112(hdr_idx);
75592 g_array_event(l_event_id).array_value_char('source_39') := l_array_source_39(hdr_idx);
75593 g_array_event(l_event_id).array_value_char('source_47') := l_array_source_47(hdr_idx);
75594 g_array_event(l_event_id).array_value_char('source_111') := l_array_source_111(hdr_idx);
75596 
75597 --
75598 -- initilaize the status of ae headers for diffrent balance types
75599 -- the status is initialised to C_NOT_CREATED (2)
75600 --
75601 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
75602 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
75603 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
75604 
75605 --
75606 -- call api to validate and store accounting attributes for header
75607 --
75608 
75609 ------------------------------------------------------------
75610 -- Accrual Reversal : to get date for Standard Source (NONE)
75611 ------------------------------------------------------------
75612 l_acc_rev_gl_date_source := NULL;
75613 
75614      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
75615       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_111');
75616      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
75617       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_112');
75618      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
75619       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_3');
75620      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
75621       l_rec_acct_attrs.array_date_value(4) := 
75622 xla_ae_sources_pkg.GetSystemSourceDate(
75623    p_source_code           => 'XLA_EVENT_DATE'
75624  , p_source_type_code      => 'Y'
75625  , p_source_application_id =>  602
75626 );
75627 
75628 
75629 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
75630 
75631 XLA_AE_HEADER_PKG.SetJeCategoryName;
75632 
75633 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
75634 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
75635 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
75636 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
75637 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
75638 
75639 
75640 -- No header level analytical criteria
75641 
75642 --
75643 --accounting attribute enhancement, bug 3612931
75644 --
75645 l_trx_reversal_source := SUBSTR(NULL, 1,30);
75646 
75647 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
75648    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
75649 
75650    xla_accounting_err_pkg.build_message
75651       (p_appli_s_name            => 'XLA'
75652       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
75653       ,p_token_1                 => 'ACCT_ATTR_NAME'
75654       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
75655       ,p_token_2                 => 'PRODUCT_NAME'
75656       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
75657       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
75658       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
75659       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
75660 
75661 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
75662    --
75663    -- following sets the accounting attributes needed to reverse
75664    -- accounting for a distributeion
75665    --
75666    xla_ae_lines_pkg.SetTrxReversalAttrs
75667       (p_event_id              => l_event_id
75668       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
75669       ,p_trx_reversal_source   => l_trx_reversal_source);
75670 
75671 END IF;
75672 
75673 
75674 ----------------------------------------------------------------
75675 -- 4262811 -  update the header statuses to invalid in need be
75676 ----------------------------------------------------------------
75677 --
75678 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
75679 
75680 
75681   -----------------------------------------------
75682   -- No accrual reversal for the event class/type
75683   -----------------------------------------------
75684 ----------------------------------------------------------------
75685 
75686 --
75687 -- this ends the header loop iteration for one bulk fetch
75688 --
75689 END LOOP;
75690 
75691 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
75692 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
75693 
75694 --
75695 -- insert dummy rows into lines gt table that were created due to
75696 -- transaction reversals
75697 --
75698 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
75699    l_result := XLA_AE_LINES_PKG.InsertLines;
75700 END IF;
75701 
75702 --
75703 -- reset the temp_line_num for each set of events fetched from header
75704 -- cursor rather than doing it for each new event in line cursor
75705 -- Bug 3939231
75706 --
75707 xla_ae_lines_pkg.g_temp_line_num := 0;
75708 
75709 
75710 
75711 --
75712 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
75713 --
75714 --
75715 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75716 
75717       trace
75718          (p_msg      => 'SQL - FETCH line_cur'
75719          ,p_level    => C_LEVEL_STATEMENT
75723 --
75720          ,p_module   => l_log_module);
75721 
75722 END IF;
75724 --
75725 LOOP
75726   --
75727   FETCH line_cur BULK COLLECT INTO
75728         l_array_entity_id
75729       , l_array_legal_entity_id
75730       , l_array_entity_code
75731       , l_array_transaction_num
75732       , l_array_event_id
75733       , l_array_class_code
75734       , l_array_event_type
75735       , l_array_event_number
75736       , l_array_event_date
75737       , l_array_transaction_date
75738       , l_array_reference_num_1
75739       , l_array_reference_num_2
75740       , l_array_reference_num_3
75741       , l_array_reference_num_4
75742       , l_array_reference_char_1
75743       , l_array_reference_char_2
75744       , l_array_reference_char_3
75745       , l_array_reference_char_4
75746       , l_array_reference_date_1
75747       , l_array_reference_date_2
75748       , l_array_reference_date_3
75749       , l_array_reference_date_4
75750       , l_array_event_created_by
75751       , l_array_budgetary_control_flag
75752       , l_array_extract_line_num 
75753       , l_array_source_26
75754       , l_array_source_43
75755       , l_array_source_44
75756       , l_array_source_45
75757       , l_array_source_46
75758       , l_array_source_48
75759       , l_array_source_49
75760       , l_array_source_50
75761       , l_array_source_51
75762       LIMIT l_rows;
75763 
75764   --
75765   IF (C_LEVEL_EVENT >= g_log_level) THEN
75766             trace
75767                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
75768                ,p_level    => C_LEVEL_EVENT
75769                ,p_module   => l_log_module);
75770   END IF;
75771   --
75772   EXIT WHEN l_array_entity_id.count = 0;
75773 
75774   XLA_AE_LINES_PKG.g_rec_lines := null;
75775 
75776 --
75777 -- Bug 4458708
75778 --
75779 XLA_AE_LINES_PKG.g_LineNumber := 0;
75780 --
75781 --
75782 
75783 FOR Idx IN 1..l_array_event_id.count LOOP
75784    --
75785    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
75786    --
75787    l_event_id := l_array_event_id(idx);  -- 5648433
75788 
75789    --
75790    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
75791    --
75792 
75793    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
75794              (g_array_event(l_event_id).array_value_num('header_index'))
75795          ,'N'
75796          ) <> 'Y'
75797    THEN
75798       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75799          trace
75800             (p_msg      => 'Trancaction revesal option is not Y '
75801             ,p_level    => C_LEVEL_STATEMENT
75802             ,p_module   => l_log_module);
75803       END IF;
75804 
75805 --
75806 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
75807 --
75808 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
75809 --
75810 -- set event info as cache for other routines to refer event attributes
75811 --
75812 
75813 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
75814    l_previous_event_id := l_event_id;
75815 
75816    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
75817       (p_application_id           => p_application_id
75818       ,p_primary_ledger_id        => p_primary_ledger_id
75819       ,p_base_ledger_id           => p_base_ledger_id
75820       ,p_target_ledger_id         => p_target_ledger_id
75821       ,p_entity_id                => l_array_entity_id(Idx)
75822       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
75823       ,p_entity_code              => l_array_entity_code(Idx)
75824       ,p_transaction_num          => l_array_transaction_num(Idx)
75825       ,p_event_id                 => l_array_event_id(Idx)
75826       ,p_event_class_code         => l_array_class_code(Idx)
75827       ,p_event_type_code          => l_array_event_type(Idx)
75828       ,p_event_number             => l_array_event_number(Idx)
75829       ,p_event_date               => l_array_event_date(Idx)
75830       ,p_transaction_date         => l_array_transaction_date(Idx)
75831       ,p_reference_num_1          => l_array_reference_num_1(Idx)
75832       ,p_reference_num_2          => l_array_reference_num_2(Idx)
75833       ,p_reference_num_3          => l_array_reference_num_3(Idx)
75834       ,p_reference_num_4          => l_array_reference_num_4(Idx)
75835       ,p_reference_char_1         => l_array_reference_char_1(Idx)
75836       ,p_reference_char_2         => l_array_reference_char_2(Idx)
75837       ,p_reference_char_3         => l_array_reference_char_3(Idx)
75838       ,p_reference_char_4         => l_array_reference_char_4(Idx)
75839       ,p_reference_date_1         => l_array_reference_date_1(Idx)
75840       ,p_reference_date_2         => l_array_reference_date_2(Idx)
75841       ,p_reference_date_3         => l_array_reference_date_3(Idx)
75842       ,p_reference_date_4         => l_array_reference_date_4(Idx)
75843       ,p_event_created_by         => l_array_event_created_by(Idx)
75844       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
75845        --
75846 END IF;
75847 
75848 
75849 
75850 --
75851 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
75852 
75853 l_acct_reversal_source := SUBSTR(NULL, 1,30);
75854 
75855 IF l_continue_with_lines THEN
75856    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
75857       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
75858 
75859       xla_accounting_err_pkg.build_message
75860          (p_appli_s_name            => 'XLA'
75861          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
75862          ,p_token_1                 => 'LINE_NUMBER'
75866          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
75863          ,p_value_1                 => l_array_extract_line_num(Idx)
75864          ,p_token_2                 => 'PRODUCT_NAME'
75865          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
75867          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
75868          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
75869 
75870    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
75871       --
75872       -- following sets the accounting attributes needed to reverse
75873       -- accounting for a distributeion
75874       --
75875 
75876       --
75877       -- 5217187
75878       --
75879       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
75880       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
75881                                        g_array_event(l_event_id).array_value_num('header_index'));
75882       --
75883       --
75884 
75885       -- No reversal code generated
75886 
75887       xla_ae_lines_pkg.SetAcctReversalAttrs
75888          (p_event_id             => l_event_id
75889          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
75890          ,p_calculate_acctd_flag => l_calculate_acctd_flag
75891          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
75892    END IF;
75893 
75894    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
75895        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
75896 
75897 --
75898 AcctLineType_77 (
75899  p_application_id  => p_application_id
75900  ,p_event_id     => l_event_id
75901  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75902  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75903  ,p_actual_flag => l_actual_flag
75904  ,p_balance_type_code => l_balance_type_code
75905  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75906  
75907  , p_source_26 => l_array_source_26(Idx)
75908  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
75909  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
75910  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
75911  , p_source_43 => l_array_source_43(Idx)
75912  , p_source_44 => l_array_source_44(Idx)
75913  , p_source_45 => l_array_source_45(Idx)
75914  , p_source_46 => l_array_source_46(Idx)
75915  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
75916  , p_source_48 => l_array_source_48(Idx)
75917  , p_source_49 => l_array_source_49(Idx)
75918  , p_source_50 => l_array_source_50(Idx)
75919  , p_source_51 => l_array_source_51(Idx)
75920  );
75921 If(l_balance_type_code = 'A') THEN
75922   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75923 END IF;
75924 
75925 --
75926 
75927 
75928 --
75929 AcctLineType_78 (
75930  p_application_id  => p_application_id
75931  ,p_event_id     => l_event_id
75932  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75933  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75934  ,p_actual_flag => l_actual_flag
75935  ,p_balance_type_code => l_balance_type_code
75936  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75937  
75938  , p_source_26 => l_array_source_26(Idx)
75939  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
75940  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
75941  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
75942  , p_source_43 => l_array_source_43(Idx)
75943  , p_source_44 => l_array_source_44(Idx)
75944  , p_source_45 => l_array_source_45(Idx)
75945  , p_source_46 => l_array_source_46(Idx)
75946  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
75947  , p_source_48 => l_array_source_48(Idx)
75948  , p_source_49 => l_array_source_49(Idx)
75949  , p_source_50 => l_array_source_50(Idx)
75950  , p_source_51 => l_array_source_51(Idx)
75951  );
75952 If(l_balance_type_code = 'A') THEN
75953   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75954 END IF;
75955 
75956 --
75957 
75958       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
75959       -- or secondary ledger that has different currency with primary
75960       -- or alc that is calculated by sla
75961       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
75962             (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'))
75963 
75964 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
75965 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
75966           AND (l_actual_flag = 'A')) THEN
75967         XLA_AE_LINES_PKG.CreateGainOrLossLines(
75968           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
75969          ,p_application_id   => p_application_id
75970          ,p_amb_context_code => 'DEFAULT'
75971          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
75972          ,p_event_class_code => C_EVENT_CLASS_CODE
75973          ,p_event_type_code  => C_EVENT_TYPE_CODE
75974          
75975          ,p_gain_ccid        => -1
75976          ,p_loss_ccid        => -1
75977 
75978          ,p_actual_flag      => l_actual_flag
75979          ,p_enc_flag         => null
75980          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
75981          ,p_enc_g_l_ref      => null
75982          );
75983       END IF;
75984    END IF;
75985 END IF;
75986 
75987    ELSE
75988       --
75989       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
75990       --
75991       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75992          trace
75996       END IF;
75993             (p_msg      => 'Trancaction revesal option is Y'
75994             ,p_level    => C_LEVEL_STATEMENT
75995             ,p_module   => l_log_module);
75997    END IF;
75998 
75999 END LOOP;
76000 l_result := XLA_AE_LINES_PKG.InsertLines ;
76001 end loop;
76002 close line_cur;
76003 
76004 
76005 --
76006 -- insert headers into xla_ae_headers_gt table
76007 --
76008 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
76009 
76010 -- insert into errors table here.
76011 
76012 END LOOP;
76013 
76014 --
76015 -- 4865292
76016 --
76017 -- Compare g_hdr_extract_count with event count in
76018 -- CreateHeadersAndLines.
76019 --
76020 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
76021 
76022 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76023    trace (p_msg     => '# rows extracted from header extract objects '
76024                     || ' (running total): '
76025                     || g_hdr_extract_count
76026          ,p_level   => C_LEVEL_STATEMENT
76027          ,p_module  => l_log_module);
76028 END IF;
76029 
76030 CLOSE header_cur;
76031 --
76032 
76033 --
76034 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76035    trace
76036       (p_msg      => 'END of EventClass_134'
76037       ,p_level    => C_LEVEL_PROCEDURE
76038       ,p_module   => l_log_module);
76039 END IF;
76040 --
76041 RETURN l_result;
76042 EXCEPTION
76043 WHEN xla_exceptions_pkg.application_exception THEN
76044    
76045 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
76046 
76047    
76048 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
76049 
76050    RAISE;
76051 
76052 WHEN NO_DATA_FOUND THEN
76053 
76054 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
76055 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
76056 
76057 FOR header_record IN header_cur
76058 LOOP
76059     l_array_header_events(header_record.event_id) := header_record.event_id;
76060 END LOOP;
76061 
76062 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
76063 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
76064 
76065 fnd_file.put_line(fnd_file.LOG, '                    ');
76066 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
76067 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
76068 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
76069 
76070 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
76071 LOOP
76072 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
76073 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
76074         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
76075 	END IF;
76076 END LOOP;
76077 
76078 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
76079 fnd_file.put_line(fnd_file.LOG, '                    ');
76080 
76081 
76082 xla_exceptions_pkg.raise_message
76083       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_134');
76084 
76085 
76086 WHEN OTHERS THEN
76087    xla_exceptions_pkg.raise_message
76088       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_134');
76089 END EventClass_134;
76090 --
76091 
76092 ---------------------------------------
76093 --
76094 -- PRIVATE PROCEDURE
76095 --         insert_sources_135
76096 --
76097 ----------------------------------------
76098 --
76099 PROCEDURE insert_sources_135(
76100                                 p_target_ledger_id       IN NUMBER
76101                               , p_language               IN VARCHAR2
76102                               , p_sla_ledger_id          IN NUMBER
76103                               , p_pad_start_date         IN DATE
76104                               , p_pad_end_date           IN DATE
76105                          )
76106 IS
76107 
76108 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVOICE_ALL';
76109 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INVOICE';
76110 p_apps_owner                   VARCHAR2(30);
76111 l_log_module                   VARCHAR2(240);
76112 BEGIN
76113 IF g_log_enabled THEN
76114       l_log_module := C_DEFAULT_MODULE||'.insert_sources_135';
76115 END IF;
76116 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76117 
76118       trace
76119          (p_msg      => 'BEGIN of insert_sources_135'
76120          ,p_level    => C_LEVEL_PROCEDURE
76121          ,p_module   => l_log_module);
76122 
76123 END IF;
76124 
76125 -- select APPS owner
76126 SELECT oracle_username
76127   INTO p_apps_owner
76128   FROM fnd_oracle_userid
76129  WHERE read_only_flag = 'U'
76130 ;
76131 
76132 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76133       trace
76134          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
76135                         ' - p_language = '||p_language||
76136                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
76137                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
76138                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
76139                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
76140          ,p_level    => C_LEVEL_STATEMENT
76141          ,p_module   => l_log_module);
76142 END IF;
76143 
76144 
76145 --
76146 INSERT INTO xla_diag_sources --hdr2
76147 (
76148         event_id
76149       , ledger_id
76150       , sla_ledger_id
76151       , description_language
76152       , object_name
76156       , source_type_code
76153       , object_type_code
76154       , line_number
76155       , source_application_id
76157       , source_code
76158       , source_value
76159       , source_meaning
76160       , created_by
76161       , creation_date
76162       , last_update_date
76163       , last_updated_by
76164       , last_update_login
76165       , program_update_date
76166       , program_application_id
76167       , program_id
76168       , request_id
76169 )
76170 SELECT
76171         event_id
76172       , p_target_ledger_id
76173       , p_sla_ledger_id
76174       , p_language
76175       , object_name
76176       , object_type_code
76177       , line_number
76178       , source_application_id
76179       , source_type_code
76180       , source_code
76181       , SUBSTR(source_value ,1,1996)
76182       , SUBSTR(source_meaning ,1,200)
76183       , xla_environment_pkg.g_Usr_Id
76184       , TRUNC(SYSDATE)
76185       , TRUNC(SYSDATE)
76186       , xla_environment_pkg.g_Usr_Id
76187       , xla_environment_pkg.g_Login_Id
76188       , TRUNC(SYSDATE)
76189       , xla_environment_pkg.g_Prog_Appl_Id
76190       , xla_environment_pkg.g_Prog_Id
76191       , xla_environment_pkg.g_Req_Id
76192   FROM (
76193        SELECT xet.event_id                  event_id
76194             , 0                          line_number
76195             , CASE r
76196                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
76197                 WHEN 2 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
76198                 WHEN 3 THEN 'AR_BILL_TO_SITE_USES_S_V' 
76199                 WHEN 4 THEN 'AR_TRANSACTIONS_S_V' 
76200                 WHEN 5 THEN 'AR_TRANSACTIONS_S_V' 
76201                 WHEN 6 THEN 'AR_TRANSACTIONS_S_V' 
76202                 WHEN 7 THEN 'AR_TRANSACTIONS_S_V' 
76203                 
76204                ELSE null
76205               END                           object_name
76206             , CASE r
76207                 WHEN 1 THEN 'HEADER' 
76208                 WHEN 2 THEN 'HEADER' 
76209                 WHEN 3 THEN 'HEADER' 
76210                 WHEN 4 THEN 'HEADER' 
76211                 WHEN 5 THEN 'HEADER' 
76212                 WHEN 6 THEN 'HEADER' 
76213                 WHEN 7 THEN 'HEADER' 
76214                 
76215                 ELSE null
76216               END                           object_type_code
76217             , CASE r
76218                 WHEN 1 THEN '222' 
76219                 WHEN 2 THEN '222' 
76220                 WHEN 3 THEN '222' 
76221                 WHEN 4 THEN '222' 
76222                 WHEN 5 THEN '222' 
76223                 WHEN 6 THEN '222' 
76224                 WHEN 7 THEN '222' 
76225                 
76226                 ELSE null
76227               END                           source_application_id
76228             , 'S'             source_type_code
76229             , CASE r
76230                 WHEN 1 THEN 'TRX_DOC_SEQUENCE_VALUE' 
76231                 WHEN 2 THEN 'BILL_CUST_ACCOUNT_ID' 
76232                 WHEN 3 THEN 'BILL_USES_SITE_USE_ID' 
76233                 WHEN 4 THEN 'XLA_PARTY_TYPE' 
76234                 WHEN 5 THEN 'TRX_INVOICE_CURRENCY_CODE' 
76235                 WHEN 6 THEN 'TRX_DOC_SEQUENCE_CATEGORY' 
76236                 WHEN 7 THEN 'TRX_DOC_SEQUENCE_ID' 
76237                 
76238                 ELSE null
76239               END                           source_code
76240             , CASE r
76241                 WHEN 1 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_VALUE)
76242                 WHEN 2 THEN TO_CHAR(h1.BILL_CUST_ACCOUNT_ID)
76243                 WHEN 3 THEN TO_CHAR(h2.BILL_USES_SITE_USE_ID)
76244                 WHEN 4 THEN TO_CHAR(h5.XLA_PARTY_TYPE)
76245                 WHEN 5 THEN TO_CHAR(h5.TRX_INVOICE_CURRENCY_CODE)
76246                 WHEN 6 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_CATEGORY)
76247                 WHEN 7 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_ID)
76248                 
76249                 ELSE null
76250               END                           source_value
76251             , null              source_meaning
76252          FROM xla_events_gt     xet  
76253       , AR_BILL_TO_CUSTOMERS_S_V  h1
76254       , AR_BILL_TO_SITE_USES_S_V  h2
76255       , AR_TRANSACTIONS_S_V  h5
76256              ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
76257          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
76258            AND xet.event_class_code = C_EVENT_CLASS_CODE
76259               AND h1.event_id = xet.event_id
76260   AND h2.event_id  = h1.event_id
76261   AND h5.event_id  = h1.event_id
76262 
76263 )
76264 ;
76265 --
76266 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76267 
76268       trace
76269          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
76270          ,p_level    => C_LEVEL_STATEMENT
76271          ,p_module   => l_log_module);
76272 
76273 END IF;
76274 --
76275 
76276 
76277 
76278 --
76279 INSERT INTO xla_diag_sources  --line2
76280 (
76281         event_id
76282       , ledger_id
76283       , sla_ledger_id
76284       , description_language
76285       , object_name
76286       , object_type_code
76287       , line_number
76288       , source_application_id
76289       , source_type_code
76290       , source_code
76291       , source_value
76292       , source_meaning
76293       , created_by
76294       , creation_date
76295       , last_update_date
76296       , last_updated_by
76297       , last_update_login
76298       , program_update_date
76299       , program_application_id
76300       , program_id
76301       , request_id
76302 )
76303 SELECT  event_id
76304       , p_target_ledger_id
76305       , p_sla_ledger_id
76306       , p_language
76310       , source_application_id
76307       , object_name
76308       , object_type_code
76309       , line_number
76311       , source_type_code
76312       , source_code
76313       , SUBSTR(source_value,1,1996)
76314       , SUBSTR(source_meaning ,1,200)
76315       , xla_environment_pkg.g_Usr_Id
76316       , TRUNC(SYSDATE)
76317       , TRUNC(SYSDATE)
76318       , xla_environment_pkg.g_Usr_Id
76319       , xla_environment_pkg.g_Login_Id
76320       , TRUNC(SYSDATE)
76321       , xla_environment_pkg.g_Prog_Appl_Id
76322       , xla_environment_pkg.g_Prog_Id
76323       , xla_environment_pkg.g_Req_Id
76324   FROM (
76325        SELECT xet.event_id                  event_id
76326             , l4.line_number                 line_number
76327             , CASE r
76328                WHEN 1 THEN 'AR_CUST_TRX_LINES_L_V' 
76329                 WHEN 2 THEN 'AR_CUST_TRX_LINES_L_V' 
76330                 WHEN 3 THEN 'AR_CUST_TRX_LINES_L_V' 
76331                 WHEN 4 THEN 'AR_CUST_TRX_LINES_L_V' 
76332                 WHEN 5 THEN 'AR_CUST_TRX_LINES_L_V' 
76333                 WHEN 6 THEN 'AR_CUST_TRX_LINES_BASE_V' 
76334                 WHEN 7 THEN 'AR_CUST_TRX_LINES_BASE_V' 
76335                 WHEN 8 THEN 'AR_CUST_TRX_LINES_BASE_V' 
76336                 WHEN 9 THEN 'AR_CUST_TRX_LINES_BASE_V' 
76337                 WHEN 10 THEN 'AR_CUST_TRX_LINES_L_V' 
76338                 WHEN 11 THEN 'AR_CUST_TRX_LINES_L_V' 
76339                 WHEN 12 THEN 'AR_CUST_TRX_LINES_BASE_V' 
76340                 
76341                ELSE null
76342               END                           object_name
76343             , CASE r
76344                 WHEN 1 THEN 'LINE' 
76345                 WHEN 2 THEN 'LINE' 
76346                 WHEN 3 THEN 'LINE' 
76347                 WHEN 4 THEN 'LINE' 
76348                 WHEN 5 THEN 'LINE' 
76349                 WHEN 6 THEN 'LINE' 
76350                 WHEN 7 THEN 'LINE' 
76351                 WHEN 8 THEN 'LINE' 
76352                 WHEN 9 THEN 'LINE' 
76353                 WHEN 10 THEN 'LINE' 
76354                 WHEN 11 THEN 'LINE' 
76355                 WHEN 12 THEN 'LINE' 
76356                 
76357                 ELSE null
76358               END                           object_type_code
76359             , CASE r
76360                 WHEN 1 THEN '222' 
76361                 WHEN 2 THEN '222' 
76362                 WHEN 3 THEN '222' 
76363                 WHEN 4 THEN '222' 
76364                 WHEN 5 THEN '222' 
76365                 WHEN 6 THEN '222' 
76366                 WHEN 7 THEN '222' 
76367                 WHEN 8 THEN '222' 
76368                 WHEN 9 THEN '222' 
76369                 WHEN 10 THEN '222' 
76370                 WHEN 11 THEN '222' 
76371                 WHEN 12 THEN '222' 
76372                 
76373                 ELSE null
76374               END                           source_application_id
76375             , 'S'             source_type_code
76376             , CASE r
76377                 WHEN 1 THEN 'TRX_LINE_DIST_CCID' 
76378                 WHEN 2 THEN 'TRX_LINE_DIST_ACCOUNT_CLASS' 
76379                 WHEN 3 THEN 'TRX_LINE_DIST_ID' 
76380                 WHEN 4 THEN 'TRX_DISTRIBUTION_TYPE' 
76381                 WHEN 5 THEN 'TRX_LINE_DIST_AMT' 
76382                 WHEN 6 THEN 'TRX_LINE_CUR_CONVERSION_DATE' 
76383                 WHEN 7 THEN 'TRX_LINE_CUR_CONVERSION_RATE' 
76384                 WHEN 8 THEN 'TRX_LINE_CUR_CONVERSION_TYPE' 
76385                 WHEN 9 THEN 'TRX_LINE_ACCTD_AMT' 
76386                 WHEN 10 THEN 'TRX_LINE_INTERFACE_LINE_ATTR1' 
76387                 WHEN 11 THEN 'TRX_TAX_LINE_ID' 
76388                 WHEN 12 THEN 'ROUNDING_CORRECTION_FLAG' 
76389                 
76390                 ELSE null
76391               END                           source_code
76392             , CASE r
76393                 WHEN 1 THEN TO_CHAR(l4.TRX_LINE_DIST_CCID)
76394                 WHEN 2 THEN TO_CHAR(l4.TRX_LINE_DIST_ACCOUNT_CLASS)
76395                 WHEN 3 THEN TO_CHAR(l4.TRX_LINE_DIST_ID)
76396                 WHEN 4 THEN TO_CHAR(l4.TRX_DISTRIBUTION_TYPE)
76397                 WHEN 5 THEN TO_CHAR(l4.TRX_LINE_DIST_AMT)
76398                 WHEN 6 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_DATE)
76399                 WHEN 7 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_RATE)
76400                 WHEN 8 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_TYPE)
76401                 WHEN 9 THEN TO_CHAR(l3.TRX_LINE_ACCTD_AMT)
76402                 WHEN 10 THEN TO_CHAR(l4.TRX_LINE_INTERFACE_LINE_ATTR1)
76403                 WHEN 11 THEN TO_CHAR(l4.TRX_TAX_LINE_ID)
76404                 WHEN 12 THEN TO_CHAR(l3.ROUNDING_CORRECTION_FLAG)
76405                 
76406                 ELSE null
76407               END                           source_value
76408             , null              source_meaning
76409          FROM  xla_events_gt     xet  
76410         , AR_CUST_TRX_LINES_BASE_V  l3
76411         , AR_CUST_TRX_LINES_L_V  l4
76412             , (select rownum r from all_objects where rownum <= 12 and owner = p_apps_owner)
76413         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
76414           AND xet.event_class_code = C_EVENT_CLASS_CODE
76415             AND l3.event_id          = xet.event_id
76416   AND l4.event_id    = l3.event_id
76417   AND l4.line_number = l3.line_number
76418 
76419 )
76420 ;
76421 --
76422 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76423 
76424       trace
76425          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
76426          ,p_level    => C_LEVEL_STATEMENT
76427          ,p_module   => l_log_module);
76428 
76429 END IF;
76430 
76431 
76432 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76433       trace
76434          (p_msg      => 'END of insert_sources_135'
76435          ,p_level    => C_LEVEL_PROCEDURE
76436          ,p_module   => l_log_module);
76437 END IF;
76438 EXCEPTION
76442                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
76439   WHEN xla_exceptions_pkg.application_exception THEN
76440       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
76441             trace
76443                ,p_level    => C_LEVEL_EXCEPTION
76444                ,p_module   => l_log_module);
76445       END IF;
76446       RAISE;
76447   WHEN OTHERS THEN
76448       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
76449             trace
76450                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
76451                ,p_level    => C_LEVEL_EXCEPTION
76452                ,p_module   => l_log_module);
76453        END IF;
76454        xla_exceptions_pkg.raise_message
76455            (p_location => 'XLA_00222_AAD_S_000017_PKG.insert_sources_135');
76456 END insert_sources_135;
76457 --
76458 
76459 ---------------------------------------
76460 --
76461 -- PRIVATE FUNCTION
76462 --         EventClass_135
76463 --
76464 ----------------------------------------
76465 --
76466 FUNCTION EventClass_135
76467        (p_application_id         IN NUMBER
76468        ,p_base_ledger_id         IN NUMBER
76469        ,p_target_ledger_id       IN NUMBER
76470        ,p_language               IN VARCHAR2
76471        ,p_currency_code          IN VARCHAR2
76472        ,p_sla_ledger_id          IN NUMBER
76473        ,p_pad_start_date         IN DATE
76474        ,p_pad_end_date           IN DATE
76475        ,p_primary_ledger_id      IN NUMBER)
76476 RETURN BOOLEAN IS
76477 --
76478 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVOICE_ALL';
76479 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INVOICE';
76480 
76481 l_calculate_acctd_flag   VARCHAR2(1) :='N';
76482 l_calculate_g_l_flag     VARCHAR2(1) :='N';
76483 --
76484 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76485 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76486 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76487 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76488 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76489 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76490 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76491 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76492 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76493 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76494 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76495 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76496 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76497 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76498 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76499 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76500 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76501 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76502 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76503 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76504 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76505 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76506 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
76507 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76508 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
76509 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
76510 
76511 l_event_id                             NUMBER;
76512 l_previous_event_id                    NUMBER;
76513 l_first_event_id                       NUMBER;
76514 l_last_event_id                        NUMBER;
76515 
76516 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
76517 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
76518 --
76519 --
76520 l_result                    BOOLEAN := TRUE;
76521 l_rows                      NUMBER  := 1000;
76522 l_event_type_name           VARCHAR2(80) := 'All';
76523 l_event_class_name          VARCHAR2(80) := 'Invoice';
76524 l_description               VARCHAR2(4000);
76525 l_transaction_reversal      NUMBER;
76526 l_ae_header_id              NUMBER;
76527 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
76528 l_log_module                VARCHAR2(240);
76529 --
76530 l_acct_reversal_source      VARCHAR2(30);
76531 l_trx_reversal_source       VARCHAR2(30);
76532 
76533 l_continue_with_lines       BOOLEAN := TRUE;
76534 --
76535 l_acc_rev_gl_date_source    DATE;                      -- 4262811
76536 --
76537 type t_array_event_id is table of number index by binary_integer;
76538 
76539 l_rec_array_event                    t_rec_array_event;
76540 l_null_rec_array_event               t_rec_array_event;
76541 l_array_ae_header_id                 xla_number_array_type;
76542 l_actual_flag                        VARCHAR2(1) := NULL;
76543 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
76544 l_balance_type_code                  VARCHAR2(1) :=NULL;
76545 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
76546 
76547 --
76548 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
76549 --
76550 
76551 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
76552 TYPE t_array_source_37 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
76553 TYPE t_array_source_38 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
76557 TYPE t_array_source_112 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
76554 TYPE t_array_source_39 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
76555 TYPE t_array_source_47 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
76556 TYPE t_array_source_111 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
76558 
76559 TYPE t_array_source_26 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
76560 TYPE t_array_source_43 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ACCOUNT_CLASS%TYPE INDEX BY BINARY_INTEGER;
76561 TYPE t_array_source_44 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
76562 TYPE t_array_source_45 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
76563 TYPE t_array_source_46 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_AMT%TYPE INDEX BY BINARY_INTEGER;
76564 TYPE t_array_source_48 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
76565 TYPE t_array_source_49 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
76566 TYPE t_array_source_50 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
76567 TYPE t_array_source_51 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
76568 TYPE t_array_source_65 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_INTERFACE_LINE_ATTR1%TYPE INDEX BY BINARY_INTEGER;
76569 TYPE t_array_source_86 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_TAX_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
76570 TYPE t_array_source_87 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.ROUNDING_CORRECTION_FLAG%TYPE INDEX BY BINARY_INTEGER;
76571 
76572 l_array_source_3              t_array_source_3;
76573 l_array_source_37              t_array_source_37;
76574 l_array_source_38              t_array_source_38;
76575 l_array_source_39              t_array_source_39;
76576 l_array_source_47              t_array_source_47;
76577 l_array_source_111              t_array_source_111;
76578 l_array_source_112              t_array_source_112;
76579 
76580 l_array_source_26      t_array_source_26;
76581 l_array_source_43      t_array_source_43;
76582 l_array_source_44      t_array_source_44;
76583 l_array_source_45      t_array_source_45;
76584 l_array_source_46      t_array_source_46;
76585 l_array_source_48      t_array_source_48;
76586 l_array_source_49      t_array_source_49;
76587 l_array_source_50      t_array_source_50;
76588 l_array_source_51      t_array_source_51;
76589 l_array_source_65      t_array_source_65;
76590 l_array_source_86      t_array_source_86;
76591 l_array_source_87      t_array_source_87;
76592 
76593 --
76594 CURSOR header_cur
76595 IS
76596 SELECT /*+ leading(xet) cardinality(xet,1) */
76597 -- Event Class Code: INVOICE
76598     xet.entity_id
76599    ,xet.legal_entity_id
76600    ,xet.entity_code
76601    ,xet.transaction_number
76602    ,xet.event_id
76603    ,xet.event_class_code
76604    ,xet.event_type_code
76605    ,xet.event_number
76606    ,xet.event_date
76607    ,xet.transaction_date
76608    ,xet.reference_num_1
76609    ,xet.reference_num_2
76610    ,xet.reference_num_3
76611    ,xet.reference_num_4
76612    ,xet.reference_char_1
76613    ,xet.reference_char_2
76614    ,xet.reference_char_3
76615    ,xet.reference_char_4
76616    ,xet.reference_date_1
76617    ,xet.reference_date_2
76618    ,xet.reference_date_3
76619    ,xet.reference_date_4
76620    ,xet.event_created_by
76621    ,xet.budgetary_control_flag 
76622   , h5.TRX_DOC_SEQUENCE_VALUE    source_3
76623   , h1.BILL_CUST_ACCOUNT_ID    source_37
76624   , h2.BILL_USES_SITE_USE_ID    source_38
76625   , h5.XLA_PARTY_TYPE    source_39
76626   , h5.TRX_INVOICE_CURRENCY_CODE    source_47
76627   , h5.TRX_DOC_SEQUENCE_CATEGORY    source_111
76628   , h5.TRX_DOC_SEQUENCE_ID    source_112
76629   FROM xla_events_gt     xet 
76630   , AR_BILL_TO_CUSTOMERS_S_V  h1
76631   , AR_BILL_TO_SITE_USES_S_V  h2
76632   , AR_TRANSACTIONS_S_V  h5
76633  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
76634    and xet.event_class_code = C_EVENT_CLASS_CODE
76635    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
76636   AND h2.event_id  = h1.event_id
76637   AND h5.event_id  = h1.event_id
76638 
76639  ORDER BY event_id
76640 ;
76641 
76642 
76643 --
76644 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
76645 IS
76646 SELECT  /*+ leading(xet) cardinality(xet,1) */
76647 -- Event Class Code: INVOICE
76648     xet.entity_id
76649    ,xet.legal_entity_id
76650    ,xet.entity_code
76651    ,xet.transaction_number
76652    ,xet.event_id
76653    ,xet.event_class_code
76654    ,xet.event_type_code
76655    ,xet.event_number
76656    ,xet.event_date
76657    ,xet.transaction_date
76658    ,xet.reference_num_1
76659    ,xet.reference_num_2
76660    ,xet.reference_num_3
76661    ,xet.reference_num_4
76662    ,xet.reference_char_1
76663    ,xet.reference_char_2
76664    ,xet.reference_char_3
76665    ,xet.reference_char_4
76666    ,xet.reference_date_1
76667    ,xet.reference_date_2
76668    ,xet.reference_date_3
76669    ,xet.reference_date_4
76670    ,xet.event_created_by
76671    ,xet.budgetary_control_flag
76672  , l3.LINE_NUMBER  
76673   , l4.TRX_LINE_DIST_CCID    source_26
76674   , l4.TRX_LINE_DIST_ACCOUNT_CLASS    source_43
76675   , l4.TRX_LINE_DIST_ID    source_44
76676   , l4.TRX_DISTRIBUTION_TYPE    source_45
76677   , l4.TRX_LINE_DIST_AMT    source_46
76678   , l3.TRX_LINE_CUR_CONVERSION_DATE    source_48
76679   , l3.TRX_LINE_CUR_CONVERSION_RATE    source_49
76680   , l3.TRX_LINE_CUR_CONVERSION_TYPE    source_50
76681   , l3.TRX_LINE_ACCTD_AMT    source_51
76682   , l4.TRX_LINE_INTERFACE_LINE_ATTR1    source_65
76686   , AR_CUST_TRX_LINES_BASE_V  l3
76683   , l4.TRX_TAX_LINE_ID    source_86
76684   , l3.ROUNDING_CORRECTION_FLAG    source_87
76685   FROM xla_events_gt     xet 
76687   , AR_CUST_TRX_LINES_L_V  l4
76688  WHERE xet.event_id between x_first_event_id and x_last_event_id
76689    and xet.event_date between p_pad_start_date and p_pad_end_date
76690    and xet.event_class_code = C_EVENT_CLASS_CODE
76691    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
76692   AND l4.event_id    = l3.event_id
76693   AND l4.line_number = l3.line_number
76694 ;
76695 
76696 --
76697 BEGIN
76698 IF g_log_enabled THEN
76699    l_log_module := C_DEFAULT_MODULE||'.EventClass_135';
76700 END IF;
76701 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76702    trace
76703       (p_msg      => 'BEGIN of EventClass_135'
76704       ,p_level    => C_LEVEL_PROCEDURE
76705       ,p_module   => l_log_module);
76706 END IF;
76707 
76708 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76709    trace
76710       (p_msg      => 'p_application_id = '||p_application_id||
76711                      ' - p_base_ledger_id = '||p_base_ledger_id||
76712                      ' - p_target_ledger_id  = '||p_target_ledger_id||
76713                      ' - p_language = '||p_language||
76714                      ' - p_currency_code = '||p_currency_code||
76715                      ' - p_sla_ledger_id = '||p_sla_ledger_id
76716       ,p_level    => C_LEVEL_STATEMENT
76717       ,p_module   => l_log_module);
76718 END IF;
76719 --
76720 -- initialze arrays
76721 --
76722 g_array_event.DELETE;
76723 l_rec_array_event := l_null_rec_array_event;
76724 --
76725 --------------------------------------
76726 -- 4262811 Initialze MPA Line Number
76727 --------------------------------------
76728 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
76729 
76730 --
76731 
76732 --
76733 OPEN header_cur;
76734 --
76735 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76736    trace
76737    (p_msg      => 'SQL - FETCH header_cur'
76738    ,p_level    => C_LEVEL_STATEMENT
76739    ,p_module   => l_log_module);
76740 END IF;
76741 --
76742 LOOP
76743 FETCH header_cur BULK COLLECT INTO
76744         l_array_entity_id
76745       , l_array_legal_entity_id
76746       , l_array_entity_code
76747       , l_array_transaction_num
76748       , l_array_event_id
76749       , l_array_class_code
76750       , l_array_event_type
76751       , l_array_event_number
76752       , l_array_event_date
76753       , l_array_transaction_date
76754       , l_array_reference_num_1
76755       , l_array_reference_num_2
76756       , l_array_reference_num_3
76757       , l_array_reference_num_4
76758       , l_array_reference_char_1
76759       , l_array_reference_char_2
76760       , l_array_reference_char_3
76761       , l_array_reference_char_4
76762       , l_array_reference_date_1
76763       , l_array_reference_date_2
76764       , l_array_reference_date_3
76765       , l_array_reference_date_4
76766       , l_array_event_created_by
76767       , l_array_budgetary_control_flag 
76768       , l_array_source_3
76769       , l_array_source_37
76770       , l_array_source_38
76771       , l_array_source_39
76772       , l_array_source_47
76773       , l_array_source_111
76774       , l_array_source_112
76775       LIMIT l_rows;
76776 --
76777 IF (C_LEVEL_EVENT >= g_log_level) THEN
76778    trace
76779    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
76780    ,p_level    => C_LEVEL_EVENT
76781    ,p_module   => l_log_module);
76782 END IF;
76783 --
76784 EXIT WHEN l_array_entity_id.COUNT = 0;
76785 
76786 -- initialize arrays
76787 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
76788 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
76789 
76790 --
76791 -- Bug 4458708
76792 --
76793 XLA_AE_LINES_PKG.g_LineNumber := 0;
76794 
76795 
76796 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
76797 g_last_hdr_idx := l_array_event_id.LAST;
76798 --
76799 -- loop for the headers. Each iteration is for each header extract row
76800 -- fetched in header cursor
76801 --
76802 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
76803 
76804 --
76805 -- set event info as cache for other routines to refer event attributes
76806 --
76807 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
76808    (p_application_id           => p_application_id
76809    ,p_primary_ledger_id        => p_primary_ledger_id
76810    ,p_base_ledger_id           => p_base_ledger_id
76811    ,p_target_ledger_id         => p_target_ledger_id
76812    ,p_entity_id                => l_array_entity_id(hdr_idx)
76813    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
76814    ,p_entity_code              => l_array_entity_code(hdr_idx)
76815    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
76816    ,p_event_id                 => l_array_event_id(hdr_idx)
76817    ,p_event_class_code         => l_array_class_code(hdr_idx)
76818    ,p_event_type_code          => l_array_event_type(hdr_idx)
76819    ,p_event_number             => l_array_event_number(hdr_idx)
76820    ,p_event_date               => l_array_event_date(hdr_idx)
76821    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
76822    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
76823    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
76824    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
76825    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
76826    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
76827    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
76828    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
76832    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
76829    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
76830    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
76831    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
76833    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
76834    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
76835    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
76836 
76837 --
76838 -- set the status of entry to C_VALID (0)
76839 --
76840 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
76841 
76842 --
76843 -- initialize a row for ae header
76844 --
76845 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
76846 
76847 l_event_id := l_array_event_id(hdr_idx);
76848 
76849 --
76850 -- storing the hdr_idx for event. May be used by line cursor.
76851 --
76852 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
76853 
76854 --
76855 -- store sources from header extract. This can be improved to
76856 -- store only those sources from header extract that may be used in lines
76857 --
76858 
76859 g_array_event(l_event_id).array_value_num('source_3') := l_array_source_3(hdr_idx);
76860 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
76861 g_array_event(l_event_id).array_value_num('source_38') := l_array_source_38(hdr_idx);
76862 g_array_event(l_event_id).array_value_char('source_39') := l_array_source_39(hdr_idx);
76863 g_array_event(l_event_id).array_value_char('source_47') := l_array_source_47(hdr_idx);
76864 g_array_event(l_event_id).array_value_char('source_111') := l_array_source_111(hdr_idx);
76865 g_array_event(l_event_id).array_value_num('source_112') := l_array_source_112(hdr_idx);
76866 
76867 --
76868 -- initilaize the status of ae headers for diffrent balance types
76869 -- the status is initialised to C_NOT_CREATED (2)
76870 --
76871 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
76872 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
76873 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
76874 
76875 --
76876 -- call api to validate and store accounting attributes for header
76877 --
76878 
76879 ------------------------------------------------------------
76880 -- Accrual Reversal : to get date for Standard Source (NONE)
76881 ------------------------------------------------------------
76882 l_acc_rev_gl_date_source := NULL;
76883 
76884      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
76885       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_111');
76886      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
76887       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_112');
76888      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
76889       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_3');
76890      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
76891       l_rec_acct_attrs.array_date_value(4) := 
76892 xla_ae_sources_pkg.GetSystemSourceDate(
76893    p_source_code           => 'XLA_EVENT_DATE'
76894  , p_source_type_code      => 'Y'
76895  , p_source_application_id =>  602
76896 );
76897 
76898 
76899 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
76900 
76901 XLA_AE_HEADER_PKG.SetJeCategoryName;
76902 
76903 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
76904 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
76905 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
76906 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
76907 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
76908 
76909 
76910 -- No header level analytical criteria
76911 
76912 --
76913 --accounting attribute enhancement, bug 3612931
76914 --
76915 l_trx_reversal_source := SUBSTR(NULL, 1,30);
76916 
76917 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
76918    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
76919 
76920    xla_accounting_err_pkg.build_message
76921       (p_appli_s_name            => 'XLA'
76922       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
76923       ,p_token_1                 => 'ACCT_ATTR_NAME'
76924       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
76925       ,p_token_2                 => 'PRODUCT_NAME'
76926       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
76927       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
76928       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
76929       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
76930 
76931 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
76932    --
76933    -- following sets the accounting attributes needed to reverse
76934    -- accounting for a distributeion
76935    --
76936    xla_ae_lines_pkg.SetTrxReversalAttrs
76937       (p_event_id              => l_event_id
76938       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
76939       ,p_trx_reversal_source   => l_trx_reversal_source);
76940 
76941 END IF;
76942 
76943 
76944 ----------------------------------------------------------------
76945 -- 4262811 -  update the header statuses to invalid in need be
76946 ----------------------------------------------------------------
76947 --
76951   -----------------------------------------------
76948 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
76949 
76950 
76952   -- No accrual reversal for the event class/type
76953   -----------------------------------------------
76954 ----------------------------------------------------------------
76955 
76956 --
76957 -- this ends the header loop iteration for one bulk fetch
76958 --
76959 END LOOP;
76960 
76961 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
76962 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
76963 
76964 --
76965 -- insert dummy rows into lines gt table that were created due to
76966 -- transaction reversals
76967 --
76968 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
76969    l_result := XLA_AE_LINES_PKG.InsertLines;
76970 END IF;
76971 
76972 --
76973 -- reset the temp_line_num for each set of events fetched from header
76974 -- cursor rather than doing it for each new event in line cursor
76975 -- Bug 3939231
76976 --
76977 xla_ae_lines_pkg.g_temp_line_num := 0;
76978 
76979 
76980 
76981 --
76982 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
76983 --
76984 --
76985 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76986 
76987       trace
76988          (p_msg      => 'SQL - FETCH line_cur'
76989          ,p_level    => C_LEVEL_STATEMENT
76990          ,p_module   => l_log_module);
76991 
76992 END IF;
76993 --
76994 --
76995 LOOP
76996   --
76997   FETCH line_cur BULK COLLECT INTO
76998         l_array_entity_id
76999       , l_array_legal_entity_id
77000       , l_array_entity_code
77001       , l_array_transaction_num
77002       , l_array_event_id
77003       , l_array_class_code
77004       , l_array_event_type
77005       , l_array_event_number
77006       , l_array_event_date
77007       , l_array_transaction_date
77008       , l_array_reference_num_1
77009       , l_array_reference_num_2
77010       , l_array_reference_num_3
77011       , l_array_reference_num_4
77012       , l_array_reference_char_1
77013       , l_array_reference_char_2
77014       , l_array_reference_char_3
77015       , l_array_reference_char_4
77016       , l_array_reference_date_1
77017       , l_array_reference_date_2
77018       , l_array_reference_date_3
77019       , l_array_reference_date_4
77020       , l_array_event_created_by
77021       , l_array_budgetary_control_flag
77022       , l_array_extract_line_num 
77023       , l_array_source_26
77024       , l_array_source_43
77025       , l_array_source_44
77026       , l_array_source_45
77027       , l_array_source_46
77028       , l_array_source_48
77029       , l_array_source_49
77030       , l_array_source_50
77031       , l_array_source_51
77032       , l_array_source_65
77033       , l_array_source_86
77034       , l_array_source_87
77035       LIMIT l_rows;
77036 
77037   --
77038   IF (C_LEVEL_EVENT >= g_log_level) THEN
77039             trace
77040                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
77041                ,p_level    => C_LEVEL_EVENT
77042                ,p_module   => l_log_module);
77043   END IF;
77044   --
77045   EXIT WHEN l_array_entity_id.count = 0;
77046 
77047   XLA_AE_LINES_PKG.g_rec_lines := null;
77048 
77049 --
77050 -- Bug 4458708
77051 --
77052 XLA_AE_LINES_PKG.g_LineNumber := 0;
77053 --
77054 --
77055 
77056 FOR Idx IN 1..l_array_event_id.count LOOP
77057    --
77058    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
77059    --
77060    l_event_id := l_array_event_id(idx);  -- 5648433
77061 
77062    --
77063    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
77064    --
77065 
77066    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
77067              (g_array_event(l_event_id).array_value_num('header_index'))
77068          ,'N'
77069          ) <> 'Y'
77070    THEN
77071       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77072          trace
77073             (p_msg      => 'Trancaction revesal option is not Y '
77074             ,p_level    => C_LEVEL_STATEMENT
77075             ,p_module   => l_log_module);
77076       END IF;
77077 
77078 --
77079 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
77080 --
77081 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
77082 --
77083 -- set event info as cache for other routines to refer event attributes
77084 --
77085 
77086 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
77087    l_previous_event_id := l_event_id;
77088 
77089    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
77090       (p_application_id           => p_application_id
77091       ,p_primary_ledger_id        => p_primary_ledger_id
77092       ,p_base_ledger_id           => p_base_ledger_id
77093       ,p_target_ledger_id         => p_target_ledger_id
77094       ,p_entity_id                => l_array_entity_id(Idx)
77095       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
77096       ,p_entity_code              => l_array_entity_code(Idx)
77097       ,p_transaction_num          => l_array_transaction_num(Idx)
77098       ,p_event_id                 => l_array_event_id(Idx)
77099       ,p_event_class_code         => l_array_class_code(Idx)
77100       ,p_event_type_code          => l_array_event_type(Idx)
77101       ,p_event_number             => l_array_event_number(Idx)
77102       ,p_event_date               => l_array_event_date(Idx)
77103       ,p_transaction_date         => l_array_transaction_date(Idx)
77107       ,p_reference_num_4          => l_array_reference_num_4(Idx)
77104       ,p_reference_num_1          => l_array_reference_num_1(Idx)
77105       ,p_reference_num_2          => l_array_reference_num_2(Idx)
77106       ,p_reference_num_3          => l_array_reference_num_3(Idx)
77108       ,p_reference_char_1         => l_array_reference_char_1(Idx)
77109       ,p_reference_char_2         => l_array_reference_char_2(Idx)
77110       ,p_reference_char_3         => l_array_reference_char_3(Idx)
77111       ,p_reference_char_4         => l_array_reference_char_4(Idx)
77112       ,p_reference_date_1         => l_array_reference_date_1(Idx)
77113       ,p_reference_date_2         => l_array_reference_date_2(Idx)
77114       ,p_reference_date_3         => l_array_reference_date_3(Idx)
77115       ,p_reference_date_4         => l_array_reference_date_4(Idx)
77116       ,p_event_created_by         => l_array_event_created_by(Idx)
77117       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
77118        --
77119 END IF;
77120 
77121 
77122 
77123 --
77124 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
77125 
77126 l_acct_reversal_source := SUBSTR(NULL, 1,30);
77127 
77128 IF l_continue_with_lines THEN
77129    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
77130       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
77131 
77132       xla_accounting_err_pkg.build_message
77133          (p_appli_s_name            => 'XLA'
77134          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
77135          ,p_token_1                 => 'LINE_NUMBER'
77136          ,p_value_1                 => l_array_extract_line_num(Idx)
77137          ,p_token_2                 => 'PRODUCT_NAME'
77138          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
77139          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
77140          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
77141          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
77142 
77143    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
77144       --
77145       -- following sets the accounting attributes needed to reverse
77146       -- accounting for a distributeion
77147       --
77148 
77149       --
77150       -- 5217187
77151       --
77152       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
77153       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
77154                                        g_array_event(l_event_id).array_value_num('header_index'));
77155       --
77156       --
77157 
77158       -- No reversal code generated
77159 
77160       xla_ae_lines_pkg.SetAcctReversalAttrs
77161          (p_event_id             => l_event_id
77162          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
77163          ,p_calculate_acctd_flag => l_calculate_acctd_flag
77164          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
77165    END IF;
77166 
77167    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
77168        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
77169 
77170 --
77171 AcctLineType_79 (
77172  p_application_id  => p_application_id
77173  ,p_event_id     => l_event_id
77174  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77175  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77176  ,p_actual_flag => l_actual_flag
77177  ,p_balance_type_code => l_balance_type_code
77178  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77179  
77180  , p_source_26 => l_array_source_26(Idx)
77181  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
77182  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
77183  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77184  , p_source_43 => l_array_source_43(Idx)
77185  , p_source_44 => l_array_source_44(Idx)
77186  , p_source_45 => l_array_source_45(Idx)
77187  , p_source_46 => l_array_source_46(Idx)
77188  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
77189  , p_source_48 => l_array_source_48(Idx)
77190  , p_source_49 => l_array_source_49(Idx)
77191  , p_source_50 => l_array_source_50(Idx)
77192  , p_source_51 => l_array_source_51(Idx)
77193  , p_source_86 => l_array_source_86(Idx)
77194  );
77195 If(l_balance_type_code = 'A') THEN
77196   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77197 END IF;
77198 
77199 --
77200 
77201 
77202 --
77203 AcctLineType_80 (
77204  p_application_id  => p_application_id
77205  ,p_event_id     => l_event_id
77206  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77207  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77208  ,p_actual_flag => l_actual_flag
77209  ,p_balance_type_code => l_balance_type_code
77210  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77211  
77212  , p_source_26 => l_array_source_26(Idx)
77213  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
77214  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
77215  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77216  , p_source_43 => l_array_source_43(Idx)
77217  , p_source_44 => l_array_source_44(Idx)
77218  , p_source_45 => l_array_source_45(Idx)
77219  , p_source_46 => l_array_source_46(Idx)
77220  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
77221  , p_source_48 => l_array_source_48(Idx)
77222  , p_source_49 => l_array_source_49(Idx)
77223  , p_source_50 => l_array_source_50(Idx)
77224  , p_source_51 => l_array_source_51(Idx)
77225  , p_source_86 => l_array_source_86(Idx)
77226  );
77227 If(l_balance_type_code = 'A') THEN
77228   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77229 END IF;
77230 
77231 --
77232 
77233 
77234 --
77238  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77235 AcctLineType_81 (
77236  p_application_id  => p_application_id
77237  ,p_event_id     => l_event_id
77239  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77240  ,p_actual_flag => l_actual_flag
77241  ,p_balance_type_code => l_balance_type_code
77242  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77243  
77244  , p_source_26 => l_array_source_26(Idx)
77245  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
77246  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
77247  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77248  , p_source_43 => l_array_source_43(Idx)
77249  , p_source_44 => l_array_source_44(Idx)
77250  , p_source_45 => l_array_source_45(Idx)
77251  , p_source_46 => l_array_source_46(Idx)
77252  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
77253  , p_source_48 => l_array_source_48(Idx)
77254  , p_source_49 => l_array_source_49(Idx)
77255  , p_source_50 => l_array_source_50(Idx)
77256  , p_source_51 => l_array_source_51(Idx)
77257  , p_source_86 => l_array_source_86(Idx)
77258  );
77259 If(l_balance_type_code = 'A') THEN
77260   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77261 END IF;
77262 
77263 --
77264 
77265 
77266 --
77267 AcctLineType_82 (
77268  p_application_id  => p_application_id
77269  ,p_event_id     => l_event_id
77270  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77271  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77272  ,p_actual_flag => l_actual_flag
77273  ,p_balance_type_code => l_balance_type_code
77274  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77275  
77276  , p_source_26 => l_array_source_26(Idx)
77277  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
77278  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
77279  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77280  , p_source_43 => l_array_source_43(Idx)
77281  , p_source_44 => l_array_source_44(Idx)
77282  , p_source_45 => l_array_source_45(Idx)
77283  , p_source_46 => l_array_source_46(Idx)
77284  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
77285  , p_source_48 => l_array_source_48(Idx)
77286  , p_source_49 => l_array_source_49(Idx)
77287  , p_source_50 => l_array_source_50(Idx)
77288  , p_source_51 => l_array_source_51(Idx)
77289  , p_source_65 => l_array_source_65(Idx)
77290  , p_source_86 => l_array_source_86(Idx)
77291  , p_source_87 => l_array_source_87(Idx)
77292  );
77293 If(l_balance_type_code = 'A') THEN
77294   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77295 END IF;
77296 
77297 --
77298 
77299 
77300 --
77301 AcctLineType_83 (
77302  p_application_id  => p_application_id
77303  ,p_event_id     => l_event_id
77304  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77305  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77306  ,p_actual_flag => l_actual_flag
77307  ,p_balance_type_code => l_balance_type_code
77308  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77309  
77310  , p_source_26 => l_array_source_26(Idx)
77311  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
77312  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
77313  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77314  , p_source_43 => l_array_source_43(Idx)
77315  , p_source_44 => l_array_source_44(Idx)
77316  , p_source_45 => l_array_source_45(Idx)
77317  , p_source_46 => l_array_source_46(Idx)
77318  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
77319  , p_source_48 => l_array_source_48(Idx)
77320  , p_source_49 => l_array_source_49(Idx)
77321  , p_source_50 => l_array_source_50(Idx)
77322  , p_source_51 => l_array_source_51(Idx)
77323  , p_source_86 => l_array_source_86(Idx)
77324  , p_source_87 => l_array_source_87(Idx)
77325  );
77326 If(l_balance_type_code = 'A') THEN
77327   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77328 END IF;
77329 
77330 --
77331 
77332 
77333 --
77334 AcctLineType_84 (
77335  p_application_id  => p_application_id
77336  ,p_event_id     => l_event_id
77337  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77338  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77339  ,p_actual_flag => l_actual_flag
77340  ,p_balance_type_code => l_balance_type_code
77341  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77342  
77343  , p_source_26 => l_array_source_26(Idx)
77344  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
77345  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
77346  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77347  , p_source_43 => l_array_source_43(Idx)
77348  , p_source_44 => l_array_source_44(Idx)
77349  , p_source_45 => l_array_source_45(Idx)
77350  , p_source_46 => l_array_source_46(Idx)
77351  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
77352  , p_source_48 => l_array_source_48(Idx)
77353  , p_source_49 => l_array_source_49(Idx)
77354  , p_source_50 => l_array_source_50(Idx)
77355  , p_source_51 => l_array_source_51(Idx)
77356  , p_source_86 => l_array_source_86(Idx)
77357  );
77358 If(l_balance_type_code = 'A') THEN
77359   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77360 END IF;
77361 
77362 --
77363 
77364 
77365 --
77366 AcctLineType_85 (
77367  p_application_id  => p_application_id
77368  ,p_event_id     => l_event_id
77369  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77370  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77371  ,p_actual_flag => l_actual_flag
77372  ,p_balance_type_code => l_balance_type_code
77373  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77374  
77375  , p_source_26 => l_array_source_26(Idx)
77376  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
77380  , p_source_44 => l_array_source_44(Idx)
77377  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
77378  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77379  , p_source_43 => l_array_source_43(Idx)
77381  , p_source_45 => l_array_source_45(Idx)
77382  , p_source_46 => l_array_source_46(Idx)
77383  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
77384  , p_source_48 => l_array_source_48(Idx)
77385  , p_source_49 => l_array_source_49(Idx)
77386  , p_source_50 => l_array_source_50(Idx)
77387  , p_source_51 => l_array_source_51(Idx)
77388  , p_source_86 => l_array_source_86(Idx)
77389  );
77390 If(l_balance_type_code = 'A') THEN
77391   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77392 END IF;
77393 
77394 --
77395 
77396 
77397 --
77398 AcctLineType_86 (
77399  p_application_id  => p_application_id
77400  ,p_event_id     => l_event_id
77401  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77402  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77403  ,p_actual_flag => l_actual_flag
77404  ,p_balance_type_code => l_balance_type_code
77405  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77406  
77407  , p_source_26 => l_array_source_26(Idx)
77408  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
77409  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
77410  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77411  , p_source_43 => l_array_source_43(Idx)
77412  , p_source_44 => l_array_source_44(Idx)
77413  , p_source_45 => l_array_source_45(Idx)
77414  , p_source_46 => l_array_source_46(Idx)
77415  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
77416  , p_source_48 => l_array_source_48(Idx)
77417  , p_source_49 => l_array_source_49(Idx)
77418  , p_source_50 => l_array_source_50(Idx)
77419  , p_source_51 => l_array_source_51(Idx)
77420  , p_source_86 => l_array_source_86(Idx)
77421  , p_source_87 => l_array_source_87(Idx)
77422  );
77423 If(l_balance_type_code = 'A') THEN
77424   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77425 END IF;
77426 
77427 --
77428 
77429 
77430 --
77431 AcctLineType_87 (
77432  p_application_id  => p_application_id
77433  ,p_event_id     => l_event_id
77434  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77435  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77436  ,p_actual_flag => l_actual_flag
77437  ,p_balance_type_code => l_balance_type_code
77438  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77439  
77440  , p_source_26 => l_array_source_26(Idx)
77441  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
77442  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
77443  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77444  , p_source_43 => l_array_source_43(Idx)
77445  , p_source_44 => l_array_source_44(Idx)
77446  , p_source_45 => l_array_source_45(Idx)
77447  , p_source_46 => l_array_source_46(Idx)
77448  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
77449  , p_source_48 => l_array_source_48(Idx)
77450  , p_source_49 => l_array_source_49(Idx)
77451  , p_source_50 => l_array_source_50(Idx)
77452  , p_source_51 => l_array_source_51(Idx)
77453  , p_source_86 => l_array_source_86(Idx)
77454  , p_source_87 => l_array_source_87(Idx)
77455  );
77456 If(l_balance_type_code = 'A') THEN
77457   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77458 END IF;
77459 
77460 --
77461 
77462 
77463 --
77464 AcctLineType_88 (
77465  p_application_id  => p_application_id
77466  ,p_event_id     => l_event_id
77467  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77468  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77469  ,p_actual_flag => l_actual_flag
77470  ,p_balance_type_code => l_balance_type_code
77471  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77472  
77473  , p_source_26 => l_array_source_26(Idx)
77474  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
77475  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
77476  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77477  , p_source_43 => l_array_source_43(Idx)
77478  , p_source_44 => l_array_source_44(Idx)
77479  , p_source_45 => l_array_source_45(Idx)
77480  , p_source_46 => l_array_source_46(Idx)
77481  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
77482  , p_source_48 => l_array_source_48(Idx)
77483  , p_source_49 => l_array_source_49(Idx)
77484  , p_source_50 => l_array_source_50(Idx)
77485  , p_source_51 => l_array_source_51(Idx)
77486  , p_source_86 => l_array_source_86(Idx)
77487  , p_source_87 => l_array_source_87(Idx)
77488  );
77489 If(l_balance_type_code = 'A') THEN
77490   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77491 END IF;
77492 
77493 --
77494 
77495 
77496 --
77497 AcctLineType_89 (
77498  p_application_id  => p_application_id
77499  ,p_event_id     => l_event_id
77500  ,p_calculate_acctd_flag => l_calculate_acctd_flag
77501  ,p_calculate_g_l_flag => l_calculate_g_l_flag
77502  ,p_actual_flag => l_actual_flag
77503  ,p_balance_type_code => l_balance_type_code
77504  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
77505  
77506  , p_source_26 => l_array_source_26(Idx)
77507  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
77508  , p_source_38 => g_array_event(l_event_id).array_value_num('source_38')
77509  , p_source_39 => g_array_event(l_event_id).array_value_char('source_39')
77510  , p_source_43 => l_array_source_43(Idx)
77511  , p_source_44 => l_array_source_44(Idx)
77512  , p_source_45 => l_array_source_45(Idx)
77513  , p_source_46 => l_array_source_46(Idx)
77514  , p_source_47 => g_array_event(l_event_id).array_value_char('source_47')
77515  , p_source_48 => l_array_source_48(Idx)
77516  , p_source_49 => l_array_source_49(Idx)
77520  , p_source_87 => l_array_source_87(Idx)
77517  , p_source_50 => l_array_source_50(Idx)
77518  , p_source_51 => l_array_source_51(Idx)
77519  , p_source_86 => l_array_source_86(Idx)
77521  );
77522 If(l_balance_type_code = 'A') THEN
77523   l_actual_gain_loss_ref := l_gain_or_loss_ref;
77524 END IF;
77525 
77526 --
77527 
77528       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
77529       -- or secondary ledger that has different currency with primary
77530       -- or alc that is calculated by sla
77531       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
77532             (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'))
77533 
77534 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
77535 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
77536           AND (l_actual_flag = 'A')) THEN
77537         XLA_AE_LINES_PKG.CreateGainOrLossLines(
77538           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
77539          ,p_application_id   => p_application_id
77540          ,p_amb_context_code => 'DEFAULT'
77541          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
77542          ,p_event_class_code => C_EVENT_CLASS_CODE
77543          ,p_event_type_code  => C_EVENT_TYPE_CODE
77544          
77545          ,p_gain_ccid        => -1
77546          ,p_loss_ccid        => -1
77547 
77548          ,p_actual_flag      => l_actual_flag
77549          ,p_enc_flag         => null
77550          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
77551          ,p_enc_g_l_ref      => null
77552          );
77553       END IF;
77554    END IF;
77555 END IF;
77556 
77557    ELSE
77558       --
77559       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
77560       --
77561       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77562          trace
77563             (p_msg      => 'Trancaction revesal option is Y'
77564             ,p_level    => C_LEVEL_STATEMENT
77565             ,p_module   => l_log_module);
77566       END IF;
77567    END IF;
77568 
77569 END LOOP;
77570 l_result := XLA_AE_LINES_PKG.InsertLines ;
77571 end loop;
77572 close line_cur;
77573 
77574 
77575 --
77576 -- insert headers into xla_ae_headers_gt table
77577 --
77578 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
77579 
77580 -- insert into errors table here.
77581 
77582 END LOOP;
77583 
77584 --
77585 -- 4865292
77586 --
77587 -- Compare g_hdr_extract_count with event count in
77588 -- CreateHeadersAndLines.
77589 --
77590 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
77591 
77592 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77593    trace (p_msg     => '# rows extracted from header extract objects '
77594                     || ' (running total): '
77595                     || g_hdr_extract_count
77596          ,p_level   => C_LEVEL_STATEMENT
77597          ,p_module  => l_log_module);
77598 END IF;
77599 
77600 CLOSE header_cur;
77601 --
77602 
77603 --
77604 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77605    trace
77606       (p_msg      => 'END of EventClass_135'
77607       ,p_level    => C_LEVEL_PROCEDURE
77608       ,p_module   => l_log_module);
77609 END IF;
77610 --
77611 RETURN l_result;
77612 EXCEPTION
77613 WHEN xla_exceptions_pkg.application_exception THEN
77614    
77615 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
77616 
77617    
77618 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
77619 
77620    RAISE;
77621 
77622 WHEN NO_DATA_FOUND THEN
77623 
77624 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
77625 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
77626 
77627 FOR header_record IN header_cur
77628 LOOP
77629     l_array_header_events(header_record.event_id) := header_record.event_id;
77630 END LOOP;
77631 
77632 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
77633 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
77634 
77635 fnd_file.put_line(fnd_file.LOG, '                    ');
77636 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
77637 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
77638 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
77639 
77640 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
77641 LOOP
77642 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
77643 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
77644         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
77645 	END IF;
77646 END LOOP;
77647 
77648 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
77649 fnd_file.put_line(fnd_file.LOG, '                    ');
77650 
77651 
77652 xla_exceptions_pkg.raise_message
77653       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_135');
77654 
77655 
77656 WHEN OTHERS THEN
77657    xla_exceptions_pkg.raise_message
77658       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_135');
77659 END EventClass_135;
77660 --
77661 
77662 ---------------------------------------
77663 --
77664 -- PRIVATE PROCEDURE
77665 --         insert_sources_136
77666 --
77667 ----------------------------------------
77668 --
77672                               , p_sla_ledger_id          IN NUMBER
77669 PROCEDURE insert_sources_136(
77670                                 p_target_ledger_id       IN NUMBER
77671                               , p_language               IN VARCHAR2
77673                               , p_pad_start_date         IN DATE
77674                               , p_pad_end_date           IN DATE
77675                          )
77676 IS
77677 
77678 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_RECEIPT_ALL';
77679 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MISC_RECEIPT';
77680 p_apps_owner                   VARCHAR2(30);
77681 l_log_module                   VARCHAR2(240);
77682 BEGIN
77683 IF g_log_enabled THEN
77684       l_log_module := C_DEFAULT_MODULE||'.insert_sources_136';
77685 END IF;
77686 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77687 
77688       trace
77689          (p_msg      => 'BEGIN of insert_sources_136'
77690          ,p_level    => C_LEVEL_PROCEDURE
77691          ,p_module   => l_log_module);
77692 
77693 END IF;
77694 
77695 -- select APPS owner
77696 SELECT oracle_username
77697   INTO p_apps_owner
77698   FROM fnd_oracle_userid
77699  WHERE read_only_flag = 'U'
77700 ;
77701 
77702 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77703       trace
77704          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
77705                         ' - p_language = '||p_language||
77706                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
77707                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
77708                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
77709                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
77710          ,p_level    => C_LEVEL_STATEMENT
77711          ,p_module   => l_log_module);
77712 END IF;
77713 
77714 
77715 --
77716 INSERT INTO xla_diag_sources --hdr2
77717 (
77718         event_id
77719       , ledger_id
77720       , sla_ledger_id
77721       , description_language
77722       , object_name
77723       , object_type_code
77724       , line_number
77725       , source_application_id
77726       , source_type_code
77727       , source_code
77728       , source_value
77729       , source_meaning
77730       , created_by
77731       , creation_date
77732       , last_update_date
77733       , last_updated_by
77734       , last_update_login
77735       , program_update_date
77736       , program_application_id
77737       , program_id
77738       , request_id
77739 )
77740 SELECT
77741         event_id
77742       , p_target_ledger_id
77743       , p_sla_ledger_id
77744       , p_language
77745       , object_name
77746       , object_type_code
77747       , line_number
77748       , source_application_id
77749       , source_type_code
77750       , source_code
77751       , SUBSTR(source_value ,1,1996)
77752       , SUBSTR(source_meaning ,1,200)
77753       , xla_environment_pkg.g_Usr_Id
77754       , TRUNC(SYSDATE)
77755       , TRUNC(SYSDATE)
77756       , xla_environment_pkg.g_Usr_Id
77757       , xla_environment_pkg.g_Login_Id
77758       , TRUNC(SYSDATE)
77759       , xla_environment_pkg.g_Prog_Appl_Id
77760       , xla_environment_pkg.g_Prog_Id
77761       , xla_environment_pkg.g_Req_Id
77762   FROM (
77763        SELECT xet.event_id                  event_id
77764             , 0                          line_number
77765             , CASE r
77766                WHEN 1 THEN 'AR_CASH_RECEIPTS_H_V' 
77767                 WHEN 2 THEN 'AR_CASH_RECEIPTS_H_V' 
77768                 WHEN 3 THEN 'AR_RCT_METHOD_H_V' 
77769                 WHEN 4 THEN 'AR_CASH_RECEIPTS_H_V' 
77770                 WHEN 5 THEN 'AR_REMIT_BANK_ACCT_H_V' 
77771                 WHEN 6 THEN 'AR_REMIT_BANK_ACCT_H_V' 
77772                 WHEN 7 THEN 'AR_CASH_RECEIPTS_H_V' 
77773                 WHEN 8 THEN 'AR_RECEIVABLES_TRX_MISC_H_V' 
77774                 WHEN 9 THEN 'AR_CASH_RECEIPTS_H_V' 
77775                 WHEN 10 THEN 'AR_CASH_RECEIPTS_H_V' 
77776                 WHEN 11 THEN 'AR_CASH_RECEIPTS_H_V' 
77777                 
77778                ELSE null
77779               END                           object_name
77780             , CASE r
77781                 WHEN 1 THEN 'HEADER' 
77782                 WHEN 2 THEN 'HEADER' 
77783                 WHEN 3 THEN 'HEADER' 
77784                 WHEN 4 THEN 'HEADER' 
77785                 WHEN 5 THEN 'HEADER' 
77786                 WHEN 6 THEN 'HEADER' 
77787                 WHEN 7 THEN 'HEADER' 
77788                 WHEN 8 THEN 'HEADER' 
77789                 WHEN 9 THEN 'HEADER' 
77790                 WHEN 10 THEN 'HEADER' 
77791                 WHEN 11 THEN 'HEADER' 
77792                 
77793                 ELSE null
77794               END                           object_type_code
77795             , CASE r
77796                 WHEN 1 THEN '222' 
77797                 WHEN 2 THEN '222' 
77798                 WHEN 3 THEN '222' 
77799                 WHEN 4 THEN '222' 
77800                 WHEN 5 THEN '222' 
77801                 WHEN 6 THEN '222' 
77802                 WHEN 7 THEN '222' 
77803                 WHEN 8 THEN '222' 
77804                 WHEN 9 THEN '222' 
77805                 WHEN 10 THEN '222' 
77806                 WHEN 11 THEN '222' 
77807                 
77808                 ELSE null
77809               END                           source_application_id
77810             , 'S'             source_type_code
77811             , CASE r
77812                 WHEN 1 THEN 'RCT_RECEIPT_NUMBER' 
77813                 WHEN 2 THEN 'RCT_DOC_SEQUENCE_VALUE' 
77814                 WHEN 3 THEN 'RCT_MTHD_NAME' 
77815                 WHEN 4 THEN 'RCT_RECEIPT_DATE' 
77816                 WHEN 5 THEN 'RMT_BANK_NAME' 
77820                 WHEN 9 THEN 'RCT_DOC_SEQUENCE_CATEGORY' 
77817                 WHEN 6 THEN 'RMT_BNK_ACCOUNT_NAME' 
77818                 WHEN 7 THEN 'RCT_CASH_RECEIPT_ID' 
77819                 WHEN 8 THEN 'MC_ACT_NAME' 
77821                 WHEN 10 THEN 'RCT_DOC_SEQUENCE_ID' 
77822                 WHEN 11 THEN 'RCT_TRX_ACCT_REVERSAL' 
77823                 
77824                 ELSE null
77825               END                           source_code
77826             , CASE r
77827                 WHEN 1 THEN TO_CHAR(h1.RCT_RECEIPT_NUMBER)
77828                 WHEN 2 THEN TO_CHAR(h1.RCT_DOC_SEQUENCE_VALUE)
77829                 WHEN 3 THEN TO_CHAR(h4.RCT_MTHD_NAME)
77830                 WHEN 4 THEN TO_CHAR(h1.RCT_RECEIPT_DATE)
77831                 WHEN 5 THEN TO_CHAR(h6.RMT_BANK_NAME)
77832                 WHEN 6 THEN TO_CHAR(h6.RMT_BNK_ACCOUNT_NAME)
77833                 WHEN 7 THEN TO_CHAR(h1.RCT_CASH_RECEIPT_ID)
77834                 WHEN 8 THEN TO_CHAR(h5.MC_ACT_NAME)
77835                 WHEN 9 THEN TO_CHAR(h1.RCT_DOC_SEQUENCE_CATEGORY)
77836                 WHEN 10 THEN TO_CHAR(h1.RCT_DOC_SEQUENCE_ID)
77837                 WHEN 11 THEN TO_CHAR(h1.RCT_TRX_ACCT_REVERSAL)
77838                 
77839                 ELSE null
77840               END                           source_value
77841             , null              source_meaning
77842          FROM xla_events_gt     xet  
77843       , AR_CASH_RECEIPTS_H_V  h1
77844       , AR_RCT_METHOD_H_V  h4
77845       , AR_RECEIVABLES_TRX_MISC_H_V  h5
77846       , AR_REMIT_BANK_ACCT_H_V  h6
77847              ,(select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
77848          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
77849            AND xet.event_class_code = C_EVENT_CLASS_CODE
77850               AND h5.event_id = xet.event_id
77851   AND h1.event_id (+) = h5.event_id
77852   AND h4.event_id (+) = h5.event_id
77853   AND h6.event_id (+) = h5.event_id
77854 
77855 )
77856 ;
77857 --
77858 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77859 
77860       trace
77861          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
77862          ,p_level    => C_LEVEL_STATEMENT
77863          ,p_module   => l_log_module);
77864 
77865 END IF;
77866 --
77867 
77868 
77869 
77870 --
77871 INSERT INTO xla_diag_sources  --line2
77872 (
77873         event_id
77874       , ledger_id
77875       , sla_ledger_id
77876       , description_language
77877       , object_name
77878       , object_type_code
77879       , line_number
77880       , source_application_id
77881       , source_type_code
77882       , source_code
77883       , source_value
77884       , source_meaning
77885       , created_by
77886       , creation_date
77887       , last_update_date
77888       , last_updated_by
77889       , last_update_login
77890       , program_update_date
77891       , program_application_id
77892       , program_id
77893       , request_id
77894 )
77895 SELECT  event_id
77896       , p_target_ledger_id
77897       , p_sla_ledger_id
77898       , p_language
77899       , object_name
77900       , object_type_code
77901       , line_number
77902       , source_application_id
77903       , source_type_code
77904       , source_code
77905       , SUBSTR(source_value,1,1996)
77906       , SUBSTR(source_meaning ,1,200)
77907       , xla_environment_pkg.g_Usr_Id
77908       , TRUNC(SYSDATE)
77909       , TRUNC(SYSDATE)
77910       , xla_environment_pkg.g_Usr_Id
77911       , xla_environment_pkg.g_Login_Id
77912       , TRUNC(SYSDATE)
77913       , xla_environment_pkg.g_Prog_Appl_Id
77914       , xla_environment_pkg.g_Prog_Id
77915       , xla_environment_pkg.g_Req_Id
77916   FROM (
77917        SELECT xet.event_id                  event_id
77918             , l3.line_number                 line_number
77919             , CASE r
77920                WHEN 1 THEN 'AR_DISTRIBUTIONS_L_V' 
77921                 WHEN 2 THEN 'AR_DISTRIBUTIONS_L_V' 
77922                 WHEN 3 THEN 'AR_DISTRIBUTIONS_L_V' 
77923                 WHEN 4 THEN 'AR_DISTRIBUTIONS_L_V' 
77924                 WHEN 5 THEN 'AR_DISTRIBUTIONS_L_V' 
77925                 WHEN 6 THEN 'AR_DISTRIBUTIONS_L_V' 
77926                 WHEN 7 THEN 'AR_DISTRIBUTIONS_BASE_V' 
77927                 WHEN 8 THEN 'AR_DISTRIBUTIONS_BASE_V' 
77928                 WHEN 9 THEN 'AR_DISTRIBUTIONS_BASE_V' 
77929                 WHEN 10 THEN 'AR_DISTRIBUTIONS_L_V' 
77930                 WHEN 11 THEN 'AR_DISTRIBUTIONS_BASE_V' 
77931                 
77932                ELSE null
77933               END                           object_name
77934             , CASE r
77935                 WHEN 1 THEN 'LINE' 
77936                 WHEN 2 THEN 'LINE' 
77937                 WHEN 3 THEN 'LINE' 
77938                 WHEN 4 THEN 'LINE' 
77939                 WHEN 5 THEN 'LINE' 
77940                 WHEN 6 THEN 'LINE' 
77941                 WHEN 7 THEN 'LINE' 
77942                 WHEN 8 THEN 'LINE' 
77943                 WHEN 9 THEN 'LINE' 
77944                 WHEN 10 THEN 'LINE' 
77945                 WHEN 11 THEN 'LINE' 
77946                 
77947                 ELSE null
77948               END                           object_type_code
77949             , CASE r
77950                 WHEN 1 THEN '222' 
77951                 WHEN 2 THEN '222' 
77952                 WHEN 3 THEN '222' 
77953                 WHEN 4 THEN '222' 
77954                 WHEN 5 THEN '222' 
77955                 WHEN 6 THEN '222' 
77956                 WHEN 7 THEN '222' 
77957                 WHEN 8 THEN '222' 
77958                 WHEN 9 THEN '222' 
77959                 WHEN 10 THEN '222' 
77960                 WHEN 11 THEN '222' 
77961                 
77962                 ELSE null
77966                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
77963               END                           source_application_id
77964             , 'S'             source_type_code
77965             , CASE r
77967                 WHEN 2 THEN 'DIST_SOURCE_TYPE' 
77968                 WHEN 3 THEN 'DIST_LINE_ID' 
77969                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
77970                 WHEN 5 THEN 'DIST_ENT_AMT' 
77971                 WHEN 6 THEN 'DIST_CURRENCY_CODE' 
77972                 WHEN 7 THEN 'DIST_CUR_CONVERSION_RATE' 
77973                 WHEN 8 THEN 'DIST_CUR_CONVERSION_TYPE' 
77974                 WHEN 9 THEN 'DIST_TO_ACCTD_AMT' 
77975                 WHEN 10 THEN 'DIST_MFAR_ADDITIONAL_ENTRY' 
77976                 WHEN 11 THEN 'DIST_TO_CUR_CONVERSION_DATE' 
77977                 
77978                 ELSE null
77979               END                           source_code
77980             , CASE r
77981                 WHEN 1 THEN TO_CHAR(l3.DIST_CODE_COMBINATION_ID)
77982                 WHEN 2 THEN TO_CHAR(l3.DIST_SOURCE_TYPE)
77983                 WHEN 3 THEN TO_CHAR(l3.DIST_LINE_ID)
77984                 WHEN 4 THEN TO_CHAR(l3.DISTRIBUTION_TYPE)
77985                 WHEN 5 THEN TO_CHAR(l3.DIST_ENT_AMT)
77986                 WHEN 6 THEN TO_CHAR(l3.DIST_CURRENCY_CODE)
77987                 WHEN 7 THEN TO_CHAR(l2.DIST_CUR_CONVERSION_RATE)
77988                 WHEN 8 THEN TO_CHAR(l2.DIST_CUR_CONVERSION_TYPE)
77989                 WHEN 9 THEN TO_CHAR(l2.DIST_TO_ACCTD_AMT)
77990                 WHEN 10 THEN TO_CHAR(l3.DIST_MFAR_ADDITIONAL_ENTRY)
77991                 WHEN 11 THEN TO_CHAR(l2.DIST_TO_CUR_CONVERSION_DATE)
77992                 
77993                 ELSE null
77994               END                           source_value
77995             , null              source_meaning
77996          FROM  xla_events_gt     xet  
77997         , AR_DISTRIBUTIONS_BASE_V  l2
77998         , AR_DISTRIBUTIONS_L_V  l3
77999             , (select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
78000         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
78001           AND xet.event_class_code = C_EVENT_CLASS_CODE
78002             AND l2.event_id          = xet.event_id
78003   AND l3.event_id    = l2.event_id
78004   AND l3.line_number = l2.line_number
78005 
78006 )
78007 ;
78008 --
78009 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78010 
78011       trace
78012          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
78013          ,p_level    => C_LEVEL_STATEMENT
78014          ,p_module   => l_log_module);
78015 
78016 END IF;
78017 
78018 
78019 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78020       trace
78021          (p_msg      => 'END of insert_sources_136'
78022          ,p_level    => C_LEVEL_PROCEDURE
78023          ,p_module   => l_log_module);
78024 END IF;
78025 EXCEPTION
78026   WHEN xla_exceptions_pkg.application_exception THEN
78027       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
78028             trace
78029                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
78030                ,p_level    => C_LEVEL_EXCEPTION
78031                ,p_module   => l_log_module);
78032       END IF;
78033       RAISE;
78034   WHEN OTHERS THEN
78035       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
78036             trace
78037                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
78038                ,p_level    => C_LEVEL_EXCEPTION
78039                ,p_module   => l_log_module);
78040        END IF;
78041        xla_exceptions_pkg.raise_message
78042            (p_location => 'XLA_00222_AAD_S_000017_PKG.insert_sources_136');
78043 END insert_sources_136;
78044 --
78045 
78046 ---------------------------------------
78047 --
78048 -- PRIVATE FUNCTION
78049 --         EventClass_136
78050 --
78051 ----------------------------------------
78052 --
78053 FUNCTION EventClass_136
78054        (p_application_id         IN NUMBER
78055        ,p_base_ledger_id         IN NUMBER
78056        ,p_target_ledger_id       IN NUMBER
78057        ,p_language               IN VARCHAR2
78058        ,p_currency_code          IN VARCHAR2
78059        ,p_sla_ledger_id          IN NUMBER
78060        ,p_pad_start_date         IN DATE
78061        ,p_pad_end_date           IN DATE
78062        ,p_primary_ledger_id      IN NUMBER)
78063 RETURN BOOLEAN IS
78064 --
78065 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_RECEIPT_ALL';
78066 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MISC_RECEIPT';
78067 
78068 l_calculate_acctd_flag   VARCHAR2(1) :='N';
78069 l_calculate_g_l_flag     VARCHAR2(1) :='N';
78070 --
78071 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78072 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78073 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
78074 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78075 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78076 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
78077 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
78078 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78079 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78080 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78081 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78082 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78083 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78084 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
78085 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78086 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78090 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78087 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78088 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
78089 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78091 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78092 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
78093 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
78094 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
78095 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
78096 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
78097 
78098 l_event_id                             NUMBER;
78099 l_previous_event_id                    NUMBER;
78100 l_first_event_id                       NUMBER;
78101 l_last_event_id                        NUMBER;
78102 
78103 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
78104 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
78105 --
78106 --
78107 l_result                    BOOLEAN := TRUE;
78108 l_rows                      NUMBER  := 1000;
78109 l_event_type_name           VARCHAR2(80) := 'All';
78110 l_event_class_name          VARCHAR2(80) := 'Miscellaneous Receipt';
78111 l_description               VARCHAR2(4000);
78112 l_transaction_reversal      NUMBER;
78113 l_ae_header_id              NUMBER;
78114 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
78115 l_log_module                VARCHAR2(240);
78116 --
78117 l_acct_reversal_source      VARCHAR2(30);
78118 l_trx_reversal_source       VARCHAR2(30);
78119 
78120 l_continue_with_lines       BOOLEAN := TRUE;
78121 --
78122 l_acc_rev_gl_date_source    DATE;                      -- 4262811
78123 --
78124 type t_array_event_id is table of number index by binary_integer;
78125 
78126 l_rec_array_event                    t_rec_array_event;
78127 l_null_rec_array_event               t_rec_array_event;
78128 l_array_ae_header_id                 xla_number_array_type;
78129 l_actual_flag                        VARCHAR2(1) := NULL;
78130 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
78131 l_balance_type_code                  VARCHAR2(1) :=NULL;
78132 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
78133 
78134 --
78135 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
78136 --
78137 
78138 TYPE t_array_source_8 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_RECEIPT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
78139 TYPE t_array_source_9 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
78140 TYPE t_array_source_10 IS TABLE OF AR_RCT_METHOD_H_V.RCT_MTHD_NAME%TYPE INDEX BY BINARY_INTEGER;
78141 TYPE t_array_source_11 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_RECEIPT_DATE%TYPE INDEX BY BINARY_INTEGER;
78142 TYPE t_array_source_12 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BANK_NAME%TYPE INDEX BY BINARY_INTEGER;
78143 TYPE t_array_source_13 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BNK_ACCOUNT_NAME%TYPE INDEX BY BINARY_INTEGER;
78144 TYPE t_array_source_90 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_CASH_RECEIPT_ID%TYPE INDEX BY BINARY_INTEGER;
78145 TYPE t_array_source_91 IS TABLE OF AR_RECEIVABLES_TRX_MISC_H_V.MC_ACT_NAME%TYPE INDEX BY BINARY_INTEGER;
78146 TYPE t_array_source_117 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
78147 TYPE t_array_source_118 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
78148 TYPE t_array_source_119 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_TRX_ACCT_REVERSAL%TYPE INDEX BY BINARY_INTEGER;
78149 
78150 TYPE t_array_source_22 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
78151 TYPE t_array_source_27 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_SOURCE_TYPE%TYPE INDEX BY BINARY_INTEGER;
78152 TYPE t_array_source_29 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
78153 TYPE t_array_source_30 IS TABLE OF AR_DISTRIBUTIONS_L_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
78154 TYPE t_array_source_31 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_ENT_AMT%TYPE INDEX BY BINARY_INTEGER;
78155 TYPE t_array_source_32 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
78156 TYPE t_array_source_34 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
78157 TYPE t_array_source_35 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
78158 TYPE t_array_source_36 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_TO_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
78159 TYPE t_array_source_88 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_MFAR_ADDITIONAL_ENTRY%TYPE INDEX BY BINARY_INTEGER;
78160 TYPE t_array_source_89 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_TO_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
78161 
78162 l_array_source_8              t_array_source_8;
78163 l_array_source_9              t_array_source_9;
78164 l_array_source_10              t_array_source_10;
78165 l_array_source_11              t_array_source_11;
78166 l_array_source_12              t_array_source_12;
78167 l_array_source_13              t_array_source_13;
78168 l_array_source_90              t_array_source_90;
78169 l_array_source_91              t_array_source_91;
78170 l_array_source_117              t_array_source_117;
78171 l_array_source_118              t_array_source_118;
78172 l_array_source_119              t_array_source_119;
78173 
78174 l_array_source_22      t_array_source_22;
78175 l_array_source_27      t_array_source_27;
78176 l_array_source_29      t_array_source_29;
78177 l_array_source_30      t_array_source_30;
78178 l_array_source_31      t_array_source_31;
78179 l_array_source_32      t_array_source_32;
78180 l_array_source_34      t_array_source_34;
78181 l_array_source_35      t_array_source_35;
78182 l_array_source_36      t_array_source_36;
78183 l_array_source_88      t_array_source_88;
78187 CURSOR header_cur
78184 l_array_source_89      t_array_source_89;
78185 
78186 --
78188 IS
78189 SELECT /*+ leading(xet) cardinality(xet,1) */
78190 -- Event Class Code: MISC_RECEIPT
78191     xet.entity_id
78192    ,xet.legal_entity_id
78193    ,xet.entity_code
78194    ,xet.transaction_number
78195    ,xet.event_id
78196    ,xet.event_class_code
78197    ,xet.event_type_code
78198    ,xet.event_number
78199    ,xet.event_date
78200    ,xet.transaction_date
78201    ,xet.reference_num_1
78202    ,xet.reference_num_2
78203    ,xet.reference_num_3
78204    ,xet.reference_num_4
78205    ,xet.reference_char_1
78206    ,xet.reference_char_2
78207    ,xet.reference_char_3
78208    ,xet.reference_char_4
78209    ,xet.reference_date_1
78210    ,xet.reference_date_2
78211    ,xet.reference_date_3
78212    ,xet.reference_date_4
78213    ,xet.event_created_by
78214    ,xet.budgetary_control_flag 
78215   , h1.RCT_RECEIPT_NUMBER    source_8
78216   , h1.RCT_DOC_SEQUENCE_VALUE    source_9
78217   , h4.RCT_MTHD_NAME    source_10
78218   , h1.RCT_RECEIPT_DATE    source_11
78219   , h6.RMT_BANK_NAME    source_12
78220   , h6.RMT_BNK_ACCOUNT_NAME    source_13
78221   , h1.RCT_CASH_RECEIPT_ID    source_90
78222   , h5.MC_ACT_NAME    source_91
78223   , h1.RCT_DOC_SEQUENCE_CATEGORY    source_117
78224   , h1.RCT_DOC_SEQUENCE_ID    source_118
78225   , h1.RCT_TRX_ACCT_REVERSAL    source_119
78226   FROM xla_events_gt     xet 
78227   , AR_CASH_RECEIPTS_H_V  h1
78228   , AR_RCT_METHOD_H_V  h4
78229   , AR_RECEIVABLES_TRX_MISC_H_V  h5
78230   , AR_REMIT_BANK_ACCT_H_V  h6
78231  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
78232    and xet.event_class_code = C_EVENT_CLASS_CODE
78233    and xet.event_status_code <> 'N'  AND h5.event_id = xet.event_id
78234   AND h1.event_id (+) = h5.event_id
78235   AND h4.event_id (+) = h5.event_id
78236   AND h6.event_id (+) = h5.event_id
78237 
78238  ORDER BY event_id
78239 ;
78240 
78241 
78242 --
78243 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
78244 IS
78245 SELECT  /*+ leading(xet) cardinality(xet,1) */
78246 -- Event Class Code: MISC_RECEIPT
78247     xet.entity_id
78248    ,xet.legal_entity_id
78249    ,xet.entity_code
78250    ,xet.transaction_number
78251    ,xet.event_id
78252    ,xet.event_class_code
78253    ,xet.event_type_code
78254    ,xet.event_number
78255    ,xet.event_date
78256    ,xet.transaction_date
78257    ,xet.reference_num_1
78258    ,xet.reference_num_2
78259    ,xet.reference_num_3
78260    ,xet.reference_num_4
78261    ,xet.reference_char_1
78262    ,xet.reference_char_2
78263    ,xet.reference_char_3
78264    ,xet.reference_char_4
78265    ,xet.reference_date_1
78266    ,xet.reference_date_2
78267    ,xet.reference_date_3
78268    ,xet.reference_date_4
78269    ,xet.event_created_by
78270    ,xet.budgetary_control_flag
78271  , l2.LINE_NUMBER  
78272   , l3.DIST_CODE_COMBINATION_ID    source_22
78273   , l3.DIST_SOURCE_TYPE    source_27
78274   , l3.DIST_LINE_ID    source_29
78275   , l3.DISTRIBUTION_TYPE    source_30
78276   , l3.DIST_ENT_AMT    source_31
78277   , l3.DIST_CURRENCY_CODE    source_32
78278   , l2.DIST_CUR_CONVERSION_RATE    source_34
78279   , l2.DIST_CUR_CONVERSION_TYPE    source_35
78280   , l2.DIST_TO_ACCTD_AMT    source_36
78281   , l3.DIST_MFAR_ADDITIONAL_ENTRY    source_88
78282   , l2.DIST_TO_CUR_CONVERSION_DATE    source_89
78283   FROM xla_events_gt     xet 
78284   , AR_DISTRIBUTIONS_BASE_V  l2
78285   , AR_DISTRIBUTIONS_L_V  l3
78286  WHERE xet.event_id between x_first_event_id and x_last_event_id
78287    and xet.event_date between p_pad_start_date and p_pad_end_date
78288    and xet.event_class_code = C_EVENT_CLASS_CODE
78289    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
78290   AND l3.event_id    = l2.event_id
78291   AND l3.line_number = l2.line_number
78292 ;
78293 
78294 --
78295 BEGIN
78296 IF g_log_enabled THEN
78297    l_log_module := C_DEFAULT_MODULE||'.EventClass_136';
78298 END IF;
78299 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78300    trace
78301       (p_msg      => 'BEGIN of EventClass_136'
78302       ,p_level    => C_LEVEL_PROCEDURE
78303       ,p_module   => l_log_module);
78304 END IF;
78305 
78306 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78307    trace
78308       (p_msg      => 'p_application_id = '||p_application_id||
78309                      ' - p_base_ledger_id = '||p_base_ledger_id||
78310                      ' - p_target_ledger_id  = '||p_target_ledger_id||
78311                      ' - p_language = '||p_language||
78312                      ' - p_currency_code = '||p_currency_code||
78313                      ' - p_sla_ledger_id = '||p_sla_ledger_id
78314       ,p_level    => C_LEVEL_STATEMENT
78315       ,p_module   => l_log_module);
78316 END IF;
78317 --
78318 -- initialze arrays
78319 --
78320 g_array_event.DELETE;
78321 l_rec_array_event := l_null_rec_array_event;
78322 --
78323 --------------------------------------
78324 -- 4262811 Initialze MPA Line Number
78325 --------------------------------------
78326 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
78327 
78328 --
78329 
78330 --
78331 OPEN header_cur;
78332 --
78333 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78334    trace
78335    (p_msg      => 'SQL - FETCH header_cur'
78336    ,p_level    => C_LEVEL_STATEMENT
78337    ,p_module   => l_log_module);
78338 END IF;
78339 --
78340 LOOP
78341 FETCH header_cur BULK COLLECT INTO
78342         l_array_entity_id
78343       , l_array_legal_entity_id
78344       , l_array_entity_code
78345       , l_array_transaction_num
78346       , l_array_event_id
78350       , l_array_event_date
78347       , l_array_class_code
78348       , l_array_event_type
78349       , l_array_event_number
78351       , l_array_transaction_date
78352       , l_array_reference_num_1
78353       , l_array_reference_num_2
78354       , l_array_reference_num_3
78355       , l_array_reference_num_4
78356       , l_array_reference_char_1
78357       , l_array_reference_char_2
78358       , l_array_reference_char_3
78359       , l_array_reference_char_4
78360       , l_array_reference_date_1
78361       , l_array_reference_date_2
78362       , l_array_reference_date_3
78363       , l_array_reference_date_4
78364       , l_array_event_created_by
78365       , l_array_budgetary_control_flag 
78366       , l_array_source_8
78367       , l_array_source_9
78368       , l_array_source_10
78369       , l_array_source_11
78370       , l_array_source_12
78371       , l_array_source_13
78372       , l_array_source_90
78373       , l_array_source_91
78374       , l_array_source_117
78375       , l_array_source_118
78376       , l_array_source_119
78377       LIMIT l_rows;
78378 --
78379 IF (C_LEVEL_EVENT >= g_log_level) THEN
78380    trace
78381    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
78382    ,p_level    => C_LEVEL_EVENT
78383    ,p_module   => l_log_module);
78384 END IF;
78385 --
78386 EXIT WHEN l_array_entity_id.COUNT = 0;
78387 
78388 -- initialize arrays
78389 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
78390 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
78391 
78392 --
78393 -- Bug 4458708
78394 --
78395 XLA_AE_LINES_PKG.g_LineNumber := 0;
78396 
78397 
78398 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
78399 g_last_hdr_idx := l_array_event_id.LAST;
78400 --
78401 -- loop for the headers. Each iteration is for each header extract row
78402 -- fetched in header cursor
78403 --
78404 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
78405 
78406 --
78407 -- set event info as cache for other routines to refer event attributes
78408 --
78409 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
78410    (p_application_id           => p_application_id
78411    ,p_primary_ledger_id        => p_primary_ledger_id
78412    ,p_base_ledger_id           => p_base_ledger_id
78413    ,p_target_ledger_id         => p_target_ledger_id
78414    ,p_entity_id                => l_array_entity_id(hdr_idx)
78415    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
78416    ,p_entity_code              => l_array_entity_code(hdr_idx)
78417    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
78418    ,p_event_id                 => l_array_event_id(hdr_idx)
78419    ,p_event_class_code         => l_array_class_code(hdr_idx)
78420    ,p_event_type_code          => l_array_event_type(hdr_idx)
78421    ,p_event_number             => l_array_event_number(hdr_idx)
78422    ,p_event_date               => l_array_event_date(hdr_idx)
78423    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
78424    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
78425    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
78426    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
78427    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
78428    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
78429    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
78430    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
78431    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
78432    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
78433    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
78434    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
78435    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
78436    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
78437    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
78438 
78439 --
78440 -- set the status of entry to C_VALID (0)
78441 --
78442 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
78443 
78444 --
78445 -- initialize a row for ae header
78446 --
78447 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
78448 
78449 l_event_id := l_array_event_id(hdr_idx);
78450 
78451 --
78452 -- storing the hdr_idx for event. May be used by line cursor.
78453 --
78454 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
78455 
78456 --
78457 -- store sources from header extract. This can be improved to
78458 -- store only those sources from header extract that may be used in lines
78459 --
78460 
78461 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
78462 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
78463 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
78464 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
78465 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
78466 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
78467 g_array_event(l_event_id).array_value_num('source_90') := l_array_source_90(hdr_idx);
78468 g_array_event(l_event_id).array_value_char('source_91') := l_array_source_91(hdr_idx);
78469 g_array_event(l_event_id).array_value_char('source_117') := l_array_source_117(hdr_idx);
78470 g_array_event(l_event_id).array_value_num('source_118') := l_array_source_118(hdr_idx);
78471 g_array_event(l_event_id).array_value_char('source_119') := l_array_source_119(hdr_idx);
78472 
78473 --
78474 -- initilaize the status of ae headers for diffrent balance types
78475 -- the status is initialised to C_NOT_CREATED (2)
78479 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
78476 --
78477 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
78478 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
78480 
78481 --
78482 -- call api to validate and store accounting attributes for header
78483 --
78484 
78485 ------------------------------------------------------------
78486 -- Accrual Reversal : to get date for Standard Source (NONE)
78487 ------------------------------------------------------------
78488 l_acc_rev_gl_date_source := NULL;
78489 
78490      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
78491       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_117');
78492      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
78493       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_118');
78494      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
78495       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_9');
78496      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
78497       l_rec_acct_attrs.array_date_value(4) := 
78498 xla_ae_sources_pkg.GetSystemSourceDate(
78499    p_source_code           => 'XLA_EVENT_DATE'
78500  , p_source_type_code      => 'Y'
78501  , p_source_application_id =>  602
78502 );
78503      l_rec_acct_attrs.array_acct_attr_code(5)   := 'TRX_ACCT_REVERSAL_OPTION';
78504       l_rec_acct_attrs.array_char_value(5) := g_array_event(l_event_id).array_value_char('source_119');
78505 
78506 
78507 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
78508 
78509 XLA_AE_HEADER_PKG.SetJeCategoryName;
78510 
78511 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
78512 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
78513 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
78514 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
78515 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
78516 
78517 
78518 --
78519 xla_ae_header_pkg.SetHdrDescription(
78520    p_description => Description_9 (
78521    p_application_id => p_application_id 
78522  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
78523  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
78524  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
78525  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
78526  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
78527  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
78528    )
78529 );
78530 --
78531 
78532 -- No header level analytical criteria
78533 
78534 --
78535 --accounting attribute enhancement, bug 3612931
78536 --
78537 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_119'), 1,30);
78538 
78539 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
78540    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
78541 
78542    xla_accounting_err_pkg.build_message
78543       (p_appli_s_name            => 'XLA'
78544       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
78545       ,p_token_1                 => 'ACCT_ATTR_NAME'
78546       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
78547       ,p_token_2                 => 'PRODUCT_NAME'
78548       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
78549       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
78550       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
78551       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
78552 
78553 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
78554    --
78555    -- following sets the accounting attributes needed to reverse
78556    -- accounting for a distributeion
78557    --
78558    xla_ae_lines_pkg.SetTrxReversalAttrs
78559       (p_event_id              => l_event_id
78560       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
78561       ,p_trx_reversal_source   => l_trx_reversal_source);
78562 
78563 END IF;
78564 
78565 
78566 ----------------------------------------------------------------
78567 -- 4262811 -  update the header statuses to invalid in need be
78568 ----------------------------------------------------------------
78569 --
78570 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
78571 
78572 
78573   -----------------------------------------------
78574   -- No accrual reversal for the event class/type
78575   -----------------------------------------------
78576 ----------------------------------------------------------------
78577 
78578 --
78579 -- this ends the header loop iteration for one bulk fetch
78580 --
78581 END LOOP;
78582 
78583 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
78584 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
78585 
78586 --
78587 -- insert dummy rows into lines gt table that were created due to
78588 -- transaction reversals
78589 --
78590 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
78591    l_result := XLA_AE_LINES_PKG.InsertLines;
78592 END IF;
78593 
78594 --
78595 -- reset the temp_line_num for each set of events fetched from header
78596 -- cursor rather than doing it for each new event in line cursor
78597 -- Bug 3939231
78598 --
78599 xla_ae_lines_pkg.g_temp_line_num := 0;
78603 --
78600 
78601 
78602 
78604 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
78605 --
78606 --
78607 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78608 
78609       trace
78610          (p_msg      => 'SQL - FETCH line_cur'
78611          ,p_level    => C_LEVEL_STATEMENT
78612          ,p_module   => l_log_module);
78613 
78614 END IF;
78615 --
78616 --
78617 LOOP
78618   --
78619   FETCH line_cur BULK COLLECT INTO
78620         l_array_entity_id
78621       , l_array_legal_entity_id
78622       , l_array_entity_code
78623       , l_array_transaction_num
78624       , l_array_event_id
78625       , l_array_class_code
78626       , l_array_event_type
78627       , l_array_event_number
78628       , l_array_event_date
78629       , l_array_transaction_date
78630       , l_array_reference_num_1
78631       , l_array_reference_num_2
78632       , l_array_reference_num_3
78633       , l_array_reference_num_4
78634       , l_array_reference_char_1
78635       , l_array_reference_char_2
78636       , l_array_reference_char_3
78637       , l_array_reference_char_4
78638       , l_array_reference_date_1
78639       , l_array_reference_date_2
78640       , l_array_reference_date_3
78641       , l_array_reference_date_4
78642       , l_array_event_created_by
78643       , l_array_budgetary_control_flag
78644       , l_array_extract_line_num 
78645       , l_array_source_22
78646       , l_array_source_27
78647       , l_array_source_29
78648       , l_array_source_30
78649       , l_array_source_31
78650       , l_array_source_32
78651       , l_array_source_34
78652       , l_array_source_35
78653       , l_array_source_36
78654       , l_array_source_88
78655       , l_array_source_89
78656       LIMIT l_rows;
78657 
78658   --
78659   IF (C_LEVEL_EVENT >= g_log_level) THEN
78660             trace
78661                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
78662                ,p_level    => C_LEVEL_EVENT
78663                ,p_module   => l_log_module);
78664   END IF;
78665   --
78666   EXIT WHEN l_array_entity_id.count = 0;
78667 
78668   XLA_AE_LINES_PKG.g_rec_lines := null;
78669 
78670 --
78671 -- Bug 4458708
78672 --
78673 XLA_AE_LINES_PKG.g_LineNumber := 0;
78674 --
78675 --
78676 
78677 FOR Idx IN 1..l_array_event_id.count LOOP
78678    --
78679    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
78680    --
78681    l_event_id := l_array_event_id(idx);  -- 5648433
78682 
78683    --
78684    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
78685    --
78686 
78687    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
78688              (g_array_event(l_event_id).array_value_num('header_index'))
78689          ,'N'
78690          ) <> 'Y'
78691    THEN
78692       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78693          trace
78694             (p_msg      => 'Trancaction revesal option is not Y '
78695             ,p_level    => C_LEVEL_STATEMENT
78696             ,p_module   => l_log_module);
78697       END IF;
78698 
78699 --
78700 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
78701 --
78702 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
78703 --
78704 -- set event info as cache for other routines to refer event attributes
78705 --
78706 
78707 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
78708    l_previous_event_id := l_event_id;
78709 
78710    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
78711       (p_application_id           => p_application_id
78712       ,p_primary_ledger_id        => p_primary_ledger_id
78713       ,p_base_ledger_id           => p_base_ledger_id
78714       ,p_target_ledger_id         => p_target_ledger_id
78715       ,p_entity_id                => l_array_entity_id(Idx)
78716       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
78717       ,p_entity_code              => l_array_entity_code(Idx)
78718       ,p_transaction_num          => l_array_transaction_num(Idx)
78719       ,p_event_id                 => l_array_event_id(Idx)
78720       ,p_event_class_code         => l_array_class_code(Idx)
78721       ,p_event_type_code          => l_array_event_type(Idx)
78722       ,p_event_number             => l_array_event_number(Idx)
78723       ,p_event_date               => l_array_event_date(Idx)
78724       ,p_transaction_date         => l_array_transaction_date(Idx)
78725       ,p_reference_num_1          => l_array_reference_num_1(Idx)
78726       ,p_reference_num_2          => l_array_reference_num_2(Idx)
78727       ,p_reference_num_3          => l_array_reference_num_3(Idx)
78728       ,p_reference_num_4          => l_array_reference_num_4(Idx)
78729       ,p_reference_char_1         => l_array_reference_char_1(Idx)
78730       ,p_reference_char_2         => l_array_reference_char_2(Idx)
78731       ,p_reference_char_3         => l_array_reference_char_3(Idx)
78732       ,p_reference_char_4         => l_array_reference_char_4(Idx)
78733       ,p_reference_date_1         => l_array_reference_date_1(Idx)
78734       ,p_reference_date_2         => l_array_reference_date_2(Idx)
78735       ,p_reference_date_3         => l_array_reference_date_3(Idx)
78736       ,p_reference_date_4         => l_array_reference_date_4(Idx)
78737       ,p_event_created_by         => l_array_event_created_by(Idx)
78738       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
78739        --
78740 END IF;
78741 
78742 
78743 
78744 --
78745 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
78746 
78747 l_acct_reversal_source := SUBSTR(NULL, 1,30);
78748 
78752 
78749 IF l_continue_with_lines THEN
78750    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
78751       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
78753       xla_accounting_err_pkg.build_message
78754          (p_appli_s_name            => 'XLA'
78755          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
78756          ,p_token_1                 => 'LINE_NUMBER'
78757          ,p_value_1                 => l_array_extract_line_num(Idx)
78758          ,p_token_2                 => 'PRODUCT_NAME'
78759          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
78760          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
78761          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
78762          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
78763 
78764    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
78765       --
78766       -- following sets the accounting attributes needed to reverse
78767       -- accounting for a distributeion
78768       --
78769 
78770       --
78771       -- 5217187
78772       --
78773       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
78774       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
78775                                        g_array_event(l_event_id).array_value_num('header_index'));
78776       --
78777       --
78778 
78779       -- No reversal code generated
78780 
78781       xla_ae_lines_pkg.SetAcctReversalAttrs
78782          (p_event_id             => l_event_id
78783          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
78784          ,p_calculate_acctd_flag => l_calculate_acctd_flag
78785          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
78786    END IF;
78787 
78788    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
78789        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
78790 
78791 --
78792 AcctLineType_90 (
78793  p_application_id  => p_application_id
78794  ,p_event_id     => l_event_id
78795  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78796  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78797  ,p_actual_flag => l_actual_flag
78798  ,p_balance_type_code => l_balance_type_code
78799  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78800  
78801  , p_source_22 => l_array_source_22(Idx)
78802  , p_source_27 => l_array_source_27(Idx)
78803  , p_source_29 => l_array_source_29(Idx)
78804  , p_source_30 => l_array_source_30(Idx)
78805  , p_source_31 => l_array_source_31(Idx)
78806  , p_source_32 => l_array_source_32(Idx)
78807  , p_source_34 => l_array_source_34(Idx)
78808  , p_source_35 => l_array_source_35(Idx)
78809  , p_source_36 => l_array_source_36(Idx)
78810  , p_source_88 => l_array_source_88(Idx)
78811  , p_source_89 => l_array_source_89(Idx)
78812  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
78813  );
78814 If(l_balance_type_code = 'A') THEN
78815   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78816 END IF;
78817 
78818 --
78819 
78820 
78821 --
78822 AcctLineType_91 (
78823  p_application_id  => p_application_id
78824  ,p_event_id     => l_event_id
78825  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78826  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78827  ,p_actual_flag => l_actual_flag
78828  ,p_balance_type_code => l_balance_type_code
78829  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78830  
78831  , p_source_22 => l_array_source_22(Idx)
78832  , p_source_27 => l_array_source_27(Idx)
78833  , p_source_29 => l_array_source_29(Idx)
78834  , p_source_30 => l_array_source_30(Idx)
78835  , p_source_31 => l_array_source_31(Idx)
78836  , p_source_32 => l_array_source_32(Idx)
78837  , p_source_34 => l_array_source_34(Idx)
78838  , p_source_35 => l_array_source_35(Idx)
78839  , p_source_36 => l_array_source_36(Idx)
78840  , p_source_88 => l_array_source_88(Idx)
78841  , p_source_89 => l_array_source_89(Idx)
78842  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
78843  );
78844 If(l_balance_type_code = 'A') THEN
78845   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78846 END IF;
78847 
78848 --
78849 
78850 
78851 --
78852 AcctLineType_92 (
78853  p_application_id  => p_application_id
78854  ,p_event_id     => l_event_id
78855  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78856  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78857  ,p_actual_flag => l_actual_flag
78858  ,p_balance_type_code => l_balance_type_code
78859  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78860  
78861  , p_source_22 => l_array_source_22(Idx)
78862  , p_source_27 => l_array_source_27(Idx)
78863  , p_source_29 => l_array_source_29(Idx)
78864  , p_source_30 => l_array_source_30(Idx)
78865  , p_source_31 => l_array_source_31(Idx)
78866  , p_source_32 => l_array_source_32(Idx)
78867  , p_source_34 => l_array_source_34(Idx)
78868  , p_source_35 => l_array_source_35(Idx)
78869  , p_source_36 => l_array_source_36(Idx)
78870  , p_source_88 => l_array_source_88(Idx)
78871  , p_source_89 => l_array_source_89(Idx)
78872  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
78873  );
78874 If(l_balance_type_code = 'A') THEN
78875   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78876 END IF;
78877 
78878 --
78879 
78880 
78881 --
78882 AcctLineType_93 (
78883  p_application_id  => p_application_id
78884  ,p_event_id     => l_event_id
78885  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78886  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78887  ,p_actual_flag => l_actual_flag
78888  ,p_balance_type_code => l_balance_type_code
78889  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78890  
78891  , p_source_22 => l_array_source_22(Idx)
78895  , p_source_31 => l_array_source_31(Idx)
78892  , p_source_27 => l_array_source_27(Idx)
78893  , p_source_29 => l_array_source_29(Idx)
78894  , p_source_30 => l_array_source_30(Idx)
78896  , p_source_32 => l_array_source_32(Idx)
78897  , p_source_34 => l_array_source_34(Idx)
78898  , p_source_35 => l_array_source_35(Idx)
78899  , p_source_36 => l_array_source_36(Idx)
78900  , p_source_88 => l_array_source_88(Idx)
78901  , p_source_89 => l_array_source_89(Idx)
78902  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
78903  );
78904 If(l_balance_type_code = 'A') THEN
78905   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78906 END IF;
78907 
78908 --
78909 
78910 
78911 --
78912 AcctLineType_94 (
78913  p_application_id  => p_application_id
78914  ,p_event_id     => l_event_id
78915  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78916  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78917  ,p_actual_flag => l_actual_flag
78918  ,p_balance_type_code => l_balance_type_code
78919  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78920  
78921  , p_source_22 => l_array_source_22(Idx)
78922  , p_source_27 => l_array_source_27(Idx)
78923  , p_source_29 => l_array_source_29(Idx)
78924  , p_source_30 => l_array_source_30(Idx)
78925  , p_source_31 => l_array_source_31(Idx)
78926  , p_source_32 => l_array_source_32(Idx)
78927  , p_source_34 => l_array_source_34(Idx)
78928  , p_source_35 => l_array_source_35(Idx)
78929  , p_source_36 => l_array_source_36(Idx)
78930  , p_source_88 => l_array_source_88(Idx)
78931  , p_source_89 => l_array_source_89(Idx)
78932  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
78933  );
78934 If(l_balance_type_code = 'A') THEN
78935   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78936 END IF;
78937 
78938 --
78939 
78940 
78941 --
78942 AcctLineType_95 (
78943  p_application_id  => p_application_id
78944  ,p_event_id     => l_event_id
78945  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78946  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78947  ,p_actual_flag => l_actual_flag
78948  ,p_balance_type_code => l_balance_type_code
78949  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78950  
78951  , p_source_22 => l_array_source_22(Idx)
78952  , p_source_27 => l_array_source_27(Idx)
78953  , p_source_29 => l_array_source_29(Idx)
78954  , p_source_30 => l_array_source_30(Idx)
78955  , p_source_31 => l_array_source_31(Idx)
78956  , p_source_32 => l_array_source_32(Idx)
78957  , p_source_34 => l_array_source_34(Idx)
78958  , p_source_35 => l_array_source_35(Idx)
78959  , p_source_36 => l_array_source_36(Idx)
78960  , p_source_88 => l_array_source_88(Idx)
78961  , p_source_89 => l_array_source_89(Idx)
78962  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
78963  , p_source_91 => g_array_event(l_event_id).array_value_char('source_91')
78964  );
78965 If(l_balance_type_code = 'A') THEN
78966   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78967 END IF;
78968 
78969 --
78970 
78971 
78972 --
78973 AcctLineType_96 (
78974  p_application_id  => p_application_id
78975  ,p_event_id     => l_event_id
78976  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78977  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78978  ,p_actual_flag => l_actual_flag
78979  ,p_balance_type_code => l_balance_type_code
78980  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78981  
78982  , p_source_22 => l_array_source_22(Idx)
78983  , p_source_27 => l_array_source_27(Idx)
78984  , p_source_29 => l_array_source_29(Idx)
78985  , p_source_30 => l_array_source_30(Idx)
78986  , p_source_31 => l_array_source_31(Idx)
78987  , p_source_32 => l_array_source_32(Idx)
78988  , p_source_34 => l_array_source_34(Idx)
78989  , p_source_35 => l_array_source_35(Idx)
78990  , p_source_36 => l_array_source_36(Idx)
78991  , p_source_88 => l_array_source_88(Idx)
78992  , p_source_89 => l_array_source_89(Idx)
78993  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
78994  );
78995 If(l_balance_type_code = 'A') THEN
78996   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78997 END IF;
78998 
78999 --
79000 
79001 
79002 --
79003 AcctLineType_97 (
79004  p_application_id  => p_application_id
79005  ,p_event_id     => l_event_id
79006  ,p_calculate_acctd_flag => l_calculate_acctd_flag
79007  ,p_calculate_g_l_flag => l_calculate_g_l_flag
79008  ,p_actual_flag => l_actual_flag
79009  ,p_balance_type_code => l_balance_type_code
79010  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
79011  
79012  , p_source_22 => l_array_source_22(Idx)
79013  , p_source_27 => l_array_source_27(Idx)
79014  , p_source_29 => l_array_source_29(Idx)
79015  , p_source_30 => l_array_source_30(Idx)
79016  , p_source_31 => l_array_source_31(Idx)
79017  , p_source_32 => l_array_source_32(Idx)
79018  , p_source_34 => l_array_source_34(Idx)
79019  , p_source_35 => l_array_source_35(Idx)
79020  , p_source_36 => l_array_source_36(Idx)
79021  , p_source_88 => l_array_source_88(Idx)
79022  , p_source_89 => l_array_source_89(Idx)
79023  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
79024  );
79025 If(l_balance_type_code = 'A') THEN
79026   l_actual_gain_loss_ref := l_gain_or_loss_ref;
79027 END IF;
79028 
79029 --
79030 
79031       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
79032       -- or secondary ledger that has different currency with primary
79033       -- or alc that is calculated by sla
79034       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
79035             (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'))
79036 
79040         XLA_AE_LINES_PKG.CreateGainOrLossLines(
79037 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
79038 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
79039           AND (l_actual_flag = 'A')) THEN
79041           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
79042          ,p_application_id   => p_application_id
79043          ,p_amb_context_code => 'DEFAULT'
79044          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
79045          ,p_event_class_code => C_EVENT_CLASS_CODE
79046          ,p_event_type_code  => C_EVENT_TYPE_CODE
79047          
79048          ,p_gain_ccid        => -1
79049          ,p_loss_ccid        => -1
79050 
79051          ,p_actual_flag      => l_actual_flag
79052          ,p_enc_flag         => null
79053          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
79054          ,p_enc_g_l_ref      => null
79055          );
79056       END IF;
79057    END IF;
79058 END IF;
79059 
79060    ELSE
79061       --
79062       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
79063       --
79064       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79065          trace
79066             (p_msg      => 'Trancaction revesal option is Y'
79067             ,p_level    => C_LEVEL_STATEMENT
79068             ,p_module   => l_log_module);
79069       END IF;
79070    END IF;
79071 
79072 END LOOP;
79073 l_result := XLA_AE_LINES_PKG.InsertLines ;
79074 end loop;
79075 close line_cur;
79076 
79077 
79078 --
79079 -- insert headers into xla_ae_headers_gt table
79080 --
79081 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
79082 
79083 -- insert into errors table here.
79084 
79085 END LOOP;
79086 
79087 --
79088 -- 4865292
79089 --
79090 -- Compare g_hdr_extract_count with event count in
79091 -- CreateHeadersAndLines.
79092 --
79093 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
79094 
79095 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79096    trace (p_msg     => '# rows extracted from header extract objects '
79097                     || ' (running total): '
79098                     || g_hdr_extract_count
79099          ,p_level   => C_LEVEL_STATEMENT
79100          ,p_module  => l_log_module);
79101 END IF;
79102 
79103 CLOSE header_cur;
79104 --
79105 
79106 --
79107 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79108    trace
79109       (p_msg      => 'END of EventClass_136'
79110       ,p_level    => C_LEVEL_PROCEDURE
79111       ,p_module   => l_log_module);
79112 END IF;
79113 --
79114 RETURN l_result;
79115 EXCEPTION
79116 WHEN xla_exceptions_pkg.application_exception THEN
79117    
79118 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
79119 
79120    
79121 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
79122 
79123    RAISE;
79124 
79125 WHEN NO_DATA_FOUND THEN
79126 
79127 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
79128 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
79129 
79130 FOR header_record IN header_cur
79131 LOOP
79132     l_array_header_events(header_record.event_id) := header_record.event_id;
79133 END LOOP;
79134 
79135 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
79136 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
79137 
79138 fnd_file.put_line(fnd_file.LOG, '                    ');
79139 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
79140 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
79141 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
79142 
79143 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
79144 LOOP
79145 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
79146 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
79147         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
79148 	END IF;
79149 END LOOP;
79150 
79151 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
79152 fnd_file.put_line(fnd_file.LOG, '                    ');
79153 
79154 
79155 xla_exceptions_pkg.raise_message
79156       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_136');
79157 
79158 
79159 WHEN OTHERS THEN
79160    xla_exceptions_pkg.raise_message
79161       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_136');
79162 END EventClass_136;
79163 --
79164 
79165 ---------------------------------------
79166 --
79167 -- PRIVATE PROCEDURE
79168 --         insert_sources_137
79169 --
79170 ----------------------------------------
79171 --
79172 PROCEDURE insert_sources_137(
79173                                 p_target_ledger_id       IN NUMBER
79174                               , p_language               IN VARCHAR2
79175                               , p_sla_ledger_id          IN NUMBER
79176                               , p_pad_start_date         IN DATE
79177                               , p_pad_end_date           IN DATE
79178                          )
79179 IS
79180 
79181 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RECEIPT_ALL';
79182 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RECEIPT';
79183 p_apps_owner                   VARCHAR2(30);
79184 l_log_module                   VARCHAR2(240);
79185 BEGIN
79186 IF g_log_enabled THEN
79187       l_log_module := C_DEFAULT_MODULE||'.insert_sources_137';
79188 END IF;
79189 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79190 
79194          ,p_module   => l_log_module);
79191       trace
79192          (p_msg      => 'BEGIN of insert_sources_137'
79193          ,p_level    => C_LEVEL_PROCEDURE
79195 
79196 END IF;
79197 
79198 -- select APPS owner
79199 SELECT oracle_username
79200   INTO p_apps_owner
79201   FROM fnd_oracle_userid
79202  WHERE read_only_flag = 'U'
79203 ;
79204 
79205 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79206       trace
79207          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
79208                         ' - p_language = '||p_language||
79209                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
79210                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
79211                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
79212                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
79213          ,p_level    => C_LEVEL_STATEMENT
79214          ,p_module   => l_log_module);
79215 END IF;
79216 
79217 
79218 --
79219 INSERT INTO xla_diag_sources --hdr2
79220 (
79221         event_id
79222       , ledger_id
79223       , sla_ledger_id
79224       , description_language
79225       , object_name
79226       , object_type_code
79227       , line_number
79228       , source_application_id
79229       , source_type_code
79230       , source_code
79231       , source_value
79232       , source_meaning
79233       , created_by
79234       , creation_date
79235       , last_update_date
79236       , last_updated_by
79237       , last_update_login
79238       , program_update_date
79239       , program_application_id
79240       , program_id
79241       , request_id
79242 )
79243 SELECT
79244         event_id
79245       , p_target_ledger_id
79246       , p_sla_ledger_id
79247       , p_language
79248       , object_name
79249       , object_type_code
79250       , line_number
79251       , source_application_id
79252       , source_type_code
79253       , source_code
79254       , SUBSTR(source_value ,1,1996)
79255       , SUBSTR(source_meaning ,1,200)
79256       , xla_environment_pkg.g_Usr_Id
79257       , TRUNC(SYSDATE)
79258       , TRUNC(SYSDATE)
79259       , xla_environment_pkg.g_Usr_Id
79260       , xla_environment_pkg.g_Login_Id
79261       , TRUNC(SYSDATE)
79262       , xla_environment_pkg.g_Prog_Appl_Id
79263       , xla_environment_pkg.g_Prog_Id
79264       , xla_environment_pkg.g_Req_Id
79265   FROM (
79266        SELECT xet.event_id                  event_id
79267             , 0                          line_number
79268             , CASE r
79269                WHEN 1 THEN 'AR_CASH_RECEIPTS_H_V' 
79270                 WHEN 2 THEN 'AR_CASH_RECEIPTS_H_V' 
79271                 WHEN 3 THEN 'AR_RCT_METHOD_H_V' 
79272                 WHEN 4 THEN 'AR_CASH_RECEIPTS_H_V' 
79273                 WHEN 5 THEN 'AR_REMIT_BANK_ACCT_H_V' 
79274                 WHEN 6 THEN 'AR_REMIT_BANK_ACCT_H_V' 
79275                 WHEN 7 THEN 'AR_REMIT_BANK_ACCT_H_V' 
79276                 WHEN 8 THEN 'AR_SYSTEM_PARAM_H_V' 
79277                 WHEN 9 THEN 'AR_SYSTEM_PARAM_H_V' 
79278                 WHEN 10 THEN 'AR_CASH_RECEIPTS_H_V' 
79279                 WHEN 11 THEN 'AR_CASH_RECEIPTS_H_V' 
79280                 WHEN 12 THEN 'AR_CASH_RECEIPTS_H_V' 
79281                 WHEN 13 THEN 'AR_RCT_SITE_USES_H_V' 
79282                 WHEN 14 THEN 'AR_CASH_RECEIPTS_H_V' 
79283                 WHEN 15 THEN 'AR_CASH_RECEIPTS_H_V' 
79284                 WHEN 16 THEN 'AR_CASH_RECEIPTS_H_V' 
79285                 WHEN 17 THEN 'AR_CASH_RECEIPTS_H_V' 
79286                 
79287                ELSE null
79288               END                           object_name
79289             , CASE r
79290                 WHEN 1 THEN 'HEADER' 
79291                 WHEN 2 THEN 'HEADER' 
79292                 WHEN 3 THEN 'HEADER' 
79293                 WHEN 4 THEN 'HEADER' 
79294                 WHEN 5 THEN 'HEADER' 
79295                 WHEN 6 THEN 'HEADER' 
79296                 WHEN 7 THEN 'HEADER' 
79297                 WHEN 8 THEN 'HEADER' 
79298                 WHEN 9 THEN 'HEADER' 
79299                 WHEN 10 THEN 'HEADER' 
79300                 WHEN 11 THEN 'HEADER' 
79301                 WHEN 12 THEN 'HEADER' 
79302                 WHEN 13 THEN 'HEADER' 
79303                 WHEN 14 THEN 'HEADER' 
79304                 WHEN 15 THEN 'HEADER' 
79305                 WHEN 16 THEN 'HEADER' 
79306                 WHEN 17 THEN 'HEADER' 
79307                 
79308                 ELSE null
79309               END                           object_type_code
79310             , CASE r
79311                 WHEN 1 THEN '222' 
79312                 WHEN 2 THEN '222' 
79313                 WHEN 3 THEN '222' 
79314                 WHEN 4 THEN '222' 
79315                 WHEN 5 THEN '222' 
79316                 WHEN 6 THEN '222' 
79317                 WHEN 7 THEN '222' 
79318                 WHEN 8 THEN '222' 
79319                 WHEN 9 THEN '222' 
79320                 WHEN 10 THEN '222' 
79321                 WHEN 11 THEN '222' 
79322                 WHEN 12 THEN '222' 
79323                 WHEN 13 THEN '222' 
79324                 WHEN 14 THEN '222' 
79325                 WHEN 15 THEN '222' 
79326                 WHEN 16 THEN '222' 
79327                 WHEN 17 THEN '222' 
79328                 
79329                 ELSE null
79330               END                           source_application_id
79331             , 'S'             source_type_code
79332             , CASE r
79333                 WHEN 1 THEN 'RCT_RECEIPT_NUMBER' 
79334                 WHEN 2 THEN 'RCT_DOC_SEQUENCE_VALUE' 
79335                 WHEN 3 THEN 'RCT_MTHD_NAME' 
79336                 WHEN 4 THEN 'RCT_RECEIPT_DATE' 
79337                 WHEN 5 THEN 'RMT_BANK_NAME' 
79341                 WHEN 9 THEN 'CODE_COMBINATION_ID_LOSS' 
79338                 WHEN 6 THEN 'RMT_BNK_ACCOUNT_NAME' 
79339                 WHEN 7 THEN 'RMT_BNK_UNAPPLIED_CCID' 
79340                 WHEN 8 THEN 'CODE_COMBINATION_ID_GAIN' 
79342                 WHEN 10 THEN 'RCT_CASH_RECEIPT_ID' 
79343                 WHEN 11 THEN 'RCT_XLA_APPLIED_TO_APP_ID' 
79344                 WHEN 12 THEN 'RCT_PAY_FROM_CUSTOMER' 
79345                 WHEN 13 THEN 'RCT_SITE_SITE_USE_ID' 
79346                 WHEN 14 THEN 'RCT_APP_STATUS' 
79347                 WHEN 15 THEN 'RCT_DOC_SEQUENCE_CATEGORY' 
79348                 WHEN 16 THEN 'RCT_DOC_SEQUENCE_ID' 
79349                 WHEN 17 THEN 'RCT_TRX_ACCT_REVERSAL' 
79350                 
79351                 ELSE null
79352               END                           source_code
79353             , CASE r
79354                 WHEN 1 THEN TO_CHAR(h1.RCT_RECEIPT_NUMBER)
79355                 WHEN 2 THEN TO_CHAR(h1.RCT_DOC_SEQUENCE_VALUE)
79356                 WHEN 3 THEN TO_CHAR(h5.RCT_MTHD_NAME)
79357                 WHEN 4 THEN TO_CHAR(h1.RCT_RECEIPT_DATE)
79358                 WHEN 5 THEN TO_CHAR(h8.RMT_BANK_NAME)
79359                 WHEN 6 THEN TO_CHAR(h8.RMT_BNK_ACCOUNT_NAME)
79360                 WHEN 7 THEN TO_CHAR(h8.RMT_BNK_UNAPPLIED_CCID)
79361                 WHEN 8 THEN TO_CHAR(h9.CODE_COMBINATION_ID_GAIN)
79362                 WHEN 9 THEN TO_CHAR(h9.CODE_COMBINATION_ID_LOSS)
79363                 WHEN 10 THEN TO_CHAR(h1.RCT_CASH_RECEIPT_ID)
79364                 WHEN 11 THEN TO_CHAR(h1.RCT_XLA_APPLIED_TO_APP_ID)
79365                 WHEN 12 THEN TO_CHAR(h1.RCT_PAY_FROM_CUSTOMER)
79366                 WHEN 13 THEN TO_CHAR(h6.RCT_SITE_SITE_USE_ID)
79367                 WHEN 14 THEN TO_CHAR(h1.RCT_APP_STATUS)
79368                 WHEN 15 THEN TO_CHAR(h1.RCT_DOC_SEQUENCE_CATEGORY)
79369                 WHEN 16 THEN TO_CHAR(h1.RCT_DOC_SEQUENCE_ID)
79370                 WHEN 17 THEN TO_CHAR(h1.RCT_TRX_ACCT_REVERSAL)
79371                 
79372                 ELSE null
79373               END                           source_value
79374             , null              source_meaning
79375          FROM xla_events_gt     xet  
79376       , AR_CASH_RECEIPTS_H_V  h1
79377       , AR_RCT_METHOD_H_V  h5
79378       , AR_RCT_SITE_USES_H_V  h6
79379       , AR_REMIT_BANK_ACCT_H_V  h8
79380       , AR_SYSTEM_PARAM_H_V  h9
79381              ,(select rownum r from all_objects where rownum <= 17 and owner = p_apps_owner)
79382          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
79383            AND xet.event_class_code = C_EVENT_CLASS_CODE
79384               AND h1.event_id = xet.event_id
79385   AND h5.event_id (+) = h1.event_id
79386   AND h6.event_id (+) = h1.event_id
79387   AND h8.event_id (+) = h1.event_id
79388   AND h9.event_id (+) = h1.event_id
79389 
79390 )
79391 ;
79392 --
79393 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79394 
79395       trace
79396          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
79397          ,p_level    => C_LEVEL_STATEMENT
79398          ,p_module   => l_log_module);
79399 
79400 END IF;
79401 --
79402 
79403 
79404 
79405 --
79406 INSERT INTO xla_diag_sources  --line2
79407 (
79408         event_id
79409       , ledger_id
79410       , sla_ledger_id
79411       , description_language
79412       , object_name
79413       , object_type_code
79414       , line_number
79415       , source_application_id
79416       , source_type_code
79417       , source_code
79418       , source_value
79419       , source_meaning
79420       , created_by
79421       , creation_date
79422       , last_update_date
79423       , last_updated_by
79424       , last_update_login
79425       , program_update_date
79426       , program_application_id
79427       , program_id
79428       , request_id
79429 )
79430 SELECT  event_id
79431       , p_target_ledger_id
79432       , p_sla_ledger_id
79433       , p_language
79434       , object_name
79435       , object_type_code
79436       , line_number
79437       , source_application_id
79438       , source_type_code
79439       , source_code
79440       , SUBSTR(source_value,1,1996)
79441       , SUBSTR(source_meaning ,1,200)
79442       , xla_environment_pkg.g_Usr_Id
79443       , TRUNC(SYSDATE)
79444       , TRUNC(SYSDATE)
79445       , xla_environment_pkg.g_Usr_Id
79446       , xla_environment_pkg.g_Login_Id
79447       , TRUNC(SYSDATE)
79448       , xla_environment_pkg.g_Prog_Appl_Id
79449       , xla_environment_pkg.g_Prog_Id
79450       , xla_environment_pkg.g_Req_Id
79451   FROM (
79452        SELECT xet.event_id                  event_id
79453             , l4.line_number                 line_number
79454             , CASE r
79455                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
79456                 WHEN 2 THEN 'AR_TRANSACTIONS_S_V' 
79457                 WHEN 3 THEN 'AR_TRANSACTIONS_S_V' 
79458                 WHEN 4 THEN 'AR_DISTRIBUTIONS_L_V' 
79459                 WHEN 5 THEN 'AR_DISTRIBUTIONS_L_V' 
79460                 WHEN 6 THEN 'AR_RECEIVABLES_TRX_ACT_S_V' 
79461                 WHEN 7 THEN 'AR_DISTRIBUTIONS_L_V' 
79462                 WHEN 8 THEN 'AR_DISTRIBUTIONS_L_V' 
79463                 WHEN 9 THEN 'AR_DISTRIBUTIONS_L_V' 
79464                 WHEN 10 THEN 'AR_DISTRIBUTIONS_L_V' 
79465                 WHEN 11 THEN 'AR_DISTRIBUTIONS_BASE_V' 
79466                 WHEN 12 THEN 'AR_DISTRIBUTIONS_BASE_V' 
79467                 WHEN 13 THEN 'AR_DISTRIBUTIONS_BASE_V' 
79468                 WHEN 14 THEN 'AR_DISTRIBUTIONS_BASE_V' 
79469                 WHEN 15 THEN 'AR_DISTRIBUTIONS_BASE_V' 
79470                 WHEN 16 THEN 'AR_CUST_TRX_LINES_L_V' 
79471                 WHEN 17 THEN 'AR_CUST_TRX_LINES_L_V' 
79472                 WHEN 18 THEN 'AR_DISTRIBUTIONS_L_V' 
79473                 WHEN 19 THEN 'AR_DISTRIBUTIONS_BASE_V' 
79477                 WHEN 23 THEN 'AR_DISTRIBUTIONS_L_V' 
79474                 WHEN 20 THEN 'AR_TRANSACTIONS_S_V' 
79475                 WHEN 21 THEN 'AR_TRANSACTIONS_S_V' 
79476                 WHEN 22 THEN 'AR_DISTRIBUTIONS_L_V' 
79478                 WHEN 24 THEN 'AR_DISTRIBUTIONS_L_V' 
79479                 WHEN 25 THEN 'AR_DISTRIBUTIONS_L_V' 
79480                 WHEN 26 THEN 'AR_DISTRIBUTIONS_L_V' 
79481                 WHEN 27 THEN 'AR_DISTRIBUTIONS_BASE_V' 
79482                 WHEN 28 THEN 'AR_DISTRIBUTIONS_BASE_V' 
79483                 WHEN 29 THEN 'AR_DISTRIBUTIONS_L_V' 
79484                 WHEN 30 THEN 'AR_RECEIVABLES_TRX_ACT_S_V' 
79485                 
79486                ELSE null
79487               END                           object_name
79488             , CASE r
79489                 WHEN 1 THEN 'LINE' 
79490                 WHEN 2 THEN 'LINE' 
79491                 WHEN 3 THEN 'LINE' 
79492                 WHEN 4 THEN 'LINE' 
79493                 WHEN 5 THEN 'LINE' 
79494                 WHEN 6 THEN 'LINE' 
79495                 WHEN 7 THEN 'LINE' 
79496                 WHEN 8 THEN 'LINE' 
79497                 WHEN 9 THEN 'LINE' 
79498                 WHEN 10 THEN 'LINE' 
79499                 WHEN 11 THEN 'LINE' 
79500                 WHEN 12 THEN 'LINE' 
79501                 WHEN 13 THEN 'LINE' 
79502                 WHEN 14 THEN 'LINE' 
79503                 WHEN 15 THEN 'LINE' 
79504                 WHEN 16 THEN 'LINE' 
79505                 WHEN 17 THEN 'LINE' 
79506                 WHEN 18 THEN 'LINE' 
79507                 WHEN 19 THEN 'LINE' 
79508                 WHEN 20 THEN 'LINE' 
79509                 WHEN 21 THEN 'LINE' 
79510                 WHEN 22 THEN 'LINE' 
79511                 WHEN 23 THEN 'LINE' 
79512                 WHEN 24 THEN 'LINE' 
79513                 WHEN 25 THEN 'LINE' 
79514                 WHEN 26 THEN 'LINE' 
79515                 WHEN 27 THEN 'LINE' 
79516                 WHEN 28 THEN 'LINE' 
79517                 WHEN 29 THEN 'LINE' 
79518                 WHEN 30 THEN 'LINE' 
79519                 
79520                 ELSE null
79521               END                           object_type_code
79522             , CASE r
79523                 WHEN 1 THEN '222' 
79524                 WHEN 2 THEN '222' 
79525                 WHEN 3 THEN '222' 
79526                 WHEN 4 THEN '222' 
79527                 WHEN 5 THEN '222' 
79528                 WHEN 6 THEN '222' 
79529                 WHEN 7 THEN '222' 
79530                 WHEN 8 THEN '222' 
79531                 WHEN 9 THEN '222' 
79532                 WHEN 10 THEN '222' 
79533                 WHEN 11 THEN '222' 
79534                 WHEN 12 THEN '222' 
79535                 WHEN 13 THEN '222' 
79536                 WHEN 14 THEN '222' 
79537                 WHEN 15 THEN '222' 
79538                 WHEN 16 THEN '222' 
79539                 WHEN 17 THEN '222' 
79540                 WHEN 18 THEN '222' 
79541                 WHEN 19 THEN '222' 
79542                 WHEN 20 THEN '222' 
79543                 WHEN 21 THEN '222' 
79544                 WHEN 22 THEN '222' 
79545                 WHEN 23 THEN '222' 
79546                 WHEN 24 THEN '222' 
79547                 WHEN 25 THEN '222' 
79548                 WHEN 26 THEN '222' 
79549                 WHEN 27 THEN '222' 
79550                 WHEN 28 THEN '222' 
79551                 WHEN 29 THEN '222' 
79552                 WHEN 30 THEN '222' 
79553                 
79554                 ELSE null
79555               END                           source_application_id
79556             , 'S'             source_type_code
79557             , CASE r
79558                 WHEN 1 THEN 'TRX_TYPE_NAME' 
79559                 WHEN 2 THEN 'TRX_NUMBER' 
79560                 WHEN 3 THEN 'TRX_DOC_SEQUENCE_VALUE' 
79561                 WHEN 4 THEN 'DIST_CODE_COMBINATION_ID' 
79562                 WHEN 5 THEN 'DIST_SOURCE_TYPE' 
79563                 WHEN 6 THEN 'REC_ACT_TYPE' 
79564                 WHEN 7 THEN 'DIST_LINE_ID' 
79565                 WHEN 8 THEN 'DISTRIBUTION_TYPE' 
79566                 WHEN 9 THEN 'DIST_ENT_AMT' 
79567                 WHEN 10 THEN 'DIST_CURRENCY_CODE' 
79568                 WHEN 11 THEN 'DIST_CUR_CONVERSION_DATE' 
79569                 WHEN 12 THEN 'DIST_CUR_CONVERSION_RATE' 
79570                 WHEN 13 THEN 'DIST_CUR_CONVERSION_TYPE' 
79571                 WHEN 14 THEN 'DIST_TO_ACCTD_AMT' 
79572                 WHEN 15 THEN 'DIST_ACCTD_AMT' 
79573                 WHEN 16 THEN 'TRX_LINE_DIST_ID' 
79574                 WHEN 17 THEN 'TRX_DISTRIBUTION_TYPE' 
79575                 WHEN 18 THEN 'DIST_MFAR_ADDITIONAL_ENTRY' 
79576                 WHEN 19 THEN 'DIST_TO_CUR_CONVERSION_DATE' 
79577                 WHEN 20 THEN 'TRX_ENTITY_CODE' 
79578                 WHEN 21 THEN 'TRX_CUSTOMER_TRX_ID' 
79579                 WHEN 22 THEN 'DIST_ENT_AMT_FROM' 
79580                 WHEN 23 THEN 'DIST_CURRENCY_CODE_FROM' 
79581                 WHEN 24 THEN 'DIST_PARTY_ID' 
79582                 WHEN 25 THEN 'DIST_PARTY_SITE_ID' 
79583                 WHEN 26 THEN 'DIST_PARTY_TYPE' 
79584                 WHEN 27 THEN 'DIST_TO_CUR_CONVERSION_TYPE' 
79585                 WHEN 28 THEN 'DIST_TO_CUR_CONVERSION_RATE' 
79586                 WHEN 29 THEN 'DIST_SOURCE_TABLE' 
79587                 WHEN 30 THEN 'REC_ACT_NAME' 
79588                 
79589                 ELSE null
79590               END                           source_code
79591             , CASE r
79592                 WHEN 1 THEN TO_CHAR(l10.TRX_TYPE_NAME)
79593                 WHEN 2 THEN TO_CHAR(l10.TRX_NUMBER)
79594                 WHEN 3 THEN TO_CHAR(l10.TRX_DOC_SEQUENCE_VALUE)
79595                 WHEN 4 THEN TO_CHAR(l4.DIST_CODE_COMBINATION_ID)
79596                 WHEN 5 THEN TO_CHAR(l4.DIST_SOURCE_TYPE)
79597                 WHEN 6 THEN TO_CHAR(l7.REC_ACT_TYPE)
79598                 WHEN 7 THEN TO_CHAR(l4.DIST_LINE_ID)
79602                 WHEN 11 THEN TO_CHAR(l3.DIST_CUR_CONVERSION_DATE)
79599                 WHEN 8 THEN TO_CHAR(l4.DISTRIBUTION_TYPE)
79600                 WHEN 9 THEN TO_CHAR(l4.DIST_ENT_AMT)
79601                 WHEN 10 THEN TO_CHAR(l4.DIST_CURRENCY_CODE)
79603                 WHEN 12 THEN TO_CHAR(l3.DIST_CUR_CONVERSION_RATE)
79604                 WHEN 13 THEN TO_CHAR(l3.DIST_CUR_CONVERSION_TYPE)
79605                 WHEN 14 THEN TO_CHAR(l3.DIST_TO_ACCTD_AMT)
79606                 WHEN 15 THEN TO_CHAR(l3.DIST_ACCTD_AMT)
79607                 WHEN 16 THEN TO_CHAR(l2.TRX_LINE_DIST_ID)
79608                 WHEN 17 THEN TO_CHAR(l2.TRX_DISTRIBUTION_TYPE)
79609                 WHEN 18 THEN TO_CHAR(l4.DIST_MFAR_ADDITIONAL_ENTRY)
79610                 WHEN 19 THEN TO_CHAR(l3.DIST_TO_CUR_CONVERSION_DATE)
79611                 WHEN 20 THEN TO_CHAR(l10.TRX_ENTITY_CODE)
79612                 WHEN 21 THEN TO_CHAR(l10.TRX_CUSTOMER_TRX_ID)
79613                 WHEN 22 THEN TO_CHAR(l4.DIST_ENT_AMT_FROM)
79614                 WHEN 23 THEN TO_CHAR(l4.DIST_CURRENCY_CODE_FROM)
79615                 WHEN 24 THEN TO_CHAR(l4.DIST_PARTY_ID)
79616                 WHEN 25 THEN TO_CHAR(l4.DIST_PARTY_SITE_ID)
79617                 WHEN 26 THEN TO_CHAR(l4.DIST_PARTY_TYPE)
79618                 WHEN 27 THEN TO_CHAR(l3.DIST_TO_CUR_CONVERSION_TYPE)
79619                 WHEN 28 THEN TO_CHAR(l3.DIST_TO_CUR_CONVERSION_RATE)
79620                 WHEN 29 THEN TO_CHAR(l4.DIST_SOURCE_TABLE)
79621                 WHEN 30 THEN TO_CHAR(l7.REC_ACT_NAME)
79622                 
79623                 ELSE null
79624               END                           source_value
79625             , null              source_meaning
79626          FROM  xla_events_gt     xet  
79627         , AR_CUST_TRX_LINES_L_V  l2
79628         , AR_DISTRIBUTIONS_BASE_V  l3
79629         , AR_DISTRIBUTIONS_L_V  l4
79630         , AR_RECEIVABLES_TRX_ACT_S_V  l7
79631         , AR_TRANSACTIONS_S_V  l10
79632             , (select rownum r from all_objects where rownum <= 30 and owner = p_apps_owner)
79633         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
79634           AND xet.event_class_code = C_EVENT_CLASS_CODE
79635             AND l3.event_id          = xet.event_id
79636   AND l2.event_id (+)    = l3.event_id
79637   AND l2.line_number (+) = l3.line_number
79638   AND l4.event_id    = l3.event_id
79639   AND l4.line_number = l3.line_number
79640   AND l7.event_id (+)    = l3.event_id
79641   AND l7.line_number (+) = l3.line_number
79642   AND l10.event_id (+)    = l3.event_id
79643   AND l10.line_number (+) = l3.line_number
79644 
79645 )
79646 ;
79647 --
79648 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79649 
79650       trace
79651          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
79652          ,p_level    => C_LEVEL_STATEMENT
79653          ,p_module   => l_log_module);
79654 
79655 END IF;
79656 
79657 
79658 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79659       trace
79660          (p_msg      => 'END of insert_sources_137'
79661          ,p_level    => C_LEVEL_PROCEDURE
79662          ,p_module   => l_log_module);
79663 END IF;
79664 EXCEPTION
79665   WHEN xla_exceptions_pkg.application_exception THEN
79666       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
79667             trace
79668                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
79669                ,p_level    => C_LEVEL_EXCEPTION
79670                ,p_module   => l_log_module);
79671       END IF;
79672       RAISE;
79673   WHEN OTHERS THEN
79674       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
79675             trace
79676                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
79677                ,p_level    => C_LEVEL_EXCEPTION
79678                ,p_module   => l_log_module);
79679        END IF;
79680        xla_exceptions_pkg.raise_message
79681            (p_location => 'XLA_00222_AAD_S_000017_PKG.insert_sources_137');
79682 END insert_sources_137;
79683 --
79684 
79685 ---------------------------------------
79686 --
79687 -- PRIVATE FUNCTION
79688 --         EventClass_137
79689 --
79690 ----------------------------------------
79691 --
79692 FUNCTION EventClass_137
79693        (p_application_id         IN NUMBER
79694        ,p_base_ledger_id         IN NUMBER
79695        ,p_target_ledger_id       IN NUMBER
79696        ,p_language               IN VARCHAR2
79697        ,p_currency_code          IN VARCHAR2
79698        ,p_sla_ledger_id          IN NUMBER
79699        ,p_pad_start_date         IN DATE
79700        ,p_pad_end_date           IN DATE
79701        ,p_primary_ledger_id      IN NUMBER)
79702 RETURN BOOLEAN IS
79703 --
79704 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RECEIPT_ALL';
79705 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RECEIPT';
79706 
79707 l_calculate_acctd_flag   VARCHAR2(1) :='N';
79708 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
79709 --
79710 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79711 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79712 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79713 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79714 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79715 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79716 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79717 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79718 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79719 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79720 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79721 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79725 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79722 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79723 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79724 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79726 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79727 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79728 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79729 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79730 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79731 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79732 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
79733 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79734 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
79735 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
79736 
79737 l_event_id                             NUMBER;
79738 l_previous_event_id                    NUMBER;
79739 l_first_event_id                       NUMBER;
79740 l_last_event_id                        NUMBER;
79741 
79742 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
79743 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
79744 --
79745 --
79746 l_result                    BOOLEAN := TRUE;
79747 l_rows                      NUMBER  := 1000;
79748 l_event_type_name           VARCHAR2(80) := 'All';
79749 l_event_class_name          VARCHAR2(80) := 'Receipt';
79750 l_description               VARCHAR2(4000);
79751 l_transaction_reversal      NUMBER;
79752 l_ae_header_id              NUMBER;
79753 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
79754 l_log_module                VARCHAR2(240);
79755 --
79756 l_acct_reversal_source      VARCHAR2(30);
79757 l_trx_reversal_source       VARCHAR2(30);
79758 
79759 l_continue_with_lines       BOOLEAN := TRUE;
79760 --
79761 l_acc_rev_gl_date_source    DATE;                      -- 4262811
79762 --
79763 type t_array_event_id is table of number index by binary_integer;
79764 
79765 l_rec_array_event                    t_rec_array_event;
79766 l_null_rec_array_event               t_rec_array_event;
79767 l_array_ae_header_id                 xla_number_array_type;
79768 l_actual_flag                        VARCHAR2(1) := NULL;
79769 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
79770 l_balance_type_code                  VARCHAR2(1) :=NULL;
79771 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
79772 
79773 --
79774 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
79775 --
79776 
79777 TYPE t_array_source_8 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_RECEIPT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
79778 TYPE t_array_source_9 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
79779 TYPE t_array_source_10 IS TABLE OF AR_RCT_METHOD_H_V.RCT_MTHD_NAME%TYPE INDEX BY BINARY_INTEGER;
79780 TYPE t_array_source_11 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_RECEIPT_DATE%TYPE INDEX BY BINARY_INTEGER;
79781 TYPE t_array_source_12 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BANK_NAME%TYPE INDEX BY BINARY_INTEGER;
79782 TYPE t_array_source_13 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BNK_ACCOUNT_NAME%TYPE INDEX BY BINARY_INTEGER;
79783 TYPE t_array_source_23 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BNK_UNAPPLIED_CCID%TYPE INDEX BY BINARY_INTEGER;
79784 TYPE t_array_source_24 IS TABLE OF AR_SYSTEM_PARAM_H_V.CODE_COMBINATION_ID_GAIN%TYPE INDEX BY BINARY_INTEGER;
79785 TYPE t_array_source_25 IS TABLE OF AR_SYSTEM_PARAM_H_V.CODE_COMBINATION_ID_LOSS%TYPE INDEX BY BINARY_INTEGER;
79786 TYPE t_array_source_90 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_CASH_RECEIPT_ID%TYPE INDEX BY BINARY_INTEGER;
79787 TYPE t_array_source_92 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_XLA_APPLIED_TO_APP_ID%TYPE INDEX BY BINARY_INTEGER;
79788 TYPE t_array_source_104 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_PAY_FROM_CUSTOMER%TYPE INDEX BY BINARY_INTEGER;
79789 TYPE t_array_source_105 IS TABLE OF AR_RCT_SITE_USES_H_V.RCT_SITE_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
79790 TYPE t_array_source_106 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_APP_STATUS%TYPE INDEX BY BINARY_INTEGER;
79791 TYPE t_array_source_117 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
79792 TYPE t_array_source_118 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
79793 TYPE t_array_source_119 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_TRX_ACCT_REVERSAL%TYPE INDEX BY BINARY_INTEGER;
79794 
79795 TYPE t_array_source_1 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_TYPE_NAME%TYPE INDEX BY BINARY_INTEGER;
79796 TYPE t_array_source_2 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_NUMBER%TYPE INDEX BY BINARY_INTEGER;
79797 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
79798 TYPE t_array_source_22 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
79799 TYPE t_array_source_27 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_SOURCE_TYPE%TYPE INDEX BY BINARY_INTEGER;
79800 TYPE t_array_source_28 IS TABLE OF AR_RECEIVABLES_TRX_ACT_S_V.REC_ACT_TYPE%TYPE INDEX BY BINARY_INTEGER;
79801 TYPE t_array_source_29 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
79802 TYPE t_array_source_30 IS TABLE OF AR_DISTRIBUTIONS_L_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
79803 TYPE t_array_source_31 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_ENT_AMT%TYPE INDEX BY BINARY_INTEGER;
79804 TYPE t_array_source_32 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
79805 TYPE t_array_source_33 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
79806 TYPE t_array_source_34 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
79807 TYPE t_array_source_35 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
79811 TYPE t_array_source_45 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
79808 TYPE t_array_source_36 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_TO_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
79809 TYPE t_array_source_40 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
79810 TYPE t_array_source_44 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
79812 TYPE t_array_source_88 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_MFAR_ADDITIONAL_ENTRY%TYPE INDEX BY BINARY_INTEGER;
79813 TYPE t_array_source_89 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_TO_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
79814 TYPE t_array_source_93 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
79815 TYPE t_array_source_94 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_CUSTOMER_TRX_ID%TYPE INDEX BY BINARY_INTEGER;
79816 TYPE t_array_source_95 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_ENT_AMT_FROM%TYPE INDEX BY BINARY_INTEGER;
79817 TYPE t_array_source_96 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CURRENCY_CODE_FROM%TYPE INDEX BY BINARY_INTEGER;
79818 TYPE t_array_source_97 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_PARTY_ID%TYPE INDEX BY BINARY_INTEGER;
79819 TYPE t_array_source_98 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_PARTY_SITE_ID%TYPE INDEX BY BINARY_INTEGER;
79820 TYPE t_array_source_99 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
79821 TYPE t_array_source_100 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_TO_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
79822 TYPE t_array_source_101 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_TO_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
79823 TYPE t_array_source_102 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_SOURCE_TABLE%TYPE INDEX BY BINARY_INTEGER;
79824 TYPE t_array_source_103 IS TABLE OF AR_RECEIVABLES_TRX_ACT_S_V.REC_ACT_NAME%TYPE INDEX BY BINARY_INTEGER;
79825 
79826 l_array_source_8              t_array_source_8;
79827 l_array_source_9              t_array_source_9;
79828 l_array_source_10              t_array_source_10;
79829 l_array_source_11              t_array_source_11;
79830 l_array_source_12              t_array_source_12;
79831 l_array_source_13              t_array_source_13;
79832 l_array_source_23              t_array_source_23;
79833 l_array_source_24              t_array_source_24;
79834 l_array_source_25              t_array_source_25;
79835 l_array_source_90              t_array_source_90;
79836 l_array_source_92              t_array_source_92;
79837 l_array_source_104              t_array_source_104;
79838 l_array_source_105              t_array_source_105;
79839 l_array_source_106              t_array_source_106;
79840 l_array_source_117              t_array_source_117;
79841 l_array_source_118              t_array_source_118;
79842 l_array_source_119              t_array_source_119;
79843 
79844 l_array_source_1      t_array_source_1;
79845 l_array_source_2      t_array_source_2;
79846 l_array_source_3      t_array_source_3;
79847 l_array_source_22      t_array_source_22;
79848 l_array_source_27      t_array_source_27;
79849 l_array_source_28      t_array_source_28;
79850 l_array_source_29      t_array_source_29;
79851 l_array_source_30      t_array_source_30;
79852 l_array_source_31      t_array_source_31;
79853 l_array_source_32      t_array_source_32;
79854 l_array_source_33      t_array_source_33;
79855 l_array_source_34      t_array_source_34;
79856 l_array_source_35      t_array_source_35;
79857 l_array_source_36      t_array_source_36;
79858 l_array_source_40      t_array_source_40;
79859 l_array_source_44      t_array_source_44;
79860 l_array_source_45      t_array_source_45;
79861 l_array_source_88      t_array_source_88;
79862 l_array_source_89      t_array_source_89;
79863 l_array_source_93      t_array_source_93;
79864 l_array_source_94      t_array_source_94;
79865 l_array_source_95      t_array_source_95;
79866 l_array_source_96      t_array_source_96;
79867 l_array_source_97      t_array_source_97;
79868 l_array_source_98      t_array_source_98;
79869 l_array_source_99      t_array_source_99;
79870 l_array_source_100      t_array_source_100;
79871 l_array_source_101      t_array_source_101;
79872 l_array_source_102      t_array_source_102;
79873 l_array_source_103      t_array_source_103;
79874 
79875 --
79876 CURSOR header_cur
79877 IS
79878 SELECT /*+ leading(xet) cardinality(xet,1) */
79879 -- Event Class Code: RECEIPT
79880     xet.entity_id
79881    ,xet.legal_entity_id
79882    ,xet.entity_code
79883    ,xet.transaction_number
79884    ,xet.event_id
79885    ,xet.event_class_code
79886    ,xet.event_type_code
79887    ,xet.event_number
79888    ,xet.event_date
79889    ,xet.transaction_date
79890    ,xet.reference_num_1
79891    ,xet.reference_num_2
79892    ,xet.reference_num_3
79893    ,xet.reference_num_4
79894    ,xet.reference_char_1
79895    ,xet.reference_char_2
79896    ,xet.reference_char_3
79897    ,xet.reference_char_4
79898    ,xet.reference_date_1
79899    ,xet.reference_date_2
79900    ,xet.reference_date_3
79901    ,xet.reference_date_4
79902    ,xet.event_created_by
79903    ,xet.budgetary_control_flag 
79904   , h1.RCT_RECEIPT_NUMBER    source_8
79905   , h1.RCT_DOC_SEQUENCE_VALUE    source_9
79906   , h5.RCT_MTHD_NAME    source_10
79907   , h1.RCT_RECEIPT_DATE    source_11
79908   , h8.RMT_BANK_NAME    source_12
79909   , h8.RMT_BNK_ACCOUNT_NAME    source_13
79910   , h8.RMT_BNK_UNAPPLIED_CCID    source_23
79911   , h9.CODE_COMBINATION_ID_GAIN    source_24
79912   , h9.CODE_COMBINATION_ID_LOSS    source_25
79913   , h1.RCT_CASH_RECEIPT_ID    source_90
79914   , h1.RCT_XLA_APPLIED_TO_APP_ID    source_92
79915   , h1.RCT_PAY_FROM_CUSTOMER    source_104
79916   , h6.RCT_SITE_SITE_USE_ID    source_105
79917   , h1.RCT_APP_STATUS    source_106
79918   , h1.RCT_DOC_SEQUENCE_CATEGORY    source_117
79919   , h1.RCT_DOC_SEQUENCE_ID    source_118
79920   , h1.RCT_TRX_ACCT_REVERSAL    source_119
79921   FROM xla_events_gt     xet 
79922   , AR_CASH_RECEIPTS_H_V  h1
79923   , AR_RCT_METHOD_H_V  h5
79927  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
79924   , AR_RCT_SITE_USES_H_V  h6
79925   , AR_REMIT_BANK_ACCT_H_V  h8
79926   , AR_SYSTEM_PARAM_H_V  h9
79928    and xet.event_class_code = C_EVENT_CLASS_CODE
79929    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
79930   AND h5.event_id (+) = h1.event_id
79931   AND h6.event_id (+) = h1.event_id
79932   AND h8.event_id (+) = h1.event_id
79933   AND h9.event_id (+) = h1.event_id
79934 
79935  ORDER BY event_id
79936 ;
79937 
79938 
79939 --
79940 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
79941 IS
79942 SELECT  /*+ leading(xet) cardinality(xet,1) */
79943 -- Event Class Code: RECEIPT
79944     xet.entity_id
79945    ,xet.legal_entity_id
79946    ,xet.entity_code
79947    ,xet.transaction_number
79948    ,xet.event_id
79949    ,xet.event_class_code
79950    ,xet.event_type_code
79951    ,xet.event_number
79952    ,xet.event_date
79953    ,xet.transaction_date
79954    ,xet.reference_num_1
79955    ,xet.reference_num_2
79956    ,xet.reference_num_3
79957    ,xet.reference_num_4
79958    ,xet.reference_char_1
79959    ,xet.reference_char_2
79960    ,xet.reference_char_3
79961    ,xet.reference_char_4
79962    ,xet.reference_date_1
79963    ,xet.reference_date_2
79964    ,xet.reference_date_3
79965    ,xet.reference_date_4
79966    ,xet.event_created_by
79967    ,xet.budgetary_control_flag
79968  , l3.LINE_NUMBER  
79969   , l10.TRX_TYPE_NAME    source_1
79970   , l10.TRX_NUMBER    source_2
79971   , l10.TRX_DOC_SEQUENCE_VALUE    source_3
79972   , l4.DIST_CODE_COMBINATION_ID    source_22
79973   , l4.DIST_SOURCE_TYPE    source_27
79974   , l7.REC_ACT_TYPE    source_28
79975   , l4.DIST_LINE_ID    source_29
79976   , l4.DISTRIBUTION_TYPE    source_30
79977   , l4.DIST_ENT_AMT    source_31
79978   , l4.DIST_CURRENCY_CODE    source_32
79979   , l3.DIST_CUR_CONVERSION_DATE    source_33
79980   , l3.DIST_CUR_CONVERSION_RATE    source_34
79981   , l3.DIST_CUR_CONVERSION_TYPE    source_35
79982   , l3.DIST_TO_ACCTD_AMT    source_36
79983   , l3.DIST_ACCTD_AMT    source_40
79984   , l2.TRX_LINE_DIST_ID    source_44
79985   , l2.TRX_DISTRIBUTION_TYPE    source_45
79986   , l4.DIST_MFAR_ADDITIONAL_ENTRY    source_88
79987   , l3.DIST_TO_CUR_CONVERSION_DATE    source_89
79988   , l10.TRX_ENTITY_CODE    source_93
79989   , l10.TRX_CUSTOMER_TRX_ID    source_94
79990   , l4.DIST_ENT_AMT_FROM    source_95
79991   , l4.DIST_CURRENCY_CODE_FROM    source_96
79992   , l4.DIST_PARTY_ID    source_97
79993   , l4.DIST_PARTY_SITE_ID    source_98
79994   , l4.DIST_PARTY_TYPE    source_99
79995   , l3.DIST_TO_CUR_CONVERSION_TYPE    source_100
79996   , l3.DIST_TO_CUR_CONVERSION_RATE    source_101
79997   , l4.DIST_SOURCE_TABLE    source_102
79998   , l7.REC_ACT_NAME    source_103
79999   FROM xla_events_gt     xet 
80000   , AR_CUST_TRX_LINES_L_V  l2
80001   , AR_DISTRIBUTIONS_BASE_V  l3
80002   , AR_DISTRIBUTIONS_L_V  l4
80003   , AR_RECEIVABLES_TRX_ACT_S_V  l7
80004   , AR_TRANSACTIONS_S_V  l10
80005  WHERE xet.event_id between x_first_event_id and x_last_event_id
80006    and xet.event_date between p_pad_start_date and p_pad_end_date
80007    and xet.event_class_code = C_EVENT_CLASS_CODE
80008    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
80009   AND l2.event_id (+)    = l3.event_id
80010   AND l2.line_number (+) = l3.line_number
80011   AND l4.event_id    = l3.event_id
80012   AND l4.line_number = l3.line_number
80013   AND l7.event_id (+)    = l3.event_id
80014   AND l7.line_number (+) = l3.line_number
80015   AND l10.event_id (+)    = l3.event_id
80016   AND l10.line_number (+) = l3.line_number
80017 ;
80018 
80019 --
80020 BEGIN
80021 IF g_log_enabled THEN
80022    l_log_module := C_DEFAULT_MODULE||'.EventClass_137';
80023 END IF;
80024 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80025    trace
80026       (p_msg      => 'BEGIN of EventClass_137'
80027       ,p_level    => C_LEVEL_PROCEDURE
80028       ,p_module   => l_log_module);
80029 END IF;
80030 
80031 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80032    trace
80033       (p_msg      => 'p_application_id = '||p_application_id||
80034                      ' - p_base_ledger_id = '||p_base_ledger_id||
80035                      ' - p_target_ledger_id  = '||p_target_ledger_id||
80036                      ' - p_language = '||p_language||
80037                      ' - p_currency_code = '||p_currency_code||
80038                      ' - p_sla_ledger_id = '||p_sla_ledger_id
80039       ,p_level    => C_LEVEL_STATEMENT
80040       ,p_module   => l_log_module);
80041 END IF;
80042 --
80043 -- initialze arrays
80044 --
80045 g_array_event.DELETE;
80046 l_rec_array_event := l_null_rec_array_event;
80047 --
80048 --------------------------------------
80049 -- 4262811 Initialze MPA Line Number
80050 --------------------------------------
80051 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
80052 
80053 --
80054 
80055 --
80056 OPEN header_cur;
80057 --
80058 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80059    trace
80060    (p_msg      => 'SQL - FETCH header_cur'
80061    ,p_level    => C_LEVEL_STATEMENT
80062    ,p_module   => l_log_module);
80063 END IF;
80064 --
80065 LOOP
80066 FETCH header_cur BULK COLLECT INTO
80067         l_array_entity_id
80068       , l_array_legal_entity_id
80069       , l_array_entity_code
80070       , l_array_transaction_num
80071       , l_array_event_id
80072       , l_array_class_code
80073       , l_array_event_type
80074       , l_array_event_number
80075       , l_array_event_date
80076       , l_array_transaction_date
80077       , l_array_reference_num_1
80078       , l_array_reference_num_2
80082       , l_array_reference_char_2
80079       , l_array_reference_num_3
80080       , l_array_reference_num_4
80081       , l_array_reference_char_1
80083       , l_array_reference_char_3
80084       , l_array_reference_char_4
80085       , l_array_reference_date_1
80086       , l_array_reference_date_2
80087       , l_array_reference_date_3
80088       , l_array_reference_date_4
80089       , l_array_event_created_by
80090       , l_array_budgetary_control_flag 
80091       , l_array_source_8
80092       , l_array_source_9
80093       , l_array_source_10
80094       , l_array_source_11
80095       , l_array_source_12
80096       , l_array_source_13
80097       , l_array_source_23
80098       , l_array_source_24
80099       , l_array_source_25
80100       , l_array_source_90
80101       , l_array_source_92
80102       , l_array_source_104
80103       , l_array_source_105
80104       , l_array_source_106
80105       , l_array_source_117
80106       , l_array_source_118
80107       , l_array_source_119
80108       LIMIT l_rows;
80109 --
80110 IF (C_LEVEL_EVENT >= g_log_level) THEN
80111    trace
80112    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
80113    ,p_level    => C_LEVEL_EVENT
80114    ,p_module   => l_log_module);
80115 END IF;
80116 --
80117 EXIT WHEN l_array_entity_id.COUNT = 0;
80118 
80119 -- initialize arrays
80120 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
80121 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
80122 
80123 --
80124 -- Bug 4458708
80125 --
80126 XLA_AE_LINES_PKG.g_LineNumber := 0;
80127 
80128 
80129 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
80130 g_last_hdr_idx := l_array_event_id.LAST;
80131 --
80132 -- loop for the headers. Each iteration is for each header extract row
80133 -- fetched in header cursor
80134 --
80135 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
80136 
80137 --
80138 -- set event info as cache for other routines to refer event attributes
80139 --
80140 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
80141    (p_application_id           => p_application_id
80142    ,p_primary_ledger_id        => p_primary_ledger_id
80143    ,p_base_ledger_id           => p_base_ledger_id
80144    ,p_target_ledger_id         => p_target_ledger_id
80145    ,p_entity_id                => l_array_entity_id(hdr_idx)
80146    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
80147    ,p_entity_code              => l_array_entity_code(hdr_idx)
80148    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
80149    ,p_event_id                 => l_array_event_id(hdr_idx)
80150    ,p_event_class_code         => l_array_class_code(hdr_idx)
80151    ,p_event_type_code          => l_array_event_type(hdr_idx)
80152    ,p_event_number             => l_array_event_number(hdr_idx)
80153    ,p_event_date               => l_array_event_date(hdr_idx)
80154    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
80155    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
80156    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
80157    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
80158    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
80159    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
80160    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
80161    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
80162    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
80163    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
80164    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
80165    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
80166    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
80167    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
80168    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
80169 
80170 --
80171 -- set the status of entry to C_VALID (0)
80172 --
80173 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
80174 
80175 --
80176 -- initialize a row for ae header
80177 --
80178 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
80179 
80180 l_event_id := l_array_event_id(hdr_idx);
80181 
80182 --
80183 -- storing the hdr_idx for event. May be used by line cursor.
80184 --
80185 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
80186 
80187 --
80188 -- store sources from header extract. This can be improved to
80189 -- store only those sources from header extract that may be used in lines
80190 --
80191 
80192 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
80193 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
80194 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
80195 g_array_event(l_event_id).array_value_date('source_11') := l_array_source_11(hdr_idx);
80196 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
80197 g_array_event(l_event_id).array_value_char('source_13') := l_array_source_13(hdr_idx);
80198 g_array_event(l_event_id).array_value_num('source_23') := l_array_source_23(hdr_idx);
80199 g_array_event(l_event_id).array_value_num('source_24') := l_array_source_24(hdr_idx);
80200 g_array_event(l_event_id).array_value_num('source_25') := l_array_source_25(hdr_idx);
80201 g_array_event(l_event_id).array_value_num('source_90') := l_array_source_90(hdr_idx);
80202 g_array_event(l_event_id).array_value_num('source_92') := l_array_source_92(hdr_idx);
80203 g_array_event(l_event_id).array_value_num('source_104') := l_array_source_104(hdr_idx);
80204 g_array_event(l_event_id).array_value_num('source_105') := l_array_source_105(hdr_idx);
80208 g_array_event(l_event_id).array_value_char('source_119') := l_array_source_119(hdr_idx);
80205 g_array_event(l_event_id).array_value_char('source_106') := l_array_source_106(hdr_idx);
80206 g_array_event(l_event_id).array_value_char('source_117') := l_array_source_117(hdr_idx);
80207 g_array_event(l_event_id).array_value_num('source_118') := l_array_source_118(hdr_idx);
80209 
80210 --
80211 -- initilaize the status of ae headers for diffrent balance types
80212 -- the status is initialised to C_NOT_CREATED (2)
80213 --
80214 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
80215 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
80216 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
80217 
80218 --
80219 -- call api to validate and store accounting attributes for header
80220 --
80221 
80222 ------------------------------------------------------------
80223 -- Accrual Reversal : to get date for Standard Source (NONE)
80224 ------------------------------------------------------------
80225 l_acc_rev_gl_date_source := NULL;
80226 
80227      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
80228       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_117');
80229      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
80230       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_118');
80231      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
80232       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_9');
80233      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
80234       l_rec_acct_attrs.array_date_value(4) := 
80235 xla_ae_sources_pkg.GetSystemSourceDate(
80236    p_source_code           => 'XLA_EVENT_DATE'
80237  , p_source_type_code      => 'Y'
80238  , p_source_application_id =>  602
80239 );
80240      l_rec_acct_attrs.array_acct_attr_code(5)   := 'TRX_ACCT_REVERSAL_OPTION';
80241       l_rec_acct_attrs.array_char_value(5) := g_array_event(l_event_id).array_value_char('source_119');
80242 
80243 
80244 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
80245 
80246 XLA_AE_HEADER_PKG.SetJeCategoryName;
80247 
80248 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
80249 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
80250 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
80251 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
80252 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
80253 
80254 
80255 --
80256 xla_ae_header_pkg.SetHdrDescription(
80257    p_description => Description_10 (
80258    p_application_id => p_application_id 
80259  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
80260  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
80261  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
80262  , p_source_11 => g_array_event(l_event_id).array_value_date('source_11')
80263  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
80264  , p_source_13 => g_array_event(l_event_id).array_value_char('source_13')
80265    )
80266 );
80267 --
80268 
80269 -- No header level analytical criteria
80270 
80271 --
80272 --accounting attribute enhancement, bug 3612931
80273 --
80274 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_119'), 1,30);
80275 
80276 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
80277    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
80278 
80279    xla_accounting_err_pkg.build_message
80280       (p_appli_s_name            => 'XLA'
80281       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
80282       ,p_token_1                 => 'ACCT_ATTR_NAME'
80283       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
80284       ,p_token_2                 => 'PRODUCT_NAME'
80285       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
80286       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
80287       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
80288       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
80289 
80290 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
80291    --
80292    -- following sets the accounting attributes needed to reverse
80293    -- accounting for a distributeion
80294    --
80295    xla_ae_lines_pkg.SetTrxReversalAttrs
80296       (p_event_id              => l_event_id
80297       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
80298       ,p_trx_reversal_source   => l_trx_reversal_source);
80299 
80300 END IF;
80301 
80302 
80303 ----------------------------------------------------------------
80304 -- 4262811 -  update the header statuses to invalid in need be
80305 ----------------------------------------------------------------
80306 --
80307 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
80308 
80309 
80310   -----------------------------------------------
80311   -- No accrual reversal for the event class/type
80312   -----------------------------------------------
80313 ----------------------------------------------------------------
80314 
80315 --
80316 -- this ends the header loop iteration for one bulk fetch
80317 --
80318 END LOOP;
80319 
80320 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
80321 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
80322 
80323 --
80327 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
80324 -- insert dummy rows into lines gt table that were created due to
80325 -- transaction reversals
80326 --
80328    l_result := XLA_AE_LINES_PKG.InsertLines;
80329 END IF;
80330 
80331 --
80332 -- reset the temp_line_num for each set of events fetched from header
80333 -- cursor rather than doing it for each new event in line cursor
80334 -- Bug 3939231
80335 --
80336 xla_ae_lines_pkg.g_temp_line_num := 0;
80337 
80338 
80339 
80340 --
80341 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
80342 --
80343 --
80344 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80345 
80346       trace
80347          (p_msg      => 'SQL - FETCH line_cur'
80348          ,p_level    => C_LEVEL_STATEMENT
80349          ,p_module   => l_log_module);
80350 
80351 END IF;
80352 --
80353 --
80354 LOOP
80355   --
80356   FETCH line_cur BULK COLLECT INTO
80357         l_array_entity_id
80358       , l_array_legal_entity_id
80359       , l_array_entity_code
80360       , l_array_transaction_num
80361       , l_array_event_id
80362       , l_array_class_code
80363       , l_array_event_type
80364       , l_array_event_number
80365       , l_array_event_date
80366       , l_array_transaction_date
80367       , l_array_reference_num_1
80368       , l_array_reference_num_2
80369       , l_array_reference_num_3
80370       , l_array_reference_num_4
80371       , l_array_reference_char_1
80372       , l_array_reference_char_2
80373       , l_array_reference_char_3
80374       , l_array_reference_char_4
80375       , l_array_reference_date_1
80376       , l_array_reference_date_2
80377       , l_array_reference_date_3
80378       , l_array_reference_date_4
80379       , l_array_event_created_by
80380       , l_array_budgetary_control_flag
80381       , l_array_extract_line_num 
80382       , l_array_source_1
80383       , l_array_source_2
80384       , l_array_source_3
80385       , l_array_source_22
80386       , l_array_source_27
80387       , l_array_source_28
80388       , l_array_source_29
80389       , l_array_source_30
80390       , l_array_source_31
80391       , l_array_source_32
80392       , l_array_source_33
80393       , l_array_source_34
80394       , l_array_source_35
80395       , l_array_source_36
80396       , l_array_source_40
80397       , l_array_source_44
80398       , l_array_source_45
80399       , l_array_source_88
80400       , l_array_source_89
80401       , l_array_source_93
80402       , l_array_source_94
80403       , l_array_source_95
80404       , l_array_source_96
80405       , l_array_source_97
80406       , l_array_source_98
80407       , l_array_source_99
80408       , l_array_source_100
80409       , l_array_source_101
80410       , l_array_source_102
80411       , l_array_source_103
80412       LIMIT l_rows;
80413 
80414   --
80415   IF (C_LEVEL_EVENT >= g_log_level) THEN
80416             trace
80417                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
80418                ,p_level    => C_LEVEL_EVENT
80419                ,p_module   => l_log_module);
80420   END IF;
80421   --
80422   EXIT WHEN l_array_entity_id.count = 0;
80423 
80424   XLA_AE_LINES_PKG.g_rec_lines := null;
80425 
80426 --
80427 -- Bug 4458708
80428 --
80429 XLA_AE_LINES_PKG.g_LineNumber := 0;
80430 --
80431 --
80432 
80433 FOR Idx IN 1..l_array_event_id.count LOOP
80434    --
80435    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
80436    --
80437    l_event_id := l_array_event_id(idx);  -- 5648433
80438 
80439    --
80440    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
80441    --
80442 
80443    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
80444              (g_array_event(l_event_id).array_value_num('header_index'))
80445          ,'N'
80446          ) <> 'Y'
80447    THEN
80448       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80449          trace
80450             (p_msg      => 'Trancaction revesal option is not Y '
80451             ,p_level    => C_LEVEL_STATEMENT
80452             ,p_module   => l_log_module);
80453       END IF;
80454 
80455 --
80456 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
80457 --
80458 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
80459 --
80460 -- set event info as cache for other routines to refer event attributes
80461 --
80462 
80463 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
80464    l_previous_event_id := l_event_id;
80465 
80466    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
80467       (p_application_id           => p_application_id
80468       ,p_primary_ledger_id        => p_primary_ledger_id
80469       ,p_base_ledger_id           => p_base_ledger_id
80470       ,p_target_ledger_id         => p_target_ledger_id
80471       ,p_entity_id                => l_array_entity_id(Idx)
80472       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
80473       ,p_entity_code              => l_array_entity_code(Idx)
80474       ,p_transaction_num          => l_array_transaction_num(Idx)
80475       ,p_event_id                 => l_array_event_id(Idx)
80476       ,p_event_class_code         => l_array_class_code(Idx)
80477       ,p_event_type_code          => l_array_event_type(Idx)
80478       ,p_event_number             => l_array_event_number(Idx)
80479       ,p_event_date               => l_array_event_date(Idx)
80480       ,p_transaction_date         => l_array_transaction_date(Idx)
80481       ,p_reference_num_1          => l_array_reference_num_1(Idx)
80485       ,p_reference_char_1         => l_array_reference_char_1(Idx)
80482       ,p_reference_num_2          => l_array_reference_num_2(Idx)
80483       ,p_reference_num_3          => l_array_reference_num_3(Idx)
80484       ,p_reference_num_4          => l_array_reference_num_4(Idx)
80486       ,p_reference_char_2         => l_array_reference_char_2(Idx)
80487       ,p_reference_char_3         => l_array_reference_char_3(Idx)
80488       ,p_reference_char_4         => l_array_reference_char_4(Idx)
80489       ,p_reference_date_1         => l_array_reference_date_1(Idx)
80490       ,p_reference_date_2         => l_array_reference_date_2(Idx)
80491       ,p_reference_date_3         => l_array_reference_date_3(Idx)
80492       ,p_reference_date_4         => l_array_reference_date_4(Idx)
80493       ,p_event_created_by         => l_array_event_created_by(Idx)
80494       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
80495        --
80496 END IF;
80497 
80498 
80499 
80500 --
80501 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
80502 
80503 l_acct_reversal_source := SUBSTR(NULL, 1,30);
80504 
80505 IF l_continue_with_lines THEN
80506    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
80507       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
80508 
80509       xla_accounting_err_pkg.build_message
80510          (p_appli_s_name            => 'XLA'
80511          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
80512          ,p_token_1                 => 'LINE_NUMBER'
80513          ,p_value_1                 => l_array_extract_line_num(Idx)
80514          ,p_token_2                 => 'PRODUCT_NAME'
80515          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
80516          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
80517          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
80518          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
80519 
80520    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
80521       --
80522       -- following sets the accounting attributes needed to reverse
80523       -- accounting for a distributeion
80524       --
80525 
80526       --
80527       -- 5217187
80528       --
80529       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
80530       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
80531                                        g_array_event(l_event_id).array_value_num('header_index'));
80532       --
80533       --
80534 
80535       -- No reversal code generated
80536 
80537       xla_ae_lines_pkg.SetAcctReversalAttrs
80538          (p_event_id             => l_event_id
80539          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
80540          ,p_calculate_acctd_flag => l_calculate_acctd_flag
80541          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
80542    END IF;
80543 
80544    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
80545        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
80546 
80547 --
80548 AcctLineType_98 (
80549  p_application_id  => p_application_id
80550  ,p_event_id     => l_event_id
80551  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80552  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80553  ,p_actual_flag => l_actual_flag
80554  ,p_balance_type_code => l_balance_type_code
80555  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80556  
80557  , p_source_22 => l_array_source_22(Idx)
80558  , p_source_27 => l_array_source_27(Idx)
80559  , p_source_29 => l_array_source_29(Idx)
80560  , p_source_30 => l_array_source_30(Idx)
80561  , p_source_33 => l_array_source_33(Idx)
80562  , p_source_34 => l_array_source_34(Idx)
80563  , p_source_35 => l_array_source_35(Idx)
80564  , p_source_40 => l_array_source_40(Idx)
80565  , p_source_44 => l_array_source_44(Idx)
80566  , p_source_45 => l_array_source_45(Idx)
80567  , p_source_88 => l_array_source_88(Idx)
80568  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
80569  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
80570  , p_source_93 => l_array_source_93(Idx)
80571  , p_source_94 => l_array_source_94(Idx)
80572  , p_source_95 => l_array_source_95(Idx)
80573  , p_source_96 => l_array_source_96(Idx)
80574  , p_source_97 => l_array_source_97(Idx)
80575  , p_source_98 => l_array_source_98(Idx)
80576  , p_source_99 => l_array_source_99(Idx)
80577  );
80578 If(l_balance_type_code = 'A') THEN
80579   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80580 END IF;
80581 
80582 --
80583 
80584 
80585 --
80586 AcctLineType_99 (
80587  p_application_id  => p_application_id
80588  ,p_event_id     => l_event_id
80589  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80590  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80591  ,p_actual_flag => l_actual_flag
80592  ,p_balance_type_code => l_balance_type_code
80593  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80594  
80595  , p_source_22 => l_array_source_22(Idx)
80596  , p_source_27 => l_array_source_27(Idx)
80597  , p_source_29 => l_array_source_29(Idx)
80598  , p_source_30 => l_array_source_30(Idx)
80599  , p_source_33 => l_array_source_33(Idx)
80600  , p_source_34 => l_array_source_34(Idx)
80601  , p_source_35 => l_array_source_35(Idx)
80602  , p_source_40 => l_array_source_40(Idx)
80603  , p_source_44 => l_array_source_44(Idx)
80604  , p_source_45 => l_array_source_45(Idx)
80605  , p_source_88 => l_array_source_88(Idx)
80606  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
80607  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
80608  , p_source_93 => l_array_source_93(Idx)
80609  , p_source_94 => l_array_source_94(Idx)
80610  , p_source_95 => l_array_source_95(Idx)
80614  , p_source_99 => l_array_source_99(Idx)
80611  , p_source_96 => l_array_source_96(Idx)
80612  , p_source_97 => l_array_source_97(Idx)
80613  , p_source_98 => l_array_source_98(Idx)
80615  );
80616 If(l_balance_type_code = 'A') THEN
80617   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80618 END IF;
80619 
80620 --
80621 
80622 
80623 --
80624 AcctLineType_100 (
80625  p_application_id  => p_application_id
80626  ,p_event_id     => l_event_id
80627  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80628  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80629  ,p_actual_flag => l_actual_flag
80630  ,p_balance_type_code => l_balance_type_code
80631  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80632  
80633  , p_source_22 => l_array_source_22(Idx)
80634  , p_source_27 => l_array_source_27(Idx)
80635  , p_source_29 => l_array_source_29(Idx)
80636  , p_source_30 => l_array_source_30(Idx)
80637  , p_source_33 => l_array_source_33(Idx)
80638  , p_source_34 => l_array_source_34(Idx)
80639  , p_source_35 => l_array_source_35(Idx)
80640  , p_source_40 => l_array_source_40(Idx)
80641  , p_source_44 => l_array_source_44(Idx)
80642  , p_source_45 => l_array_source_45(Idx)
80643  , p_source_88 => l_array_source_88(Idx)
80644  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
80645  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
80646  , p_source_93 => l_array_source_93(Idx)
80647  , p_source_94 => l_array_source_94(Idx)
80648  , p_source_95 => l_array_source_95(Idx)
80649  , p_source_96 => l_array_source_96(Idx)
80650  , p_source_97 => l_array_source_97(Idx)
80651  , p_source_98 => l_array_source_98(Idx)
80652  , p_source_99 => l_array_source_99(Idx)
80653  );
80654 If(l_balance_type_code = 'A') THEN
80655   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80656 END IF;
80657 
80658 --
80659 
80660 
80661 --
80662 AcctLineType_101 (
80663  p_application_id  => p_application_id
80664  ,p_event_id     => l_event_id
80665  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80666  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80667  ,p_actual_flag => l_actual_flag
80668  ,p_balance_type_code => l_balance_type_code
80669  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80670  
80671  , p_source_22 => l_array_source_22(Idx)
80672  , p_source_27 => l_array_source_27(Idx)
80673  , p_source_28 => l_array_source_28(Idx)
80674  , p_source_29 => l_array_source_29(Idx)
80675  , p_source_30 => l_array_source_30(Idx)
80676  , p_source_33 => l_array_source_33(Idx)
80677  , p_source_34 => l_array_source_34(Idx)
80678  , p_source_40 => l_array_source_40(Idx)
80679  , p_source_44 => l_array_source_44(Idx)
80680  , p_source_45 => l_array_source_45(Idx)
80681  , p_source_88 => l_array_source_88(Idx)
80682  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
80683  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
80684  , p_source_93 => l_array_source_93(Idx)
80685  , p_source_94 => l_array_source_94(Idx)
80686  , p_source_95 => l_array_source_95(Idx)
80687  , p_source_96 => l_array_source_96(Idx)
80688  , p_source_97 => l_array_source_97(Idx)
80689  , p_source_98 => l_array_source_98(Idx)
80690  , p_source_99 => l_array_source_99(Idx)
80691  , p_source_100 => l_array_source_100(Idx)
80692  );
80693 If(l_balance_type_code = 'A') THEN
80694   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80695 END IF;
80696 
80697 --
80698 
80699 
80700 --
80701 AcctLineType_102 (
80702  p_application_id  => p_application_id
80703  ,p_event_id     => l_event_id
80704  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80705  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80706  ,p_actual_flag => l_actual_flag
80707  ,p_balance_type_code => l_balance_type_code
80708  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80709  
80710  , p_source_22 => l_array_source_22(Idx)
80711  , p_source_27 => l_array_source_27(Idx)
80712  , p_source_28 => l_array_source_28(Idx)
80713  , p_source_29 => l_array_source_29(Idx)
80714  , p_source_30 => l_array_source_30(Idx)
80715  , p_source_33 => l_array_source_33(Idx)
80716  , p_source_34 => l_array_source_34(Idx)
80717  , p_source_40 => l_array_source_40(Idx)
80718  , p_source_44 => l_array_source_44(Idx)
80719  , p_source_45 => l_array_source_45(Idx)
80720  , p_source_88 => l_array_source_88(Idx)
80721  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
80722  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
80723  , p_source_93 => l_array_source_93(Idx)
80724  , p_source_94 => l_array_source_94(Idx)
80725  , p_source_95 => l_array_source_95(Idx)
80726  , p_source_96 => l_array_source_96(Idx)
80727  , p_source_97 => l_array_source_97(Idx)
80728  , p_source_98 => l_array_source_98(Idx)
80729  , p_source_99 => l_array_source_99(Idx)
80730  , p_source_100 => l_array_source_100(Idx)
80731  );
80732 If(l_balance_type_code = 'A') THEN
80733   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80734 END IF;
80735 
80736 --
80737 
80738 
80739 --
80740 AcctLineType_103 (
80741  p_application_id  => p_application_id
80742  ,p_event_id     => l_event_id
80743  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80744  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80745  ,p_actual_flag => l_actual_flag
80746  ,p_balance_type_code => l_balance_type_code
80747  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80748  
80749  , p_source_22 => l_array_source_22(Idx)
80750  , p_source_27 => l_array_source_27(Idx)
80751  , p_source_28 => l_array_source_28(Idx)
80752  , p_source_29 => l_array_source_29(Idx)
80753  , p_source_30 => l_array_source_30(Idx)
80754  , p_source_33 => l_array_source_33(Idx)
80755  , p_source_34 => l_array_source_34(Idx)
80756  , p_source_40 => l_array_source_40(Idx)
80757  , p_source_44 => l_array_source_44(Idx)
80761  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
80758  , p_source_45 => l_array_source_45(Idx)
80759  , p_source_88 => l_array_source_88(Idx)
80760  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
80762  , p_source_93 => l_array_source_93(Idx)
80763  , p_source_94 => l_array_source_94(Idx)
80764  , p_source_95 => l_array_source_95(Idx)
80765  , p_source_96 => l_array_source_96(Idx)
80766  , p_source_97 => l_array_source_97(Idx)
80767  , p_source_98 => l_array_source_98(Idx)
80768  , p_source_99 => l_array_source_99(Idx)
80769  , p_source_100 => l_array_source_100(Idx)
80770  );
80771 If(l_balance_type_code = 'A') THEN
80772   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80773 END IF;
80774 
80775 --
80776 
80777 
80778 --
80779 AcctLineType_104 (
80780  p_application_id  => p_application_id
80781  ,p_event_id     => l_event_id
80782  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80783  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80784  ,p_actual_flag => l_actual_flag
80785  ,p_balance_type_code => l_balance_type_code
80786  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80787  
80788  , p_source_22 => l_array_source_22(Idx)
80789  , p_source_27 => l_array_source_27(Idx)
80790  , p_source_29 => l_array_source_29(Idx)
80791  , p_source_30 => l_array_source_30(Idx)
80792  , p_source_33 => l_array_source_33(Idx)
80793  , p_source_34 => l_array_source_34(Idx)
80794  , p_source_35 => l_array_source_35(Idx)
80795  , p_source_40 => l_array_source_40(Idx)
80796  , p_source_44 => l_array_source_44(Idx)
80797  , p_source_45 => l_array_source_45(Idx)
80798  , p_source_88 => l_array_source_88(Idx)
80799  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
80800  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
80801  , p_source_93 => l_array_source_93(Idx)
80802  , p_source_94 => l_array_source_94(Idx)
80803  , p_source_95 => l_array_source_95(Idx)
80804  , p_source_96 => l_array_source_96(Idx)
80805  , p_source_97 => l_array_source_97(Idx)
80806  , p_source_98 => l_array_source_98(Idx)
80807  , p_source_99 => l_array_source_99(Idx)
80808  );
80809 If(l_balance_type_code = 'A') THEN
80810   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80811 END IF;
80812 
80813 --
80814 
80815 
80816 --
80817 AcctLineType_105 (
80818  p_application_id  => p_application_id
80819  ,p_event_id     => l_event_id
80820  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80821  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80822  ,p_actual_flag => l_actual_flag
80823  ,p_balance_type_code => l_balance_type_code
80824  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80825  
80826  , p_source_22 => l_array_source_22(Idx)
80827  , p_source_27 => l_array_source_27(Idx)
80828  , p_source_29 => l_array_source_29(Idx)
80829  , p_source_30 => l_array_source_30(Idx)
80830  , p_source_33 => l_array_source_33(Idx)
80831  , p_source_34 => l_array_source_34(Idx)
80832  , p_source_35 => l_array_source_35(Idx)
80833  , p_source_40 => l_array_source_40(Idx)
80834  , p_source_44 => l_array_source_44(Idx)
80835  , p_source_45 => l_array_source_45(Idx)
80836  , p_source_88 => l_array_source_88(Idx)
80837  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
80838  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
80839  , p_source_93 => l_array_source_93(Idx)
80840  , p_source_94 => l_array_source_94(Idx)
80841  , p_source_95 => l_array_source_95(Idx)
80842  , p_source_96 => l_array_source_96(Idx)
80843  , p_source_97 => l_array_source_97(Idx)
80844  , p_source_98 => l_array_source_98(Idx)
80845  , p_source_99 => l_array_source_99(Idx)
80846  );
80847 If(l_balance_type_code = 'A') THEN
80848   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80849 END IF;
80850 
80851 --
80852 
80853 
80854 --
80855 AcctLineType_106 (
80856  p_application_id  => p_application_id
80857  ,p_event_id     => l_event_id
80858  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80859  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80860  ,p_actual_flag => l_actual_flag
80861  ,p_balance_type_code => l_balance_type_code
80862  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80863  
80864  , p_source_22 => l_array_source_22(Idx)
80865  , p_source_27 => l_array_source_27(Idx)
80866  , p_source_29 => l_array_source_29(Idx)
80867  , p_source_30 => l_array_source_30(Idx)
80868  , p_source_33 => l_array_source_33(Idx)
80869  , p_source_34 => l_array_source_34(Idx)
80870  , p_source_35 => l_array_source_35(Idx)
80871  , p_source_40 => l_array_source_40(Idx)
80872  , p_source_44 => l_array_source_44(Idx)
80873  , p_source_45 => l_array_source_45(Idx)
80874  , p_source_88 => l_array_source_88(Idx)
80875  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
80876  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
80877  , p_source_93 => l_array_source_93(Idx)
80878  , p_source_94 => l_array_source_94(Idx)
80879  , p_source_95 => l_array_source_95(Idx)
80880  , p_source_96 => l_array_source_96(Idx)
80881  , p_source_97 => l_array_source_97(Idx)
80882  , p_source_98 => l_array_source_98(Idx)
80883  , p_source_99 => l_array_source_99(Idx)
80884  );
80885 If(l_balance_type_code = 'A') THEN
80886   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80887 END IF;
80888 
80889 --
80890 
80891 
80892 --
80893 AcctLineType_107 (
80894  p_application_id  => p_application_id
80895  ,p_event_id     => l_event_id
80896  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80897  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80898  ,p_actual_flag => l_actual_flag
80899  ,p_balance_type_code => l_balance_type_code
80900  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80901  
80902  , p_source_1 => l_array_source_1(Idx)
80903  , p_source_2 => l_array_source_2(Idx)
80907  , p_source_29 => l_array_source_29(Idx)
80904  , p_source_3 => l_array_source_3(Idx)
80905  , p_source_22 => l_array_source_22(Idx)
80906  , p_source_27 => l_array_source_27(Idx)
80908  , p_source_30 => l_array_source_30(Idx)
80909  , p_source_31 => l_array_source_31(Idx)
80910  , p_source_32 => l_array_source_32(Idx)
80911  , p_source_36 => l_array_source_36(Idx)
80912  , p_source_44 => l_array_source_44(Idx)
80913  , p_source_45 => l_array_source_45(Idx)
80914  , p_source_88 => l_array_source_88(Idx)
80915  , p_source_89 => l_array_source_89(Idx)
80916  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
80917  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
80918  , p_source_93 => l_array_source_93(Idx)
80919  , p_source_94 => l_array_source_94(Idx)
80920  , p_source_97 => l_array_source_97(Idx)
80921  , p_source_98 => l_array_source_98(Idx)
80922  , p_source_99 => l_array_source_99(Idx)
80923  , p_source_100 => l_array_source_100(Idx)
80924  , p_source_101 => l_array_source_101(Idx)
80925  );
80926 If(l_balance_type_code = 'A') THEN
80927   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80928 END IF;
80929 
80930 --
80931 
80932 
80933 --
80934 AcctLineType_108 (
80935  p_application_id  => p_application_id
80936  ,p_event_id     => l_event_id
80937  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80938  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80939  ,p_actual_flag => l_actual_flag
80940  ,p_balance_type_code => l_balance_type_code
80941  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80942  
80943  , p_source_22 => l_array_source_22(Idx)
80944  , p_source_27 => l_array_source_27(Idx)
80945  , p_source_29 => l_array_source_29(Idx)
80946  , p_source_30 => l_array_source_30(Idx)
80947  , p_source_31 => l_array_source_31(Idx)
80948  , p_source_32 => l_array_source_32(Idx)
80949  , p_source_36 => l_array_source_36(Idx)
80950  , p_source_44 => l_array_source_44(Idx)
80951  , p_source_45 => l_array_source_45(Idx)
80952  , p_source_88 => l_array_source_88(Idx)
80953  , p_source_89 => l_array_source_89(Idx)
80954  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
80955  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
80956  , p_source_93 => l_array_source_93(Idx)
80957  , p_source_94 => l_array_source_94(Idx)
80958  , p_source_97 => l_array_source_97(Idx)
80959  , p_source_98 => l_array_source_98(Idx)
80960  , p_source_99 => l_array_source_99(Idx)
80961  , p_source_100 => l_array_source_100(Idx)
80962  , p_source_101 => l_array_source_101(Idx)
80963  );
80964 If(l_balance_type_code = 'A') THEN
80965   l_actual_gain_loss_ref := l_gain_or_loss_ref;
80966 END IF;
80967 
80968 --
80969 
80970 
80971 --
80972 AcctLineType_109 (
80973  p_application_id  => p_application_id
80974  ,p_event_id     => l_event_id
80975  ,p_calculate_acctd_flag => l_calculate_acctd_flag
80976  ,p_calculate_g_l_flag => l_calculate_g_l_flag
80977  ,p_actual_flag => l_actual_flag
80978  ,p_balance_type_code => l_balance_type_code
80979  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
80980  
80981  , p_source_22 => l_array_source_22(Idx)
80982  , p_source_27 => l_array_source_27(Idx)
80983  , p_source_29 => l_array_source_29(Idx)
80984  , p_source_30 => l_array_source_30(Idx)
80985  , p_source_31 => l_array_source_31(Idx)
80986  , p_source_32 => l_array_source_32(Idx)
80987  , p_source_36 => l_array_source_36(Idx)
80988  , p_source_44 => l_array_source_44(Idx)
80989  , p_source_45 => l_array_source_45(Idx)
80990  , p_source_88 => l_array_source_88(Idx)
80991  , p_source_89 => l_array_source_89(Idx)
80992  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
80993  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
80994  , p_source_93 => l_array_source_93(Idx)
80995  , p_source_94 => l_array_source_94(Idx)
80996  , p_source_97 => l_array_source_97(Idx)
80997  , p_source_98 => l_array_source_98(Idx)
80998  , p_source_99 => l_array_source_99(Idx)
80999  , p_source_100 => l_array_source_100(Idx)
81000  , p_source_101 => l_array_source_101(Idx)
81001  );
81002 If(l_balance_type_code = 'A') THEN
81003   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81004 END IF;
81005 
81006 --
81007 
81008 
81009 --
81010 AcctLineType_110 (
81011  p_application_id  => p_application_id
81012  ,p_event_id     => l_event_id
81013  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81014  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81015  ,p_actual_flag => l_actual_flag
81016  ,p_balance_type_code => l_balance_type_code
81017  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81018  
81019  , p_source_22 => l_array_source_22(Idx)
81020  , p_source_27 => l_array_source_27(Idx)
81021  , p_source_29 => l_array_source_29(Idx)
81022  , p_source_30 => l_array_source_30(Idx)
81023  , p_source_31 => l_array_source_31(Idx)
81024  , p_source_32 => l_array_source_32(Idx)
81025  , p_source_36 => l_array_source_36(Idx)
81026  , p_source_44 => l_array_source_44(Idx)
81027  , p_source_45 => l_array_source_45(Idx)
81028  , p_source_88 => l_array_source_88(Idx)
81029  , p_source_89 => l_array_source_89(Idx)
81030  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81031  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81032  , p_source_93 => l_array_source_93(Idx)
81033  , p_source_94 => l_array_source_94(Idx)
81034  , p_source_97 => l_array_source_97(Idx)
81035  , p_source_98 => l_array_source_98(Idx)
81036  , p_source_99 => l_array_source_99(Idx)
81037  , p_source_100 => l_array_source_100(Idx)
81038  , p_source_101 => l_array_source_101(Idx)
81039  );
81040 If(l_balance_type_code = 'A') THEN
81041   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81042 END IF;
81043 
81044 --
81045 
81046 
81047 --
81048 AcctLineType_111 (
81052  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81049  p_application_id  => p_application_id
81050  ,p_event_id     => l_event_id
81051  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81053  ,p_actual_flag => l_actual_flag
81054  ,p_balance_type_code => l_balance_type_code
81055  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81056  
81057  , p_source_24 => g_array_event(l_event_id).array_value_num('source_24')
81058  , p_source_25 => g_array_event(l_event_id).array_value_num('source_25')
81059  , p_source_29 => l_array_source_29(Idx)
81060  , p_source_30 => l_array_source_30(Idx)
81061  , p_source_40 => l_array_source_40(Idx)
81062  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81063  , p_source_97 => l_array_source_97(Idx)
81064  , p_source_98 => l_array_source_98(Idx)
81065  , p_source_99 => l_array_source_99(Idx)
81066  );
81067 If(l_balance_type_code = 'A') THEN
81068   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81069 END IF;
81070 
81071 --
81072 
81073 
81074 --
81075 AcctLineType_112 (
81076  p_application_id  => p_application_id
81077  ,p_event_id     => l_event_id
81078  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81079  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81080  ,p_actual_flag => l_actual_flag
81081  ,p_balance_type_code => l_balance_type_code
81082  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81083  
81084  , p_source_22 => l_array_source_22(Idx)
81085  , p_source_27 => l_array_source_27(Idx)
81086  , p_source_29 => l_array_source_29(Idx)
81087  , p_source_30 => l_array_source_30(Idx)
81088  , p_source_33 => l_array_source_33(Idx)
81089  , p_source_34 => l_array_source_34(Idx)
81090  , p_source_35 => l_array_source_35(Idx)
81091  , p_source_40 => l_array_source_40(Idx)
81092  , p_source_44 => l_array_source_44(Idx)
81093  , p_source_45 => l_array_source_45(Idx)
81094  , p_source_88 => l_array_source_88(Idx)
81095  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81096  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81097  , p_source_93 => l_array_source_93(Idx)
81098  , p_source_94 => l_array_source_94(Idx)
81099  , p_source_95 => l_array_source_95(Idx)
81100  , p_source_96 => l_array_source_96(Idx)
81101  , p_source_97 => l_array_source_97(Idx)
81102  , p_source_98 => l_array_source_98(Idx)
81103  , p_source_99 => l_array_source_99(Idx)
81104  , p_source_102 => l_array_source_102(Idx)
81105  );
81106 If(l_balance_type_code = 'A') THEN
81107   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81108 END IF;
81109 
81110 --
81111 
81112 
81113 --
81114 AcctLineType_113 (
81115  p_application_id  => p_application_id
81116  ,p_event_id     => l_event_id
81117  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81118  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81119  ,p_actual_flag => l_actual_flag
81120  ,p_balance_type_code => l_balance_type_code
81121  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81122  
81123  , p_source_22 => l_array_source_22(Idx)
81124  , p_source_27 => l_array_source_27(Idx)
81125  , p_source_29 => l_array_source_29(Idx)
81126  , p_source_30 => l_array_source_30(Idx)
81127  , p_source_33 => l_array_source_33(Idx)
81128  , p_source_34 => l_array_source_34(Idx)
81129  , p_source_35 => l_array_source_35(Idx)
81130  , p_source_40 => l_array_source_40(Idx)
81131  , p_source_44 => l_array_source_44(Idx)
81132  , p_source_45 => l_array_source_45(Idx)
81133  , p_source_88 => l_array_source_88(Idx)
81134  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81135  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81136  , p_source_93 => l_array_source_93(Idx)
81137  , p_source_94 => l_array_source_94(Idx)
81138  , p_source_95 => l_array_source_95(Idx)
81139  , p_source_96 => l_array_source_96(Idx)
81140  , p_source_97 => l_array_source_97(Idx)
81141  , p_source_98 => l_array_source_98(Idx)
81142  , p_source_99 => l_array_source_99(Idx)
81143  , p_source_102 => l_array_source_102(Idx)
81144  );
81145 If(l_balance_type_code = 'A') THEN
81146   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81147 END IF;
81148 
81149 --
81150 
81151 
81152 --
81153 AcctLineType_114 (
81154  p_application_id  => p_application_id
81155  ,p_event_id     => l_event_id
81156  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81157  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81158  ,p_actual_flag => l_actual_flag
81159  ,p_balance_type_code => l_balance_type_code
81160  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81161  
81162  , p_source_22 => l_array_source_22(Idx)
81163  , p_source_27 => l_array_source_27(Idx)
81164  , p_source_28 => l_array_source_28(Idx)
81165  , p_source_29 => l_array_source_29(Idx)
81166  , p_source_30 => l_array_source_30(Idx)
81167  , p_source_33 => l_array_source_33(Idx)
81168  , p_source_34 => l_array_source_34(Idx)
81169  , p_source_35 => l_array_source_35(Idx)
81170  , p_source_36 => l_array_source_36(Idx)
81171  , p_source_44 => l_array_source_44(Idx)
81172  , p_source_45 => l_array_source_45(Idx)
81173  , p_source_88 => l_array_source_88(Idx)
81174  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81175  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81176  , p_source_93 => l_array_source_93(Idx)
81177  , p_source_94 => l_array_source_94(Idx)
81178  , p_source_95 => l_array_source_95(Idx)
81179  , p_source_96 => l_array_source_96(Idx)
81180  , p_source_97 => l_array_source_97(Idx)
81181  , p_source_98 => l_array_source_98(Idx)
81182  , p_source_99 => l_array_source_99(Idx)
81183  );
81184 If(l_balance_type_code = 'A') THEN
81185   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81186 END IF;
81187 
81188 --
81189 
81190 
81191 --
81192 AcctLineType_115 (
81193  p_application_id  => p_application_id
81197  ,p_actual_flag => l_actual_flag
81194  ,p_event_id     => l_event_id
81195  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81196  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81198  ,p_balance_type_code => l_balance_type_code
81199  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81200  
81201  , p_source_22 => l_array_source_22(Idx)
81202  , p_source_27 => l_array_source_27(Idx)
81203  , p_source_28 => l_array_source_28(Idx)
81204  , p_source_29 => l_array_source_29(Idx)
81205  , p_source_30 => l_array_source_30(Idx)
81206  , p_source_33 => l_array_source_33(Idx)
81207  , p_source_34 => l_array_source_34(Idx)
81208  , p_source_35 => l_array_source_35(Idx)
81209  , p_source_40 => l_array_source_40(Idx)
81210  , p_source_44 => l_array_source_44(Idx)
81211  , p_source_45 => l_array_source_45(Idx)
81212  , p_source_88 => l_array_source_88(Idx)
81213  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81214  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81215  , p_source_93 => l_array_source_93(Idx)
81216  , p_source_94 => l_array_source_94(Idx)
81217  , p_source_95 => l_array_source_95(Idx)
81218  , p_source_96 => l_array_source_96(Idx)
81219  , p_source_97 => l_array_source_97(Idx)
81220  , p_source_98 => l_array_source_98(Idx)
81221  , p_source_99 => l_array_source_99(Idx)
81222  );
81223 If(l_balance_type_code = 'A') THEN
81224   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81225 END IF;
81226 
81227 --
81228 
81229 
81230 --
81231 AcctLineType_116 (
81232  p_application_id  => p_application_id
81233  ,p_event_id     => l_event_id
81234  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81235  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81236  ,p_actual_flag => l_actual_flag
81237  ,p_balance_type_code => l_balance_type_code
81238  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81239  
81240  , p_source_22 => l_array_source_22(Idx)
81241  , p_source_27 => l_array_source_27(Idx)
81242  , p_source_28 => l_array_source_28(Idx)
81243  , p_source_29 => l_array_source_29(Idx)
81244  , p_source_30 => l_array_source_30(Idx)
81245  , p_source_33 => l_array_source_33(Idx)
81246  , p_source_34 => l_array_source_34(Idx)
81247  , p_source_35 => l_array_source_35(Idx)
81248  , p_source_40 => l_array_source_40(Idx)
81249  , p_source_44 => l_array_source_44(Idx)
81250  , p_source_45 => l_array_source_45(Idx)
81251  , p_source_88 => l_array_source_88(Idx)
81252  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81253  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81254  , p_source_93 => l_array_source_93(Idx)
81255  , p_source_94 => l_array_source_94(Idx)
81256  , p_source_95 => l_array_source_95(Idx)
81257  , p_source_96 => l_array_source_96(Idx)
81258  , p_source_97 => l_array_source_97(Idx)
81259  , p_source_98 => l_array_source_98(Idx)
81260  , p_source_99 => l_array_source_99(Idx)
81261  , p_source_103 => l_array_source_103(Idx)
81262  );
81263 If(l_balance_type_code = 'A') THEN
81264   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81265 END IF;
81266 
81267 --
81268 
81269 
81270 --
81271 AcctLineType_117 (
81272  p_application_id  => p_application_id
81273  ,p_event_id     => l_event_id
81274  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81275  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81276  ,p_actual_flag => l_actual_flag
81277  ,p_balance_type_code => l_balance_type_code
81278  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81279  
81280  , p_source_22 => l_array_source_22(Idx)
81281  , p_source_27 => l_array_source_27(Idx)
81282  , p_source_29 => l_array_source_29(Idx)
81283  , p_source_30 => l_array_source_30(Idx)
81284  , p_source_33 => l_array_source_33(Idx)
81285  , p_source_34 => l_array_source_34(Idx)
81286  , p_source_35 => l_array_source_35(Idx)
81287  , p_source_40 => l_array_source_40(Idx)
81288  , p_source_44 => l_array_source_44(Idx)
81289  , p_source_45 => l_array_source_45(Idx)
81290  , p_source_88 => l_array_source_88(Idx)
81291  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81292  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81293  , p_source_93 => l_array_source_93(Idx)
81294  , p_source_94 => l_array_source_94(Idx)
81295  , p_source_95 => l_array_source_95(Idx)
81296  , p_source_96 => l_array_source_96(Idx)
81297  , p_source_97 => l_array_source_97(Idx)
81298  , p_source_98 => l_array_source_98(Idx)
81299  , p_source_99 => l_array_source_99(Idx)
81300  , p_source_102 => l_array_source_102(Idx)
81301  );
81302 If(l_balance_type_code = 'A') THEN
81303   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81304 END IF;
81305 
81306 --
81307 
81308 
81309 --
81310 AcctLineType_118 (
81311  p_application_id  => p_application_id
81312  ,p_event_id     => l_event_id
81313  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81314  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81315  ,p_actual_flag => l_actual_flag
81316  ,p_balance_type_code => l_balance_type_code
81317  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81318  
81319  , p_source_22 => l_array_source_22(Idx)
81320  , p_source_27 => l_array_source_27(Idx)
81321  , p_source_29 => l_array_source_29(Idx)
81322  , p_source_30 => l_array_source_30(Idx)
81323  , p_source_33 => l_array_source_33(Idx)
81324  , p_source_34 => l_array_source_34(Idx)
81325  , p_source_35 => l_array_source_35(Idx)
81326  , p_source_40 => l_array_source_40(Idx)
81327  , p_source_44 => l_array_source_44(Idx)
81328  , p_source_45 => l_array_source_45(Idx)
81329  , p_source_88 => l_array_source_88(Idx)
81330  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81331  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81332  , p_source_93 => l_array_source_93(Idx)
81333  , p_source_94 => l_array_source_94(Idx)
81334  , p_source_95 => l_array_source_95(Idx)
81338  , p_source_99 => l_array_source_99(Idx)
81335  , p_source_96 => l_array_source_96(Idx)
81336  , p_source_97 => l_array_source_97(Idx)
81337  , p_source_98 => l_array_source_98(Idx)
81339  , p_source_102 => l_array_source_102(Idx)
81340  );
81341 If(l_balance_type_code = 'A') THEN
81342   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81343 END IF;
81344 
81345 --
81346 
81347 
81348 --
81349 AcctLineType_119 (
81350  p_application_id  => p_application_id
81351  ,p_event_id     => l_event_id
81352  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81353  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81354  ,p_actual_flag => l_actual_flag
81355  ,p_balance_type_code => l_balance_type_code
81356  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81357  
81358  , p_source_22 => l_array_source_22(Idx)
81359  , p_source_27 => l_array_source_27(Idx)
81360  , p_source_29 => l_array_source_29(Idx)
81361  , p_source_30 => l_array_source_30(Idx)
81362  , p_source_31 => l_array_source_31(Idx)
81363  , p_source_32 => l_array_source_32(Idx)
81364  , p_source_36 => l_array_source_36(Idx)
81365  , p_source_44 => l_array_source_44(Idx)
81366  , p_source_45 => l_array_source_45(Idx)
81367  , p_source_88 => l_array_source_88(Idx)
81368  , p_source_89 => l_array_source_89(Idx)
81369  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81370  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81371  , p_source_93 => l_array_source_93(Idx)
81372  , p_source_94 => l_array_source_94(Idx)
81373  , p_source_97 => l_array_source_97(Idx)
81374  , p_source_98 => l_array_source_98(Idx)
81375  , p_source_99 => l_array_source_99(Idx)
81376  , p_source_100 => l_array_source_100(Idx)
81377  , p_source_101 => l_array_source_101(Idx)
81378  );
81379 If(l_balance_type_code = 'A') THEN
81380   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81381 END IF;
81382 
81383 --
81384 
81385 
81386 --
81387 AcctLineType_120 (
81388  p_application_id  => p_application_id
81389  ,p_event_id     => l_event_id
81390  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81391  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81392  ,p_actual_flag => l_actual_flag
81393  ,p_balance_type_code => l_balance_type_code
81394  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81395  
81396  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
81397  , p_source_27 => l_array_source_27(Idx)
81398  , p_source_28 => l_array_source_28(Idx)
81399  , p_source_29 => l_array_source_29(Idx)
81400  , p_source_30 => l_array_source_30(Idx)
81401  , p_source_33 => l_array_source_33(Idx)
81402  , p_source_34 => l_array_source_34(Idx)
81403  , p_source_35 => l_array_source_35(Idx)
81404  , p_source_40 => l_array_source_40(Idx)
81405  , p_source_44 => l_array_source_44(Idx)
81406  , p_source_45 => l_array_source_45(Idx)
81407  , p_source_88 => l_array_source_88(Idx)
81408  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81409  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81410  , p_source_93 => l_array_source_93(Idx)
81411  , p_source_94 => l_array_source_94(Idx)
81412  , p_source_95 => l_array_source_95(Idx)
81413  , p_source_96 => l_array_source_96(Idx)
81414  , p_source_99 => l_array_source_99(Idx)
81415  , p_source_102 => l_array_source_102(Idx)
81416  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
81417  , p_source_105 => g_array_event(l_event_id).array_value_num('source_105')
81418  , p_source_106 => g_array_event(l_event_id).array_value_char('source_106')
81419  );
81420 If(l_balance_type_code = 'A') THEN
81421   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81422 END IF;
81423 
81424 --
81425 
81426 
81427 --
81428 AcctLineType_121 (
81429  p_application_id  => p_application_id
81430  ,p_event_id     => l_event_id
81431  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81432  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81433  ,p_actual_flag => l_actual_flag
81434  ,p_balance_type_code => l_balance_type_code
81435  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81436  
81437  , p_source_23 => g_array_event(l_event_id).array_value_num('source_23')
81438  , p_source_27 => l_array_source_27(Idx)
81439  , p_source_29 => l_array_source_29(Idx)
81440  , p_source_30 => l_array_source_30(Idx)
81441  , p_source_33 => l_array_source_33(Idx)
81442  , p_source_34 => l_array_source_34(Idx)
81443  , p_source_35 => l_array_source_35(Idx)
81444  , p_source_40 => l_array_source_40(Idx)
81445  , p_source_44 => l_array_source_44(Idx)
81446  , p_source_45 => l_array_source_45(Idx)
81447  , p_source_88 => l_array_source_88(Idx)
81448  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81449  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81450  , p_source_93 => l_array_source_93(Idx)
81451  , p_source_94 => l_array_source_94(Idx)
81452  , p_source_95 => l_array_source_95(Idx)
81453  , p_source_96 => l_array_source_96(Idx)
81454  , p_source_99 => l_array_source_99(Idx)
81455  , p_source_102 => l_array_source_102(Idx)
81456  , p_source_104 => g_array_event(l_event_id).array_value_num('source_104')
81457  , p_source_105 => g_array_event(l_event_id).array_value_num('source_105')
81458  , p_source_106 => g_array_event(l_event_id).array_value_char('source_106')
81459  );
81460 If(l_balance_type_code = 'A') THEN
81461   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81462 END IF;
81463 
81464 --
81465 
81466 
81467 --
81468 AcctLineType_122 (
81469  p_application_id  => p_application_id
81470  ,p_event_id     => l_event_id
81471  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81472  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81473  ,p_actual_flag => l_actual_flag
81474  ,p_balance_type_code => l_balance_type_code
81475  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81476  
81480  , p_source_30 => l_array_source_30(Idx)
81477  , p_source_22 => l_array_source_22(Idx)
81478  , p_source_27 => l_array_source_27(Idx)
81479  , p_source_29 => l_array_source_29(Idx)
81481  , p_source_31 => l_array_source_31(Idx)
81482  , p_source_32 => l_array_source_32(Idx)
81483  , p_source_36 => l_array_source_36(Idx)
81484  , p_source_44 => l_array_source_44(Idx)
81485  , p_source_45 => l_array_source_45(Idx)
81486  , p_source_88 => l_array_source_88(Idx)
81487  , p_source_89 => l_array_source_89(Idx)
81488  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81489  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81490  , p_source_93 => l_array_source_93(Idx)
81491  , p_source_94 => l_array_source_94(Idx)
81492  , p_source_97 => l_array_source_97(Idx)
81493  , p_source_98 => l_array_source_98(Idx)
81494  , p_source_99 => l_array_source_99(Idx)
81495  , p_source_100 => l_array_source_100(Idx)
81496  , p_source_101 => l_array_source_101(Idx)
81497  );
81498 If(l_balance_type_code = 'A') THEN
81499   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81500 END IF;
81501 
81502 --
81503 
81504 
81505 --
81506 AcctLineType_123 (
81507  p_application_id  => p_application_id
81508  ,p_event_id     => l_event_id
81509  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81510  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81511  ,p_actual_flag => l_actual_flag
81512  ,p_balance_type_code => l_balance_type_code
81513  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81514  
81515  , p_source_22 => l_array_source_22(Idx)
81516  , p_source_27 => l_array_source_27(Idx)
81517  , p_source_29 => l_array_source_29(Idx)
81518  , p_source_30 => l_array_source_30(Idx)
81519  , p_source_31 => l_array_source_31(Idx)
81520  , p_source_32 => l_array_source_32(Idx)
81521  , p_source_36 => l_array_source_36(Idx)
81522  , p_source_44 => l_array_source_44(Idx)
81523  , p_source_45 => l_array_source_45(Idx)
81524  , p_source_88 => l_array_source_88(Idx)
81525  , p_source_89 => l_array_source_89(Idx)
81526  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81527  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81528  , p_source_93 => l_array_source_93(Idx)
81529  , p_source_94 => l_array_source_94(Idx)
81530  , p_source_97 => l_array_source_97(Idx)
81531  , p_source_98 => l_array_source_98(Idx)
81532  , p_source_99 => l_array_source_99(Idx)
81533  , p_source_100 => l_array_source_100(Idx)
81534  , p_source_101 => l_array_source_101(Idx)
81535  );
81536 If(l_balance_type_code = 'A') THEN
81537   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81538 END IF;
81539 
81540 --
81541 
81542 
81543 --
81544 AcctLineType_124 (
81545  p_application_id  => p_application_id
81546  ,p_event_id     => l_event_id
81547  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81548  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81549  ,p_actual_flag => l_actual_flag
81550  ,p_balance_type_code => l_balance_type_code
81551  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81552  
81553  , p_source_22 => l_array_source_22(Idx)
81554  , p_source_27 => l_array_source_27(Idx)
81555  , p_source_29 => l_array_source_29(Idx)
81556  , p_source_30 => l_array_source_30(Idx)
81557  , p_source_33 => l_array_source_33(Idx)
81558  , p_source_34 => l_array_source_34(Idx)
81559  , p_source_35 => l_array_source_35(Idx)
81560  , p_source_40 => l_array_source_40(Idx)
81561  , p_source_44 => l_array_source_44(Idx)
81562  , p_source_45 => l_array_source_45(Idx)
81563  , p_source_88 => l_array_source_88(Idx)
81564  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81565  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81566  , p_source_93 => l_array_source_93(Idx)
81567  , p_source_94 => l_array_source_94(Idx)
81568  , p_source_95 => l_array_source_95(Idx)
81569  , p_source_96 => l_array_source_96(Idx)
81570  , p_source_97 => l_array_source_97(Idx)
81571  , p_source_98 => l_array_source_98(Idx)
81572  , p_source_99 => l_array_source_99(Idx)
81573  );
81574 If(l_balance_type_code = 'A') THEN
81575   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81576 END IF;
81577 
81578 --
81579 
81580 
81581 --
81582 AcctLineType_125 (
81583  p_application_id  => p_application_id
81584  ,p_event_id     => l_event_id
81585  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81586  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81587  ,p_actual_flag => l_actual_flag
81588  ,p_balance_type_code => l_balance_type_code
81589  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81590  
81591  , p_source_22 => l_array_source_22(Idx)
81592  , p_source_27 => l_array_source_27(Idx)
81593  , p_source_28 => l_array_source_28(Idx)
81594  , p_source_29 => l_array_source_29(Idx)
81595  , p_source_30 => l_array_source_30(Idx)
81596  , p_source_33 => l_array_source_33(Idx)
81597  , p_source_34 => l_array_source_34(Idx)
81598  , p_source_35 => l_array_source_35(Idx)
81599  , p_source_40 => l_array_source_40(Idx)
81600  , p_source_44 => l_array_source_44(Idx)
81601  , p_source_45 => l_array_source_45(Idx)
81602  , p_source_88 => l_array_source_88(Idx)
81603  , p_source_90 => g_array_event(l_event_id).array_value_num('source_90')
81604  , p_source_92 => g_array_event(l_event_id).array_value_num('source_92')
81605  , p_source_93 => l_array_source_93(Idx)
81606  , p_source_94 => l_array_source_94(Idx)
81607  , p_source_95 => l_array_source_95(Idx)
81608  , p_source_96 => l_array_source_96(Idx)
81609  , p_source_97 => l_array_source_97(Idx)
81610  , p_source_98 => l_array_source_98(Idx)
81611  , p_source_99 => l_array_source_99(Idx)
81612  , p_source_103 => l_array_source_103(Idx)
81613  );
81614 If(l_balance_type_code = 'A') THEN
81615   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81616 END IF;
81617 
81618 --
81619 
81623       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
81620       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
81621       -- or secondary ledger that has different currency with primary
81622       -- or alc that is calculated by sla
81624             (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'))
81625 
81626 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
81627 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
81628           AND (l_actual_flag = 'A')) THEN
81629         XLA_AE_LINES_PKG.CreateGainOrLossLines(
81630           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
81631          ,p_application_id   => p_application_id
81632          ,p_amb_context_code => 'DEFAULT'
81633          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
81634          ,p_event_class_code => C_EVENT_CLASS_CODE
81635          ,p_event_type_code  => C_EVENT_TYPE_CODE
81636          
81637          ,p_gain_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_24'))
81638          ,p_loss_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_25'))
81639 
81640          ,p_actual_flag      => l_actual_flag
81641          ,p_enc_flag         => null
81642          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
81643          ,p_enc_g_l_ref      => null
81644          );
81645       END IF;
81646    END IF;
81647 END IF;
81648 
81649    ELSE
81650       --
81651       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
81652       --
81653       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81654          trace
81655             (p_msg      => 'Trancaction revesal option is Y'
81656             ,p_level    => C_LEVEL_STATEMENT
81657             ,p_module   => l_log_module);
81658       END IF;
81659    END IF;
81660 
81661 END LOOP;
81662 l_result := XLA_AE_LINES_PKG.InsertLines ;
81663 end loop;
81664 close line_cur;
81665 
81666 
81667 --
81668 -- insert headers into xla_ae_headers_gt table
81669 --
81670 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
81671 
81672 -- insert into errors table here.
81673 
81674 END LOOP;
81675 
81676 --
81677 -- 4865292
81678 --
81679 -- Compare g_hdr_extract_count with event count in
81680 -- CreateHeadersAndLines.
81681 --
81682 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
81683 
81684 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81685    trace (p_msg     => '# rows extracted from header extract objects '
81686                     || ' (running total): '
81687                     || g_hdr_extract_count
81688          ,p_level   => C_LEVEL_STATEMENT
81689          ,p_module  => l_log_module);
81690 END IF;
81691 
81692 CLOSE header_cur;
81693 --
81694 
81695 --
81696 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81697    trace
81698       (p_msg      => 'END of EventClass_137'
81699       ,p_level    => C_LEVEL_PROCEDURE
81700       ,p_module   => l_log_module);
81701 END IF;
81702 --
81703 RETURN l_result;
81704 EXCEPTION
81705 WHEN xla_exceptions_pkg.application_exception THEN
81706    
81707 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
81708 
81709    
81710 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
81711 
81712    RAISE;
81713 
81714 WHEN NO_DATA_FOUND THEN
81715 
81716 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
81717 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
81718 
81719 FOR header_record IN header_cur
81720 LOOP
81721     l_array_header_events(header_record.event_id) := header_record.event_id;
81722 END LOOP;
81723 
81724 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
81725 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
81726 
81727 fnd_file.put_line(fnd_file.LOG, '                    ');
81728 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
81729 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
81730 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
81731 
81732 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
81733 LOOP
81734 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
81735 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
81736         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
81737 	END IF;
81738 END LOOP;
81739 
81740 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
81741 fnd_file.put_line(fnd_file.LOG, '                    ');
81742 
81743 
81744 xla_exceptions_pkg.raise_message
81745       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_137');
81746 
81747 
81748 WHEN OTHERS THEN
81749    xla_exceptions_pkg.raise_message
81750       (p_location => 'XLA_00222_AAD_S_000017_PKG.EventClass_137');
81751 END EventClass_137;
81752 --
81753 
81754 --
81755 --+============================================+
81756 --|                                            |
81757 --|  PRIVATE FUNCTION                          |
81758 --|                                            |
81759 --+============================================+
81760 --
81761 FUNCTION CreateHeadersAndLines
81762        (p_application_id         IN NUMBER
81763        ,p_base_ledger_id         IN NUMBER
81764        ,p_target_ledger_id       IN NUMBER
81768 RETURN BOOLEAN IS
81765        ,p_pad_start_date         IN DATE
81766        ,p_pad_end_date           IN DATE
81767        ,p_primary_ledger_id      IN NUMBER)
81769 l_created                   BOOLEAN:=FALSE;
81770 l_event_id                  NUMBER;
81771 l_event_date                DATE;
81772 l_language                  VARCHAR2(30);
81773 l_currency_code             VARCHAR2(30);
81774 l_sla_ledger_id             NUMBER;
81775 l_log_module                VARCHAR2(240);
81776 
81777 BEGIN
81778 --
81779 IF g_log_enabled THEN
81780    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
81781 END IF;
81782 --
81783 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81784    trace
81785       (p_msg      => 'BEGIN of CreateHeadersAndLines'
81786       ,p_level    => C_LEVEL_PROCEDURE
81787       ,p_module   => l_log_module);
81788 END IF;
81789 
81790 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
81791 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
81792 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
81793 
81794 --
81795 -- initialize array of lines with NULL
81796 --
81797 xla_ae_lines_pkg.SetNullLine;
81798 
81799 --
81800 -- initialize header extract count -- Bug 4865292
81801 --
81802 g_hdr_extract_count:= 0;
81803 
81804 
81805 l_created := EventClass_126(
81806    p_application_id         => p_application_id
81807  , p_base_ledger_id         => p_base_ledger_id
81808  , p_target_ledger_id       => p_target_ledger_id
81809  , p_language               => l_language
81810  , p_currency_code          => l_currency_code
81811  , p_sla_ledger_id          => l_sla_ledger_id
81812  , p_pad_start_date         => p_pad_start_date
81813  , p_pad_end_date           => p_pad_end_date
81814  , p_primary_ledger_id      => p_primary_ledger_id
81815 );
81816 
81817 
81818 
81819      IF ( g_diagnostics_mode ='Y' ) THEN
81820 
81821          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81822           trace
81823               (p_msg      => 'CALL Transaction Objects Diagnostics'
81824               ,p_level    => C_LEVEL_STATEMENT
81825               ,p_module   => l_log_module);
81826 
81827          END IF;
81828 
81829          insert_sources_126(
81830                           p_target_ledger_id => p_target_ledger_id
81831                         , p_language         => l_language
81832                         , p_sla_ledger_id    => l_sla_ledger_id
81833                         , p_pad_start_date   => p_pad_start_date
81834                         , p_pad_end_date     => p_pad_end_date
81835                           );
81836 
81837      END IF;
81838 
81839 l_created := EventClass_127(
81840    p_application_id         => p_application_id
81841  , p_base_ledger_id         => p_base_ledger_id
81842  , p_target_ledger_id       => p_target_ledger_id
81843  , p_language               => l_language
81844  , p_currency_code          => l_currency_code
81845  , p_sla_ledger_id          => l_sla_ledger_id
81846  , p_pad_start_date         => p_pad_start_date
81847  , p_pad_end_date           => p_pad_end_date
81848  , p_primary_ledger_id      => p_primary_ledger_id
81849 );
81850 
81851 
81852 
81853      IF ( g_diagnostics_mode ='Y' ) THEN
81854 
81855          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81856           trace
81857               (p_msg      => 'CALL Transaction Objects Diagnostics'
81858               ,p_level    => C_LEVEL_STATEMENT
81859               ,p_module   => l_log_module);
81860 
81861          END IF;
81862 
81863          insert_sources_127(
81864                           p_target_ledger_id => p_target_ledger_id
81865                         , p_language         => l_language
81866                         , p_sla_ledger_id    => l_sla_ledger_id
81867                         , p_pad_start_date   => p_pad_start_date
81868                         , p_pad_end_date     => p_pad_end_date
81869                           );
81870 
81871      END IF;
81872 
81873 l_created := EventClass_128(
81874    p_application_id         => p_application_id
81875  , p_base_ledger_id         => p_base_ledger_id
81876  , p_target_ledger_id       => p_target_ledger_id
81877  , p_language               => l_language
81878  , p_currency_code          => l_currency_code
81879  , p_sla_ledger_id          => l_sla_ledger_id
81880  , p_pad_start_date         => p_pad_start_date
81881  , p_pad_end_date           => p_pad_end_date
81882  , p_primary_ledger_id      => p_primary_ledger_id
81883 );
81884 
81885 
81886 
81887      IF ( g_diagnostics_mode ='Y' ) THEN
81888 
81889          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81890           trace
81891               (p_msg      => 'CALL Transaction Objects Diagnostics'
81892               ,p_level    => C_LEVEL_STATEMENT
81893               ,p_module   => l_log_module);
81894 
81895          END IF;
81896 
81897          insert_sources_128(
81898                           p_target_ledger_id => p_target_ledger_id
81899                         , p_language         => l_language
81900                         , p_sla_ledger_id    => l_sla_ledger_id
81901                         , p_pad_start_date   => p_pad_start_date
81902                         , p_pad_end_date     => p_pad_end_date
81903                           );
81904 
81905      END IF;
81906 
81907 l_created := EventClass_129(
81908    p_application_id         => p_application_id
81909  , p_base_ledger_id         => p_base_ledger_id
81910  , p_target_ledger_id       => p_target_ledger_id
81911  , p_language               => l_language
81912  , p_currency_code          => l_currency_code
81913  , p_sla_ledger_id          => l_sla_ledger_id
81917 );
81914  , p_pad_start_date         => p_pad_start_date
81915  , p_pad_end_date           => p_pad_end_date
81916  , p_primary_ledger_id      => p_primary_ledger_id
81918 
81919 
81920 
81921      IF ( g_diagnostics_mode ='Y' ) THEN
81922 
81923          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81924           trace
81925               (p_msg      => 'CALL Transaction Objects Diagnostics'
81926               ,p_level    => C_LEVEL_STATEMENT
81927               ,p_module   => l_log_module);
81928 
81929          END IF;
81930 
81931          insert_sources_129(
81932                           p_target_ledger_id => p_target_ledger_id
81933                         , p_language         => l_language
81934                         , p_sla_ledger_id    => l_sla_ledger_id
81935                         , p_pad_start_date   => p_pad_start_date
81936                         , p_pad_end_date     => p_pad_end_date
81937                           );
81938 
81939      END IF;
81940 
81941 l_created := EventClass_130(
81942    p_application_id         => p_application_id
81943  , p_base_ledger_id         => p_base_ledger_id
81944  , p_target_ledger_id       => p_target_ledger_id
81945  , p_language               => l_language
81946  , p_currency_code          => l_currency_code
81947  , p_sla_ledger_id          => l_sla_ledger_id
81948  , p_pad_start_date         => p_pad_start_date
81949  , p_pad_end_date           => p_pad_end_date
81950  , p_primary_ledger_id      => p_primary_ledger_id
81951 );
81952 
81953 
81954 
81955      IF ( g_diagnostics_mode ='Y' ) THEN
81956 
81957          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81958           trace
81959               (p_msg      => 'CALL Transaction Objects Diagnostics'
81960               ,p_level    => C_LEVEL_STATEMENT
81961               ,p_module   => l_log_module);
81962 
81963          END IF;
81964 
81965          insert_sources_130(
81966                           p_target_ledger_id => p_target_ledger_id
81967                         , p_language         => l_language
81968                         , p_sla_ledger_id    => l_sla_ledger_id
81969                         , p_pad_start_date   => p_pad_start_date
81970                         , p_pad_end_date     => p_pad_end_date
81971                           );
81972 
81973      END IF;
81974 
81975 l_created := EventClass_131(
81976    p_application_id         => p_application_id
81977  , p_base_ledger_id         => p_base_ledger_id
81978  , p_target_ledger_id       => p_target_ledger_id
81979  , p_language               => l_language
81980  , p_currency_code          => l_currency_code
81981  , p_sla_ledger_id          => l_sla_ledger_id
81982  , p_pad_start_date         => p_pad_start_date
81983  , p_pad_end_date           => p_pad_end_date
81984  , p_primary_ledger_id      => p_primary_ledger_id
81985 );
81986 
81987 
81988 
81989      IF ( g_diagnostics_mode ='Y' ) THEN
81990 
81991          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81992           trace
81993               (p_msg      => 'CALL Transaction Objects Diagnostics'
81994               ,p_level    => C_LEVEL_STATEMENT
81995               ,p_module   => l_log_module);
81996 
81997          END IF;
81998 
81999          insert_sources_131(
82000                           p_target_ledger_id => p_target_ledger_id
82001                         , p_language         => l_language
82002                         , p_sla_ledger_id    => l_sla_ledger_id
82003                         , p_pad_start_date   => p_pad_start_date
82004                         , p_pad_end_date     => p_pad_end_date
82005                           );
82006 
82007      END IF;
82008 
82009 l_created := EventClass_132(
82010    p_application_id         => p_application_id
82011  , p_base_ledger_id         => p_base_ledger_id
82012  , p_target_ledger_id       => p_target_ledger_id
82013  , p_language               => l_language
82014  , p_currency_code          => l_currency_code
82015  , p_sla_ledger_id          => l_sla_ledger_id
82016  , p_pad_start_date         => p_pad_start_date
82017  , p_pad_end_date           => p_pad_end_date
82018  , p_primary_ledger_id      => p_primary_ledger_id
82019 );
82020 
82021 
82022 
82023      IF ( g_diagnostics_mode ='Y' ) THEN
82024 
82025          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82026           trace
82027               (p_msg      => 'CALL Transaction Objects Diagnostics'
82028               ,p_level    => C_LEVEL_STATEMENT
82029               ,p_module   => l_log_module);
82030 
82031          END IF;
82032 
82033          insert_sources_132(
82034                           p_target_ledger_id => p_target_ledger_id
82035                         , p_language         => l_language
82036                         , p_sla_ledger_id    => l_sla_ledger_id
82037                         , p_pad_start_date   => p_pad_start_date
82038                         , p_pad_end_date     => p_pad_end_date
82039                           );
82040 
82041      END IF;
82042 
82043 l_created := EventClass_133(
82044    p_application_id         => p_application_id
82045  , p_base_ledger_id         => p_base_ledger_id
82046  , p_target_ledger_id       => p_target_ledger_id
82047  , p_language               => l_language
82048  , p_currency_code          => l_currency_code
82049  , p_sla_ledger_id          => l_sla_ledger_id
82050  , p_pad_start_date         => p_pad_start_date
82051  , p_pad_end_date           => p_pad_end_date
82052  , p_primary_ledger_id      => p_primary_ledger_id
82053 );
82054 
82055 
82056 
82057      IF ( g_diagnostics_mode ='Y' ) THEN
82058 
82059          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82060           trace
82061               (p_msg      => 'CALL Transaction Objects Diagnostics'
82065          END IF;
82062               ,p_level    => C_LEVEL_STATEMENT
82063               ,p_module   => l_log_module);
82064 
82066 
82067          insert_sources_133(
82068                           p_target_ledger_id => p_target_ledger_id
82069                         , p_language         => l_language
82070                         , p_sla_ledger_id    => l_sla_ledger_id
82071                         , p_pad_start_date   => p_pad_start_date
82072                         , p_pad_end_date     => p_pad_end_date
82073                           );
82074 
82075      END IF;
82076 
82077 l_created := EventClass_134(
82078    p_application_id         => p_application_id
82079  , p_base_ledger_id         => p_base_ledger_id
82080  , p_target_ledger_id       => p_target_ledger_id
82081  , p_language               => l_language
82082  , p_currency_code          => l_currency_code
82083  , p_sla_ledger_id          => l_sla_ledger_id
82084  , p_pad_start_date         => p_pad_start_date
82085  , p_pad_end_date           => p_pad_end_date
82086  , p_primary_ledger_id      => p_primary_ledger_id
82087 );
82088 
82089 
82090 
82091      IF ( g_diagnostics_mode ='Y' ) THEN
82092 
82093          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82094           trace
82095               (p_msg      => 'CALL Transaction Objects Diagnostics'
82096               ,p_level    => C_LEVEL_STATEMENT
82097               ,p_module   => l_log_module);
82098 
82099          END IF;
82100 
82101          insert_sources_134(
82102                           p_target_ledger_id => p_target_ledger_id
82103                         , p_language         => l_language
82104                         , p_sla_ledger_id    => l_sla_ledger_id
82105                         , p_pad_start_date   => p_pad_start_date
82106                         , p_pad_end_date     => p_pad_end_date
82107                           );
82108 
82109      END IF;
82110 
82111 l_created := EventClass_135(
82112    p_application_id         => p_application_id
82113  , p_base_ledger_id         => p_base_ledger_id
82114  , p_target_ledger_id       => p_target_ledger_id
82115  , p_language               => l_language
82116  , p_currency_code          => l_currency_code
82117  , p_sla_ledger_id          => l_sla_ledger_id
82118  , p_pad_start_date         => p_pad_start_date
82119  , p_pad_end_date           => p_pad_end_date
82120  , p_primary_ledger_id      => p_primary_ledger_id
82121 );
82122 
82123 
82124 
82125      IF ( g_diagnostics_mode ='Y' ) THEN
82126 
82127          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82128           trace
82129               (p_msg      => 'CALL Transaction Objects Diagnostics'
82130               ,p_level    => C_LEVEL_STATEMENT
82131               ,p_module   => l_log_module);
82132 
82133          END IF;
82134 
82135          insert_sources_135(
82136                           p_target_ledger_id => p_target_ledger_id
82137                         , p_language         => l_language
82138                         , p_sla_ledger_id    => l_sla_ledger_id
82139                         , p_pad_start_date   => p_pad_start_date
82140                         , p_pad_end_date     => p_pad_end_date
82141                           );
82142 
82143      END IF;
82144 
82145 l_created := EventClass_136(
82146    p_application_id         => p_application_id
82147  , p_base_ledger_id         => p_base_ledger_id
82148  , p_target_ledger_id       => p_target_ledger_id
82149  , p_language               => l_language
82150  , p_currency_code          => l_currency_code
82151  , p_sla_ledger_id          => l_sla_ledger_id
82152  , p_pad_start_date         => p_pad_start_date
82153  , p_pad_end_date           => p_pad_end_date
82154  , p_primary_ledger_id      => p_primary_ledger_id
82155 );
82156 
82157 
82158 
82159      IF ( g_diagnostics_mode ='Y' ) THEN
82160 
82161          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82162           trace
82163               (p_msg      => 'CALL Transaction Objects Diagnostics'
82164               ,p_level    => C_LEVEL_STATEMENT
82165               ,p_module   => l_log_module);
82166 
82167          END IF;
82168 
82169          insert_sources_136(
82170                           p_target_ledger_id => p_target_ledger_id
82171                         , p_language         => l_language
82172                         , p_sla_ledger_id    => l_sla_ledger_id
82173                         , p_pad_start_date   => p_pad_start_date
82174                         , p_pad_end_date     => p_pad_end_date
82175                           );
82176 
82177      END IF;
82178 
82179 l_created := EventClass_137(
82180    p_application_id         => p_application_id
82181  , p_base_ledger_id         => p_base_ledger_id
82182  , p_target_ledger_id       => p_target_ledger_id
82183  , p_language               => l_language
82184  , p_currency_code          => l_currency_code
82185  , p_sla_ledger_id          => l_sla_ledger_id
82186  , p_pad_start_date         => p_pad_start_date
82187  , p_pad_end_date           => p_pad_end_date
82188  , p_primary_ledger_id      => p_primary_ledger_id
82189 );
82190 
82191 
82192 
82193      IF ( g_diagnostics_mode ='Y' ) THEN
82194 
82195          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82196           trace
82197               (p_msg      => 'CALL Transaction Objects Diagnostics'
82198               ,p_level    => C_LEVEL_STATEMENT
82199               ,p_module   => l_log_module);
82200 
82201          END IF;
82202 
82203          insert_sources_137(
82204                           p_target_ledger_id => p_target_ledger_id
82205                         , p_language         => l_language
82206                         , p_sla_ledger_id    => l_sla_ledger_id
82207                         , p_pad_start_date   => p_pad_start_date
82211      END IF;
82208                         , p_pad_end_date     => p_pad_end_date
82209                           );
82210 
82212 
82213 
82214  --
82215  -- Bug 4865292
82216  -- When the number of events and that of header extract do not match,
82217  -- set the no header extract flag to indicate there are some issues
82218  -- in header extract.
82219  --
82220  -- Event count context is set in xla_accounting_pkg.unit_processor.
82221  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
82222  -- to report it as a general error.
82223  --
82224  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
82225  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
82226 
82227      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82228         trace
82229           (p_msg      => '# of extracted headers and events does not match'
82230           ,p_level    => C_LEVEL_STATEMENT
82231           ,p_module   => l_log_module);
82232 
82233         trace
82234           (p_msg      => '# of extracted headers: '
82235                          ||g_hdr_extract_count
82236           ,p_level    => C_LEVEL_STATEMENT
82237           ,p_module   => l_log_module);
82238 
82239         trace
82240           (p_msg      => '# of events in xla_events_gt: '
82241                          ||xla_context_pkg.get_event_count_context
82242           ,p_level    => C_LEVEL_STATEMENT
82243           ,p_module   => l_log_module);
82244 
82245         trace
82246           (p_msg      => 'Event No Header Extract Context: '
82247                          ||xla_context_pkg.get_event_nohdr_context
82248           ,p_level    => C_LEVEL_STATEMENT
82249           ,p_module   => l_log_module);
82250 
82251      END IF;
82252 
82253 
82254      xla_context_pkg.set_event_nohdr_context
82255        (p_nohdr_extract_flag => 'Y'
82256        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
82257 
82258      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82259         trace
82260           (p_msg      => 'No Header Extract Flag is set to Y'
82261           ,p_level    => C_LEVEL_STATEMENT
82262           ,p_module   => l_log_module);
82263      END IF;
82264 
82265  END IF;
82266 
82267 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82268    trace
82269       (p_msg      => 'END of CreateHeadersAndLines'
82270       ,p_level    => C_LEVEL_PROCEDURE
82271       ,p_module   => l_log_module);
82272 END IF;
82273 
82274 RETURN l_created;
82275 EXCEPTION
82276 WHEN xla_exceptions_pkg.application_exception THEN
82277    RAISE;
82278 WHEN OTHERS THEN
82279    xla_exceptions_pkg.raise_message
82280       (p_location => 'XLA_00222_AAD_S_000017_PKG.CreateHeadersAndLines');
82281 END CreateHeadersAndLines;
82282 --
82283 --
82284 
82285 --
82286 --+============================================+
82287 --|                                            |
82288 --|  PUBLIC FUNCTION                           |
82289 --|                                            |
82290 --+============================================+
82291 --
82292 FUNCTION CreateJournalEntries
82293        (p_application_id         IN NUMBER
82294        ,p_base_ledger_id         IN NUMBER
82295        ,p_pad_start_date         IN DATE
82296        ,p_pad_end_date           IN DATE
82297        ,p_primary_ledger_id      IN NUMBER)
82298 RETURN NUMBER IS
82299 l_log_module                   VARCHAR2(240);
82300 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
82301 l_temp_result                  BOOLEAN;
82302 l_result                       NUMBER;
82303 BEGIN
82304 --
82305 IF g_log_enabled THEN
82306    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
82307 END IF;
82308 --
82309 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82310    trace
82311       (p_msg      => 'BEGIN of CreateJournalEntries'||
82312                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
82313       ,p_level    => C_LEVEL_PROCEDURE
82314       ,p_module   => l_log_module);
82315 
82316 END IF;
82317 
82318 --
82319 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
82320 
82321 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82322    trace
82323       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
82324       ,p_level    => C_LEVEL_STATEMENT
82325       ,p_module   => l_log_module);
82326 END IF;
82327 --
82328 xla_ae_journal_entry_pkg.SetProductAcctDefinition
82329    (p_product_rule_code      => 'JA_CN_AR_DEFAULT_ACCRUAL'
82330    ,p_product_rule_type_code => 'S'
82331    ,p_product_rule_version   => ''
82332    ,p_product_rule_name      => 'China Receivables Default Accrual'
82333    ,p_amb_context_code       => 'DEFAULT'
82334    );
82335 
82336 l_array_ledgers :=
82337    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
82338       (p_base_ledger_id  => p_base_ledger_id);
82339 
82340 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
82341    l_temp_result :=
82342       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
82343          (p_application_id           => p_application_id
82344          ,p_base_ledger_id           => p_base_ledger_id
82345          ,p_target_ledger_id         => l_array_ledgers(Idx)
82346          ,p_primary_ledger_id        => p_primary_ledger_id
82347          ,p_pad_start_date           => p_pad_start_date
82348          ,p_pad_end_date             => p_pad_end_date);
82349 
82350    l_temp_result :=
82351       l_temp_result AND
82352       CreateHeadersAndLines
82353          (p_application_id             => p_application_id
82354          ,p_base_ledger_id             => p_base_ledger_id
82355          ,p_target_ledger_id           => l_array_ledgers(Idx)
82356          ,p_pad_start_date             => p_pad_start_date
82357          ,p_pad_end_date               => p_pad_end_date
82358          ,p_primary_ledger_id          => p_primary_ledger_id
82359          );
82360 END LOOP;
82361 
82362 
82363 IF (g_diagnostics_mode = 'Y' AND
82364     C_LEVEL_UNEXPECTED >= g_log_level AND
82365     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
82366 
82367    xla_accounting_dump_pkg.acctg_event_extract_log(
82368     p_application_id  => p_application_id
82369     ,p_request_id     => xla_environment_pkg.g_Req_Id
82370    );
82371 
82372 END IF;
82373 
82374 CASE l_temp_result
82375   WHEN TRUE THEN l_result := 0;
82376   ELSE l_result := 2;
82377 END CASE;
82378 
82379 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82380    trace
82381       (p_msg      => 'return value. = '||TO_CHAR(l_result)
82382       ,p_level    => C_LEVEL_PROCEDURE
82383       ,p_module   => l_log_module);
82384    trace
82385       (p_msg      => 'END of CreateJournalEntries '
82386       ,p_level    => C_LEVEL_PROCEDURE
82387       ,p_module   => l_log_module);
82388 END IF;
82389 
82390 RETURN l_result;
82391 EXCEPTION
82392 WHEN xla_exceptions_pkg.application_exception THEN
82393    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82394    trace
82395       (p_msg      => 'ERROR. = '||sqlerrm
82396       ,p_level    => C_LEVEL_PROCEDURE
82397       ,p_module   => l_log_module);
82398    END IF;
82399    RAISE;
82400 WHEN OTHERS THEN
82401    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82402    trace
82403       (p_msg      => 'ERROR. = '||sqlerrm
82404       ,p_level    => C_LEVEL_PROCEDURE
82405       ,p_module   => l_log_module);
82406    END IF;
82407    xla_exceptions_pkg.raise_message
82408       (p_location => 'XLA_00222_AAD_S_000017_PKG.CreateJournalEntries');
82409 END CreateJournalEntries;
82410 --
82411 --=============================================================================
82412 --
82413 --
82414 --
82415 --
82416 --
82417 --
82418 --
82419 --
82420 --
82421 --
82422 --
82423 --
82424 --
82425 --
82426 --
82427 --
82428 --
82429 --
82430 --
82431 --
82432 --
82433 --
82434 --=============================================================================
82435 --=============================================================================
82436 --          *********** Initialization routine **********
82437 --=============================================================================
82438 
82439 BEGIN
82440    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
82441    g_log_enabled    := fnd_log.test
82442                           (log_level  => g_log_level
82443                           ,module     => C_DEFAULT_MODULE);
82444 
82445    IF NOT g_log_enabled  THEN
82446       g_log_level := C_LEVEL_LOG_DISABLED;
82447    END IF;
82448 --
82449 END XLA_00222_AAD_S_000017_PKG;
82450 --