DBA Data[Home] [Help]

PACKAGE BODY: APPS.XLA_00222_AAD_S_000002_PKG

Source


1 PACKAGE BODY XLA_00222_AAD_S_000002_PKG AS
2 --
3 /*======================================================================+
4 |                Copyright (c) 1997 Oracle Corporation                  |
5 |                       Redwood Shores, CA, USA                         |
6 |                         All rights reserved.                          |
7 +=======================================================================+
8 | Package Name                                                          |
9 |     XLA_00222_AAD_S_000002_PKG                                        |
10 |                                                                       |
11 | DESCRIPTION                                                           |
12 |     Package generated From Product Accounting Definition              |
13 |      Name    : Receivables Default Accrual                            |
14 |      Code    : AR_DEFAULT_ACCRUAL                                     |
15 |      Owner   : PRODUCT                                                |
16 |      Version :                                                        |
17 |      AMB Context Code: DEFAULT                                        |
18 | HISTORY                                                               |
19 |     Generated at 30-03-2009 at 05:03:07 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_000002_PKG';
82 
83 C_CHAR                CONSTANT       VARCHAR2(30) := fnd_global.local_chr(12); -- 4219869 Business flow
84 C_NUM                 CONSTANT       NUMBER       := 9.99E125;                 -- 4219869 Business flow
85 
86 g_log_level           NUMBER;
87 g_log_enabled         BOOLEAN;
88 
89 PROCEDURE trace
90            (p_msg                        IN VARCHAR2
91            ,p_level                      IN NUMBER
92            ,p_module                     IN VARCHAR2 ) IS
93 BEGIN
94 ----------------------------------------------------------------------------
95 -- Following is for FND log.
96 ----------------------------------------------------------------------------
97 IF (p_msg IS NULL AND p_level >= g_log_level) THEN
98           fnd_log.message(p_level, p_module);
99 ELSIF p_level >= g_log_level THEN
100           fnd_log.string(p_level, p_module, p_msg);
101 END IF;
102 
103 EXCEPTION
104        WHEN xla_exceptions_pkg.application_exception THEN
105           RAISE;
106        WHEN OTHERS THEN
107           xla_exceptions_pkg.raise_message
108              (p_location   => 'XLA_00222_AAD_S_000002_PKG.trace');
109 END trace;
110 
111 --
112 --+============================================+
113 --|                                            |
114 --|  PRIVATE  PROCEDURES/FUNCTIONS             |
115 --|                                            |
116 --+============================================+
117 --
118 
119 --
120 /*======================================================================+
121 |                                                                       |
122 | Private Function                                                      |
123 |    ValidateLookupMeaning                                              |
124 |                                                                       |
125 +======================================================================*/
126 FUNCTION ValidateLookupMeaning(
127   p_meaning                IN VARCHAR2
128 , p_lookup_code            IN VARCHAR2
129 , p_lookup_type            IN VARCHAR2
130 , p_source_code            IN VARCHAR2
131 , p_source_type_code       IN VARCHAR2
132 , p_source_application_id  IN INTEGER
133 )
134 RETURN VARCHAR2
135 IS
136 l_log_module         VARCHAR2(240);
137 BEGIN
138 IF g_log_enabled THEN
139       l_log_module := C_DEFAULT_MODULE||'.ValidateLookupMeaning';
140 END IF;
141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
142       trace
143          (p_msg      => 'BEGIN of ValidateLookupMeaning'
144          ,p_level    => C_LEVEL_PROCEDURE
145          ,p_module   => l_log_module);
146 END IF;
147 --
148 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
149     trace
150          (p_msg      => 'p_source_code = '|| p_source_code||
151                         ' - p_source_type_code = '|| p_source_type_code||
152                         ' - p_source_application_id = '|| p_source_application_id||
153                         ' - p_lookup_code = '|| p_lookup_code||
154                         ' - p_lookup_type = '|| p_lookup_type||
155                         ' - p_meaning = '|| p_meaning
156          ,p_level    => C_LEVEL_PROCEDURE
157          ,p_module   => l_log_module);
158 
159 END IF;
160 
161 IF p_lookup_code IS NOT NULL AND p_meaning IS NULL THEN
162    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
163    xla_accounting_err_pkg. build_message
164                (p_appli_s_name            => 'XLA'
165                ,p_msg_name                => 'XLA_AP_NO_LOOKUP_MEANING'
166                ,p_token_1                 => 'SOURCE_NAME'
167                ,p_value_1                 =>  xla_ae_sources_pkg.GetSourceName(
168                                                            p_source_code
169                                                          , p_source_type_code
170                                                          , p_source_application_id
171                                                          )
172                ,p_token_2                 => 'LOOKUP_CODE'
173                ,p_value_2                 =>  p_lookup_code
174                ,p_token_3                 => 'LOOKUP_TYPE'
175                ,p_value_3                 =>  p_lookup_type
176                ,p_token_4                 => 'PRODUCT_NAME'
177                ,p_value_4                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
178                ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
179                ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
180                ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
181        );
182 
183    IF (C_LEVEL_ERROR >= g_log_level) THEN
184            trace
185                 (p_msg      => 'ERROR: XLA_AP_NO_LOOKUP_MEANING'
186                 ,p_level    => C_LEVEL_ERROR
187                 ,p_module   => l_log_module);
188    END IF;
189 END IF;
190 
191 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
192         trace
193           (p_msg      => 'END of ValidateLookupMeaning'
194           ,p_level    => C_LEVEL_PROCEDURE
195           ,p_module   => l_log_module);
196 END IF;
197 RETURN p_meaning;
198 EXCEPTION
199 WHEN xla_exceptions_pkg.application_exception THEN
200   RETURN p_meaning;
201 WHEN OTHERS  THEN
202    xla_exceptions_pkg.raise_message
203            (p_location => 'XLA_00222_AAD_S_000002_PKG.ValidateLookupMeaning');
204        --
205 END ValidateLookupMeaning;
206 --
207 --
208 
209 FUNCTION GetMeaning (
210   p_flex_value_set_id               IN INTEGER
211 , p_flex_value                      IN VARCHAR2
212 , p_source_code                     IN VARCHAR2
213 , p_source_type_code                IN VARCHAR2
214 , p_source_application_id           IN INTEGER
215 )
216 RETURN VARCHAR2
217 IS
218 BEGIN
219 --
220 RETURN NULL ;
221 --
222 EXCEPTION
223   WHEN xla_exceptions_pkg.application_exception THEN
224       RAISE;
225   WHEN OTHERS THEN
226        xla_exceptions_pkg.raise_message
227            (p_location => 'XLA_00222_AAD_S_000002_PKG.GetMeaning');
228 END GetMeaning;
229 --
230 
231 ---------------------------------------
232 --
233 -- PRIVATE FUNCTION
234 --         Description_1
235 --
236 ---------------------------------------
237 FUNCTION Description_1 (
238   p_application_id      IN NUMBER
239 , p_ae_header_id        IN NUMBER DEFAULT NULL 
240 --Adjustment Number
241  , p_source_1            IN VARCHAR2
242 --Adjustment Document Sequence Number
243  , p_source_2            IN NUMBER
244 )
245 RETURN VARCHAR2
246 IS
247 l_component_type        VARCHAR2(80)   ;
248 l_component_code        VARCHAR2(30)   ;
249 l_component_type_code   VARCHAR2(1)    ;
250 l_component_appl_id     INTEGER        ;
251 l_amb_context_code      VARCHAR2(30)   ;
252 l_ledger_language       VARCHAR2(30)   ;
253 l_source                VARCHAR2(1996) ;
254 l_description           VARCHAR2(2000) ;
255 l_log_module            VARCHAR2(240)  ;
256 BEGIN
257 IF g_log_enabled THEN
258       l_log_module := C_DEFAULT_MODULE||'.Description_1';
259 END IF;
260 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
261       trace
262          (p_msg      => 'BEGIN of Description_1'
263          ,p_level    => C_LEVEL_PROCEDURE
264          ,p_module   => l_log_module);
265 END IF;
266 
267 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
268 l_component_type        := 'AMB_DESCRIPTION';
269 l_component_code        := 'ADJ_H';
270 l_component_type_code   := 'S';
271 l_component_appl_id     :=  222;
272 l_amb_context_code      := 'DEFAULT';
273 l_source                := NULL;
274 l_description           := NULL;
275 
276 
277  
278  IF 
279 l_ledger_language = 'US' THEN
280     l_description :=  SUBSTR(CONCAT(l_description,'Adjustment Number -'),1,2000);
281     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
282  END IF;   
283   l_source := SUBSTR(p_source_1,1,1996);
284   IF l_source IS NOT NULL THEN
285     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
286     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
287   END IF;  
288  IF 
289 l_ledger_language = 'US' THEN
290     l_description :=  SUBSTR(CONCAT(l_description,'Document Number -'),1,2000);
291     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
292  END IF;   
293   l_source := SUBSTR(TO_CHAR(p_source_2),1,1996);
294   IF l_source IS NOT NULL THEN
295     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
296     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
297   END IF; 
298  l_description := SUBSTR(l_description,1,1996);
299   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
300         trace
304 
301            (p_msg      => 'END of Description_1'
302            ,p_level    => C_LEVEL_PROCEDURE
303            ,p_module   => l_log_module);
305   END IF;
306   RETURN l_description;
307 
308 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
309       trace
310          (p_msg      => 'END of Description_1'
311          ,p_level    => C_LEVEL_PROCEDURE
312          ,p_module   => l_log_module);
313 END IF;
314 RETURN NULL;
315 EXCEPTION
316   WHEN VALUE_ERROR THEN
317      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
318             trace
319                (p_msg      => 'ERROR: '||sqlerrm
320                ,p_level    => C_LEVEL_EXCEPTION
321                ,p_module   => l_log_module);
322      END IF;
323      RAISE;
324  WHEN xla_exceptions_pkg.application_exception THEN
325       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
326       trace
327          (p_msg      => 'ERROR: '||sqlerrm
328          ,p_level    => C_LEVEL_EXCEPTION
329          ,p_module   => l_log_module);
330       END IF;
331       RAISE;
332  WHEN OTHERS THEN
333        xla_exceptions_pkg.raise_message
334            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_1');
335 END Description_1;
336 
337 ---------------------------------------
338 --
339 -- PRIVATE FUNCTION
340 --         Description_2
341 --
342 ---------------------------------------
343 FUNCTION Description_2 (
344   p_application_id      IN NUMBER
345 , p_ae_header_id        IN NUMBER DEFAULT NULL 
346 --Transaction Type Name
347  , p_source_3            IN VARCHAR2
348 --Transaction Number
349  , p_source_4            IN VARCHAR2
350 )
351 RETURN VARCHAR2
352 IS
353 l_component_type        VARCHAR2(80)   ;
354 l_component_code        VARCHAR2(30)   ;
355 l_component_type_code   VARCHAR2(1)    ;
356 l_component_appl_id     INTEGER        ;
357 l_amb_context_code      VARCHAR2(30)   ;
358 l_ledger_language       VARCHAR2(30)   ;
359 l_source                VARCHAR2(1996) ;
360 l_description           VARCHAR2(2000) ;
361 l_log_module            VARCHAR2(240)  ;
362 BEGIN
363 IF g_log_enabled THEN
364       l_log_module := C_DEFAULT_MODULE||'.Description_2';
365 END IF;
366 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
367       trace
368          (p_msg      => 'BEGIN of Description_2'
369          ,p_level    => C_LEVEL_PROCEDURE
370          ,p_module   => l_log_module);
371 END IF;
372 
373 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
374 l_component_type        := 'AMB_DESCRIPTION';
375 l_component_code        := 'BR_H';
376 l_component_type_code   := 'S';
377 l_component_appl_id     :=  222;
378 l_amb_context_code      := 'DEFAULT';
379 l_source                := NULL;
380 l_description           := NULL;
381 
382 
383  
384  IF 
385 l_ledger_language = 'US' THEN
386     l_description :=  SUBSTR(CONCAT(l_description,'BR Transaction Type -'),1,2000);
387     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
388  END IF;   
389   l_source := SUBSTR(p_source_3,1,1996);
390   IF l_source IS NOT NULL THEN
391     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
392     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
393   END IF;  
394  IF 
395 l_ledger_language = 'US' THEN
396     l_description :=  SUBSTR(CONCAT(l_description,'BR Transaction Number -'),1,2000);
397     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
398  END IF;   
399   l_source := SUBSTR(p_source_4,1,1996);
400   IF l_source IS NOT NULL THEN
401     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
402     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
403   END IF; 
404  l_description := SUBSTR(l_description,1,1996);
405   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
406         trace
407            (p_msg      => 'END of Description_2'
408            ,p_level    => C_LEVEL_PROCEDURE
409            ,p_module   => l_log_module);
410 
411   END IF;
412   RETURN l_description;
413 
414 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
415       trace
416          (p_msg      => 'END of Description_2'
417          ,p_level    => C_LEVEL_PROCEDURE
418          ,p_module   => l_log_module);
419 END IF;
420 RETURN NULL;
421 EXCEPTION
422   WHEN VALUE_ERROR THEN
423      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
424             trace
425                (p_msg      => 'ERROR: '||sqlerrm
426                ,p_level    => C_LEVEL_EXCEPTION
427                ,p_module   => l_log_module);
428      END IF;
429      RAISE;
430  WHEN xla_exceptions_pkg.application_exception THEN
431       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
432       trace
433          (p_msg      => 'ERROR: '||sqlerrm
434          ,p_level    => C_LEVEL_EXCEPTION
435          ,p_module   => l_log_module);
436       END IF;
437       RAISE;
438  WHEN OTHERS THEN
439        xla_exceptions_pkg.raise_message
440            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_2');
441 END Description_2;
442 
443 ---------------------------------------
444 --
445 -- PRIVATE FUNCTION
446 --         Description_3
450   p_application_id      IN NUMBER
447 --
448 ---------------------------------------
449 FUNCTION Description_3 (
451 , p_ae_header_id        IN NUMBER DEFAULT NULL 
452 --Transaction Type Name
453  , p_source_3            IN VARCHAR2
454 --Transaction Number
455  , p_source_4            IN VARCHAR2
456 --Transaction Document Sequence Category
457  , p_source_5            IN VARCHAR2
458 --Transaction Document Sequence Number
459  , p_source_6            IN NUMBER
460 )
461 RETURN VARCHAR2
462 IS
463 l_component_type        VARCHAR2(80)   ;
464 l_component_code        VARCHAR2(30)   ;
465 l_component_type_code   VARCHAR2(1)    ;
466 l_component_appl_id     INTEGER        ;
467 l_amb_context_code      VARCHAR2(30)   ;
468 l_ledger_language       VARCHAR2(30)   ;
469 l_source                VARCHAR2(1996) ;
470 l_description           VARCHAR2(2000) ;
471 l_log_module            VARCHAR2(240)  ;
472 BEGIN
473 IF g_log_enabled THEN
474       l_log_module := C_DEFAULT_MODULE||'.Description_3';
475 END IF;
476 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
477       trace
478          (p_msg      => 'BEGIN of Description_3'
479          ,p_level    => C_LEVEL_PROCEDURE
480          ,p_module   => l_log_module);
481 END IF;
482 
483 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
484 l_component_type        := 'AMB_DESCRIPTION';
485 l_component_code        := 'CB_H';
486 l_component_type_code   := 'S';
487 l_component_appl_id     :=  222;
488 l_amb_context_code      := 'DEFAULT';
489 l_source                := NULL;
490 l_description           := NULL;
491 
492 
493  
494  IF 
495 l_ledger_language = 'US' THEN
496     l_description :=  SUBSTR(CONCAT(l_description,'Chargeback Transaction Type -'),1,2000);
497     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
498  END IF;   
499   l_source := SUBSTR(p_source_3,1,1996);
500   IF l_source IS NOT NULL THEN
501     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
502     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
503   END IF;  
504  IF 
505 l_ledger_language = 'US' THEN
506     l_description :=  SUBSTR(CONCAT(l_description,' Chargeback Transaction Number -'),1,2000);
507     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
508  END IF;   
509   l_source := SUBSTR(p_source_4,1,1996);
510   IF l_source IS NOT NULL THEN
511     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
512     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
513   END IF;  
514  IF 
515 l_ledger_language = 'US' THEN
516     l_description :=  SUBSTR(CONCAT(l_description,' Document Sequence Category -'),1,2000);
517     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
518  END IF;   
519   l_source := SUBSTR(p_source_5,1,1996);
520   IF l_source IS NOT NULL THEN
521     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
522     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
523   END IF;  
524  IF 
525 l_ledger_language = 'US' THEN
526     l_description :=  SUBSTR(CONCAT(l_description,' Document Number -'),1,2000);
527     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
528  END IF;   
529   l_source := SUBSTR(TO_CHAR(p_source_6),1,1996);
530   IF l_source IS NOT NULL THEN
531     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
532     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
533   END IF; 
534  l_description := SUBSTR(l_description,1,1996);
535   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
536         trace
537            (p_msg      => 'END of Description_3'
538            ,p_level    => C_LEVEL_PROCEDURE
539            ,p_module   => l_log_module);
540 
541   END IF;
542   RETURN l_description;
543 
544 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
545       trace
546          (p_msg      => 'END of Description_3'
547          ,p_level    => C_LEVEL_PROCEDURE
548          ,p_module   => l_log_module);
549 END IF;
550 RETURN NULL;
551 EXCEPTION
552   WHEN VALUE_ERROR THEN
553      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
554             trace
555                (p_msg      => 'ERROR: '||sqlerrm
556                ,p_level    => C_LEVEL_EXCEPTION
557                ,p_module   => l_log_module);
558      END IF;
559      RAISE;
560  WHEN xla_exceptions_pkg.application_exception THEN
561       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
562       trace
563          (p_msg      => 'ERROR: '||sqlerrm
564          ,p_level    => C_LEVEL_EXCEPTION
565          ,p_module   => l_log_module);
566       END IF;
567       RAISE;
568  WHEN OTHERS THEN
569        xla_exceptions_pkg.raise_message
570            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_3');
571 END Description_3;
572 
573 ---------------------------------------
574 --
575 -- PRIVATE FUNCTION
576 --         Description_4
577 --
578 ---------------------------------------
579 FUNCTION Description_4 (
580   p_application_id      IN NUMBER
581 , p_ae_header_id        IN NUMBER DEFAULT NULL 
582 --Credit Memo Transaction Type Name
583  , p_source_7            IN VARCHAR2
587  , p_source_9            IN NUMBER
584 --Credit Memo Number
585  , p_source_8            IN VARCHAR2
586 --Credit Memo Document Sequence Number
588 )
589 RETURN VARCHAR2
590 IS
591 l_component_type        VARCHAR2(80)   ;
592 l_component_code        VARCHAR2(30)   ;
593 l_component_type_code   VARCHAR2(1)    ;
594 l_component_appl_id     INTEGER        ;
595 l_amb_context_code      VARCHAR2(30)   ;
596 l_ledger_language       VARCHAR2(30)   ;
597 l_source                VARCHAR2(1996) ;
598 l_description           VARCHAR2(2000) ;
599 l_log_module            VARCHAR2(240)  ;
600 BEGIN
601 IF g_log_enabled THEN
602       l_log_module := C_DEFAULT_MODULE||'.Description_4';
603 END IF;
604 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
605       trace
606          (p_msg      => 'BEGIN of Description_4'
607          ,p_level    => C_LEVEL_PROCEDURE
608          ,p_module   => l_log_module);
609 END IF;
610 
611 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
612 l_component_type        := 'AMB_DESCRIPTION';
613 l_component_code        := 'CM_H';
614 l_component_type_code   := 'S';
615 l_component_appl_id     :=  222;
616 l_amb_context_code      := 'DEFAULT';
617 l_source                := NULL;
618 l_description           := NULL;
619 
620 
621  
622  IF 
623 l_ledger_language = 'US' THEN
624     l_description :=  SUBSTR(CONCAT(l_description,'Transaction Type Name -'),1,2000);
625     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
626  END IF;   
627   l_source := SUBSTR(p_source_7,1,1996);
628   IF l_source IS NOT NULL THEN
629     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
630     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
631   END IF;  
632  IF 
633 l_ledger_language = 'US' THEN
634     l_description :=  SUBSTR(CONCAT(l_description,'Credit Memo Number -'),1,2000);
635     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
636  END IF;   
637   l_source := SUBSTR(p_source_8,1,1996);
638   IF l_source IS NOT NULL THEN
639     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
640     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
641   END IF;  
642  IF 
643 l_ledger_language = 'US' THEN
644     l_description :=  SUBSTR(CONCAT(l_description,'Document Number -'),1,2000);
645     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
646  END IF;   
647   l_source := SUBSTR(TO_CHAR(p_source_9),1,1996);
648   IF l_source IS NOT NULL THEN
649     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
650     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
651   END IF; 
652  l_description := SUBSTR(l_description,1,1996);
653   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
654         trace
655            (p_msg      => 'END of Description_4'
656            ,p_level    => C_LEVEL_PROCEDURE
657            ,p_module   => l_log_module);
658 
659   END IF;
660   RETURN l_description;
661 
662 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
663       trace
664          (p_msg      => 'END of Description_4'
665          ,p_level    => C_LEVEL_PROCEDURE
666          ,p_module   => l_log_module);
667 END IF;
668 RETURN NULL;
669 EXCEPTION
670   WHEN VALUE_ERROR THEN
671      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
672             trace
673                (p_msg      => 'ERROR: '||sqlerrm
674                ,p_level    => C_LEVEL_EXCEPTION
675                ,p_module   => l_log_module);
676      END IF;
677      RAISE;
678  WHEN xla_exceptions_pkg.application_exception THEN
679       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
680       trace
681          (p_msg      => 'ERROR: '||sqlerrm
682          ,p_level    => C_LEVEL_EXCEPTION
683          ,p_module   => l_log_module);
684       END IF;
685       RAISE;
686  WHEN OTHERS THEN
687        xla_exceptions_pkg.raise_message
688            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_4');
689 END Description_4;
690 
691 ---------------------------------------
692 --
693 -- PRIVATE FUNCTION
694 --         Description_5
695 --
696 ---------------------------------------
697 FUNCTION Description_5 (
698   p_application_id      IN NUMBER
699 , p_ae_header_id        IN NUMBER DEFAULT NULL 
700 --Transaction Type Name
701  , p_source_3            IN VARCHAR2
702 --Transaction Number
703  , p_source_4            IN VARCHAR2
704 --Transaction Document Sequence Number
705  , p_source_6            IN NUMBER
706 )
707 RETURN VARCHAR2
708 IS
709 l_component_type        VARCHAR2(80)   ;
710 l_component_code        VARCHAR2(30)   ;
711 l_component_type_code   VARCHAR2(1)    ;
712 l_component_appl_id     INTEGER        ;
713 l_amb_context_code      VARCHAR2(30)   ;
714 l_ledger_language       VARCHAR2(30)   ;
715 l_source                VARCHAR2(1996) ;
716 l_description           VARCHAR2(2000) ;
717 l_log_module            VARCHAR2(240)  ;
718 BEGIN
719 IF g_log_enabled THEN
720       l_log_module := C_DEFAULT_MODULE||'.Description_5';
721 END IF;
722 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
723       trace
727 END IF;
724          (p_msg      => 'BEGIN of Description_5'
725          ,p_level    => C_LEVEL_PROCEDURE
726          ,p_module   => l_log_module);
728 
729 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
730 l_component_type        := 'AMB_DESCRIPTION';
731 l_component_code        := 'CM_L';
732 l_component_type_code   := 'S';
733 l_component_appl_id     :=  222;
734 l_amb_context_code      := 'DEFAULT';
735 l_source                := NULL;
736 l_description           := NULL;
737 
738 
739  IF p_source_4 IS NOT NULL 
740  THEN 
741  
742  IF 
743 l_ledger_language = 'US' THEN
744     l_description :=  SUBSTR(CONCAT(l_description,'Credit Memo Application to Transaction Type -'),1,2000);
745     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
746  END IF;   
747   l_source := SUBSTR(p_source_3,1,1996);
748   IF l_source IS NOT NULL THEN
749     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
750     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
751   END IF;  
752  IF 
753 l_ledger_language = 'US' THEN
754     l_description :=  SUBSTR(CONCAT(l_description,' Transaction Number'),1,2000);
755     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
756  END IF;   
757   l_source := SUBSTR(p_source_4,1,1996);
758   IF l_source IS NOT NULL THEN
759     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
760     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
761   END IF;  
762  IF 
763 l_ledger_language = 'US' THEN
764     l_description :=  SUBSTR(CONCAT(l_description,' Transaction Document Number'),1,2000);
765     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
766  END IF;   
767   l_source := SUBSTR(TO_CHAR(p_source_6),1,1996);
768   IF l_source IS NOT NULL THEN
769     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
770     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
771   END IF; 
772  l_description := SUBSTR(l_description,1,1996);
773   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
774         trace
775            (p_msg      => 'END of Description_5'
776            ,p_level    => C_LEVEL_PROCEDURE
777            ,p_module   => l_log_module);
778 
779   END IF;
780   RETURN l_description;
781 
782  END IF;
783 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
784       trace
785          (p_msg      => 'END of Description_5'
786          ,p_level    => C_LEVEL_PROCEDURE
787          ,p_module   => l_log_module);
788 END IF;
789 RETURN NULL;
790 EXCEPTION
791   WHEN VALUE_ERROR THEN
792      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
793             trace
794                (p_msg      => 'ERROR: '||sqlerrm
795                ,p_level    => C_LEVEL_EXCEPTION
796                ,p_module   => l_log_module);
797      END IF;
798      RAISE;
799  WHEN xla_exceptions_pkg.application_exception THEN
800       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
801       trace
802          (p_msg      => 'ERROR: '||sqlerrm
803          ,p_level    => C_LEVEL_EXCEPTION
804          ,p_module   => l_log_module);
805       END IF;
806       RAISE;
807  WHEN OTHERS THEN
808        xla_exceptions_pkg.raise_message
809            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_5');
810 END Description_5;
811 
812 ---------------------------------------
813 --
814 -- PRIVATE FUNCTION
815 --         Description_6
816 --
817 ---------------------------------------
818 FUNCTION Description_6 (
819   p_application_id      IN NUMBER
820 , p_ae_header_id        IN NUMBER DEFAULT NULL 
821 --Transaction Type Name
822  , p_source_3            IN VARCHAR2
823 --Transaction Number
824  , p_source_4            IN VARCHAR2
825 --Transaction Document Sequence Category
826  , p_source_5            IN VARCHAR2
827 --Transaction Document Sequence Number
828  , p_source_6            IN NUMBER
829 )
830 RETURN VARCHAR2
831 IS
832 l_component_type        VARCHAR2(80)   ;
833 l_component_code        VARCHAR2(30)   ;
834 l_component_type_code   VARCHAR2(1)    ;
835 l_component_appl_id     INTEGER        ;
836 l_amb_context_code      VARCHAR2(30)   ;
837 l_ledger_language       VARCHAR2(30)   ;
838 l_source                VARCHAR2(1996) ;
839 l_description           VARCHAR2(2000) ;
840 l_log_module            VARCHAR2(240)  ;
841 BEGIN
842 IF g_log_enabled THEN
843       l_log_module := C_DEFAULT_MODULE||'.Description_6';
844 END IF;
845 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
846       trace
847          (p_msg      => 'BEGIN of Description_6'
848          ,p_level    => C_LEVEL_PROCEDURE
849          ,p_module   => l_log_module);
850 END IF;
851 
852 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
853 l_component_type        := 'AMB_DESCRIPTION';
854 l_component_code        := 'DEP_H';
855 l_component_type_code   := 'S';
856 l_component_appl_id     :=  222;
857 l_amb_context_code      := 'DEFAULT';
858 l_source                := NULL;
859 l_description           := NULL;
860 
861 
862  
863  IF 
864 l_ledger_language = 'US' THEN
868   l_source := SUBSTR(p_source_3,1,1996);
865     l_description :=  SUBSTR(CONCAT(l_description,'Deposit Transaction Type -'),1,2000);
866     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
867  END IF;   
869   IF l_source IS NOT NULL THEN
870     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
871     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
872   END IF;  
873  IF 
874 l_ledger_language = 'US' THEN
875     l_description :=  SUBSTR(CONCAT(l_description,' Deposit Transaction Number -'),1,2000);
876     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
877  END IF;   
878   l_source := SUBSTR(p_source_4,1,1996);
879   IF l_source IS NOT NULL THEN
880     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
881     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
882   END IF;  
883  IF 
884 l_ledger_language = 'US' THEN
885     l_description :=  SUBSTR(CONCAT(l_description,' Document Sequence Category -'),1,2000);
886     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
887  END IF;   
888   l_source := SUBSTR(p_source_5,1,1996);
889   IF l_source IS NOT NULL THEN
890     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
891     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
892   END IF;  
893  IF 
894 l_ledger_language = 'US' THEN
895     l_description :=  SUBSTR(CONCAT(l_description,' Document Number -'),1,2000);
896     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
897  END IF;   
898   l_source := SUBSTR(TO_CHAR(p_source_6),1,1996);
899   IF l_source IS NOT NULL THEN
900     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
901     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
902   END IF; 
903  l_description := SUBSTR(l_description,1,1996);
904   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
905         trace
906            (p_msg      => 'END of Description_6'
907            ,p_level    => C_LEVEL_PROCEDURE
908            ,p_module   => l_log_module);
909 
910   END IF;
911   RETURN l_description;
912 
913 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
914       trace
915          (p_msg      => 'END of Description_6'
916          ,p_level    => C_LEVEL_PROCEDURE
917          ,p_module   => l_log_module);
918 END IF;
919 RETURN NULL;
920 EXCEPTION
921   WHEN VALUE_ERROR THEN
922      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
923             trace
924                (p_msg      => 'ERROR: '||sqlerrm
925                ,p_level    => C_LEVEL_EXCEPTION
926                ,p_module   => l_log_module);
927      END IF;
928      RAISE;
929  WHEN xla_exceptions_pkg.application_exception THEN
930       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
931       trace
932          (p_msg      => 'ERROR: '||sqlerrm
933          ,p_level    => C_LEVEL_EXCEPTION
934          ,p_module   => l_log_module);
935       END IF;
936       RAISE;
937  WHEN OTHERS THEN
938        xla_exceptions_pkg.raise_message
939            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_6');
940 END Description_6;
941 
942 ---------------------------------------
943 --
944 -- PRIVATE FUNCTION
945 --         Description_7
946 --
947 ---------------------------------------
948 FUNCTION Description_7 (
949   p_application_id      IN NUMBER
950 , p_ae_header_id        IN NUMBER DEFAULT NULL 
951 --Transaction Type Name
952  , p_source_3            IN VARCHAR2
953 --Transaction Number
954  , p_source_4            IN VARCHAR2
955 --Transaction Document Sequence Category
956  , p_source_5            IN VARCHAR2
957 --Transaction Document Sequence Number
958  , p_source_6            IN NUMBER
959 )
960 RETURN VARCHAR2
961 IS
962 l_component_type        VARCHAR2(80)   ;
963 l_component_code        VARCHAR2(30)   ;
964 l_component_type_code   VARCHAR2(1)    ;
965 l_component_appl_id     INTEGER        ;
966 l_amb_context_code      VARCHAR2(30)   ;
967 l_ledger_language       VARCHAR2(30)   ;
968 l_source                VARCHAR2(1996) ;
969 l_description           VARCHAR2(2000) ;
970 l_log_module            VARCHAR2(240)  ;
971 BEGIN
972 IF g_log_enabled THEN
973       l_log_module := C_DEFAULT_MODULE||'.Description_7';
974 END IF;
975 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
976       trace
977          (p_msg      => 'BEGIN of Description_7'
978          ,p_level    => C_LEVEL_PROCEDURE
979          ,p_module   => l_log_module);
980 END IF;
981 
982 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
983 l_component_type        := 'AMB_DESCRIPTION';
984 l_component_code        := 'DM_H';
985 l_component_type_code   := 'S';
986 l_component_appl_id     :=  222;
987 l_amb_context_code      := 'DEFAULT';
988 l_source                := NULL;
989 l_description           := NULL;
990 
991 
992  
993  IF 
994 l_ledger_language = 'US' THEN
995     l_description :=  SUBSTR(CONCAT(l_description,'Debit Memo Transaction Type -'),1,2000);
996     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
997  END IF;   
998   l_source := SUBSTR(p_source_3,1,1996);
999   IF l_source IS NOT NULL THEN
1003  IF 
1000     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1001     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1002   END IF;  
1004 l_ledger_language = 'US' THEN
1005     l_description :=  SUBSTR(CONCAT(l_description,' Debit Memo Transaction Number -'),1,2000);
1006     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1007  END IF;   
1008   l_source := SUBSTR(p_source_4,1,1996);
1009   IF l_source IS NOT NULL THEN
1010     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1011     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1012   END IF;  
1013  IF 
1014 l_ledger_language = 'US' THEN
1015     l_description :=  SUBSTR(CONCAT(l_description,' Document Sequence Category -'),1,2000);
1016     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1017  END IF;   
1018   l_source := SUBSTR(p_source_5,1,1996);
1019   IF l_source IS NOT NULL THEN
1020     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1021     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1022   END IF;  
1023  IF 
1024 l_ledger_language = 'US' THEN
1025     l_description :=  SUBSTR(CONCAT(l_description,' Document Number -'),1,2000);
1026     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1027  END IF;   
1028   l_source := SUBSTR(TO_CHAR(p_source_6),1,1996);
1029   IF l_source IS NOT NULL THEN
1030     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1031     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1032   END IF; 
1033  l_description := SUBSTR(l_description,1,1996);
1034   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1035         trace
1036            (p_msg      => 'END of Description_7'
1037            ,p_level    => C_LEVEL_PROCEDURE
1038            ,p_module   => l_log_module);
1039 
1040   END IF;
1041   RETURN l_description;
1042 
1043 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1044       trace
1045          (p_msg      => 'END of Description_7'
1046          ,p_level    => C_LEVEL_PROCEDURE
1047          ,p_module   => l_log_module);
1048 END IF;
1049 RETURN NULL;
1050 EXCEPTION
1051   WHEN VALUE_ERROR THEN
1052      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1053             trace
1054                (p_msg      => 'ERROR: '||sqlerrm
1055                ,p_level    => C_LEVEL_EXCEPTION
1056                ,p_module   => l_log_module);
1057      END IF;
1058      RAISE;
1059  WHEN xla_exceptions_pkg.application_exception THEN
1060       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1061       trace
1062          (p_msg      => 'ERROR: '||sqlerrm
1063          ,p_level    => C_LEVEL_EXCEPTION
1064          ,p_module   => l_log_module);
1065       END IF;
1066       RAISE;
1067  WHEN OTHERS THEN
1068        xla_exceptions_pkg.raise_message
1069            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_7');
1070 END Description_7;
1071 
1072 ---------------------------------------
1073 --
1074 -- PRIVATE FUNCTION
1075 --         Description_8
1076 --
1077 ---------------------------------------
1078 FUNCTION Description_8 (
1079   p_application_id      IN NUMBER
1080 , p_ae_header_id        IN NUMBER DEFAULT NULL 
1081 --Transaction Type Name
1082  , p_source_3            IN VARCHAR2
1083 --Transaction Number
1084  , p_source_4            IN VARCHAR2
1085 --Transaction Document Sequence Category
1086  , p_source_5            IN VARCHAR2
1087 --Transaction Document Sequence Number
1088  , p_source_6            IN NUMBER
1089 )
1090 RETURN VARCHAR2
1091 IS
1092 l_component_type        VARCHAR2(80)   ;
1093 l_component_code        VARCHAR2(30)   ;
1094 l_component_type_code   VARCHAR2(1)    ;
1095 l_component_appl_id     INTEGER        ;
1096 l_amb_context_code      VARCHAR2(30)   ;
1097 l_ledger_language       VARCHAR2(30)   ;
1098 l_source                VARCHAR2(1996) ;
1099 l_description           VARCHAR2(2000) ;
1100 l_log_module            VARCHAR2(240)  ;
1101 BEGIN
1102 IF g_log_enabled THEN
1103       l_log_module := C_DEFAULT_MODULE||'.Description_8';
1104 END IF;
1105 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1106       trace
1107          (p_msg      => 'BEGIN of Description_8'
1108          ,p_level    => C_LEVEL_PROCEDURE
1109          ,p_module   => l_log_module);
1110 END IF;
1111 
1112 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
1113 l_component_type        := 'AMB_DESCRIPTION';
1114 l_component_code        := 'GUAR_H';
1115 l_component_type_code   := 'S';
1116 l_component_appl_id     :=  222;
1117 l_amb_context_code      := 'DEFAULT';
1118 l_source                := NULL;
1119 l_description           := NULL;
1120 
1121 
1122  
1123  IF 
1124 l_ledger_language = 'US' THEN
1125     l_description :=  SUBSTR(CONCAT(l_description,'Guarantee Transaction Type -'),1,2000);
1126     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1127  END IF;   
1128   l_source := SUBSTR(p_source_3,1,1996);
1129   IF l_source IS NOT NULL THEN
1130     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1131     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1132   END IF;  
1133  IF 
1134 l_ledger_language = 'US' THEN
1135     l_description :=  SUBSTR(CONCAT(l_description,' Guarantee Transaction Number -'),1,2000);
1139   IF l_source IS NOT NULL THEN
1136     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1137  END IF;   
1138   l_source := SUBSTR(p_source_4,1,1996);
1140     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1141     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1142   END IF;  
1143  IF 
1144 l_ledger_language = 'US' THEN
1145     l_description :=  SUBSTR(CONCAT(l_description,' Document Sequence Category -'),1,2000);
1146     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1147  END IF;   
1148   l_source := SUBSTR(p_source_5,1,1996);
1149   IF l_source IS NOT NULL THEN
1150     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1151     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1152   END IF;  
1153  IF 
1154 l_ledger_language = 'US' THEN
1155     l_description :=  SUBSTR(CONCAT(l_description,' Document Number -'),1,2000);
1156     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1157  END IF;   
1158   l_source := SUBSTR(TO_CHAR(p_source_6),1,1996);
1159   IF l_source IS NOT NULL THEN
1160     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1161     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1162   END IF; 
1163  l_description := SUBSTR(l_description,1,1996);
1164   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1165         trace
1166            (p_msg      => 'END of Description_8'
1167            ,p_level    => C_LEVEL_PROCEDURE
1168            ,p_module   => l_log_module);
1169 
1170   END IF;
1171   RETURN l_description;
1172 
1173 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1174       trace
1175          (p_msg      => 'END of Description_8'
1176          ,p_level    => C_LEVEL_PROCEDURE
1177          ,p_module   => l_log_module);
1178 END IF;
1179 RETURN NULL;
1180 EXCEPTION
1181   WHEN VALUE_ERROR THEN
1182      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1183             trace
1184                (p_msg      => 'ERROR: '||sqlerrm
1185                ,p_level    => C_LEVEL_EXCEPTION
1186                ,p_module   => l_log_module);
1187      END IF;
1188      RAISE;
1189  WHEN xla_exceptions_pkg.application_exception THEN
1190       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1191       trace
1192          (p_msg      => 'ERROR: '||sqlerrm
1193          ,p_level    => C_LEVEL_EXCEPTION
1194          ,p_module   => l_log_module);
1195       END IF;
1196       RAISE;
1197  WHEN OTHERS THEN
1198        xla_exceptions_pkg.raise_message
1199            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_8');
1200 END Description_8;
1201 
1202 ---------------------------------------
1203 --
1204 -- PRIVATE FUNCTION
1205 --         Description_9
1206 --
1207 ---------------------------------------
1208 FUNCTION Description_9 (
1209   p_application_id      IN NUMBER
1210 , p_ae_header_id        IN NUMBER DEFAULT NULL 
1211 --Transaction Type Name
1212  , p_source_3            IN VARCHAR2
1213 --Transaction Number
1214  , p_source_4            IN VARCHAR2
1215 --Transaction Document Sequence Category
1216  , p_source_5            IN VARCHAR2
1217 --Transaction Document Sequence Number
1218  , p_source_6            IN NUMBER
1219 )
1220 RETURN VARCHAR2
1221 IS
1222 l_component_type        VARCHAR2(80)   ;
1223 l_component_code        VARCHAR2(30)   ;
1224 l_component_type_code   VARCHAR2(1)    ;
1225 l_component_appl_id     INTEGER        ;
1226 l_amb_context_code      VARCHAR2(30)   ;
1227 l_ledger_language       VARCHAR2(30)   ;
1228 l_source                VARCHAR2(1996) ;
1229 l_description           VARCHAR2(2000) ;
1230 l_log_module            VARCHAR2(240)  ;
1231 BEGIN
1232 IF g_log_enabled THEN
1233       l_log_module := C_DEFAULT_MODULE||'.Description_9';
1234 END IF;
1235 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1236       trace
1237          (p_msg      => 'BEGIN of Description_9'
1238          ,p_level    => C_LEVEL_PROCEDURE
1239          ,p_module   => l_log_module);
1240 END IF;
1241 
1242 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
1243 l_component_type        := 'AMB_DESCRIPTION';
1244 l_component_code        := 'INV_H';
1245 l_component_type_code   := 'S';
1246 l_component_appl_id     :=  222;
1247 l_amb_context_code      := 'DEFAULT';
1248 l_source                := NULL;
1249 l_description           := NULL;
1250 
1251 
1252  
1253  IF 
1254 l_ledger_language = 'US' THEN
1255     l_description :=  SUBSTR(CONCAT(l_description,'Invoice Transaction Type -'),1,2000);
1256     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1257  END IF;   
1258   l_source := SUBSTR(p_source_3,1,1996);
1259   IF l_source IS NOT NULL THEN
1260     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1261     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1262   END IF;  
1263  IF 
1264 l_ledger_language = 'US' THEN
1265     l_description :=  SUBSTR(CONCAT(l_description,' Invoice Transaction Number -'),1,2000);
1266     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1267  END IF;   
1268   l_source := SUBSTR(p_source_4,1,1996);
1269   IF l_source IS NOT NULL THEN
1270     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1274 l_ledger_language = 'US' THEN
1271     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1272   END IF;  
1273  IF 
1275     l_description :=  SUBSTR(CONCAT(l_description,' Document Sequence Category -'),1,2000);
1276     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1277  END IF;   
1278   l_source := SUBSTR(p_source_5,1,1996);
1279   IF l_source IS NOT NULL THEN
1280     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1281     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1282   END IF;  
1283  IF 
1284 l_ledger_language = 'US' THEN
1285     l_description :=  SUBSTR(CONCAT(l_description,' Document Number -'),1,2000);
1286     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1287  END IF;   
1288   l_source := SUBSTR(TO_CHAR(p_source_6),1,1996);
1289   IF l_source IS NOT NULL THEN
1290     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1291     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1292   END IF; 
1293  l_description := SUBSTR(l_description,1,1996);
1294   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1295         trace
1296            (p_msg      => 'END of Description_9'
1297            ,p_level    => C_LEVEL_PROCEDURE
1298            ,p_module   => l_log_module);
1299 
1300   END IF;
1301   RETURN l_description;
1302 
1303 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1304       trace
1305          (p_msg      => 'END of Description_9'
1306          ,p_level    => C_LEVEL_PROCEDURE
1307          ,p_module   => l_log_module);
1308 END IF;
1309 RETURN NULL;
1310 EXCEPTION
1311   WHEN VALUE_ERROR THEN
1312      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1313             trace
1314                (p_msg      => 'ERROR: '||sqlerrm
1315                ,p_level    => C_LEVEL_EXCEPTION
1316                ,p_module   => l_log_module);
1317      END IF;
1318      RAISE;
1319  WHEN xla_exceptions_pkg.application_exception THEN
1320       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1321       trace
1322          (p_msg      => 'ERROR: '||sqlerrm
1323          ,p_level    => C_LEVEL_EXCEPTION
1324          ,p_module   => l_log_module);
1325       END IF;
1326       RAISE;
1327  WHEN OTHERS THEN
1328        xla_exceptions_pkg.raise_message
1329            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_9');
1330 END Description_9;
1331 
1332 ---------------------------------------
1333 --
1334 -- PRIVATE FUNCTION
1335 --         Description_10
1336 --
1337 ---------------------------------------
1338 FUNCTION Description_10 (
1339   p_application_id      IN NUMBER
1340 , p_ae_header_id        IN NUMBER DEFAULT NULL 
1341 --Collection Document Bank Occurrence
1342  , p_source_10            IN VARCHAR2
1343 --Collection Document Number
1344  , p_source_11            IN NUMBER
1345 --Collection Document Trade Note Number
1346  , p_source_12            IN VARCHAR2
1347 --Bordero Type
1348  , p_source_13            IN VARCHAR2
1349  , p_source_13_meaning    IN VARCHAR2
1350 )
1351 RETURN VARCHAR2
1352 IS
1353 l_component_type        VARCHAR2(80)   ;
1354 l_component_code        VARCHAR2(30)   ;
1355 l_component_type_code   VARCHAR2(1)    ;
1356 l_component_appl_id     INTEGER        ;
1357 l_amb_context_code      VARCHAR2(30)   ;
1358 l_ledger_language       VARCHAR2(30)   ;
1359 l_source                VARCHAR2(1996) ;
1360 l_description           VARCHAR2(2000) ;
1361 l_log_module            VARCHAR2(240)  ;
1362 BEGIN
1363 IF g_log_enabled THEN
1364       l_log_module := C_DEFAULT_MODULE||'.Description_10';
1365 END IF;
1366 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1367       trace
1368          (p_msg      => 'BEGIN of Description_10'
1369          ,p_level    => C_LEVEL_PROCEDURE
1370          ,p_module   => l_log_module);
1371 END IF;
1372 
1373 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
1374 l_component_type        := 'AMB_DESCRIPTION';
1375 l_component_code        := 'JLBR_AR_BANK_CHARGES_JED';
1376 l_component_type_code   := 'S';
1377 l_component_appl_id     :=  222;
1378 l_amb_context_code      := 'DEFAULT';
1379 l_source                := NULL;
1380 l_description           := NULL;
1381 
1382 
1383  IF NVL(p_source_13,'
1384 ') =  'COLLECTION'
1385  THEN 
1386  
1387  IF 
1388 l_ledger_language = 'US' THEN
1389     l_description :=  SUBSTR(CONCAT(l_description,'Bank Charges for occurrence :'),1,2000);
1390     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1391  END IF;   
1392   l_source := SUBSTR(p_source_10,1,1996);
1393   IF l_source IS NOT NULL THEN
1394     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1395     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1396   END IF;  
1397  IF 
1398 l_ledger_language = 'US' THEN
1399     l_description :=  SUBSTR(CONCAT(l_description,' of collection document :'),1,2000);
1400     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1401  END IF;   
1402   l_source := SUBSTR(TO_CHAR(p_source_11),1,1996);
1403   IF l_source IS NOT NULL THEN
1404     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1405     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1406   END IF;  
1407  IF 
1408 l_ledger_language = 'US' THEN
1412   l_source := SUBSTR(p_source_12,1,1996);
1409     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
1410     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1411  END IF;   
1413   IF l_source IS NOT NULL THEN
1414     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1415     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1416   END IF; 
1417  l_description := SUBSTR(l_description,1,1996);
1418   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1419         trace
1420            (p_msg      => 'END of Description_10'
1421            ,p_level    => C_LEVEL_PROCEDURE
1422            ,p_module   => l_log_module);
1423 
1424   END IF;
1425   RETURN l_description;
1426 
1427  ELSIF NVL(p_source_13,'
1428 ') =  'FACTORING'
1429  THEN 
1430  
1431  IF 
1432 l_ledger_language = 'US' THEN
1433     l_description :=  SUBSTR(CONCAT(l_description,'Bank Charges for occurrence :'),1,2000);
1434     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1435  END IF;   
1436   l_source := SUBSTR(p_source_10,1,1996);
1437   IF l_source IS NOT NULL THEN
1438     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1439     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1440   END IF;  
1441  IF 
1442 l_ledger_language = 'US' THEN
1443     l_description :=  SUBSTR(CONCAT(l_description,' of factoring collection document :'),1,2000);
1444     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1445  END IF;   
1446   l_source := SUBSTR(TO_CHAR(p_source_11),1,1996);
1447   IF l_source IS NOT NULL THEN
1448     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1449     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1450   END IF;  
1451  IF 
1452 l_ledger_language = 'US' THEN
1453     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
1454     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1455  END IF;   
1456   l_source := SUBSTR(p_source_12,1,1996);
1457   IF l_source IS NOT NULL THEN
1458     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1459     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1460   END IF; 
1461  l_description := SUBSTR(l_description,1,1996);
1462   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1463         trace
1464            (p_msg      => 'END of Description_10'
1465            ,p_level    => C_LEVEL_PROCEDURE
1466            ,p_module   => l_log_module);
1467 
1468   END IF;
1469   RETURN l_description;
1470 
1471  END IF;
1472 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1473       trace
1474          (p_msg      => 'END of Description_10'
1475          ,p_level    => C_LEVEL_PROCEDURE
1476          ,p_module   => l_log_module);
1477 END IF;
1478 RETURN NULL;
1479 EXCEPTION
1480   WHEN VALUE_ERROR THEN
1481      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1482             trace
1483                (p_msg      => 'ERROR: '||sqlerrm
1484                ,p_level    => C_LEVEL_EXCEPTION
1485                ,p_module   => l_log_module);
1486      END IF;
1487      RAISE;
1488  WHEN xla_exceptions_pkg.application_exception THEN
1489       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1490       trace
1491          (p_msg      => 'ERROR: '||sqlerrm
1492          ,p_level    => C_LEVEL_EXCEPTION
1493          ,p_module   => l_log_module);
1494       END IF;
1495       RAISE;
1496  WHEN OTHERS THEN
1497        xla_exceptions_pkg.raise_message
1498            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_10');
1499 END Description_10;
1500 
1501 ---------------------------------------
1502 --
1503 -- PRIVATE FUNCTION
1504 --         Description_11
1505 --
1506 ---------------------------------------
1507 FUNCTION Description_11 (
1508   p_application_id      IN NUMBER
1509 , p_ae_header_id        IN NUMBER DEFAULT NULL 
1510 --Collection Document Bank Occurrence
1511  , p_source_10            IN VARCHAR2
1512 --Collection Document Number
1513  , p_source_11            IN NUMBER
1514 --Collection Document Trade Note Number
1515  , p_source_12            IN VARCHAR2
1516 )
1517 RETURN VARCHAR2
1518 IS
1519 l_component_type        VARCHAR2(80)   ;
1520 l_component_code        VARCHAR2(30)   ;
1521 l_component_type_code   VARCHAR2(1)    ;
1522 l_component_appl_id     INTEGER        ;
1523 l_amb_context_code      VARCHAR2(30)   ;
1524 l_ledger_language       VARCHAR2(30)   ;
1525 l_source                VARCHAR2(1996) ;
1526 l_description           VARCHAR2(2000) ;
1527 l_log_module            VARCHAR2(240)  ;
1528 BEGIN
1529 IF g_log_enabled THEN
1530       l_log_module := C_DEFAULT_MODULE||'.Description_11';
1531 END IF;
1532 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1533       trace
1534          (p_msg      => 'BEGIN of Description_11'
1535          ,p_level    => C_LEVEL_PROCEDURE
1536          ,p_module   => l_log_module);
1537 END IF;
1538 
1539 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
1540 l_component_type        := 'AMB_DESCRIPTION';
1541 l_component_code        := 'JLBR_AR_BILLS_UND_COLL_JED';
1542 l_component_type_code   := 'S';
1543 l_component_appl_id     :=  222;
1544 l_amb_context_code      := 'DEFAULT';
1545 l_source                := NULL;
1549  
1546 l_description           := NULL;
1547 
1548 
1550  IF 
1551 l_ledger_language = 'US' THEN
1552     l_description :=  SUBSTR(CONCAT(l_description,'Bills Under Collection for occurrence :'),1,2000);
1553     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1554  END IF;   
1555   l_source := SUBSTR(p_source_10,1,1996);
1556   IF l_source IS NOT NULL THEN
1557     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1558     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1559   END IF;  
1560  IF 
1561 l_ledger_language = 'US' THEN
1562     l_description :=  SUBSTR(CONCAT(l_description,' of collection document :'),1,2000);
1563     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1564  END IF;   
1565   l_source := SUBSTR(TO_CHAR(p_source_11),1,1996);
1566   IF l_source IS NOT NULL THEN
1567     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1568     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1569   END IF;  
1570  IF 
1571 l_ledger_language = 'US' THEN
1572     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
1573     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1574  END IF;   
1575   l_source := SUBSTR(p_source_12,1,1996);
1576   IF l_source IS NOT NULL THEN
1577     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1578     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1579   END IF; 
1580  l_description := SUBSTR(l_description,1,1996);
1581   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1582         trace
1583            (p_msg      => 'END of Description_11'
1584            ,p_level    => C_LEVEL_PROCEDURE
1585            ,p_module   => l_log_module);
1586 
1587   END IF;
1588   RETURN l_description;
1589 
1590 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1591       trace
1592          (p_msg      => 'END of Description_11'
1593          ,p_level    => C_LEVEL_PROCEDURE
1594          ,p_module   => l_log_module);
1595 END IF;
1596 RETURN NULL;
1597 EXCEPTION
1598   WHEN VALUE_ERROR THEN
1599      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1600             trace
1601                (p_msg      => 'ERROR: '||sqlerrm
1602                ,p_level    => C_LEVEL_EXCEPTION
1603                ,p_module   => l_log_module);
1604      END IF;
1605      RAISE;
1606  WHEN xla_exceptions_pkg.application_exception THEN
1607       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1608       trace
1609          (p_msg      => 'ERROR: '||sqlerrm
1610          ,p_level    => C_LEVEL_EXCEPTION
1611          ,p_module   => l_log_module);
1612       END IF;
1613       RAISE;
1614  WHEN OTHERS THEN
1615        xla_exceptions_pkg.raise_message
1616            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_11');
1617 END Description_11;
1618 
1619 ---------------------------------------
1620 --
1621 -- PRIVATE FUNCTION
1622 --         Description_12
1623 --
1624 ---------------------------------------
1625 FUNCTION Description_12 (
1626   p_application_id      IN NUMBER
1627 , p_ae_header_id        IN NUMBER DEFAULT NULL 
1628 --Collection Document Bank Occurrence
1629  , p_source_10            IN VARCHAR2
1630 --Collection Document Number
1631  , p_source_11            IN NUMBER
1632 --Collection Document Trade Note Number
1633  , p_source_12            IN VARCHAR2
1634 )
1635 RETURN VARCHAR2
1636 IS
1637 l_component_type        VARCHAR2(80)   ;
1638 l_component_code        VARCHAR2(30)   ;
1639 l_component_type_code   VARCHAR2(1)    ;
1640 l_component_appl_id     INTEGER        ;
1641 l_amb_context_code      VARCHAR2(30)   ;
1642 l_ledger_language       VARCHAR2(30)   ;
1643 l_source                VARCHAR2(1996) ;
1644 l_description           VARCHAR2(2000) ;
1645 l_log_module            VARCHAR2(240)  ;
1646 BEGIN
1647 IF g_log_enabled THEN
1648       l_log_module := C_DEFAULT_MODULE||'.Description_12';
1649 END IF;
1650 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1651       trace
1652          (p_msg      => 'BEGIN of Description_12'
1653          ,p_level    => C_LEVEL_PROCEDURE
1654          ,p_module   => l_log_module);
1655 END IF;
1656 
1657 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
1658 l_component_type        := 'AMB_DESCRIPTION';
1659 l_component_code        := 'JLBR_AR_BILLS_UND_DISC_JED';
1660 l_component_type_code   := 'S';
1661 l_component_appl_id     :=  222;
1662 l_amb_context_code      := 'DEFAULT';
1663 l_source                := NULL;
1664 l_description           := NULL;
1665 
1666 
1667  
1668  IF 
1669 l_ledger_language = 'US' THEN
1670     l_description :=  SUBSTR(CONCAT(l_description,'Bills Under Discount for occurrence :'),1,2000);
1671     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1672  END IF;   
1673   l_source := SUBSTR(p_source_10,1,1996);
1674   IF l_source IS NOT NULL THEN
1675     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1676     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1677   END IF;  
1678  IF 
1679 l_ledger_language = 'US' THEN
1680     l_description :=  SUBSTR(CONCAT(l_description,' of factoring collection document :'),1,2000);
1681     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1682  END IF;   
1686     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1683   l_source := SUBSTR(TO_CHAR(p_source_11),1,1996);
1684   IF l_source IS NOT NULL THEN
1685     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1687   END IF;  
1688  IF 
1689 l_ledger_language = 'US' THEN
1690     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
1691     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1692  END IF;   
1693   l_source := SUBSTR(p_source_12,1,1996);
1694   IF l_source IS NOT NULL THEN
1695     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1696     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1697   END IF; 
1698  l_description := SUBSTR(l_description,1,1996);
1699   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1700         trace
1701            (p_msg      => 'END of Description_12'
1702            ,p_level    => C_LEVEL_PROCEDURE
1703            ,p_module   => l_log_module);
1704 
1705   END IF;
1706   RETURN l_description;
1707 
1708 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1709       trace
1710          (p_msg      => 'END of Description_12'
1711          ,p_level    => C_LEVEL_PROCEDURE
1712          ,p_module   => l_log_module);
1713 END IF;
1714 RETURN NULL;
1715 EXCEPTION
1716   WHEN VALUE_ERROR THEN
1717      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1718             trace
1719                (p_msg      => 'ERROR: '||sqlerrm
1720                ,p_level    => C_LEVEL_EXCEPTION
1721                ,p_module   => l_log_module);
1722      END IF;
1723      RAISE;
1724  WHEN xla_exceptions_pkg.application_exception THEN
1725       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1726       trace
1727          (p_msg      => 'ERROR: '||sqlerrm
1728          ,p_level    => C_LEVEL_EXCEPTION
1729          ,p_module   => l_log_module);
1730       END IF;
1731       RAISE;
1732  WHEN OTHERS THEN
1733        xla_exceptions_pkg.raise_message
1734            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_12');
1735 END Description_12;
1736 
1737 ---------------------------------------
1738 --
1739 -- PRIVATE FUNCTION
1740 --         Description_13
1741 --
1742 ---------------------------------------
1743 FUNCTION Description_13 (
1744   p_application_id      IN NUMBER
1745 , p_ae_header_id        IN NUMBER DEFAULT NULL 
1746 --Collection Document Bank Occurrence
1747  , p_source_10            IN VARCHAR2
1748 --Collection Document Number
1749  , p_source_11            IN NUMBER
1750 --Collection Document Trade Note Number
1751  , p_source_12            IN VARCHAR2
1752 --Bordero Type
1753  , p_source_13            IN VARCHAR2
1754  , p_source_13_meaning    IN VARCHAR2
1755 )
1756 RETURN VARCHAR2
1757 IS
1758 l_component_type        VARCHAR2(80)   ;
1759 l_component_code        VARCHAR2(30)   ;
1760 l_component_type_code   VARCHAR2(1)    ;
1761 l_component_appl_id     INTEGER        ;
1762 l_amb_context_code      VARCHAR2(30)   ;
1763 l_ledger_language       VARCHAR2(30)   ;
1764 l_source                VARCHAR2(1996) ;
1765 l_description           VARCHAR2(2000) ;
1766 l_log_module            VARCHAR2(240)  ;
1767 BEGIN
1768 IF g_log_enabled THEN
1769       l_log_module := C_DEFAULT_MODULE||'.Description_13';
1770 END IF;
1771 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1772       trace
1773          (p_msg      => 'BEGIN of Description_13'
1774          ,p_level    => C_LEVEL_PROCEDURE
1775          ,p_module   => l_log_module);
1776 END IF;
1777 
1778 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
1779 l_component_type        := 'AMB_DESCRIPTION';
1780 l_component_code        := 'JLBR_AR_CASH_JED';
1781 l_component_type_code   := 'S';
1782 l_component_appl_id     :=  222;
1783 l_amb_context_code      := 'DEFAULT';
1784 l_source                := NULL;
1785 l_description           := NULL;
1786 
1787 
1788  IF NVL(p_source_13,'
1789 ') =  'COLLECTION'
1790  THEN 
1791  
1792  IF 
1793 l_ledger_language = 'US' THEN
1794     l_description :=  SUBSTR(CONCAT(l_description,'Cash for occurrence :'),1,2000);
1795     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1796  END IF;   
1797   l_source := SUBSTR(p_source_10,1,1996);
1798   IF l_source IS NOT NULL THEN
1799     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1800     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1801   END IF;  
1802  IF 
1803 l_ledger_language = 'US' THEN
1804     l_description :=  SUBSTR(CONCAT(l_description,' of collection document :'),1,2000);
1805     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1806  END IF;   
1807   l_source := SUBSTR(TO_CHAR(p_source_11),1,1996);
1808   IF l_source IS NOT NULL THEN
1809     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1810     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1811   END IF;  
1812  IF 
1813 l_ledger_language = 'US' THEN
1814     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
1815     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1816  END IF;   
1817   l_source := SUBSTR(p_source_12,1,1996);
1818   IF l_source IS NOT NULL THEN
1819     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1823   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1820     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1821   END IF; 
1822  l_description := SUBSTR(l_description,1,1996);
1824         trace
1825            (p_msg      => 'END of Description_13'
1826            ,p_level    => C_LEVEL_PROCEDURE
1827            ,p_module   => l_log_module);
1828 
1829   END IF;
1830   RETURN l_description;
1831 
1832  ELSIF NVL(p_source_13,'
1833 ') =  'FACTORING'
1834  THEN 
1835  
1836  IF 
1837 l_ledger_language = 'US' THEN
1838     l_description :=  SUBSTR(CONCAT(l_description,'Cash for occurrence :'),1,2000);
1839     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1840  END IF;   
1841   l_source := SUBSTR(p_source_10,1,1996);
1842   IF l_source IS NOT NULL THEN
1843     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1844     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1845   END IF;  
1846  IF 
1847 l_ledger_language = 'US' THEN
1848     l_description :=  SUBSTR(CONCAT(l_description,' of factoring collection document :'),1,2000);
1849     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1850  END IF;   
1851   l_source := SUBSTR(TO_CHAR(p_source_11),1,1996);
1852   IF l_source IS NOT NULL THEN
1853     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1854     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1855   END IF;  
1856  IF 
1857 l_ledger_language = 'US' THEN
1858     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
1859     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1860  END IF;   
1861   l_source := SUBSTR(p_source_12,1,1996);
1862   IF l_source IS NOT NULL THEN
1863     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1864     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1865   END IF; 
1866  l_description := SUBSTR(l_description,1,1996);
1867   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1868         trace
1869            (p_msg      => 'END of Description_13'
1870            ,p_level    => C_LEVEL_PROCEDURE
1871            ,p_module   => l_log_module);
1872 
1873   END IF;
1874   RETURN l_description;
1875 
1876  END IF;
1877 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1878       trace
1879          (p_msg      => 'END of Description_13'
1880          ,p_level    => C_LEVEL_PROCEDURE
1881          ,p_module   => l_log_module);
1882 END IF;
1883 RETURN NULL;
1884 EXCEPTION
1885   WHEN VALUE_ERROR THEN
1886      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1887             trace
1888                (p_msg      => 'ERROR: '||sqlerrm
1889                ,p_level    => C_LEVEL_EXCEPTION
1890                ,p_module   => l_log_module);
1891      END IF;
1892      RAISE;
1893  WHEN xla_exceptions_pkg.application_exception THEN
1894       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
1895       trace
1896          (p_msg      => 'ERROR: '||sqlerrm
1897          ,p_level    => C_LEVEL_EXCEPTION
1898          ,p_module   => l_log_module);
1899       END IF;
1900       RAISE;
1901  WHEN OTHERS THEN
1902        xla_exceptions_pkg.raise_message
1903            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_13');
1904 END Description_13;
1905 
1906 ---------------------------------------
1907 --
1908 -- PRIVATE FUNCTION
1909 --         Description_14
1910 --
1911 ---------------------------------------
1912 FUNCTION Description_14 (
1913   p_application_id      IN NUMBER
1914 , p_ae_header_id        IN NUMBER DEFAULT NULL 
1915 --Collection Document Bank Occurrence
1916  , p_source_10            IN VARCHAR2
1917 --Collection Document Number
1918  , p_source_11            IN NUMBER
1919 --Collection Document Trade Note Number
1920  , p_source_12            IN VARCHAR2
1921 )
1922 RETURN VARCHAR2
1923 IS
1924 l_component_type        VARCHAR2(80)   ;
1925 l_component_code        VARCHAR2(30)   ;
1926 l_component_type_code   VARCHAR2(1)    ;
1927 l_component_appl_id     INTEGER        ;
1928 l_amb_context_code      VARCHAR2(30)   ;
1929 l_ledger_language       VARCHAR2(30)   ;
1930 l_source                VARCHAR2(1996) ;
1931 l_description           VARCHAR2(2000) ;
1932 l_log_module            VARCHAR2(240)  ;
1933 BEGIN
1934 IF g_log_enabled THEN
1935       l_log_module := C_DEFAULT_MODULE||'.Description_14';
1936 END IF;
1937 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1938       trace
1939          (p_msg      => 'BEGIN of Description_14'
1940          ,p_level    => C_LEVEL_PROCEDURE
1941          ,p_module   => l_log_module);
1942 END IF;
1943 
1944 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
1945 l_component_type        := 'AMB_DESCRIPTION';
1946 l_component_code        := 'JLBR_AR_COLL_ENDORSEMENT_JED';
1947 l_component_type_code   := 'S';
1948 l_component_appl_id     :=  222;
1949 l_amb_context_code      := 'DEFAULT';
1950 l_source                := NULL;
1951 l_description           := NULL;
1952 
1953 
1954  
1955  IF 
1956 l_ledger_language = 'US' THEN
1957     l_description :=  SUBSTR(CONCAT(l_description,'Collection Endorsement for occurrence :'),1,2000);
1958     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1959  END IF;   
1960   l_source := SUBSTR(p_source_10,1,1996);
1964   END IF;  
1961   IF l_source IS NOT NULL THEN
1962     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1963     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1965  IF 
1966 l_ledger_language = 'US' THEN
1967     l_description :=  SUBSTR(CONCAT(l_description,' of collection document :'),1,2000);
1968     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1969  END IF;   
1970   l_source := SUBSTR(TO_CHAR(p_source_11),1,1996);
1971   IF l_source IS NOT NULL THEN
1972     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1973     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1974   END IF;  
1975  IF 
1976 l_ledger_language = 'US' THEN
1977     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
1978     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
1979  END IF;   
1980   l_source := SUBSTR(p_source_12,1,1996);
1981   IF l_source IS NOT NULL THEN
1982     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
1983     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
1984   END IF; 
1985  l_description := SUBSTR(l_description,1,1996);
1986   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1987         trace
1988            (p_msg      => 'END of Description_14'
1989            ,p_level    => C_LEVEL_PROCEDURE
1990            ,p_module   => l_log_module);
1991 
1992   END IF;
1993   RETURN l_description;
1994 
1995 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
1996       trace
1997          (p_msg      => 'END of Description_14'
1998          ,p_level    => C_LEVEL_PROCEDURE
1999          ,p_module   => l_log_module);
2000 END IF;
2001 RETURN NULL;
2002 EXCEPTION
2003   WHEN VALUE_ERROR THEN
2004      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2005             trace
2006                (p_msg      => 'ERROR: '||sqlerrm
2007                ,p_level    => C_LEVEL_EXCEPTION
2008                ,p_module   => l_log_module);
2009      END IF;
2010      RAISE;
2011  WHEN xla_exceptions_pkg.application_exception THEN
2012       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2013       trace
2014          (p_msg      => 'ERROR: '||sqlerrm
2015          ,p_level    => C_LEVEL_EXCEPTION
2016          ,p_module   => l_log_module);
2017       END IF;
2018       RAISE;
2019  WHEN OTHERS THEN
2020        xla_exceptions_pkg.raise_message
2021            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_14');
2022 END Description_14;
2023 
2024 ---------------------------------------
2025 --
2026 -- PRIVATE FUNCTION
2027 --         Description_15
2028 --
2029 ---------------------------------------
2030 FUNCTION Description_15 (
2031   p_application_id      IN NUMBER
2032 , p_ae_header_id        IN NUMBER DEFAULT NULL 
2033 --Collection Document Bank Occurrence
2034  , p_source_10            IN VARCHAR2
2035 --Collection Document Number
2036  , p_source_11            IN NUMBER
2037 --Collection Document Trade Note Number
2038  , p_source_12            IN VARCHAR2
2039 --Bill To Customer Name
2040  , p_source_14            IN VARCHAR2
2041 --Bill To Customer Number
2042  , p_source_15            IN VARCHAR2
2043 --Remittance Bank Account Name
2044  , p_source_16            IN VARCHAR2
2045 --Remittance Bank Account Number
2046  , p_source_17            IN VARCHAR2
2047 --Remittance Bank Name
2048  , p_source_18            IN VARCHAR2
2049 --Remittance Bank Number
2050  , p_source_19            IN VARCHAR2
2051 )
2052 RETURN VARCHAR2
2053 IS
2054 l_component_type        VARCHAR2(80)   ;
2055 l_component_code        VARCHAR2(30)   ;
2056 l_component_type_code   VARCHAR2(1)    ;
2057 l_component_appl_id     INTEGER        ;
2058 l_amb_context_code      VARCHAR2(30)   ;
2059 l_ledger_language       VARCHAR2(30)   ;
2060 l_source                VARCHAR2(1996) ;
2061 l_description           VARCHAR2(2000) ;
2062 l_log_module            VARCHAR2(240)  ;
2063 BEGIN
2064 IF g_log_enabled THEN
2065       l_log_module := C_DEFAULT_MODULE||'.Description_15';
2066 END IF;
2067 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2068       trace
2069          (p_msg      => 'BEGIN of Description_15'
2070          ,p_level    => C_LEVEL_PROCEDURE
2071          ,p_module   => l_log_module);
2072 END IF;
2073 
2074 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
2075 l_component_type        := 'AMB_DESCRIPTION';
2076 l_component_code        := 'JLBR_AR_COLL_OCC_DOC_JED';
2077 l_component_type_code   := 'S';
2078 l_component_appl_id     :=  222;
2079 l_amb_context_code      := 'DEFAULT';
2080 l_source                := NULL;
2081 l_description           := NULL;
2082 
2083 
2084   
2085   l_source := SUBSTR(p_source_10,1,1996);
2086   IF l_source IS NOT NULL THEN
2087     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2088     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2089   END IF;  
2090  IF 
2091 l_ledger_language = 'US' THEN
2092     l_description :=  SUBSTR(CONCAT(l_description,' occurrence for collection document:'),1,2000);
2093     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2094  END IF;   
2095   l_source := SUBSTR(TO_CHAR(p_source_11),1,1996);
2096   IF l_source IS NOT NULL THEN
2097     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2098     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2099   END IF;  
2103     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2100  IF 
2101 l_ledger_language = 'US' THEN
2102     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
2104  END IF;   
2105   l_source := SUBSTR(p_source_12,1,1996);
2106   IF l_source IS NOT NULL THEN
2107     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2108     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2109   END IF;  
2110  IF 
2111 l_ledger_language = 'US' THEN
2112     l_description :=  SUBSTR(CONCAT(l_description,' of customer :'),1,2000);
2113     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2114  END IF;   
2115   l_source := SUBSTR(p_source_14,1,1996);
2116   IF l_source IS NOT NULL THEN
2117     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2118     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2119   END IF;  
2120  IF 
2121 l_ledger_language = 'US' THEN
2122     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
2123     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2124  END IF;   
2125   l_source := SUBSTR(p_source_15,1,1996);
2126   IF l_source IS NOT NULL THEN
2127     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2128     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2129   END IF;  
2130  IF 
2131 l_ledger_language = 'US' THEN
2132     l_description :=  SUBSTR(CONCAT(l_description,' under collection at bank account :'),1,2000);
2133     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2134  END IF;   
2135   l_source := SUBSTR(p_source_16,1,1996);
2136   IF l_source IS NOT NULL THEN
2137     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2138     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2139   END IF;  
2140  IF 
2141 l_ledger_language = 'US' THEN
2142     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
2143     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2144  END IF;   
2145   l_source := SUBSTR(p_source_17,1,1996);
2146   IF l_source IS NOT NULL THEN
2147     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2148     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2149   END IF;  
2150  IF 
2151 l_ledger_language = 'US' THEN
2152     l_description :=  SUBSTR(CONCAT(l_description,' of  bank :'),1,2000);
2153     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2154  END IF;   
2155   l_source := SUBSTR(p_source_18,1,1996);
2156   IF l_source IS NOT NULL THEN
2157     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2158     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2159   END IF;  
2160  IF 
2161 l_ledger_language = 'US' THEN
2162     l_description :=  SUBSTR(CONCAT(l_description,'-'),1,2000);
2163     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2164  END IF;   
2165   l_source := SUBSTR(p_source_19,1,1996);
2166   IF l_source IS NOT NULL THEN
2167     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2168     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2169   END IF; 
2170  l_description := SUBSTR(l_description,1,1996);
2171   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2172         trace
2173            (p_msg      => 'END of Description_15'
2174            ,p_level    => C_LEVEL_PROCEDURE
2175            ,p_module   => l_log_module);
2176 
2177   END IF;
2178   RETURN l_description;
2179 
2180 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2181       trace
2182          (p_msg      => 'END of Description_15'
2183          ,p_level    => C_LEVEL_PROCEDURE
2184          ,p_module   => l_log_module);
2185 END IF;
2186 RETURN NULL;
2187 EXCEPTION
2188   WHEN VALUE_ERROR THEN
2189      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2190             trace
2191                (p_msg      => 'ERROR: '||sqlerrm
2192                ,p_level    => C_LEVEL_EXCEPTION
2193                ,p_module   => l_log_module);
2194      END IF;
2195      RAISE;
2196  WHEN xla_exceptions_pkg.application_exception THEN
2197       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2198       trace
2199          (p_msg      => 'ERROR: '||sqlerrm
2200          ,p_level    => C_LEVEL_EXCEPTION
2201          ,p_module   => l_log_module);
2202       END IF;
2203       RAISE;
2204  WHEN OTHERS THEN
2205        xla_exceptions_pkg.raise_message
2206            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_15');
2207 END Description_15;
2208 
2209 ---------------------------------------
2210 --
2211 -- PRIVATE FUNCTION
2212 --         Description_16
2213 --
2214 ---------------------------------------
2215 FUNCTION Description_16 (
2216   p_application_id      IN NUMBER
2217 , p_ae_header_id        IN NUMBER DEFAULT NULL 
2218 --Collection Document Bank Occurrence
2219  , p_source_10            IN VARCHAR2
2220 --Collection Document Number
2221  , p_source_11            IN NUMBER
2222 --Collection Document Trade Note Number
2223  , p_source_12            IN VARCHAR2
2224 )
2225 RETURN VARCHAR2
2226 IS
2227 l_component_type        VARCHAR2(80)   ;
2228 l_component_code        VARCHAR2(30)   ;
2229 l_component_type_code   VARCHAR2(1)    ;
2230 l_component_appl_id     INTEGER        ;
2231 l_amb_context_code      VARCHAR2(30)   ;
2235 l_log_module            VARCHAR2(240)  ;
2232 l_ledger_language       VARCHAR2(30)   ;
2233 l_source                VARCHAR2(1996) ;
2234 l_description           VARCHAR2(2000) ;
2236 BEGIN
2237 IF g_log_enabled THEN
2238       l_log_module := C_DEFAULT_MODULE||'.Description_16';
2239 END IF;
2240 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2241       trace
2242          (p_msg      => 'BEGIN of Description_16'
2243          ,p_level    => C_LEVEL_PROCEDURE
2244          ,p_module   => l_log_module);
2245 END IF;
2246 
2247 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
2248 l_component_type        := 'AMB_DESCRIPTION';
2249 l_component_code        := 'JLBR_AR_DISC_ENDORSEMENT_JED';
2250 l_component_type_code   := 'S';
2251 l_component_appl_id     :=  222;
2252 l_amb_context_code      := 'DEFAULT';
2253 l_source                := NULL;
2254 l_description           := NULL;
2255 
2256 
2257  
2258  IF 
2259 l_ledger_language = 'US' THEN
2260     l_description :=  SUBSTR(CONCAT(l_description,'Discount Endorsement for occurrence :'),1,2000);
2261     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2262  END IF;   
2263   l_source := SUBSTR(p_source_10,1,1996);
2264   IF l_source IS NOT NULL THEN
2265     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2266     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2267   END IF;  
2268  IF 
2269 l_ledger_language = 'US' THEN
2270     l_description :=  SUBSTR(CONCAT(l_description,' of factoring collection document :'),1,2000);
2271     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2272  END IF;   
2273   l_source := SUBSTR(TO_CHAR(p_source_11),1,1996);
2274   IF l_source IS NOT NULL THEN
2275     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2276     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2277   END IF;  
2278  IF 
2279 l_ledger_language = 'US' THEN
2280     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
2281     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2282  END IF;   
2283   l_source := SUBSTR(p_source_12,1,1996);
2284   IF l_source IS NOT NULL THEN
2285     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2286     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2287   END IF; 
2288  l_description := SUBSTR(l_description,1,1996);
2289   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2290         trace
2291            (p_msg      => 'END of Description_16'
2292            ,p_level    => C_LEVEL_PROCEDURE
2293            ,p_module   => l_log_module);
2294 
2295   END IF;
2296   RETURN l_description;
2297 
2298 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2299       trace
2300          (p_msg      => 'END of Description_16'
2301          ,p_level    => C_LEVEL_PROCEDURE
2302          ,p_module   => l_log_module);
2303 END IF;
2304 RETURN NULL;
2305 EXCEPTION
2306   WHEN VALUE_ERROR THEN
2307      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2308             trace
2309                (p_msg      => 'ERROR: '||sqlerrm
2310                ,p_level    => C_LEVEL_EXCEPTION
2311                ,p_module   => l_log_module);
2312      END IF;
2313      RAISE;
2314  WHEN xla_exceptions_pkg.application_exception THEN
2315       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2316       trace
2317          (p_msg      => 'ERROR: '||sqlerrm
2318          ,p_level    => C_LEVEL_EXCEPTION
2319          ,p_module   => l_log_module);
2320       END IF;
2321       RAISE;
2322  WHEN OTHERS THEN
2323        xla_exceptions_pkg.raise_message
2324            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_16');
2325 END Description_16;
2326 
2327 ---------------------------------------
2328 --
2329 -- PRIVATE FUNCTION
2330 --         Description_17
2331 --
2332 ---------------------------------------
2333 FUNCTION Description_17 (
2334   p_application_id      IN NUMBER
2335 , p_ae_header_id        IN NUMBER DEFAULT NULL 
2336 --Collection Document Bank Occurrence
2337  , p_source_10            IN VARCHAR2
2338 --Collection Document Number
2339  , p_source_11            IN NUMBER
2340 --Collection Document Trade Note Number
2341  , p_source_12            IN VARCHAR2
2342 )
2343 RETURN VARCHAR2
2344 IS
2345 l_component_type        VARCHAR2(80)   ;
2346 l_component_code        VARCHAR2(30)   ;
2347 l_component_type_code   VARCHAR2(1)    ;
2348 l_component_appl_id     INTEGER        ;
2349 l_amb_context_code      VARCHAR2(30)   ;
2350 l_ledger_language       VARCHAR2(30)   ;
2351 l_source                VARCHAR2(1996) ;
2352 l_description           VARCHAR2(2000) ;
2353 l_log_module            VARCHAR2(240)  ;
2354 BEGIN
2355 IF g_log_enabled THEN
2356       l_log_module := C_DEFAULT_MODULE||'.Description_17';
2357 END IF;
2358 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2359       trace
2360          (p_msg      => 'BEGIN of Description_17'
2361          ,p_level    => C_LEVEL_PROCEDURE
2362          ,p_module   => l_log_module);
2363 END IF;
2364 
2365 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
2366 l_component_type        := 'AMB_DESCRIPTION';
2367 l_component_code        := 'JLBR_AR_FACT_CHARGES_JED';
2368 l_component_type_code   := 'S';
2369 l_component_appl_id     :=  222;
2373 
2370 l_amb_context_code      := 'DEFAULT';
2371 l_source                := NULL;
2372 l_description           := NULL;
2374 
2375  
2376  IF 
2377 l_ledger_language = 'US' THEN
2378     l_description :=  SUBSTR(CONCAT(l_description,'Factoring Charges for occurrence :'),1,2000);
2379     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2380  END IF;   
2381   l_source := SUBSTR(p_source_10,1,1996);
2382   IF l_source IS NOT NULL THEN
2383     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2384     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2385   END IF;  
2386  IF 
2387 l_ledger_language = 'US' THEN
2388     l_description :=  SUBSTR(CONCAT(l_description,' of factoring collection document :'),1,2000);
2389     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2390  END IF;   
2391   l_source := SUBSTR(TO_CHAR(p_source_11),1,1996);
2392   IF l_source IS NOT NULL THEN
2393     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2394     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2395   END IF;  
2396  IF 
2397 l_ledger_language = 'US' THEN
2398     l_description :=  SUBSTR(CONCAT(l_description,' for trade note:'),1,2000);
2399     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2400  END IF;   
2401   l_source := SUBSTR(p_source_12,1,1996);
2402   IF l_source IS NOT NULL THEN
2403     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2404     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2405   END IF; 
2406  l_description := SUBSTR(l_description,1,1996);
2407   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2408         trace
2409            (p_msg      => 'END of Description_17'
2410            ,p_level    => C_LEVEL_PROCEDURE
2411            ,p_module   => l_log_module);
2412 
2413   END IF;
2414   RETURN l_description;
2415 
2416 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2417       trace
2418          (p_msg      => 'END of Description_17'
2419          ,p_level    => C_LEVEL_PROCEDURE
2420          ,p_module   => l_log_module);
2421 END IF;
2422 RETURN NULL;
2423 EXCEPTION
2424   WHEN VALUE_ERROR THEN
2425      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2426             trace
2427                (p_msg      => 'ERROR: '||sqlerrm
2428                ,p_level    => C_LEVEL_EXCEPTION
2429                ,p_module   => l_log_module);
2430      END IF;
2431      RAISE;
2432  WHEN xla_exceptions_pkg.application_exception THEN
2433       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2434       trace
2435          (p_msg      => 'ERROR: '||sqlerrm
2436          ,p_level    => C_LEVEL_EXCEPTION
2437          ,p_module   => l_log_module);
2438       END IF;
2439       RAISE;
2440  WHEN OTHERS THEN
2441        xla_exceptions_pkg.raise_message
2442            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_17');
2443 END Description_17;
2444 
2445 ---------------------------------------
2446 --
2447 -- PRIVATE FUNCTION
2448 --         Description_18
2449 --
2450 ---------------------------------------
2451 FUNCTION Description_18 (
2452   p_application_id      IN NUMBER
2453 , p_ae_header_id        IN NUMBER DEFAULT NULL 
2454 --Remittance Bank Account Name
2455  , p_source_16            IN VARCHAR2
2456 --Remittance Bank Name
2457  , p_source_18            IN VARCHAR2
2458 --Receipt Number
2459  , p_source_20            IN VARCHAR2
2460 --Receipt Document Sequence Number
2461  , p_source_21            IN NUMBER
2462 --Receipt Method Name
2463  , p_source_22            IN VARCHAR2
2464 --Receipt Date
2465  , p_source_23            IN DATE
2466 )
2467 RETURN VARCHAR2
2468 IS
2469 l_component_type        VARCHAR2(80)   ;
2470 l_component_code        VARCHAR2(30)   ;
2471 l_component_type_code   VARCHAR2(1)    ;
2472 l_component_appl_id     INTEGER        ;
2473 l_amb_context_code      VARCHAR2(30)   ;
2474 l_ledger_language       VARCHAR2(30)   ;
2475 l_source                VARCHAR2(1996) ;
2476 l_description           VARCHAR2(2000) ;
2477 l_log_module            VARCHAR2(240)  ;
2478 BEGIN
2479 IF g_log_enabled THEN
2480       l_log_module := C_DEFAULT_MODULE||'.Description_18';
2481 END IF;
2482 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2483       trace
2484          (p_msg      => 'BEGIN of Description_18'
2485          ,p_level    => C_LEVEL_PROCEDURE
2486          ,p_module   => l_log_module);
2487 END IF;
2488 
2489 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
2490 l_component_type        := 'AMB_DESCRIPTION';
2491 l_component_code        := 'MISC_RCTS_H';
2492 l_component_type_code   := 'S';
2493 l_component_appl_id     :=  222;
2494 l_amb_context_code      := 'DEFAULT';
2495 l_source                := NULL;
2496 l_description           := NULL;
2497 
2498 
2499  
2500  IF 
2501 l_ledger_language = 'US' THEN
2502     l_description :=  SUBSTR(CONCAT(l_description,'Receipt Number -'),1,2000);
2503     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2504  END IF;   
2505   l_source := SUBSTR(p_source_20,1,1996);
2506   IF l_source IS NOT NULL THEN
2507     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2508     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2509   END IF;  
2510  IF 
2511 l_ledger_language = 'US' THEN
2512     l_description :=  SUBSTR(CONCAT(l_description,'Document Number -'),1,2000);
2513     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2517     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2514  END IF;   
2515   l_source := SUBSTR(TO_CHAR(p_source_21),1,1996);
2516   IF l_source IS NOT NULL THEN
2518     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2519   END IF;  
2520  IF 
2521 l_ledger_language = 'US' THEN
2522     l_description :=  SUBSTR(CONCAT(l_description,'Receipt Method Name -'),1,2000);
2523     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2524  END IF;   
2525   l_source := SUBSTR(p_source_22,1,1996);
2526   IF l_source IS NOT NULL THEN
2527     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2528     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2529   END IF;  
2530  IF 
2531 l_ledger_language = 'US' THEN
2532     l_description :=  SUBSTR(CONCAT(l_description,'Receipt Date -'),1,2000);
2533     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2534  END IF;   
2535   l_source := SUBSTR(xla_ae_sources_pkg.DATE_TO_CHAR(p_source_23,
2536                      xla_ae_journal_entry_pkg.g_cache_ledgers_info.nls_desc_language),1,1996);
2537   IF l_source IS NOT NULL THEN
2538     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2539     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2540   END IF;  
2541  IF 
2542 l_ledger_language = 'US' THEN
2543     l_description :=  SUBSTR(CONCAT(l_description,'Bank Name -'),1,2000);
2544     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2545  END IF;   
2546   l_source := SUBSTR(p_source_18,1,1996);
2547   IF l_source IS NOT NULL THEN
2548     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2549     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2550   END IF;  
2551  IF 
2552 l_ledger_language = 'US' THEN
2553     l_description :=  SUBSTR(CONCAT(l_description,'Bank Account Name -'),1,2000);
2554     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2555  END IF;   
2556   l_source := SUBSTR(p_source_16,1,1996);
2557   IF l_source IS NOT NULL THEN
2558     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2559     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2560   END IF; 
2561  l_description := SUBSTR(l_description,1,1996);
2562   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2563         trace
2564            (p_msg      => 'END of Description_18'
2565            ,p_level    => C_LEVEL_PROCEDURE
2566            ,p_module   => l_log_module);
2567 
2568   END IF;
2569   RETURN l_description;
2570 
2571 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2572       trace
2573          (p_msg      => 'END of Description_18'
2574          ,p_level    => C_LEVEL_PROCEDURE
2575          ,p_module   => l_log_module);
2576 END IF;
2577 RETURN NULL;
2578 EXCEPTION
2579   WHEN VALUE_ERROR THEN
2580      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2581             trace
2582                (p_msg      => 'ERROR: '||sqlerrm
2583                ,p_level    => C_LEVEL_EXCEPTION
2584                ,p_module   => l_log_module);
2585      END IF;
2586      RAISE;
2587  WHEN xla_exceptions_pkg.application_exception THEN
2588       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2589       trace
2590          (p_msg      => 'ERROR: '||sqlerrm
2591          ,p_level    => C_LEVEL_EXCEPTION
2592          ,p_module   => l_log_module);
2593       END IF;
2594       RAISE;
2595  WHEN OTHERS THEN
2596        xla_exceptions_pkg.raise_message
2597            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_18');
2598 END Description_18;
2599 
2600 ---------------------------------------
2601 --
2602 -- PRIVATE FUNCTION
2603 --         Description_19
2604 --
2605 ---------------------------------------
2606 FUNCTION Description_19 (
2607   p_application_id      IN NUMBER
2608 , p_ae_header_id        IN NUMBER DEFAULT NULL 
2609 --Remittance Bank Account Name
2610  , p_source_16            IN VARCHAR2
2611 --Remittance Bank Name
2612  , p_source_18            IN VARCHAR2
2613 --Receipt Number
2614  , p_source_20            IN VARCHAR2
2615 --Receipt Document Sequence Number
2616  , p_source_21            IN NUMBER
2617 --Receipt Method Name
2618  , p_source_22            IN VARCHAR2
2619 --Receipt Date
2620  , p_source_23            IN DATE
2621 )
2622 RETURN VARCHAR2
2623 IS
2624 l_component_type        VARCHAR2(80)   ;
2625 l_component_code        VARCHAR2(30)   ;
2626 l_component_type_code   VARCHAR2(1)    ;
2627 l_component_appl_id     INTEGER        ;
2628 l_amb_context_code      VARCHAR2(30)   ;
2629 l_ledger_language       VARCHAR2(30)   ;
2630 l_source                VARCHAR2(1996) ;
2631 l_description           VARCHAR2(2000) ;
2632 l_log_module            VARCHAR2(240)  ;
2633 BEGIN
2634 IF g_log_enabled THEN
2635       l_log_module := C_DEFAULT_MODULE||'.Description_19';
2636 END IF;
2637 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2638       trace
2639          (p_msg      => 'BEGIN of Description_19'
2640          ,p_level    => C_LEVEL_PROCEDURE
2641          ,p_module   => l_log_module);
2642 END IF;
2643 
2644 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
2645 l_component_type        := 'AMB_DESCRIPTION';
2646 l_component_code        := 'RCT_H';
2647 l_component_type_code   := 'S';
2648 l_component_appl_id     :=  222;
2649 l_amb_context_code      := 'DEFAULT';
2653 
2650 l_source                := NULL;
2651 l_description           := NULL;
2652 
2654  
2655  IF 
2656 l_ledger_language = 'US' THEN
2657     l_description :=  SUBSTR(CONCAT(l_description,'Receipt Number -'),1,2000);
2658     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2659  END IF;   
2660   l_source := SUBSTR(p_source_20,1,1996);
2661   IF l_source IS NOT NULL THEN
2662     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2663     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2664   END IF;  
2665  IF 
2666 l_ledger_language = 'US' THEN
2667     l_description :=  SUBSTR(CONCAT(l_description,'Document Number -'),1,2000);
2668     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2669  END IF;   
2670   l_source := SUBSTR(TO_CHAR(p_source_21),1,1996);
2671   IF l_source IS NOT NULL THEN
2672     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2673     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2674   END IF;  
2675  IF 
2676 l_ledger_language = 'US' THEN
2677     l_description :=  SUBSTR(CONCAT(l_description,'Receipt Method Name -'),1,2000);
2678     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2679  END IF;   
2680   l_source := SUBSTR(p_source_22,1,1996);
2681   IF l_source IS NOT NULL THEN
2682     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2683     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2684   END IF;  
2685  IF 
2686 l_ledger_language = 'US' THEN
2687     l_description :=  SUBSTR(CONCAT(l_description,'Receipt Date -'),1,2000);
2688     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2689  END IF;   
2690   l_source := SUBSTR(xla_ae_sources_pkg.DATE_TO_CHAR(p_source_23,
2691                      xla_ae_journal_entry_pkg.g_cache_ledgers_info.nls_desc_language),1,1996);
2692   IF l_source IS NOT NULL THEN
2693     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2694     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2695   END IF;  
2696  IF 
2697 l_ledger_language = 'US' THEN
2698     l_description :=  SUBSTR(CONCAT(l_description,'Bank Name -'),1,2000);
2699     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2700  END IF;   
2701   l_source := SUBSTR(p_source_18,1,1996);
2702   IF l_source IS NOT NULL THEN
2703     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2704     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2705   END IF;  
2706  IF 
2707 l_ledger_language = 'US' THEN
2708     l_description :=  SUBSTR(CONCAT(l_description,'Bank Account Name -'),1,2000);
2709     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2710  END IF;   
2711   l_source := SUBSTR(p_source_16,1,1996);
2712   IF l_source IS NOT NULL THEN
2713     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2714     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2715   END IF; 
2716  l_description := SUBSTR(l_description,1,1996);
2717   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2718         trace
2719            (p_msg      => 'END of Description_19'
2720            ,p_level    => C_LEVEL_PROCEDURE
2721            ,p_module   => l_log_module);
2722 
2723   END IF;
2724   RETURN l_description;
2725 
2726 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2727       trace
2728          (p_msg      => 'END of Description_19'
2729          ,p_level    => C_LEVEL_PROCEDURE
2730          ,p_module   => l_log_module);
2731 END IF;
2732 RETURN NULL;
2733 EXCEPTION
2734   WHEN VALUE_ERROR THEN
2735      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2736             trace
2737                (p_msg      => 'ERROR: '||sqlerrm
2738                ,p_level    => C_LEVEL_EXCEPTION
2739                ,p_module   => l_log_module);
2740      END IF;
2741      RAISE;
2742  WHEN xla_exceptions_pkg.application_exception THEN
2743       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2744       trace
2745          (p_msg      => 'ERROR: '||sqlerrm
2746          ,p_level    => C_LEVEL_EXCEPTION
2747          ,p_module   => l_log_module);
2748       END IF;
2749       RAISE;
2750  WHEN OTHERS THEN
2751        xla_exceptions_pkg.raise_message
2752            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_19');
2753 END Description_19;
2754 
2755 ---------------------------------------
2756 --
2757 -- PRIVATE FUNCTION
2758 --         Description_20
2759 --
2760 ---------------------------------------
2761 FUNCTION Description_20 (
2762   p_application_id      IN NUMBER
2763 , p_ae_header_id        IN NUMBER DEFAULT NULL 
2764 --Transaction Type Name
2765  , p_source_3            IN VARCHAR2
2766 --Transaction Number
2767  , p_source_4            IN VARCHAR2
2768 --Transaction Document Sequence Number
2769  , p_source_6            IN NUMBER
2770 )
2771 RETURN VARCHAR2
2772 IS
2773 l_component_type        VARCHAR2(80)   ;
2774 l_component_code        VARCHAR2(30)   ;
2775 l_component_type_code   VARCHAR2(1)    ;
2776 l_component_appl_id     INTEGER        ;
2777 l_amb_context_code      VARCHAR2(30)   ;
2778 l_ledger_language       VARCHAR2(30)   ;
2779 l_source                VARCHAR2(1996) ;
2780 l_description           VARCHAR2(2000) ;
2781 l_log_module            VARCHAR2(240)  ;
2782 BEGIN
2783 IF g_log_enabled THEN
2784       l_log_module := C_DEFAULT_MODULE||'.Description_20';
2785 END IF;
2789          ,p_level    => C_LEVEL_PROCEDURE
2786 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2787       trace
2788          (p_msg      => 'BEGIN of Description_20'
2790          ,p_module   => l_log_module);
2791 END IF;
2792 
2793 l_ledger_language       := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
2794 l_component_type        := 'AMB_DESCRIPTION';
2795 l_component_code        := 'RCT_L';
2796 l_component_type_code   := 'S';
2797 l_component_appl_id     :=  222;
2798 l_amb_context_code      := 'DEFAULT';
2799 l_source                := NULL;
2800 l_description           := NULL;
2801 
2802 
2803  IF p_source_4 IS NOT NULL 
2804  THEN 
2805  
2806  IF 
2807 l_ledger_language = 'US' THEN
2808     l_description :=  SUBSTR(CONCAT(l_description,'Receipt Application to Transaction Type -'),1,2000);
2809     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2810  END IF;   
2811   l_source := SUBSTR(p_source_3,1,1996);
2812   IF l_source IS NOT NULL THEN
2813     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2814     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2815   END IF;  
2816  IF 
2817 l_ledger_language = 'US' THEN
2818     l_description :=  SUBSTR(CONCAT(l_description,' Transaction Number'),1,2000);
2819     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2820  END IF;   
2821   l_source := SUBSTR(p_source_4,1,1996);
2822   IF l_source IS NOT NULL THEN
2823     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2824     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2825   END IF;  
2826  IF 
2827 l_ledger_language = 'US' THEN
2828     l_description :=  SUBSTR(CONCAT(l_description,' Transaction Document Number'),1,2000);
2829     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000); 
2830  END IF;   
2831   l_source := SUBSTR(TO_CHAR(p_source_6),1,1996);
2832   IF l_source IS NOT NULL THEN
2833     l_description :=  SUBSTR(CONCAT(l_description,l_source),1,2000);
2834     l_description :=  SUBSTR(CONCAT(l_description,' '),1,2000);
2835   END IF; 
2836  l_description := SUBSTR(l_description,1,1996);
2837   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2838         trace
2839            (p_msg      => 'END of Description_20'
2840            ,p_level    => C_LEVEL_PROCEDURE
2841            ,p_module   => l_log_module);
2842 
2843   END IF;
2844   RETURN l_description;
2845 
2846  END IF;
2847 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2848       trace
2849          (p_msg      => 'END of Description_20'
2850          ,p_level    => C_LEVEL_PROCEDURE
2851          ,p_module   => l_log_module);
2852 END IF;
2853 RETURN NULL;
2854 EXCEPTION
2855   WHEN VALUE_ERROR THEN
2856      IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2857             trace
2858                (p_msg      => 'ERROR: '||sqlerrm
2859                ,p_level    => C_LEVEL_EXCEPTION
2860                ,p_module   => l_log_module);
2861      END IF;
2862      RAISE;
2863  WHEN xla_exceptions_pkg.application_exception THEN
2864       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
2865       trace
2866          (p_msg      => 'ERROR: '||sqlerrm
2867          ,p_level    => C_LEVEL_EXCEPTION
2868          ,p_module   => l_log_module);
2869       END IF;
2870       RAISE;
2871  WHEN OTHERS THEN
2872        xla_exceptions_pkg.raise_message
2873            (p_location => 'XLA_00222_AAD_S_000002_PKG.Description_20');
2874 END Description_20;
2875 
2876 ---------------------------------------
2877 --
2878 -- PRIVATE FUNCTION
2879 --         AcctDerRule_21
2880 --
2881 ---------------------------------------
2882 FUNCTION AcctDerRule_21 (
2883   p_application_id              IN NUMBER
2884 , p_ae_header_id                IN NUMBER
2885 , p_side                        IN VARCHAR2 
2886 --Credit Memo Distribution GL Account
2887  , p_source_24            IN NUMBER
2888 , x_transaction_coa_id         OUT NOCOPY NUMBER
2889 , x_accounting_coa_id          OUT NOCOPY NUMBER
2890 , x_value_type_code            OUT NOCOPY VARCHAR2
2891 )
2892 RETURN NUMBER
2893 IS
2894 l_component_type       VARCHAR2(80)  ;
2895 l_component_code       VARCHAR2(30)  ;
2896 l_component_type_code  VARCHAR2(1)   ;
2897 l_component_appl_id    INTEGER       ;
2898 l_amb_context_code     VARCHAR2(30)  ;
2899 l_log_module           VARCHAR2(240) ;
2900 l_output_value         NUMBER        ;
2901 BEGIN
2902 IF g_log_enabled THEN
2903       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_21';
2904 END IF;
2905 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2906       trace
2907          (p_msg      => 'BEGIN of AcctDerRule_21'
2908          ,p_level    => C_LEVEL_PROCEDURE
2909          ,p_module   => l_log_module);
2910 END IF;
2911 --
2912 l_component_type         := 'AMB_ADR';
2913 l_component_code         := 'CM_DIST_CCID';
2914 l_component_type_code    := 'S';
2915 l_component_appl_id      :=  222;
2916 l_amb_context_code       := 'DEFAULT';
2917 x_transaction_coa_id     :=  null;
2918 x_accounting_coa_id      :=  null;
2919 --
2920 
2921  --
2922   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2923       trace
2924          (p_msg      => 'END of AcctDerRule_21'
2925          ,p_level    => C_LEVEL_PROCEDURE
2926          ,p_module   => l_log_module);
2927   END IF;
2931 
2928   x_value_type_code := 'S';
2929   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_24));
2930   RETURN l_output_value;
2932 --
2933 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
2934       trace
2935          (p_msg      => 'END of AcctDerRule_21(invalid)'
2936          ,p_level    => C_LEVEL_PROCEDURE
2937          ,p_module   => l_log_module);
2938 END IF;
2939 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
2940 x_value_type_code := null;
2941 l_output_value    := null;
2942 xla_accounting_err_pkg.build_message
2943                  (p_appli_s_name            => 'XLA'
2944                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
2945                  ,p_token_1                 => 'COMPONENT_NAME'
2946                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
2947                                                             l_component_type
2948                                                           , l_component_code
2949                                                           , l_component_type_code
2950                                                           , l_component_appl_id
2951                                                           , l_amb_context_code
2952                                                           )
2953                  ,p_token_2                 => 'OWNER'
2954                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
2955                                                         'XLA_OWNER_TYPE'
2956                                                         ,l_component_type_code
2957                                                         )
2958                  ,p_token_3                 => 'PAD_NAME'
2959                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
2960                  ,p_token_4                 => 'PAD_OWNER'
2961                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
2962                                                         'XLA_OWNER_TYPE'
2963                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
2964                                                         )
2965                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
2966                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
2967                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
2968                  ,p_ae_header_id            => NULL
2969 );
2970 RETURN l_output_value;
2971 EXCEPTION
2972   WHEN xla_exceptions_pkg.application_exception THEN
2973       RAISE;
2974   WHEN OTHERS THEN
2975        xla_exceptions_pkg.raise_message
2976            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_21');
2977 END AcctDerRule_21;
2978 --
2979 
2980 ---------------------------------------
2981 --
2982 -- PRIVATE FUNCTION
2983 --         AcctDerRule_22
2984 --
2985 ---------------------------------------
2986 FUNCTION AcctDerRule_22 (
2987   p_application_id              IN NUMBER
2988 , p_ae_header_id                IN NUMBER
2989 , p_side                        IN VARCHAR2 
2990 --Collection Document Bank Charges Account
2991  , p_source_25            IN NUMBER
2992 , x_transaction_coa_id         OUT NOCOPY NUMBER
2993 , x_accounting_coa_id          OUT NOCOPY NUMBER
2994 , x_value_type_code            OUT NOCOPY VARCHAR2
2995 )
2996 RETURN NUMBER
2997 IS
2998 l_component_type       VARCHAR2(80)  ;
2999 l_component_code       VARCHAR2(30)  ;
3000 l_component_type_code  VARCHAR2(1)   ;
3001 l_component_appl_id    INTEGER       ;
3002 l_amb_context_code     VARCHAR2(30)  ;
3003 l_log_module           VARCHAR2(240) ;
3004 l_output_value         NUMBER        ;
3005 BEGIN
3006 IF g_log_enabled THEN
3007       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_22';
3008 END IF;
3009 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3010       trace
3011          (p_msg      => 'BEGIN of AcctDerRule_22'
3012          ,p_level    => C_LEVEL_PROCEDURE
3013          ,p_module   => l_log_module);
3014 END IF;
3015 --
3016 l_component_type         := 'AMB_ADR';
3017 l_component_code         := 'COLL_DOC_BANK_CHARGES';
3018 l_component_type_code    := 'S';
3019 l_component_appl_id      :=  222;
3020 l_amb_context_code       := 'DEFAULT';
3021 x_transaction_coa_id     :=  null;
3022 x_accounting_coa_id      :=  null;
3023 --
3024 
3025  --
3026   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3027       trace
3028          (p_msg      => 'END of AcctDerRule_22'
3029          ,p_level    => C_LEVEL_PROCEDURE
3030          ,p_module   => l_log_module);
3031   END IF;
3032   x_value_type_code := 'S';
3033   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_25));
3034   RETURN l_output_value;
3035 
3036 --
3037 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3038       trace
3039          (p_msg      => 'END of AcctDerRule_22(invalid)'
3040          ,p_level    => C_LEVEL_PROCEDURE
3041          ,p_module   => l_log_module);
3042 END IF;
3043 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3044 x_value_type_code := null;
3045 l_output_value    := null;
3046 xla_accounting_err_pkg.build_message
3047                  (p_appli_s_name            => 'XLA'
3051                                                             l_component_type
3048                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3049                  ,p_token_1                 => 'COMPONENT_NAME'
3050                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3052                                                           , l_component_code
3053                                                           , l_component_type_code
3054                                                           , l_component_appl_id
3055                                                           , l_amb_context_code
3056                                                           )
3057                  ,p_token_2                 => 'OWNER'
3058                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3059                                                         'XLA_OWNER_TYPE'
3060                                                         ,l_component_type_code
3061                                                         )
3062                  ,p_token_3                 => 'PAD_NAME'
3063                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3064                  ,p_token_4                 => 'PAD_OWNER'
3065                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3066                                                         'XLA_OWNER_TYPE'
3067                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3068                                                         )
3069                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3070                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3071                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3072                  ,p_ae_header_id            => NULL
3073 );
3074 RETURN l_output_value;
3075 EXCEPTION
3076   WHEN xla_exceptions_pkg.application_exception THEN
3077       RAISE;
3078   WHEN OTHERS THEN
3079        xla_exceptions_pkg.raise_message
3080            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_22');
3081 END AcctDerRule_22;
3082 --
3083 
3084 ---------------------------------------
3085 --
3086 -- PRIVATE FUNCTION
3087 --         AcctDerRule_23
3088 --
3089 ---------------------------------------
3090 FUNCTION AcctDerRule_23 (
3091   p_application_id              IN NUMBER
3092 , p_ae_header_id                IN NUMBER
3093 , p_side                        IN VARCHAR2 
3094 --Collection Document Bills Under Collection Account
3095  , p_source_26            IN NUMBER
3096 , x_transaction_coa_id         OUT NOCOPY NUMBER
3097 , x_accounting_coa_id          OUT NOCOPY NUMBER
3098 , x_value_type_code            OUT NOCOPY VARCHAR2
3099 )
3100 RETURN NUMBER
3101 IS
3102 l_component_type       VARCHAR2(80)  ;
3103 l_component_code       VARCHAR2(30)  ;
3104 l_component_type_code  VARCHAR2(1)   ;
3105 l_component_appl_id    INTEGER       ;
3106 l_amb_context_code     VARCHAR2(30)  ;
3107 l_log_module           VARCHAR2(240) ;
3108 l_output_value         NUMBER        ;
3109 BEGIN
3110 IF g_log_enabled THEN
3111       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_23';
3112 END IF;
3113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3114       trace
3115          (p_msg      => 'BEGIN of AcctDerRule_23'
3116          ,p_level    => C_LEVEL_PROCEDURE
3117          ,p_module   => l_log_module);
3118 END IF;
3119 --
3120 l_component_type         := 'AMB_ADR';
3121 l_component_code         := 'COLL_DOC_BILLS_UNDER_COLL';
3122 l_component_type_code    := 'S';
3123 l_component_appl_id      :=  222;
3124 l_amb_context_code       := 'DEFAULT';
3125 x_transaction_coa_id     :=  null;
3126 x_accounting_coa_id      :=  null;
3127 --
3128 
3129  --
3130   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3131       trace
3132          (p_msg      => 'END of AcctDerRule_23'
3133          ,p_level    => C_LEVEL_PROCEDURE
3134          ,p_module   => l_log_module);
3135   END IF;
3136   x_value_type_code := 'S';
3137   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_26));
3138   RETURN l_output_value;
3139 
3140 --
3141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3142       trace
3143          (p_msg      => 'END of AcctDerRule_23(invalid)'
3144          ,p_level    => C_LEVEL_PROCEDURE
3145          ,p_module   => l_log_module);
3146 END IF;
3147 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3148 x_value_type_code := null;
3149 l_output_value    := null;
3150 xla_accounting_err_pkg.build_message
3151                  (p_appli_s_name            => 'XLA'
3152                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3153                  ,p_token_1                 => 'COMPONENT_NAME'
3154                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3155                                                             l_component_type
3156                                                           , l_component_code
3157                                                           , l_component_type_code
3158                                                           , l_component_appl_id
3159                                                           , l_amb_context_code
3160                                                           )
3164                                                         ,l_component_type_code
3161                  ,p_token_2                 => 'OWNER'
3162                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3163                                                         'XLA_OWNER_TYPE'
3165                                                         )
3166                  ,p_token_3                 => 'PAD_NAME'
3167                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3168                  ,p_token_4                 => 'PAD_OWNER'
3169                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3170                                                         'XLA_OWNER_TYPE'
3171                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3172                                                         )
3173                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3174                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3175                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3176                  ,p_ae_header_id            => NULL
3177 );
3178 RETURN l_output_value;
3179 EXCEPTION
3180   WHEN xla_exceptions_pkg.application_exception THEN
3181       RAISE;
3182   WHEN OTHERS THEN
3183        xla_exceptions_pkg.raise_message
3184            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_23');
3185 END AcctDerRule_23;
3186 --
3187 
3188 ---------------------------------------
3189 --
3190 -- PRIVATE FUNCTION
3191 --         AcctDerRule_24
3192 --
3193 ---------------------------------------
3194 FUNCTION AcctDerRule_24 (
3195   p_application_id              IN NUMBER
3196 , p_ae_header_id                IN NUMBER
3197 , p_side                        IN VARCHAR2 
3198 --Collection Document Bills Under Discount Account
3199  , p_source_27            IN NUMBER
3200 , x_transaction_coa_id         OUT NOCOPY NUMBER
3201 , x_accounting_coa_id          OUT NOCOPY NUMBER
3202 , x_value_type_code            OUT NOCOPY VARCHAR2
3203 )
3204 RETURN NUMBER
3205 IS
3206 l_component_type       VARCHAR2(80)  ;
3207 l_component_code       VARCHAR2(30)  ;
3208 l_component_type_code  VARCHAR2(1)   ;
3209 l_component_appl_id    INTEGER       ;
3210 l_amb_context_code     VARCHAR2(30)  ;
3211 l_log_module           VARCHAR2(240) ;
3212 l_output_value         NUMBER        ;
3213 BEGIN
3214 IF g_log_enabled THEN
3215       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_24';
3216 END IF;
3217 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3218       trace
3219          (p_msg      => 'BEGIN of AcctDerRule_24'
3220          ,p_level    => C_LEVEL_PROCEDURE
3221          ,p_module   => l_log_module);
3222 END IF;
3223 --
3224 l_component_type         := 'AMB_ADR';
3225 l_component_code         := 'COLL_DOC_BILLS_UNDER_DISC';
3226 l_component_type_code    := 'S';
3227 l_component_appl_id      :=  222;
3228 l_amb_context_code       := 'DEFAULT';
3229 x_transaction_coa_id     :=  null;
3230 x_accounting_coa_id      :=  null;
3231 --
3232 
3233  --
3234   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3235       trace
3236          (p_msg      => 'END of AcctDerRule_24'
3237          ,p_level    => C_LEVEL_PROCEDURE
3238          ,p_module   => l_log_module);
3239   END IF;
3240   x_value_type_code := 'S';
3241   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_27));
3242   RETURN l_output_value;
3243 
3244 --
3245 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3246       trace
3247          (p_msg      => 'END of AcctDerRule_24(invalid)'
3248          ,p_level    => C_LEVEL_PROCEDURE
3249          ,p_module   => l_log_module);
3250 END IF;
3251 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3252 x_value_type_code := null;
3253 l_output_value    := null;
3254 xla_accounting_err_pkg.build_message
3255                  (p_appli_s_name            => 'XLA'
3256                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3257                  ,p_token_1                 => 'COMPONENT_NAME'
3258                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3259                                                             l_component_type
3260                                                           , l_component_code
3261                                                           , l_component_type_code
3262                                                           , l_component_appl_id
3263                                                           , l_amb_context_code
3264                                                           )
3265                  ,p_token_2                 => 'OWNER'
3266                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3267                                                         'XLA_OWNER_TYPE'
3268                                                         ,l_component_type_code
3269                                                         )
3270                  ,p_token_3                 => 'PAD_NAME'
3271                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3272                  ,p_token_4                 => 'PAD_OWNER'
3273                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3277                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3274                                                         'XLA_OWNER_TYPE'
3275                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3276                                                         )
3278                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3279                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3280                  ,p_ae_header_id            => NULL
3281 );
3282 RETURN l_output_value;
3283 EXCEPTION
3284   WHEN xla_exceptions_pkg.application_exception THEN
3285       RAISE;
3286   WHEN OTHERS THEN
3287        xla_exceptions_pkg.raise_message
3288            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_24');
3289 END AcctDerRule_24;
3290 --
3291 
3292 ---------------------------------------
3293 --
3294 -- PRIVATE FUNCTION
3295 --         AcctDerRule_25
3296 --
3297 ---------------------------------------
3298 FUNCTION AcctDerRule_25 (
3299   p_application_id              IN NUMBER
3300 , p_ae_header_id                IN NUMBER
3301 , p_side                        IN VARCHAR2 
3302 --Collection Document Cash Account
3303  , p_source_28            IN NUMBER
3304 , x_transaction_coa_id         OUT NOCOPY NUMBER
3305 , x_accounting_coa_id          OUT NOCOPY NUMBER
3306 , x_value_type_code            OUT NOCOPY VARCHAR2
3307 )
3308 RETURN NUMBER
3309 IS
3310 l_component_type       VARCHAR2(80)  ;
3311 l_component_code       VARCHAR2(30)  ;
3312 l_component_type_code  VARCHAR2(1)   ;
3313 l_component_appl_id    INTEGER       ;
3314 l_amb_context_code     VARCHAR2(30)  ;
3315 l_log_module           VARCHAR2(240) ;
3316 l_output_value         NUMBER        ;
3317 BEGIN
3318 IF g_log_enabled THEN
3319       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_25';
3320 END IF;
3321 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3322       trace
3323          (p_msg      => 'BEGIN of AcctDerRule_25'
3324          ,p_level    => C_LEVEL_PROCEDURE
3325          ,p_module   => l_log_module);
3326 END IF;
3327 --
3328 l_component_type         := 'AMB_ADR';
3329 l_component_code         := 'COLL_DOC_CASH';
3330 l_component_type_code    := 'S';
3331 l_component_appl_id      :=  222;
3332 l_amb_context_code       := 'DEFAULT';
3333 x_transaction_coa_id     :=  null;
3334 x_accounting_coa_id      :=  null;
3335 --
3336 
3337  --
3338   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3339       trace
3340          (p_msg      => 'END of AcctDerRule_25'
3341          ,p_level    => C_LEVEL_PROCEDURE
3342          ,p_module   => l_log_module);
3343   END IF;
3344   x_value_type_code := 'S';
3345   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_28));
3346   RETURN l_output_value;
3347 
3348 --
3349 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3350       trace
3351          (p_msg      => 'END of AcctDerRule_25(invalid)'
3352          ,p_level    => C_LEVEL_PROCEDURE
3353          ,p_module   => l_log_module);
3354 END IF;
3355 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3356 x_value_type_code := null;
3357 l_output_value    := null;
3358 xla_accounting_err_pkg.build_message
3359                  (p_appli_s_name            => 'XLA'
3360                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3361                  ,p_token_1                 => 'COMPONENT_NAME'
3362                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3363                                                             l_component_type
3364                                                           , l_component_code
3365                                                           , l_component_type_code
3366                                                           , l_component_appl_id
3367                                                           , l_amb_context_code
3368                                                           )
3369                  ,p_token_2                 => 'OWNER'
3370                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3371                                                         'XLA_OWNER_TYPE'
3372                                                         ,l_component_type_code
3373                                                         )
3374                  ,p_token_3                 => 'PAD_NAME'
3375                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3376                  ,p_token_4                 => 'PAD_OWNER'
3377                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3378                                                         'XLA_OWNER_TYPE'
3379                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3380                                                         )
3381                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3382                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3383                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3384                  ,p_ae_header_id            => NULL
3385 );
3386 RETURN l_output_value;
3387 EXCEPTION
3388   WHEN xla_exceptions_pkg.application_exception THEN
3389       RAISE;
3390   WHEN OTHERS THEN
3394 --
3391        xla_exceptions_pkg.raise_message
3392            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_25');
3393 END AcctDerRule_25;
3395 
3396 ---------------------------------------
3397 --
3398 -- PRIVATE FUNCTION
3399 --         AcctDerRule_26
3400 --
3401 ---------------------------------------
3402 FUNCTION AcctDerRule_26 (
3403   p_application_id              IN NUMBER
3404 , p_ae_header_id                IN NUMBER
3405 , p_side                        IN VARCHAR2 
3406 --Collection Document Collection Endorsement Account
3407  , p_source_29            IN NUMBER
3408 , x_transaction_coa_id         OUT NOCOPY NUMBER
3409 , x_accounting_coa_id          OUT NOCOPY NUMBER
3410 , x_value_type_code            OUT NOCOPY VARCHAR2
3411 )
3412 RETURN NUMBER
3413 IS
3414 l_component_type       VARCHAR2(80)  ;
3415 l_component_code       VARCHAR2(30)  ;
3416 l_component_type_code  VARCHAR2(1)   ;
3417 l_component_appl_id    INTEGER       ;
3418 l_amb_context_code     VARCHAR2(30)  ;
3419 l_log_module           VARCHAR2(240) ;
3420 l_output_value         NUMBER        ;
3421 BEGIN
3422 IF g_log_enabled THEN
3423       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_26';
3424 END IF;
3425 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3426       trace
3427          (p_msg      => 'BEGIN of AcctDerRule_26'
3428          ,p_level    => C_LEVEL_PROCEDURE
3429          ,p_module   => l_log_module);
3430 END IF;
3431 --
3432 l_component_type         := 'AMB_ADR';
3433 l_component_code         := 'COLL_DOC_COLL_ENDRSMNT';
3434 l_component_type_code    := 'S';
3435 l_component_appl_id      :=  222;
3436 l_amb_context_code       := 'DEFAULT';
3437 x_transaction_coa_id     :=  null;
3438 x_accounting_coa_id      :=  null;
3439 --
3440 
3441  --
3442   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3443       trace
3444          (p_msg      => 'END of AcctDerRule_26'
3445          ,p_level    => C_LEVEL_PROCEDURE
3446          ,p_module   => l_log_module);
3447   END IF;
3448   x_value_type_code := 'S';
3449   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_29));
3450   RETURN l_output_value;
3451 
3452 --
3453 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3454       trace
3455          (p_msg      => 'END of AcctDerRule_26(invalid)'
3456          ,p_level    => C_LEVEL_PROCEDURE
3457          ,p_module   => l_log_module);
3458 END IF;
3459 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3460 x_value_type_code := null;
3461 l_output_value    := null;
3462 xla_accounting_err_pkg.build_message
3463                  (p_appli_s_name            => 'XLA'
3464                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3465                  ,p_token_1                 => 'COMPONENT_NAME'
3466                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3467                                                             l_component_type
3468                                                           , l_component_code
3469                                                           , l_component_type_code
3470                                                           , l_component_appl_id
3471                                                           , l_amb_context_code
3472                                                           )
3473                  ,p_token_2                 => 'OWNER'
3474                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3475                                                         'XLA_OWNER_TYPE'
3476                                                         ,l_component_type_code
3477                                                         )
3478                  ,p_token_3                 => 'PAD_NAME'
3479                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3480                  ,p_token_4                 => 'PAD_OWNER'
3481                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3482                                                         'XLA_OWNER_TYPE'
3483                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3484                                                         )
3485                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3486                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3487                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3488                  ,p_ae_header_id            => NULL
3489 );
3490 RETURN l_output_value;
3491 EXCEPTION
3492   WHEN xla_exceptions_pkg.application_exception THEN
3493       RAISE;
3494   WHEN OTHERS THEN
3495        xla_exceptions_pkg.raise_message
3496            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_26');
3497 END AcctDerRule_26;
3498 --
3499 
3500 ---------------------------------------
3501 --
3502 -- PRIVATE FUNCTION
3503 --         AcctDerRule_27
3504 --
3505 ---------------------------------------
3506 FUNCTION AcctDerRule_27 (
3507   p_application_id              IN NUMBER
3508 , p_ae_header_id                IN NUMBER
3509 , p_side                        IN VARCHAR2 
3510 --Collection Document Discount Endorsement Account
3511  , p_source_30            IN NUMBER
3512 , x_transaction_coa_id         OUT NOCOPY NUMBER
3516 RETURN NUMBER
3513 , x_accounting_coa_id          OUT NOCOPY NUMBER
3514 , x_value_type_code            OUT NOCOPY VARCHAR2
3515 )
3517 IS
3518 l_component_type       VARCHAR2(80)  ;
3519 l_component_code       VARCHAR2(30)  ;
3520 l_component_type_code  VARCHAR2(1)   ;
3521 l_component_appl_id    INTEGER       ;
3522 l_amb_context_code     VARCHAR2(30)  ;
3523 l_log_module           VARCHAR2(240) ;
3524 l_output_value         NUMBER        ;
3525 BEGIN
3526 IF g_log_enabled THEN
3527       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_27';
3528 END IF;
3529 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3530       trace
3531          (p_msg      => 'BEGIN of AcctDerRule_27'
3532          ,p_level    => C_LEVEL_PROCEDURE
3533          ,p_module   => l_log_module);
3534 END IF;
3535 --
3536 l_component_type         := 'AMB_ADR';
3537 l_component_code         := 'COLL_DOC_DISC_ENDRSMNT';
3538 l_component_type_code    := 'S';
3539 l_component_appl_id      :=  222;
3540 l_amb_context_code       := 'DEFAULT';
3541 x_transaction_coa_id     :=  null;
3542 x_accounting_coa_id      :=  null;
3543 --
3544 
3545  --
3546   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3547       trace
3548          (p_msg      => 'END of AcctDerRule_27'
3549          ,p_level    => C_LEVEL_PROCEDURE
3550          ,p_module   => l_log_module);
3551   END IF;
3552   x_value_type_code := 'S';
3553   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_30));
3554   RETURN l_output_value;
3555 
3556 --
3557 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3558       trace
3559          (p_msg      => 'END of AcctDerRule_27(invalid)'
3560          ,p_level    => C_LEVEL_PROCEDURE
3561          ,p_module   => l_log_module);
3562 END IF;
3563 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3564 x_value_type_code := null;
3565 l_output_value    := null;
3566 xla_accounting_err_pkg.build_message
3567                  (p_appli_s_name            => 'XLA'
3568                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3569                  ,p_token_1                 => 'COMPONENT_NAME'
3570                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3571                                                             l_component_type
3572                                                           , l_component_code
3573                                                           , l_component_type_code
3574                                                           , l_component_appl_id
3575                                                           , l_amb_context_code
3576                                                           )
3577                  ,p_token_2                 => 'OWNER'
3578                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3579                                                         'XLA_OWNER_TYPE'
3580                                                         ,l_component_type_code
3581                                                         )
3582                  ,p_token_3                 => 'PAD_NAME'
3583                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3584                  ,p_token_4                 => 'PAD_OWNER'
3585                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3586                                                         'XLA_OWNER_TYPE'
3587                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3588                                                         )
3589                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3590                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3591                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3592                  ,p_ae_header_id            => NULL
3593 );
3594 RETURN l_output_value;
3595 EXCEPTION
3596   WHEN xla_exceptions_pkg.application_exception THEN
3597       RAISE;
3598   WHEN OTHERS THEN
3599        xla_exceptions_pkg.raise_message
3600            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_27');
3601 END AcctDerRule_27;
3602 --
3603 
3604 ---------------------------------------
3605 --
3606 -- PRIVATE FUNCTION
3607 --         AcctDerRule_28
3608 --
3609 ---------------------------------------
3610 FUNCTION AcctDerRule_28 (
3611   p_application_id              IN NUMBER
3612 , p_ae_header_id                IN NUMBER
3613 , p_side                        IN VARCHAR2 
3614 --Collection Document Factoring Charges Account
3615  , p_source_31            IN NUMBER
3616 , x_transaction_coa_id         OUT NOCOPY NUMBER
3617 , x_accounting_coa_id          OUT NOCOPY NUMBER
3618 , x_value_type_code            OUT NOCOPY VARCHAR2
3619 )
3620 RETURN NUMBER
3621 IS
3622 l_component_type       VARCHAR2(80)  ;
3623 l_component_code       VARCHAR2(30)  ;
3624 l_component_type_code  VARCHAR2(1)   ;
3625 l_component_appl_id    INTEGER       ;
3626 l_amb_context_code     VARCHAR2(30)  ;
3627 l_log_module           VARCHAR2(240) ;
3628 l_output_value         NUMBER        ;
3629 BEGIN
3630 IF g_log_enabled THEN
3631       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_28';
3632 END IF;
3633 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3634       trace
3635          (p_msg      => 'BEGIN of AcctDerRule_28'
3636          ,p_level    => C_LEVEL_PROCEDURE
3637          ,p_module   => l_log_module);
3638 END IF;
3642 l_component_type_code    := 'S';
3639 --
3640 l_component_type         := 'AMB_ADR';
3641 l_component_code         := 'COLL_DOC_FACTORING_CHARGES';
3643 l_component_appl_id      :=  222;
3644 l_amb_context_code       := 'DEFAULT';
3645 x_transaction_coa_id     :=  null;
3646 x_accounting_coa_id      :=  null;
3647 --
3648 
3649  --
3650   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3651       trace
3652          (p_msg      => 'END of AcctDerRule_28'
3653          ,p_level    => C_LEVEL_PROCEDURE
3654          ,p_module   => l_log_module);
3655   END IF;
3656   x_value_type_code := 'S';
3657   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_31));
3658   RETURN l_output_value;
3659 
3660 --
3661 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3662       trace
3663          (p_msg      => 'END of AcctDerRule_28(invalid)'
3664          ,p_level    => C_LEVEL_PROCEDURE
3665          ,p_module   => l_log_module);
3666 END IF;
3667 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3668 x_value_type_code := null;
3669 l_output_value    := null;
3670 xla_accounting_err_pkg.build_message
3671                  (p_appli_s_name            => 'XLA'
3672                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3673                  ,p_token_1                 => 'COMPONENT_NAME'
3674                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3675                                                             l_component_type
3676                                                           , l_component_code
3677                                                           , l_component_type_code
3678                                                           , l_component_appl_id
3679                                                           , l_amb_context_code
3680                                                           )
3681                  ,p_token_2                 => 'OWNER'
3682                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3683                                                         'XLA_OWNER_TYPE'
3684                                                         ,l_component_type_code
3685                                                         )
3686                  ,p_token_3                 => 'PAD_NAME'
3687                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3688                  ,p_token_4                 => 'PAD_OWNER'
3689                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3690                                                         'XLA_OWNER_TYPE'
3691                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3692                                                         )
3693                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3694                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3695                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3696                  ,p_ae_header_id            => NULL
3697 );
3698 RETURN l_output_value;
3699 EXCEPTION
3700   WHEN xla_exceptions_pkg.application_exception THEN
3701       RAISE;
3702   WHEN OTHERS THEN
3703        xla_exceptions_pkg.raise_message
3704            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_28');
3705 END AcctDerRule_28;
3706 --
3707 
3708 ---------------------------------------
3709 --
3710 -- PRIVATE FUNCTION
3711 --         AcctDerRule_29
3712 --
3713 ---------------------------------------
3714 FUNCTION AcctDerRule_29 (
3715   p_application_id              IN NUMBER
3716 , p_ae_header_id                IN NUMBER
3717 , p_side                        IN VARCHAR2 
3718 --Distribution GL Account
3719  , p_source_32            IN NUMBER
3720 , x_transaction_coa_id         OUT NOCOPY NUMBER
3721 , x_accounting_coa_id          OUT NOCOPY NUMBER
3722 , x_value_type_code            OUT NOCOPY VARCHAR2
3723 )
3724 RETURN NUMBER
3725 IS
3726 l_component_type       VARCHAR2(80)  ;
3727 l_component_code       VARCHAR2(30)  ;
3728 l_component_type_code  VARCHAR2(1)   ;
3729 l_component_appl_id    INTEGER       ;
3730 l_amb_context_code     VARCHAR2(30)  ;
3731 l_log_module           VARCHAR2(240) ;
3732 l_output_value         NUMBER        ;
3733 BEGIN
3734 IF g_log_enabled THEN
3735       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_29';
3736 END IF;
3737 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3738       trace
3739          (p_msg      => 'BEGIN of AcctDerRule_29'
3740          ,p_level    => C_LEVEL_PROCEDURE
3741          ,p_module   => l_log_module);
3742 END IF;
3743 --
3744 l_component_type         := 'AMB_ADR';
3745 l_component_code         := 'DIST_CCID';
3746 l_component_type_code    := 'S';
3747 l_component_appl_id      :=  222;
3748 l_amb_context_code       := 'DEFAULT';
3749 x_transaction_coa_id     :=  null;
3750 x_accounting_coa_id      :=  null;
3751 --
3752 
3753  --
3754   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3755       trace
3756          (p_msg      => 'END of AcctDerRule_29'
3757          ,p_level    => C_LEVEL_PROCEDURE
3758          ,p_module   => l_log_module);
3759   END IF;
3760   x_value_type_code := 'S';
3764 --
3761   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_32));
3762   RETURN l_output_value;
3763 
3765 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3766       trace
3767          (p_msg      => 'END of AcctDerRule_29(invalid)'
3768          ,p_level    => C_LEVEL_PROCEDURE
3769          ,p_module   => l_log_module);
3770 END IF;
3771 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3772 x_value_type_code := null;
3773 l_output_value    := null;
3774 xla_accounting_err_pkg.build_message
3775                  (p_appli_s_name            => 'XLA'
3776                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3777                  ,p_token_1                 => 'COMPONENT_NAME'
3778                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3779                                                             l_component_type
3780                                                           , l_component_code
3781                                                           , l_component_type_code
3782                                                           , l_component_appl_id
3783                                                           , l_amb_context_code
3784                                                           )
3785                  ,p_token_2                 => 'OWNER'
3786                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3787                                                         'XLA_OWNER_TYPE'
3788                                                         ,l_component_type_code
3789                                                         )
3790                  ,p_token_3                 => 'PAD_NAME'
3791                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3792                  ,p_token_4                 => 'PAD_OWNER'
3793                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3794                                                         'XLA_OWNER_TYPE'
3795                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3796                                                         )
3797                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3798                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3799                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3800                  ,p_ae_header_id            => NULL
3801 );
3802 RETURN l_output_value;
3803 EXCEPTION
3804   WHEN xla_exceptions_pkg.application_exception THEN
3805       RAISE;
3806   WHEN OTHERS THEN
3807        xla_exceptions_pkg.raise_message
3808            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_29');
3809 END AcctDerRule_29;
3810 --
3811 
3812 ---------------------------------------
3813 --
3814 -- PRIVATE FUNCTION
3815 --         AcctDerRule_30
3816 --
3817 ---------------------------------------
3818 FUNCTION AcctDerRule_30 (
3819   p_application_id              IN NUMBER
3820 , p_ae_header_id                IN NUMBER
3821 , p_side                        IN VARCHAR2 
3822 --Distribution Gain Loss Account
3823  , p_source_33            IN NUMBER
3824 --System Gain Account
3825  , p_source_34            IN NUMBER
3826 , x_transaction_coa_id         OUT NOCOPY NUMBER
3827 , x_accounting_coa_id          OUT NOCOPY NUMBER
3828 , x_value_type_code            OUT NOCOPY VARCHAR2
3829 )
3830 RETURN NUMBER
3831 IS
3832 l_component_type       VARCHAR2(80)  ;
3833 l_component_code       VARCHAR2(30)  ;
3834 l_component_type_code  VARCHAR2(1)   ;
3835 l_component_appl_id    INTEGER       ;
3836 l_amb_context_code     VARCHAR2(30)  ;
3837 l_log_module           VARCHAR2(240) ;
3838 l_output_value         NUMBER        ;
3839 BEGIN
3840 IF g_log_enabled THEN
3841       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_30';
3842 END IF;
3843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3844       trace
3845          (p_msg      => 'BEGIN of AcctDerRule_30'
3846          ,p_level    => C_LEVEL_PROCEDURE
3847          ,p_module   => l_log_module);
3848 END IF;
3849 --
3850 l_component_type         := 'AMB_ADR';
3851 l_component_code         := 'DIST_GAIN_GL_ACCOUNT';
3852 l_component_type_code    := 'S';
3853 l_component_appl_id      :=  222;
3854 l_amb_context_code       := 'DEFAULT';
3855 x_transaction_coa_id     :=  null;
3856 x_accounting_coa_id      :=  null;
3857 --
3858 
3859  IF TO_NUMBER(p_source_33) IS NOT NULL 
3860  THEN 
3861  --
3862   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3863       trace
3864          (p_msg      => 'END of AcctDerRule_30'
3865          ,p_level    => C_LEVEL_PROCEDURE
3866          ,p_module   => l_log_module);
3867   END IF;
3868   x_value_type_code := 'S';
3869   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_33));
3870   RETURN l_output_value;
3871 
3872 END IF;
3873 
3874  --
3875   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3876       trace
3877          (p_msg      => 'END of AcctDerRule_30'
3878          ,p_level    => C_LEVEL_PROCEDURE
3879          ,p_module   => l_log_module);
3880   END IF;
3881   x_value_type_code := 'S';
3882   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_34));
3883   RETURN l_output_value;
3884 
3885 --
3886 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3887       trace
3888          (p_msg      => 'END of AcctDerRule_30(invalid)'
3892 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
3889          ,p_level    => C_LEVEL_PROCEDURE
3890          ,p_module   => l_log_module);
3891 END IF;
3893 x_value_type_code := null;
3894 l_output_value    := null;
3895 xla_accounting_err_pkg.build_message
3896                  (p_appli_s_name            => 'XLA'
3897                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
3898                  ,p_token_1                 => 'COMPONENT_NAME'
3899                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
3900                                                             l_component_type
3901                                                           , l_component_code
3902                                                           , l_component_type_code
3903                                                           , l_component_appl_id
3904                                                           , l_amb_context_code
3905                                                           )
3906                  ,p_token_2                 => 'OWNER'
3907                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
3908                                                         'XLA_OWNER_TYPE'
3909                                                         ,l_component_type_code
3910                                                         )
3911                  ,p_token_3                 => 'PAD_NAME'
3912                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
3913                  ,p_token_4                 => 'PAD_OWNER'
3914                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
3915                                                         'XLA_OWNER_TYPE'
3916                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
3917                                                         )
3918                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
3919                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
3920                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
3921                  ,p_ae_header_id            => NULL
3922 );
3923 RETURN l_output_value;
3924 EXCEPTION
3925   WHEN xla_exceptions_pkg.application_exception THEN
3926       RAISE;
3927   WHEN OTHERS THEN
3928        xla_exceptions_pkg.raise_message
3929            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_30');
3930 END AcctDerRule_30;
3931 --
3932 
3933 ---------------------------------------
3934 --
3935 -- PRIVATE FUNCTION
3936 --         AcctDerRule_31
3937 --
3938 ---------------------------------------
3939 FUNCTION AcctDerRule_31 (
3940   p_application_id              IN NUMBER
3941 , p_ae_header_id                IN NUMBER
3942 , p_side                        IN VARCHAR2 
3943 --Distribution Gain Loss Account
3944  , p_source_33            IN NUMBER
3945 --System Loss Account
3946  , p_source_35            IN NUMBER
3947 , x_transaction_coa_id         OUT NOCOPY NUMBER
3948 , x_accounting_coa_id          OUT NOCOPY NUMBER
3949 , x_value_type_code            OUT NOCOPY VARCHAR2
3950 )
3951 RETURN NUMBER
3952 IS
3953 l_component_type       VARCHAR2(80)  ;
3954 l_component_code       VARCHAR2(30)  ;
3955 l_component_type_code  VARCHAR2(1)   ;
3956 l_component_appl_id    INTEGER       ;
3957 l_amb_context_code     VARCHAR2(30)  ;
3958 l_log_module           VARCHAR2(240) ;
3959 l_output_value         NUMBER        ;
3960 BEGIN
3961 IF g_log_enabled THEN
3962       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_31';
3963 END IF;
3964 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3965       trace
3966          (p_msg      => 'BEGIN of AcctDerRule_31'
3967          ,p_level    => C_LEVEL_PROCEDURE
3968          ,p_module   => l_log_module);
3969 END IF;
3970 --
3971 l_component_type         := 'AMB_ADR';
3972 l_component_code         := 'DIST_LOSS_GL_ACCOUNT';
3973 l_component_type_code    := 'S';
3974 l_component_appl_id      :=  222;
3975 l_amb_context_code       := 'DEFAULT';
3976 x_transaction_coa_id     :=  null;
3977 x_accounting_coa_id      :=  null;
3978 --
3979 
3980  IF TO_NUMBER(p_source_33) IS NOT NULL 
3981  THEN 
3982  --
3983   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3984       trace
3985          (p_msg      => 'END of AcctDerRule_31'
3986          ,p_level    => C_LEVEL_PROCEDURE
3987          ,p_module   => l_log_module);
3988   END IF;
3989   x_value_type_code := 'S';
3990   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_33));
3991   RETURN l_output_value;
3992 
3993 END IF;
3994 
3995  --
3996   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
3997       trace
3998          (p_msg      => 'END of AcctDerRule_31'
3999          ,p_level    => C_LEVEL_PROCEDURE
4000          ,p_module   => l_log_module);
4001   END IF;
4002   x_value_type_code := 'S';
4003   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_35));
4004   RETURN l_output_value;
4005 
4006 --
4007 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4008       trace
4009          (p_msg      => 'END of AcctDerRule_31(invalid)'
4010          ,p_level    => C_LEVEL_PROCEDURE
4011          ,p_module   => l_log_module);
4012 END IF;
4013 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4014 x_value_type_code := null;
4018                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4015 l_output_value    := null;
4016 xla_accounting_err_pkg.build_message
4017                  (p_appli_s_name            => 'XLA'
4019                  ,p_token_1                 => 'COMPONENT_NAME'
4020                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4021                                                             l_component_type
4022                                                           , l_component_code
4023                                                           , l_component_type_code
4024                                                           , l_component_appl_id
4025                                                           , l_amb_context_code
4026                                                           )
4027                  ,p_token_2                 => 'OWNER'
4028                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4029                                                         'XLA_OWNER_TYPE'
4030                                                         ,l_component_type_code
4031                                                         )
4032                  ,p_token_3                 => 'PAD_NAME'
4033                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4034                  ,p_token_4                 => 'PAD_OWNER'
4035                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4036                                                         'XLA_OWNER_TYPE'
4037                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4038                                                         )
4039                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4040                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4041                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4042                  ,p_ae_header_id            => NULL
4043 );
4044 RETURN l_output_value;
4045 EXCEPTION
4046   WHEN xla_exceptions_pkg.application_exception THEN
4047       RAISE;
4048   WHEN OTHERS THEN
4049        xla_exceptions_pkg.raise_message
4050            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_31');
4051 END AcctDerRule_31;
4052 --
4053 
4054 ---------------------------------------
4055 --
4056 -- PRIVATE FUNCTION
4057 --         AcctDerRule_32
4058 --
4059 ---------------------------------------
4060 FUNCTION AcctDerRule_32 (
4061   p_application_id              IN NUMBER
4062 , p_ae_header_id                IN NUMBER
4063 , p_side                        IN VARCHAR2 
4064 --Remittance Bank Account Unapplied Account
4065  , p_source_36            IN NUMBER
4066 , x_transaction_coa_id         OUT NOCOPY NUMBER
4067 , x_accounting_coa_id          OUT NOCOPY NUMBER
4068 , x_value_type_code            OUT NOCOPY VARCHAR2
4069 )
4070 RETURN NUMBER
4071 IS
4072 l_component_type       VARCHAR2(80)  ;
4073 l_component_code       VARCHAR2(30)  ;
4074 l_component_type_code  VARCHAR2(1)   ;
4075 l_component_appl_id    INTEGER       ;
4076 l_amb_context_code     VARCHAR2(30)  ;
4077 l_log_module           VARCHAR2(240) ;
4078 l_output_value         NUMBER        ;
4079 BEGIN
4080 IF g_log_enabled THEN
4081       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_32';
4082 END IF;
4083 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4084       trace
4085          (p_msg      => 'BEGIN of AcctDerRule_32'
4086          ,p_level    => C_LEVEL_PROCEDURE
4087          ,p_module   => l_log_module);
4088 END IF;
4089 --
4090 l_component_type         := 'AMB_ADR';
4091 l_component_code         := 'RMT_BNK_UNAPP_CCID';
4092 l_component_type_code    := 'S';
4093 l_component_appl_id      :=  222;
4094 l_amb_context_code       := 'DEFAULT';
4095 x_transaction_coa_id     :=  null;
4096 x_accounting_coa_id      :=  null;
4097 --
4098 
4099  --
4100   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4101       trace
4102          (p_msg      => 'END of AcctDerRule_32'
4103          ,p_level    => C_LEVEL_PROCEDURE
4104          ,p_module   => l_log_module);
4105   END IF;
4106   x_value_type_code := 'S';
4107   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_36));
4108   RETURN l_output_value;
4109 
4110 --
4111 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4112       trace
4113          (p_msg      => 'END of AcctDerRule_32(invalid)'
4114          ,p_level    => C_LEVEL_PROCEDURE
4115          ,p_module   => l_log_module);
4116 END IF;
4117 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4118 x_value_type_code := null;
4119 l_output_value    := null;
4120 xla_accounting_err_pkg.build_message
4121                  (p_appli_s_name            => 'XLA'
4122                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4123                  ,p_token_1                 => 'COMPONENT_NAME'
4124                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4125                                                             l_component_type
4126                                                           , l_component_code
4127                                                           , l_component_type_code
4128                                                           , l_component_appl_id
4132                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4129                                                           , l_amb_context_code
4130                                                           )
4131                  ,p_token_2                 => 'OWNER'
4133                                                         'XLA_OWNER_TYPE'
4134                                                         ,l_component_type_code
4135                                                         )
4136                  ,p_token_3                 => 'PAD_NAME'
4137                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4138                  ,p_token_4                 => 'PAD_OWNER'
4139                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4140                                                         'XLA_OWNER_TYPE'
4141                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4142                                                         )
4143                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4144                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4145                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4146                  ,p_ae_header_id            => NULL
4147 );
4148 RETURN l_output_value;
4149 EXCEPTION
4150   WHEN xla_exceptions_pkg.application_exception THEN
4151       RAISE;
4152   WHEN OTHERS THEN
4153        xla_exceptions_pkg.raise_message
4154            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_32');
4155 END AcctDerRule_32;
4156 --
4157 
4158 ---------------------------------------
4159 --
4160 -- PRIVATE FUNCTION
4161 --         AcctDerRule_33
4162 --
4163 ---------------------------------------
4164 FUNCTION AcctDerRule_33 (
4165   p_application_id              IN NUMBER
4166 , p_ae_header_id                IN NUMBER
4167 , p_side                        IN VARCHAR2 
4168 --Remittance Bank Account Unidentified Account
4169  , p_source_37            IN NUMBER
4170 , x_transaction_coa_id         OUT NOCOPY NUMBER
4171 , x_accounting_coa_id          OUT NOCOPY NUMBER
4172 , x_value_type_code            OUT NOCOPY VARCHAR2
4173 )
4174 RETURN NUMBER
4175 IS
4176 l_component_type       VARCHAR2(80)  ;
4177 l_component_code       VARCHAR2(30)  ;
4178 l_component_type_code  VARCHAR2(1)   ;
4179 l_component_appl_id    INTEGER       ;
4180 l_amb_context_code     VARCHAR2(30)  ;
4181 l_log_module           VARCHAR2(240) ;
4182 l_output_value         NUMBER        ;
4183 BEGIN
4184 IF g_log_enabled THEN
4185       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_33';
4186 END IF;
4187 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4188       trace
4189          (p_msg      => 'BEGIN of AcctDerRule_33'
4190          ,p_level    => C_LEVEL_PROCEDURE
4191          ,p_module   => l_log_module);
4192 END IF;
4193 --
4194 l_component_type         := 'AMB_ADR';
4195 l_component_code         := 'RMT_BNK_UNID_CCID';
4196 l_component_type_code    := 'S';
4197 l_component_appl_id      :=  222;
4198 l_amb_context_code       := 'DEFAULT';
4199 x_transaction_coa_id     :=  null;
4200 x_accounting_coa_id      :=  null;
4201 --
4202 
4203  --
4204   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4205       trace
4206          (p_msg      => 'END of AcctDerRule_33'
4207          ,p_level    => C_LEVEL_PROCEDURE
4208          ,p_module   => l_log_module);
4209   END IF;
4210   x_value_type_code := 'S';
4211   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_37));
4212   RETURN l_output_value;
4213 
4214 --
4215 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4216       trace
4217          (p_msg      => 'END of AcctDerRule_33(invalid)'
4218          ,p_level    => C_LEVEL_PROCEDURE
4219          ,p_module   => l_log_module);
4220 END IF;
4221 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4222 x_value_type_code := null;
4223 l_output_value    := null;
4224 xla_accounting_err_pkg.build_message
4225                  (p_appli_s_name            => 'XLA'
4226                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4227                  ,p_token_1                 => 'COMPONENT_NAME'
4228                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4229                                                             l_component_type
4230                                                           , l_component_code
4231                                                           , l_component_type_code
4232                                                           , l_component_appl_id
4233                                                           , l_amb_context_code
4234                                                           )
4235                  ,p_token_2                 => 'OWNER'
4236                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4237                                                         'XLA_OWNER_TYPE'
4238                                                         ,l_component_type_code
4239                                                         )
4240                  ,p_token_3                 => 'PAD_NAME'
4241                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4242                  ,p_token_4                 => 'PAD_OWNER'
4246                                                         )
4243                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4244                                                         'XLA_OWNER_TYPE'
4245                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4247                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4248                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4249                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4250                  ,p_ae_header_id            => NULL
4251 );
4252 RETURN l_output_value;
4253 EXCEPTION
4254   WHEN xla_exceptions_pkg.application_exception THEN
4255       RAISE;
4256   WHEN OTHERS THEN
4257        xla_exceptions_pkg.raise_message
4258            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_33');
4259 END AcctDerRule_33;
4260 --
4261 
4262 ---------------------------------------
4263 --
4264 -- PRIVATE FUNCTION
4265 --         AcctDerRule_34
4266 --
4267 ---------------------------------------
4268 FUNCTION AcctDerRule_34 (
4269   p_application_id              IN NUMBER
4270 , p_ae_header_id                IN NUMBER
4271 , p_side                        IN VARCHAR2 
4272 --System Gain Account
4273  , p_source_34            IN NUMBER
4274 , x_transaction_coa_id         OUT NOCOPY NUMBER
4275 , x_accounting_coa_id          OUT NOCOPY NUMBER
4276 , x_value_type_code            OUT NOCOPY VARCHAR2
4277 )
4278 RETURN NUMBER
4279 IS
4280 l_component_type       VARCHAR2(80)  ;
4281 l_component_code       VARCHAR2(30)  ;
4282 l_component_type_code  VARCHAR2(1)   ;
4283 l_component_appl_id    INTEGER       ;
4284 l_amb_context_code     VARCHAR2(30)  ;
4285 l_log_module           VARCHAR2(240) ;
4286 l_output_value         NUMBER        ;
4287 BEGIN
4288 IF g_log_enabled THEN
4289       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_34';
4290 END IF;
4291 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4292       trace
4293          (p_msg      => 'BEGIN of AcctDerRule_34'
4294          ,p_level    => C_LEVEL_PROCEDURE
4295          ,p_module   => l_log_module);
4296 END IF;
4297 --
4298 l_component_type         := 'AMB_ADR';
4299 l_component_code         := 'SYS_GAIN_CCID';
4300 l_component_type_code    := 'S';
4301 l_component_appl_id      :=  222;
4302 l_amb_context_code       := 'DEFAULT';
4303 x_transaction_coa_id     :=  null;
4304 x_accounting_coa_id      :=  null;
4305 --
4306 
4307  --
4308   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4309       trace
4310          (p_msg      => 'END of AcctDerRule_34'
4311          ,p_level    => C_LEVEL_PROCEDURE
4312          ,p_module   => l_log_module);
4313   END IF;
4314   x_value_type_code := 'S';
4315   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_34));
4316   RETURN l_output_value;
4317 
4318 --
4319 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4320       trace
4321          (p_msg      => 'END of AcctDerRule_34(invalid)'
4322          ,p_level    => C_LEVEL_PROCEDURE
4323          ,p_module   => l_log_module);
4324 END IF;
4325 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4326 x_value_type_code := null;
4327 l_output_value    := null;
4328 xla_accounting_err_pkg.build_message
4329                  (p_appli_s_name            => 'XLA'
4330                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4331                  ,p_token_1                 => 'COMPONENT_NAME'
4332                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4333                                                             l_component_type
4334                                                           , l_component_code
4335                                                           , l_component_type_code
4336                                                           , l_component_appl_id
4337                                                           , l_amb_context_code
4338                                                           )
4339                  ,p_token_2                 => 'OWNER'
4340                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4341                                                         'XLA_OWNER_TYPE'
4342                                                         ,l_component_type_code
4343                                                         )
4344                  ,p_token_3                 => 'PAD_NAME'
4345                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4346                  ,p_token_4                 => 'PAD_OWNER'
4347                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4348                                                         'XLA_OWNER_TYPE'
4349                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4350                                                         )
4351                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4352                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4353                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4354                  ,p_ae_header_id            => NULL
4355 );
4356 RETURN l_output_value;
4357 EXCEPTION
4361        xla_exceptions_pkg.raise_message
4358   WHEN xla_exceptions_pkg.application_exception THEN
4359       RAISE;
4360   WHEN OTHERS THEN
4362            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_34');
4363 END AcctDerRule_34;
4364 --
4365 
4366 ---------------------------------------
4367 --
4368 -- PRIVATE FUNCTION
4369 --         AcctDerRule_35
4370 --
4371 ---------------------------------------
4372 FUNCTION AcctDerRule_35 (
4373   p_application_id              IN NUMBER
4374 , p_ae_header_id                IN NUMBER
4375 , p_side                        IN VARCHAR2 
4376 --System Loss Account
4377  , p_source_35            IN NUMBER
4378 , x_transaction_coa_id         OUT NOCOPY NUMBER
4379 , x_accounting_coa_id          OUT NOCOPY NUMBER
4380 , x_value_type_code            OUT NOCOPY VARCHAR2
4381 )
4382 RETURN NUMBER
4383 IS
4384 l_component_type       VARCHAR2(80)  ;
4385 l_component_code       VARCHAR2(30)  ;
4386 l_component_type_code  VARCHAR2(1)   ;
4387 l_component_appl_id    INTEGER       ;
4388 l_amb_context_code     VARCHAR2(30)  ;
4389 l_log_module           VARCHAR2(240) ;
4390 l_output_value         NUMBER        ;
4391 BEGIN
4392 IF g_log_enabled THEN
4393       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_35';
4394 END IF;
4395 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4396       trace
4397          (p_msg      => 'BEGIN of AcctDerRule_35'
4398          ,p_level    => C_LEVEL_PROCEDURE
4399          ,p_module   => l_log_module);
4400 END IF;
4401 --
4402 l_component_type         := 'AMB_ADR';
4403 l_component_code         := 'SYS_LOSS_CCID';
4404 l_component_type_code    := 'S';
4405 l_component_appl_id      :=  222;
4406 l_amb_context_code       := 'DEFAULT';
4407 x_transaction_coa_id     :=  null;
4408 x_accounting_coa_id      :=  null;
4409 --
4410 
4411  --
4412   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4413       trace
4414          (p_msg      => 'END of AcctDerRule_35'
4415          ,p_level    => C_LEVEL_PROCEDURE
4416          ,p_module   => l_log_module);
4417   END IF;
4418   x_value_type_code := 'S';
4419   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_35));
4420   RETURN l_output_value;
4421 
4422 --
4423 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4424       trace
4425          (p_msg      => 'END of AcctDerRule_35(invalid)'
4426          ,p_level    => C_LEVEL_PROCEDURE
4427          ,p_module   => l_log_module);
4428 END IF;
4429 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4430 x_value_type_code := null;
4431 l_output_value    := null;
4432 xla_accounting_err_pkg.build_message
4433                  (p_appli_s_name            => 'XLA'
4434                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4435                  ,p_token_1                 => 'COMPONENT_NAME'
4436                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4437                                                             l_component_type
4438                                                           , l_component_code
4439                                                           , l_component_type_code
4440                                                           , l_component_appl_id
4441                                                           , l_amb_context_code
4442                                                           )
4443                  ,p_token_2                 => 'OWNER'
4444                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4445                                                         'XLA_OWNER_TYPE'
4446                                                         ,l_component_type_code
4447                                                         )
4448                  ,p_token_3                 => 'PAD_NAME'
4449                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4450                  ,p_token_4                 => 'PAD_OWNER'
4451                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4452                                                         'XLA_OWNER_TYPE'
4453                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4454                                                         )
4455                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4456                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4457                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4458                  ,p_ae_header_id            => NULL
4459 );
4460 RETURN l_output_value;
4461 EXCEPTION
4462   WHEN xla_exceptions_pkg.application_exception THEN
4463       RAISE;
4464   WHEN OTHERS THEN
4465        xla_exceptions_pkg.raise_message
4466            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_35');
4467 END AcctDerRule_35;
4468 --
4469 
4470 ---------------------------------------
4471 --
4472 -- PRIVATE FUNCTION
4473 --         AcctDerRule_36
4474 --
4475 ---------------------------------------
4476 FUNCTION AcctDerRule_36 (
4477   p_application_id              IN NUMBER
4478 , p_ae_header_id                IN NUMBER
4479 , p_side                        IN VARCHAR2 
4480 --Transaction Distribution GL Account
4481  , p_source_38            IN NUMBER
4485 )
4482 , x_transaction_coa_id         OUT NOCOPY NUMBER
4483 , x_accounting_coa_id          OUT NOCOPY NUMBER
4484 , x_value_type_code            OUT NOCOPY VARCHAR2
4486 RETURN NUMBER
4487 IS
4488 l_component_type       VARCHAR2(80)  ;
4489 l_component_code       VARCHAR2(30)  ;
4490 l_component_type_code  VARCHAR2(1)   ;
4491 l_component_appl_id    INTEGER       ;
4492 l_amb_context_code     VARCHAR2(30)  ;
4493 l_log_module           VARCHAR2(240) ;
4494 l_output_value         NUMBER        ;
4495 BEGIN
4496 IF g_log_enabled THEN
4497       l_log_module := C_DEFAULT_MODULE||'.AcctDerRule_36';
4498 END IF;
4499 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4500       trace
4501          (p_msg      => 'BEGIN of AcctDerRule_36'
4502          ,p_level    => C_LEVEL_PROCEDURE
4503          ,p_module   => l_log_module);
4504 END IF;
4505 --
4506 l_component_type         := 'AMB_ADR';
4507 l_component_code         := 'TRX_DIST_CCID';
4508 l_component_type_code    := 'S';
4509 l_component_appl_id      :=  222;
4510 l_amb_context_code       := 'DEFAULT';
4511 x_transaction_coa_id     :=  null;
4512 x_accounting_coa_id      :=  null;
4513 --
4514 
4515  --
4516   IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4517       trace
4518          (p_msg      => 'END of AcctDerRule_36'
4519          ,p_level    => C_LEVEL_PROCEDURE
4520          ,p_module   => l_log_module);
4521   END IF;
4522   x_value_type_code := 'S';
4523   l_output_value    := TO_NUMBER(TO_NUMBER(p_source_38));
4524   RETURN l_output_value;
4525 
4526 --
4527 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4528       trace
4529          (p_msg      => 'END of AcctDerRule_36(invalid)'
4530          ,p_level    => C_LEVEL_PROCEDURE
4531          ,p_module   => l_log_module);
4532 END IF;
4533 xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
4534 x_value_type_code := null;
4535 l_output_value    := null;
4536 xla_accounting_err_pkg.build_message
4537                  (p_appli_s_name            => 'XLA'
4538                  ,p_msg_name                => 'XLA_AP_INVALID_ADR'
4539                  ,p_token_1                 => 'COMPONENT_NAME'
4540                  ,p_value_1                 => xla_ae_sources_pkg.GetComponentName (
4541                                                             l_component_type
4542                                                           , l_component_code
4543                                                           , l_component_type_code
4544                                                           , l_component_appl_id
4545                                                           , l_amb_context_code
4546                                                           )
4547                  ,p_token_2                 => 'OWNER'
4548                  ,p_value_2                 => xla_lookups_pkg.get_meaning(
4549                                                         'XLA_OWNER_TYPE'
4550                                                         ,l_component_type_code
4551                                                         )
4552                  ,p_token_3                 => 'PAD_NAME'
4553                  ,p_value_3                 => xla_ae_journal_entry_pkg.g_cache_pad.pad_session_name
4554                  ,p_token_4                 => 'PAD_OWNER'
4555                  ,p_value_4                 => xla_lookups_pkg.get_meaning(
4556                                                         'XLA_OWNER_TYPE'
4557                                                         ,xla_ae_journal_entry_pkg.g_cache_pad.product_rule_type_code
4558                                                         )
4559                  ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
4560                  ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
4561                  ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id
4562                  ,p_ae_header_id            => NULL
4563 );
4564 RETURN l_output_value;
4565 EXCEPTION
4566   WHEN xla_exceptions_pkg.application_exception THEN
4567       RAISE;
4568   WHEN OTHERS THEN
4569        xla_exceptions_pkg.raise_message
4570            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctDerRule_36');
4571 END AcctDerRule_36;
4572 --
4573 
4574 ---------------------------------------
4575 --
4576 -- PRIVATE FUNCTION
4577 --         AcctLineType_37
4578 --
4579 ---------------------------------------
4580 PROCEDURE AcctLineType_37 (
4581   p_application_id        IN NUMBER
4582  ,p_event_id              IN NUMBER
4583  ,p_calculate_acctd_flag  IN VARCHAR2
4584  ,p_calculate_g_l_flag    IN VARCHAR2
4585  ,p_actual_flag           IN OUT VARCHAR2
4586  ,p_balance_type_code     OUT VARCHAR2
4587  ,p_gain_or_loss_ref      OUT VARCHAR2
4588  
4589 --Distribution GL Account
4590  , p_source_32            IN NUMBER
4591 --Distribution Source Type
4592  , p_source_39            IN VARCHAR2
4593 --Receivable Activity Type
4594  , p_source_40            IN VARCHAR2
4595 --Distribution Line Identifier
4596  , p_source_41            IN NUMBER
4597 --Distribution Type
4598  , p_source_42            IN VARCHAR2
4599 --Entered Amount
4600  , p_source_43            IN NUMBER
4601 --Currency Code
4602  , p_source_44            IN VARCHAR2
4603 --Exchange Date
4604  , p_source_45            IN DATE
4605 --Exchange Rate
4606  , p_source_46            IN NUMBER
4610  , p_source_48            IN NUMBER
4607 --Exchange Rate Type
4608  , p_source_47            IN VARCHAR2
4609 --Applied To Document Accounting Amount
4611 --Bill To Customer Account Identifier
4612  , p_source_49            IN NUMBER
4613 --Bill To Customer Site Use Identifier
4614  , p_source_50            IN NUMBER
4615 --SLA Party Type
4616  , p_source_51            IN VARCHAR2
4617 )
4618 IS
4619 
4620 l_component_type              VARCHAR2(80);
4621 l_component_code              VARCHAR2(30);
4622 l_component_type_code         VARCHAR2(1);
4623 l_component_appl_id           INTEGER;
4624 l_amb_context_code            VARCHAR2(30);
4625 l_entity_code                 VARCHAR2(30);
4626 l_event_class_code            VARCHAR2(30);
4627 l_ae_header_id                NUMBER;
4628 l_event_type_code             VARCHAR2(30);
4629 l_line_definition_code        VARCHAR2(30);
4630 l_line_definition_owner_code  VARCHAR2(1);
4631 --
4632 -- adr variables
4633 l_segment                     VARCHAR2(30);
4634 l_ccid                        NUMBER;
4635 l_adr_transaction_coa_id      NUMBER;
4636 l_adr_accounting_coa_id       NUMBER;
4637 l_adr_flexfield_segment_code  VARCHAR2(30);
4638 l_adr_flex_value_set_id       NUMBER;
4639 l_adr_value_type_code         VARCHAR2(30);
4640 l_adr_value_combination_id    NUMBER;
4641 l_adr_value_segment_code      VARCHAR2(30);
4642 
4643 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
4644 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
4645 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
4646 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
4647 
4648 -- 4262811 Variables ------------------------------------------------------------------------------------------
4649 l_entered_amt_idx             NUMBER;
4650 l_accted_amt_idx              NUMBER;
4651 l_acc_rev_flag                VARCHAR2(1);
4652 l_accrual_line_num            NUMBER;
4653 l_tmp_amt                     NUMBER;
4654 l_acc_rev_natural_side_code   VARCHAR2(1);
4655 
4656 l_num_entries                 NUMBER;
4657 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
4658 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
4659 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
4660 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
4661 l_recog_line_1                NUMBER;
4662 l_recog_line_2                NUMBER;
4663 
4664 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
4665 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
4666 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
4667 
4668 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
4669 
4670 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
4671 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
4672 
4673 ---------------------------------------------------------------------------------------------------------------
4674 
4675 
4676 --
4677 -- bulk performance
4678 --
4679 l_balance_type_code           VARCHAR2(1);
4680 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
4681 l_log_module                  VARCHAR2(240);
4682 
4683 --
4684 -- Upgrade strategy
4685 --
4686 l_actual_upg_option           VARCHAR2(1);
4687 l_enc_upg_option           VARCHAR2(1);
4688 
4689 --
4690 BEGIN
4691 --
4692 IF g_log_enabled THEN
4693       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_37';
4694 END IF;
4695 --
4696 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
4697 
4698       trace
4699          (p_msg      => 'BEGIN of AcctLineType_37'
4700          ,p_level    => C_LEVEL_PROCEDURE
4701          ,p_module   => l_log_module);
4702 
4703 END IF;
4704 --
4705 l_component_type             := 'AMB_JLT';
4706 l_component_code             := 'ADJ';
4707 l_component_type_code        := 'S';
4708 l_component_appl_id          :=  222;
4709 l_amb_context_code           := 'DEFAULT';
4710 l_entity_code                := 'ADJUSTMENTS';
4711 l_event_class_code           := 'ADJUSTMENT';
4712 l_event_type_code            := 'ADJUSTMENT_ALL';
4713 l_line_definition_owner_code := 'S';
4714 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
4715 --
4716 l_balance_type_code          := 'A';
4717 l_segment                     := NULL;
4718 l_ccid                        := NULL;
4719 l_adr_transaction_coa_id      := NULL;
4720 l_adr_accounting_coa_id       := NULL;
4721 l_adr_flexfield_segment_code  := NULL;
4722 l_adr_flex_value_set_id       := NULL;
4723 l_adr_value_type_code         := NULL;
4724 l_adr_value_combination_id    := NULL;
4725 l_adr_value_segment_code      := NULL;
4726 
4727 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
4728 l_bflow_class_code           := '';    -- 4219869 Business Flow
4729 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
4730 l_budgetary_control_flag     := 'N';
4731 
4732 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
4733 l_bflow_applied_to_amt       := NULL; -- 5132302
4734 l_entered_amt_idx            := NULL;          -- 4262811
4735 l_accted_amt_idx             := NULL;          -- 4262811
4736 l_acc_rev_flag               := NULL;          -- 4262811
4740  
4737 l_accrual_line_num           := NULL;          -- 4262811
4738 l_tmp_amt                    := NULL;          -- 4262811
4739 --
4741 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
4742     l_balance_type_code <> 'B' THEN
4743 IF NVL(p_source_39,'
4744 ') =  'ADJ' AND 
4745 NVL(p_source_40,'
4746 ') <>  'ENDORSEMENT'
4747  THEN 
4748 
4749    --
4750    XLA_AE_LINES_PKG.SetNewLine;
4751 
4752    p_balance_type_code          := l_balance_type_code;
4753    -- set the flag so later we will know whether the gain loss line needs to be created
4754    
4755    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
4756      p_actual_flag :='A';
4757    END IF;
4758 
4759    --
4760    -- bulk performance
4761    --
4762    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
4763                                       p_header_num   => 0); -- 4262811
4764    --
4765    -- set accounting line options
4766    --
4767    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
4768            p_natural_side_code          => 'C'
4769          , p_gain_or_loss_flag          => 'N'
4770          , p_gl_transfer_mode_code      => 'S'
4771          , p_acct_entry_type_code       => 'A'
4772          , p_switch_side_flag           => 'Y'
4773          , p_merge_duplicate_code       => 'A'
4774          );
4775    --
4776    l_acc_rev_natural_side_code := 'D';  -- 4262811
4777    -- 
4778    --
4779    -- set accounting line type info
4780    --
4781    xla_ae_lines_pkg.SetAcctLineType
4782       (p_component_type             => l_component_type
4783       ,p_event_type_code            => l_event_type_code
4784       ,p_line_definition_owner_code => l_line_definition_owner_code
4785       ,p_line_definition_code       => l_line_definition_code
4786       ,p_accounting_line_code       => l_component_code
4787       ,p_accounting_line_type_code  => l_component_type_code
4788       ,p_accounting_line_appl_id    => l_component_appl_id
4789       ,p_amb_context_code           => l_amb_context_code
4790       ,p_entity_code                => l_entity_code
4791       ,p_event_class_code           => l_event_class_code);
4792    --
4793    -- set accounting class
4794    --
4795    xla_ae_lines_pkg.SetAcctClass(
4796            p_accounting_class_code  => 'ADJ'
4797          , p_ae_header_id           => l_ae_header_id
4798          );
4799 
4800    --
4801    -- set rounding class
4802    --
4803    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
4804                       'RECEIVABLE';
4805 
4806    --
4807    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
4808    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
4809    --
4810    -- bulk performance
4811    --
4812    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
4813 
4814    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
4815       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
4816 
4817    -- 4955764
4818    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
4819       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
4820 
4821    -- 4458381 Public Sector Enh
4822    
4823    --
4824    -- set accounting attributes for the line type
4825    --
4826    l_entered_amt_idx := 3;
4827    l_accted_amt_idx  := 8;
4828    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
4829    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
4830    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
4831    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
4832    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
4833    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
4834    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
4835    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
4836    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
4837    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
4838    l_rec_acct_attrs.array_date_value(5)  := p_source_45;
4839    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
4840    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
4841    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
4842    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
4843    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
4844    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
4845    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
4846    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
4847    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
4848    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
4849    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
4850    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
4851 
4852    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
4853    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
4854 
4858    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
4855    ---------------------------------------------------------------------------------------------------------------
4856    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
4857    ---------------------------------------------------------------------------------------------------------------
4859 
4860    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4861    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
4862 
4863    IF xla_accounting_cache_pkg.GetValueChar
4864          (p_source_code         => 'LEDGER_CATEGORY_CODE'
4865          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
4866    AND l_bflow_method_code = 'PRIOR_ENTRY'
4867 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
4868    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
4869          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
4870        )
4871    THEN
4872          xla_ae_lines_pkg.BflowUpgEntry
4873            (p_business_method_code    => l_bflow_method_code
4874            ,p_business_class_code     => l_bflow_class_code
4875            ,p_balance_type            => l_balance_type_code);
4876    ELSE
4877       NULL;
4878 -- No business flow processing for business flow method of NONE.
4879    END IF;
4880 
4881    --
4882    -- call analytical criteria
4883    --
4884    
4885    --
4886    -- call description
4887    --
4888    -- No description or it is inherited.
4889    --
4890    -- call ADRs
4891    -- Bug 4922099
4892    --
4893    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
4894         (NVL(l_actual_upg_option, 'N') = 'O') OR
4895         (NVL(l_enc_upg_option, 'N') = 'O')
4896       )
4897    THEN
4898    NULL;
4899    --
4900    --
4901    
4902   l_ccid := AcctDerRule_29(
4903            p_application_id           => p_application_id
4904          , p_ae_header_id             => l_ae_header_id 
4905 , p_source_32 => p_source_32
4906          , x_transaction_coa_id       => l_adr_transaction_coa_id
4907          , x_accounting_coa_id        => l_adr_accounting_coa_id
4908          , x_value_type_code          => l_adr_value_type_code
4909          , p_side                     => 'NA'
4910    );
4911 
4912    xla_ae_lines_pkg.set_ccid(
4913     p_code_combination_id          => l_ccid
4914   , p_value_type_code              => l_adr_value_type_code
4915   , p_transaction_coa_id           => l_adr_transaction_coa_id
4916   , p_accounting_coa_id            => l_adr_accounting_coa_id
4917   , p_adr_code                     => 'DIST_CCID'
4918   , p_adr_type_code                => 'S'
4919   , p_component_type               => l_component_type
4920   , p_component_code               => l_component_code
4921   , p_component_type_code          => l_component_type_code
4922   , p_component_appl_id            => l_component_appl_id
4923   , p_amb_context_code             => l_amb_context_code
4924   , p_side                         => 'NA'
4925   );
4926 
4927 
4928    --
4929    --
4930    END IF;
4931    --
4932    -- Bug 4922099
4933    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
4934           (NVL(l_enc_upg_option, 'N') = 'O')
4935         ) AND
4936         (l_bflow_method_code = 'PRIOR_ENTRY')
4937       )
4938    THEN
4939       IF
4940       --
4941       1 = 2
4942       --
4943       THEN
4944       xla_accounting_err_pkg.build_message
4945                                     (p_appli_s_name            => 'XLA'
4946                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4947                                     ,p_token_1                 => 'LINE_NUMBER'
4948                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
4949                                     ,p_token_2                 => 'LINE_TYPE_NAME'
4950                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
4951                                                                              l_component_type
4952                                                                             ,l_component_code
4953                                                                             ,l_component_type_code
4954                                                                             ,l_component_appl_id
4955                                                                             ,l_amb_context_code
4956                                                                             ,l_entity_code
4957                                                                             ,l_event_class_code
4958                                                                            )
4959                                     ,p_token_3                 => 'OWNER'
4960                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
4961                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
4962                                                                           ,p_lookup_code    => l_component_type_code
4963                                                                          )
4964                                     ,p_token_4                 => 'PRODUCT_NAME'
4968                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
4965                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
4966                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
4967                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
4969                                     ,p_ae_header_id            =>  NULL
4970                                        );
4971 
4972         IF (C_LEVEL_ERROR>= g_log_level) THEN
4973                  trace
4974                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
4975                       ,p_level    => C_LEVEL_ERROR
4976                       ,p_module   => l_log_module);
4977         END IF;
4978       END IF;
4979    END IF;
4980    --
4981    --
4982    ------------------------------------------------------------------------------------------------
4983    -- 4219869 Business Flow
4984    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
4985    -- Prior Entry.  Currently, the following code is always generated.
4986    ------------------------------------------------------------------------------------------------
4987    XLA_AE_LINES_PKG.ValidateCurrentLine;
4988 
4989    ------------------------------------------------------------------------------------
4990    -- 4219869 Business Flow
4991    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
4992    ------------------------------------------------------------------------------------
4993    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
4994 
4995    ----------------------------------------------------------------------------------
4996    -- 4219869 Business Flow
4997    -- Update journal entry status -- Need to generate this within IF <condition>
4998    ----------------------------------------------------------------------------------
4999    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5000          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5001          ,p_balance_type_code => l_balance_type_code
5002          );
5003 
5004    -------------------------------------------------------------------------------------------
5005    -- 4262811 - Generate the Accrual Reversal lines
5006    -------------------------------------------------------------------------------------------
5007    BEGIN
5008       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5009                               (g_array_event(p_event_id).array_value_num('header_index'));
5010       IF l_acc_rev_flag IS NULL THEN
5011          l_acc_rev_flag := 'N';
5012       END IF;
5013    EXCEPTION
5014       WHEN OTHERS THEN
5015          l_acc_rev_flag := 'N';
5016    END;
5017    --
5018    IF (l_acc_rev_flag = 'Y') THEN
5019 
5020        -- 4645092  ------------------------------------------------------------------------------
5021        -- To allow MPA report to determine if it should generate report process
5022        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5023        ------------------------------------------------------------------------------------------
5024 
5025        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5026        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5027    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5028    -- call ADRs
5029    -- Bug 4922099
5030    --
5031    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5032         (NVL(l_actual_upg_option, 'N') = 'O') OR
5033         (NVL(l_enc_upg_option, 'N') = 'O')
5034       )
5035    THEN
5036    NULL;
5037    --
5038    --
5039    
5040   l_ccid := AcctDerRule_29(
5041            p_application_id           => p_application_id
5042          , p_ae_header_id             => l_ae_header_id 
5043 , p_source_32 => p_source_32
5044          , x_transaction_coa_id       => l_adr_transaction_coa_id
5045          , x_accounting_coa_id        => l_adr_accounting_coa_id
5046          , x_value_type_code          => l_adr_value_type_code
5047          , p_side                     => 'NA'
5048    );
5049 
5050    xla_ae_lines_pkg.set_ccid(
5051     p_code_combination_id          => l_ccid
5052   , p_value_type_code              => l_adr_value_type_code
5053   , p_transaction_coa_id           => l_adr_transaction_coa_id
5054   , p_accounting_coa_id            => l_adr_accounting_coa_id
5055   , p_adr_code                     => 'DIST_CCID'
5056   , p_adr_type_code                => 'S'
5057   , p_component_type               => l_component_type
5058   , p_component_code               => l_component_code
5059   , p_component_type_code          => l_component_type_code
5060   , p_component_appl_id            => l_component_appl_id
5061   , p_amb_context_code             => l_amb_context_code
5062   , p_side                         => 'NA'
5063   );
5064 
5065 
5066    --
5067    --
5068    END IF;
5069 
5070        --
5071        -- Update the line information that should be overwritten
5072        --
5073        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5074                                          p_header_num   => 1);
5075        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5076 
5080           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5077        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5078 
5079        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5081        END IF;
5082 
5083       --
5084       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5085       --
5086       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5087           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5088       ELSE
5089           ---------------------------------------------------------------------------------------------------
5090           -- 4262811a Switch Sign
5091           ---------------------------------------------------------------------------------------------------
5092           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5093           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5094                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5095           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5096                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5097           -- 5132302
5098           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5099                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5100 
5101       END IF;
5102 
5103       -- 4955764
5104       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5105       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5106 
5107 
5108       XLA_AE_LINES_PKG.ValidateCurrentLine;
5109       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5110 
5111       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5112                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5113                ,p_balance_type_code => l_balance_type_code);
5114 
5115    END IF;
5116 
5117    -----------------------------------------------------------------------------------------
5118    -- 4262811 Multiperiod Accounting
5119    -----------------------------------------------------------------------------------------
5120      -- No MPA option is assigned.
5121 
5122 
5123 END IF;
5124 END IF;
5125 --
5126 
5127 --
5128 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5129    trace
5130       (p_msg      => 'END of AcctLineType_37'
5131       ,p_level    => C_LEVEL_PROCEDURE
5132       ,p_module   => l_log_module);
5133 END IF;
5134 --
5135 EXCEPTION
5136   WHEN xla_exceptions_pkg.application_exception THEN
5137       RAISE;
5138   WHEN OTHERS THEN
5139        xla_exceptions_pkg.raise_message
5140            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_37');
5141 END AcctLineType_37;
5142 --
5143 
5144 ---------------------------------------
5145 --
5146 -- PRIVATE FUNCTION
5147 --         AcctLineType_38
5148 --
5149 ---------------------------------------
5150 PROCEDURE AcctLineType_38 (
5151   p_application_id        IN NUMBER
5152  ,p_event_id              IN NUMBER
5153  ,p_calculate_acctd_flag  IN VARCHAR2
5154  ,p_calculate_g_l_flag    IN VARCHAR2
5155  ,p_actual_flag           IN OUT VARCHAR2
5156  ,p_balance_type_code     OUT VARCHAR2
5157  ,p_gain_or_loss_ref      OUT VARCHAR2
5158  
5159 --Distribution GL Account
5160  , p_source_32            IN NUMBER
5161 --Distribution Source Type
5162  , p_source_39            IN VARCHAR2
5163 --Receivable Activity Type
5164  , p_source_40            IN VARCHAR2
5165 --Distribution Line Identifier
5166  , p_source_41            IN NUMBER
5167 --Distribution Type
5168  , p_source_42            IN VARCHAR2
5169 --Entered Amount
5170  , p_source_43            IN NUMBER
5171 --Currency Code
5172  , p_source_44            IN VARCHAR2
5173 --Exchange Date
5174  , p_source_45            IN DATE
5175 --Exchange Rate
5176  , p_source_46            IN NUMBER
5177 --Exchange Rate Type
5178  , p_source_47            IN VARCHAR2
5179 --Applied To Document Accounting Amount
5180  , p_source_48            IN NUMBER
5181 --Bill To Customer Account Identifier
5182  , p_source_49            IN NUMBER
5183 --Bill To Customer Site Use Identifier
5184  , p_source_50            IN NUMBER
5185 --SLA Party Type
5186  , p_source_51            IN VARCHAR2
5187 )
5188 IS
5189 
5190 l_component_type              VARCHAR2(80);
5191 l_component_code              VARCHAR2(30);
5192 l_component_type_code         VARCHAR2(1);
5193 l_component_appl_id           INTEGER;
5194 l_amb_context_code            VARCHAR2(30);
5195 l_entity_code                 VARCHAR2(30);
5196 l_event_class_code            VARCHAR2(30);
5197 l_ae_header_id                NUMBER;
5198 l_event_type_code             VARCHAR2(30);
5199 l_line_definition_code        VARCHAR2(30);
5200 l_line_definition_owner_code  VARCHAR2(1);
5201 --
5202 -- adr variables
5203 l_segment                     VARCHAR2(30);
5204 l_ccid                        NUMBER;
5208 l_adr_flex_value_set_id       NUMBER;
5205 l_adr_transaction_coa_id      NUMBER;
5206 l_adr_accounting_coa_id       NUMBER;
5207 l_adr_flexfield_segment_code  VARCHAR2(30);
5209 l_adr_value_type_code         VARCHAR2(30);
5210 l_adr_value_combination_id    NUMBER;
5211 l_adr_value_segment_code      VARCHAR2(30);
5212 
5213 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5214 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5215 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5216 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5217 
5218 -- 4262811 Variables ------------------------------------------------------------------------------------------
5219 l_entered_amt_idx             NUMBER;
5220 l_accted_amt_idx              NUMBER;
5221 l_acc_rev_flag                VARCHAR2(1);
5222 l_accrual_line_num            NUMBER;
5223 l_tmp_amt                     NUMBER;
5224 l_acc_rev_natural_side_code   VARCHAR2(1);
5225 
5226 l_num_entries                 NUMBER;
5227 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5228 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5229 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5230 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5231 l_recog_line_1                NUMBER;
5232 l_recog_line_2                NUMBER;
5233 
5234 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5235 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5236 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5237 
5238 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5239 
5240 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5241 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5242 
5243 ---------------------------------------------------------------------------------------------------------------
5244 
5245 
5246 --
5247 -- bulk performance
5248 --
5249 l_balance_type_code           VARCHAR2(1);
5250 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5251 l_log_module                  VARCHAR2(240);
5252 
5253 --
5254 -- Upgrade strategy
5255 --
5256 l_actual_upg_option           VARCHAR2(1);
5257 l_enc_upg_option           VARCHAR2(1);
5258 
5259 --
5260 BEGIN
5261 --
5262 IF g_log_enabled THEN
5263       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_38';
5264 END IF;
5265 --
5266 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5267 
5268       trace
5269          (p_msg      => 'BEGIN of AcctLineType_38'
5270          ,p_level    => C_LEVEL_PROCEDURE
5271          ,p_module   => l_log_module);
5272 
5273 END IF;
5274 --
5275 l_component_type             := 'AMB_JLT';
5276 l_component_code             := 'ADJ_BR_ENDORSE';
5277 l_component_type_code        := 'S';
5278 l_component_appl_id          :=  222;
5279 l_amb_context_code           := 'DEFAULT';
5280 l_entity_code                := 'ADJUSTMENTS';
5281 l_event_class_code           := 'ADJUSTMENT';
5282 l_event_type_code            := 'ADJUSTMENT_ALL';
5283 l_line_definition_owner_code := 'S';
5284 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
5285 --
5286 l_balance_type_code          := 'A';
5287 l_segment                     := NULL;
5288 l_ccid                        := NULL;
5289 l_adr_transaction_coa_id      := NULL;
5290 l_adr_accounting_coa_id       := NULL;
5291 l_adr_flexfield_segment_code  := NULL;
5292 l_adr_flex_value_set_id       := NULL;
5293 l_adr_value_type_code         := NULL;
5294 l_adr_value_combination_id    := NULL;
5295 l_adr_value_segment_code      := NULL;
5296 
5297 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5298 l_bflow_class_code           := '';    -- 4219869 Business Flow
5299 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5300 l_budgetary_control_flag     := 'N';
5301 
5302 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5303 l_bflow_applied_to_amt       := NULL; -- 5132302
5304 l_entered_amt_idx            := NULL;          -- 4262811
5305 l_accted_amt_idx             := NULL;          -- 4262811
5306 l_acc_rev_flag               := NULL;          -- 4262811
5307 l_accrual_line_num           := NULL;          -- 4262811
5308 l_tmp_amt                    := NULL;          -- 4262811
5309 --
5310  
5311 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5312     l_balance_type_code <> 'B' THEN
5313 IF NVL(p_source_39,'
5314 ') =  'ADJ' AND 
5315 NVL(p_source_40,'
5316 ') =  'ENDORSEMENT'
5317  THEN 
5318 
5319    --
5320    XLA_AE_LINES_PKG.SetNewLine;
5321 
5322    p_balance_type_code          := l_balance_type_code;
5323    -- set the flag so later we will know whether the gain loss line needs to be created
5324    
5325    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5326      p_actual_flag :='A';
5327    END IF;
5328 
5329    --
5330    -- bulk performance
5331    --
5332    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5333                                       p_header_num   => 0); -- 4262811
5334    --
5335    -- set accounting line options
5336    --
5337    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5341          , p_acct_entry_type_code       => 'A'
5338            p_natural_side_code          => 'C'
5339          , p_gain_or_loss_flag          => 'N'
5340          , p_gl_transfer_mode_code      => 'S'
5342          , p_switch_side_flag           => 'Y'
5343          , p_merge_duplicate_code       => 'A'
5344          );
5345    --
5346    l_acc_rev_natural_side_code := 'D';  -- 4262811
5347    -- 
5348    --
5349    -- set accounting line type info
5350    --
5351    xla_ae_lines_pkg.SetAcctLineType
5352       (p_component_type             => l_component_type
5353       ,p_event_type_code            => l_event_type_code
5354       ,p_line_definition_owner_code => l_line_definition_owner_code
5355       ,p_line_definition_code       => l_line_definition_code
5356       ,p_accounting_line_code       => l_component_code
5357       ,p_accounting_line_type_code  => l_component_type_code
5358       ,p_accounting_line_appl_id    => l_component_appl_id
5359       ,p_amb_context_code           => l_amb_context_code
5360       ,p_entity_code                => l_entity_code
5361       ,p_event_class_code           => l_event_class_code);
5362    --
5363    -- set accounting class
5364    --
5365    xla_ae_lines_pkg.SetAcctClass(
5366            p_accounting_class_code  => 'ENDORSEMENT'
5367          , p_ae_header_id           => l_ae_header_id
5368          );
5369 
5370    --
5371    -- set rounding class
5372    --
5373    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5374                       'RECEIVABLE';
5375 
5376    --
5377    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5378    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5379    --
5380    -- bulk performance
5381    --
5382    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5383 
5384    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5385       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5386 
5387    -- 4955764
5388    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5389       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5390 
5391    -- 4458381 Public Sector Enh
5392    
5393    --
5394    -- set accounting attributes for the line type
5395    --
5396    l_entered_amt_idx := 3;
5397    l_accted_amt_idx  := 8;
5398    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5399    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5400    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
5401    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5402    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
5403    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5404    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
5405    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5406    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
5407    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5408    l_rec_acct_attrs.array_date_value(5)  := p_source_45;
5409    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5410    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
5411    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5412    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
5413    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
5414    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
5415    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
5416    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
5417    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
5418    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
5419    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
5420    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
5421 
5422    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5423    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5424 
5425    ---------------------------------------------------------------------------------------------------------------
5426    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5427    ---------------------------------------------------------------------------------------------------------------
5428    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5429 
5430    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5431    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5432 
5433    IF xla_accounting_cache_pkg.GetValueChar
5434          (p_source_code         => 'LEDGER_CATEGORY_CODE'
5435          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
5436    AND l_bflow_method_code = 'PRIOR_ENTRY'
5437 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
5438    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
5439          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
5440        )
5441    THEN
5442          xla_ae_lines_pkg.BflowUpgEntry
5443            (p_business_method_code    => l_bflow_method_code
5447       NULL;
5444            ,p_business_class_code     => l_bflow_class_code
5445            ,p_balance_type            => l_balance_type_code);
5446    ELSE
5448 -- No business flow processing for business flow method of NONE.
5449    END IF;
5450 
5451    --
5452    -- call analytical criteria
5453    --
5454    
5455    --
5456    -- call description
5457    --
5458    -- No description or it is inherited.
5459    --
5460    -- call ADRs
5461    -- Bug 4922099
5462    --
5463    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5464         (NVL(l_actual_upg_option, 'N') = 'O') OR
5465         (NVL(l_enc_upg_option, 'N') = 'O')
5466       )
5467    THEN
5468    NULL;
5469    --
5470    --
5471    
5472   l_ccid := AcctDerRule_29(
5473            p_application_id           => p_application_id
5474          , p_ae_header_id             => l_ae_header_id 
5475 , p_source_32 => p_source_32
5476          , x_transaction_coa_id       => l_adr_transaction_coa_id
5477          , x_accounting_coa_id        => l_adr_accounting_coa_id
5478          , x_value_type_code          => l_adr_value_type_code
5479          , p_side                     => 'NA'
5480    );
5481 
5482    xla_ae_lines_pkg.set_ccid(
5483     p_code_combination_id          => l_ccid
5484   , p_value_type_code              => l_adr_value_type_code
5485   , p_transaction_coa_id           => l_adr_transaction_coa_id
5486   , p_accounting_coa_id            => l_adr_accounting_coa_id
5487   , p_adr_code                     => 'DIST_CCID'
5488   , p_adr_type_code                => 'S'
5489   , p_component_type               => l_component_type
5490   , p_component_code               => l_component_code
5491   , p_component_type_code          => l_component_type_code
5492   , p_component_appl_id            => l_component_appl_id
5493   , p_amb_context_code             => l_amb_context_code
5494   , p_side                         => 'NA'
5495   );
5496 
5497 
5498    --
5499    --
5500    END IF;
5501    --
5502    -- Bug 4922099
5503    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
5504           (NVL(l_enc_upg_option, 'N') = 'O')
5505         ) AND
5506         (l_bflow_method_code = 'PRIOR_ENTRY')
5507       )
5508    THEN
5509       IF
5510       --
5511       1 = 2
5512       --
5513       THEN
5514       xla_accounting_err_pkg.build_message
5515                                     (p_appli_s_name            => 'XLA'
5516                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5517                                     ,p_token_1                 => 'LINE_NUMBER'
5518                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
5519                                     ,p_token_2                 => 'LINE_TYPE_NAME'
5520                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
5521                                                                              l_component_type
5522                                                                             ,l_component_code
5523                                                                             ,l_component_type_code
5524                                                                             ,l_component_appl_id
5525                                                                             ,l_amb_context_code
5526                                                                             ,l_entity_code
5527                                                                             ,l_event_class_code
5528                                                                            )
5529                                     ,p_token_3                 => 'OWNER'
5530                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
5531                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
5532                                                                           ,p_lookup_code    => l_component_type_code
5533                                                                          )
5534                                     ,p_token_4                 => 'PRODUCT_NAME'
5535                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
5536                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
5537                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
5538                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
5539                                     ,p_ae_header_id            =>  NULL
5540                                        );
5541 
5542         IF (C_LEVEL_ERROR>= g_log_level) THEN
5543                  trace
5544                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
5545                       ,p_level    => C_LEVEL_ERROR
5546                       ,p_module   => l_log_module);
5547         END IF;
5548       END IF;
5549    END IF;
5550    --
5551    --
5552    ------------------------------------------------------------------------------------------------
5553    -- 4219869 Business Flow
5554    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
5555    -- Prior Entry.  Currently, the following code is always generated.
5559    ------------------------------------------------------------------------------------
5556    ------------------------------------------------------------------------------------------------
5557    XLA_AE_LINES_PKG.ValidateCurrentLine;
5558 
5560    -- 4219869 Business Flow
5561    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
5562    ------------------------------------------------------------------------------------
5563    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5564 
5565    ----------------------------------------------------------------------------------
5566    -- 4219869 Business Flow
5567    -- Update journal entry status -- Need to generate this within IF <condition>
5568    ----------------------------------------------------------------------------------
5569    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5570          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
5571          ,p_balance_type_code => l_balance_type_code
5572          );
5573 
5574    -------------------------------------------------------------------------------------------
5575    -- 4262811 - Generate the Accrual Reversal lines
5576    -------------------------------------------------------------------------------------------
5577    BEGIN
5578       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
5579                               (g_array_event(p_event_id).array_value_num('header_index'));
5580       IF l_acc_rev_flag IS NULL THEN
5581          l_acc_rev_flag := 'N';
5582       END IF;
5583    EXCEPTION
5584       WHEN OTHERS THEN
5585          l_acc_rev_flag := 'N';
5586    END;
5587    --
5588    IF (l_acc_rev_flag = 'Y') THEN
5589 
5590        -- 4645092  ------------------------------------------------------------------------------
5591        -- To allow MPA report to determine if it should generate report process
5592        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
5593        ------------------------------------------------------------------------------------------
5594 
5595        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
5596        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
5597    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
5598    -- call ADRs
5599    -- Bug 4922099
5600    --
5601    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
5602         (NVL(l_actual_upg_option, 'N') = 'O') OR
5603         (NVL(l_enc_upg_option, 'N') = 'O')
5604       )
5605    THEN
5606    NULL;
5607    --
5608    --
5609    
5610   l_ccid := AcctDerRule_29(
5611            p_application_id           => p_application_id
5612          , p_ae_header_id             => l_ae_header_id 
5613 , p_source_32 => p_source_32
5614          , x_transaction_coa_id       => l_adr_transaction_coa_id
5615          , x_accounting_coa_id        => l_adr_accounting_coa_id
5616          , x_value_type_code          => l_adr_value_type_code
5617          , p_side                     => 'NA'
5618    );
5619 
5620    xla_ae_lines_pkg.set_ccid(
5621     p_code_combination_id          => l_ccid
5622   , p_value_type_code              => l_adr_value_type_code
5623   , p_transaction_coa_id           => l_adr_transaction_coa_id
5624   , p_accounting_coa_id            => l_adr_accounting_coa_id
5625   , p_adr_code                     => 'DIST_CCID'
5626   , p_adr_type_code                => 'S'
5627   , p_component_type               => l_component_type
5628   , p_component_code               => l_component_code
5629   , p_component_type_code          => l_component_type_code
5630   , p_component_appl_id            => l_component_appl_id
5631   , p_amb_context_code             => l_amb_context_code
5632   , p_side                         => 'NA'
5633   );
5634 
5635 
5636    --
5637    --
5638    END IF;
5639 
5640        --
5641        -- Update the line information that should be overwritten
5642        --
5643        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
5644                                          p_header_num   => 1);
5645        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
5646 
5647        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
5648 
5649        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
5650           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
5651        END IF;
5652 
5653       --
5654       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
5655       --
5656       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
5657           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
5658       ELSE
5659           ---------------------------------------------------------------------------------------------------
5660           -- 4262811a Switch Sign
5661           ---------------------------------------------------------------------------------------------------
5662           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
5663           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5667           -- 5132302
5664                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5665           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
5666                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5668           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
5669                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
5670 
5671       END IF;
5672 
5673       -- 4955764
5674       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5675       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
5676 
5677 
5678       XLA_AE_LINES_PKG.ValidateCurrentLine;
5679       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
5680 
5681       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
5682                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
5683                ,p_balance_type_code => l_balance_type_code);
5684 
5685    END IF;
5686 
5687    -----------------------------------------------------------------------------------------
5688    -- 4262811 Multiperiod Accounting
5689    -----------------------------------------------------------------------------------------
5690      -- No MPA option is assigned.
5691 
5692 
5693 END IF;
5694 END IF;
5695 --
5696 
5697 --
5698 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5699    trace
5700       (p_msg      => 'END of AcctLineType_38'
5701       ,p_level    => C_LEVEL_PROCEDURE
5702       ,p_module   => l_log_module);
5703 END IF;
5704 --
5705 EXCEPTION
5706   WHEN xla_exceptions_pkg.application_exception THEN
5707       RAISE;
5708   WHEN OTHERS THEN
5709        xla_exceptions_pkg.raise_message
5710            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_38');
5711 END AcctLineType_38;
5712 --
5713 
5714 ---------------------------------------
5715 --
5716 -- PRIVATE FUNCTION
5717 --         AcctLineType_39
5718 --
5719 ---------------------------------------
5720 PROCEDURE AcctLineType_39 (
5721   p_application_id        IN NUMBER
5722  ,p_event_id              IN NUMBER
5723  ,p_calculate_acctd_flag  IN VARCHAR2
5724  ,p_calculate_g_l_flag    IN VARCHAR2
5725  ,p_actual_flag           IN OUT VARCHAR2
5726  ,p_balance_type_code     OUT VARCHAR2
5727  ,p_gain_or_loss_ref      OUT VARCHAR2
5728  
5729 --Distribution GL Account
5730  , p_source_32            IN NUMBER
5731 --Distribution Source Type
5732  , p_source_39            IN VARCHAR2
5733 --Distribution Line Identifier
5734  , p_source_41            IN NUMBER
5735 --Distribution Type
5736  , p_source_42            IN VARCHAR2
5737 --Entered Amount
5738  , p_source_43            IN NUMBER
5739 --Currency Code
5740  , p_source_44            IN VARCHAR2
5741 --Exchange Date
5742  , p_source_45            IN DATE
5743 --Exchange Rate
5744  , p_source_46            IN NUMBER
5745 --Exchange Rate Type
5746  , p_source_47            IN VARCHAR2
5747 --Applied To Document Accounting Amount
5748  , p_source_48            IN NUMBER
5749 --Bill To Customer Account Identifier
5750  , p_source_49            IN NUMBER
5751 --Bill To Customer Site Use Identifier
5752  , p_source_50            IN NUMBER
5753 --SLA Party Type
5754  , p_source_51            IN VARCHAR2
5755 )
5756 IS
5757 
5758 l_component_type              VARCHAR2(80);
5759 l_component_code              VARCHAR2(30);
5760 l_component_type_code         VARCHAR2(1);
5761 l_component_appl_id           INTEGER;
5762 l_amb_context_code            VARCHAR2(30);
5763 l_entity_code                 VARCHAR2(30);
5764 l_event_class_code            VARCHAR2(30);
5765 l_ae_header_id                NUMBER;
5766 l_event_type_code             VARCHAR2(30);
5767 l_line_definition_code        VARCHAR2(30);
5768 l_line_definition_owner_code  VARCHAR2(1);
5769 --
5770 -- adr variables
5771 l_segment                     VARCHAR2(30);
5772 l_ccid                        NUMBER;
5773 l_adr_transaction_coa_id      NUMBER;
5774 l_adr_accounting_coa_id       NUMBER;
5775 l_adr_flexfield_segment_code  VARCHAR2(30);
5776 l_adr_flex_value_set_id       NUMBER;
5777 l_adr_value_type_code         VARCHAR2(30);
5778 l_adr_value_combination_id    NUMBER;
5779 l_adr_value_segment_code      VARCHAR2(30);
5780 
5781 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
5782 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
5783 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
5784 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
5785 
5786 -- 4262811 Variables ------------------------------------------------------------------------------------------
5787 l_entered_amt_idx             NUMBER;
5788 l_accted_amt_idx              NUMBER;
5789 l_acc_rev_flag                VARCHAR2(1);
5790 l_accrual_line_num            NUMBER;
5791 l_tmp_amt                     NUMBER;
5792 l_acc_rev_natural_side_code   VARCHAR2(1);
5793 
5794 l_num_entries                 NUMBER;
5795 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
5796 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
5800 l_recog_line_2                NUMBER;
5797 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
5798 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
5799 l_recog_line_1                NUMBER;
5801 
5802 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
5803 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
5804 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
5805 
5806 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
5807 
5808 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
5809 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
5810 
5811 ---------------------------------------------------------------------------------------------------------------
5812 
5813 
5814 --
5815 -- bulk performance
5816 --
5817 l_balance_type_code           VARCHAR2(1);
5818 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
5819 l_log_module                  VARCHAR2(240);
5820 
5821 --
5822 -- Upgrade strategy
5823 --
5824 l_actual_upg_option           VARCHAR2(1);
5825 l_enc_upg_option           VARCHAR2(1);
5826 
5827 --
5828 BEGIN
5829 --
5830 IF g_log_enabled THEN
5831       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_39';
5832 END IF;
5833 --
5834 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
5835 
5836       trace
5837          (p_msg      => 'BEGIN of AcctLineType_39'
5838          ,p_level    => C_LEVEL_PROCEDURE
5839          ,p_module   => l_log_module);
5840 
5841 END IF;
5842 --
5843 l_component_type             := 'AMB_JLT';
5844 l_component_code             := 'ADJ_CHRG';
5845 l_component_type_code        := 'S';
5846 l_component_appl_id          :=  222;
5847 l_amb_context_code           := 'DEFAULT';
5848 l_entity_code                := 'ADJUSTMENTS';
5849 l_event_class_code           := 'ADJUSTMENT';
5850 l_event_type_code            := 'ADJUSTMENT_ALL';
5851 l_line_definition_owner_code := 'S';
5852 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
5853 --
5854 l_balance_type_code          := 'A';
5855 l_segment                     := NULL;
5856 l_ccid                        := NULL;
5857 l_adr_transaction_coa_id      := NULL;
5858 l_adr_accounting_coa_id       := NULL;
5859 l_adr_flexfield_segment_code  := NULL;
5860 l_adr_flex_value_set_id       := NULL;
5861 l_adr_value_type_code         := NULL;
5862 l_adr_value_combination_id    := NULL;
5863 l_adr_value_segment_code      := NULL;
5864 
5865 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
5866 l_bflow_class_code           := '';    -- 4219869 Business Flow
5867 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
5868 l_budgetary_control_flag     := 'N';
5869 
5870 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
5871 l_bflow_applied_to_amt       := NULL; -- 5132302
5872 l_entered_amt_idx            := NULL;          -- 4262811
5873 l_accted_amt_idx             := NULL;          -- 4262811
5874 l_acc_rev_flag               := NULL;          -- 4262811
5875 l_accrual_line_num           := NULL;          -- 4262811
5876 l_tmp_amt                    := NULL;          -- 4262811
5877 --
5878  
5879 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
5880     l_balance_type_code <> 'B' THEN
5881 IF NVL(p_source_39,'
5882 ') =  'FINCHRG' OR 
5883 NVL(p_source_39,'
5884 ') =  'FINCHRG_NON_REC_TAX'
5885  THEN 
5886 
5887    --
5888    XLA_AE_LINES_PKG.SetNewLine;
5889 
5890    p_balance_type_code          := l_balance_type_code;
5891    -- set the flag so later we will know whether the gain loss line needs to be created
5892    
5893    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
5894      p_actual_flag :='A';
5895    END IF;
5896 
5897    --
5898    -- bulk performance
5899    --
5900    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
5901                                       p_header_num   => 0); -- 4262811
5902    --
5903    -- set accounting line options
5904    --
5905    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
5906            p_natural_side_code          => 'C'
5907          , p_gain_or_loss_flag          => 'N'
5908          , p_gl_transfer_mode_code      => 'S'
5909          , p_acct_entry_type_code       => 'A'
5910          , p_switch_side_flag           => 'Y'
5911          , p_merge_duplicate_code       => 'A'
5912          );
5913    --
5914    l_acc_rev_natural_side_code := 'D';  -- 4262811
5915    -- 
5916    --
5917    -- set accounting line type info
5918    --
5919    xla_ae_lines_pkg.SetAcctLineType
5920       (p_component_type             => l_component_type
5921       ,p_event_type_code            => l_event_type_code
5922       ,p_line_definition_owner_code => l_line_definition_owner_code
5923       ,p_line_definition_code       => l_line_definition_code
5924       ,p_accounting_line_code       => l_component_code
5925       ,p_accounting_line_type_code  => l_component_type_code
5926       ,p_accounting_line_appl_id    => l_component_appl_id
5927       ,p_amb_context_code           => l_amb_context_code
5928       ,p_entity_code                => l_entity_code
5932    --
5929       ,p_event_class_code           => l_event_class_code);
5930    --
5931    -- set accounting class
5933    xla_ae_lines_pkg.SetAcctClass(
5934            p_accounting_class_code  => 'CHARGES'
5935          , p_ae_header_id           => l_ae_header_id
5936          );
5937 
5938    --
5939    -- set rounding class
5940    --
5941    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
5942                       'RECEIVABLE';
5943 
5944    --
5945    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
5946    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
5947    --
5948    -- bulk performance
5949    --
5950    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
5951 
5952    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
5953       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
5954 
5955    -- 4955764
5956    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
5957       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
5958 
5959    -- 4458381 Public Sector Enh
5960    
5961    --
5962    -- set accounting attributes for the line type
5963    --
5964    l_entered_amt_idx := 3;
5965    l_accted_amt_idx  := 8;
5966    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
5967    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
5968    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
5969    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
5970    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
5971    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
5972    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
5973    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
5974    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
5975    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
5976    l_rec_acct_attrs.array_date_value(5)  := p_source_45;
5977    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
5978    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
5979    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
5980    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
5981    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
5982    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
5983    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
5984    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
5985    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
5986    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
5987    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
5988    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
5989 
5990    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
5991    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
5992 
5993    ---------------------------------------------------------------------------------------------------------------
5994    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
5995    ---------------------------------------------------------------------------------------------------------------
5996    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
5997 
5998    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
5999    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6000 
6001    IF xla_accounting_cache_pkg.GetValueChar
6002          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6003          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6004    AND l_bflow_method_code = 'PRIOR_ENTRY'
6005 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6006    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6007          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6008        )
6009    THEN
6010          xla_ae_lines_pkg.BflowUpgEntry
6011            (p_business_method_code    => l_bflow_method_code
6012            ,p_business_class_code     => l_bflow_class_code
6013            ,p_balance_type            => l_balance_type_code);
6014    ELSE
6015       NULL;
6016 -- No business flow processing for business flow method of NONE.
6017    END IF;
6018 
6019    --
6020    -- call analytical criteria
6021    --
6022    
6023    --
6024    -- call description
6025    --
6026    -- No description or it is inherited.
6027    --
6028    -- call ADRs
6029    -- Bug 4922099
6030    --
6031    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6032         (NVL(l_actual_upg_option, 'N') = 'O') OR
6033         (NVL(l_enc_upg_option, 'N') = 'O')
6034       )
6035    THEN
6036    NULL;
6037    --
6038    --
6039    
6040   l_ccid := AcctDerRule_29(
6041            p_application_id           => p_application_id
6042          , p_ae_header_id             => l_ae_header_id 
6043 , p_source_32 => p_source_32
6044          , x_transaction_coa_id       => l_adr_transaction_coa_id
6045          , x_accounting_coa_id        => l_adr_accounting_coa_id
6049 
6046          , x_value_type_code          => l_adr_value_type_code
6047          , p_side                     => 'NA'
6048    );
6050    xla_ae_lines_pkg.set_ccid(
6051     p_code_combination_id          => l_ccid
6052   , p_value_type_code              => l_adr_value_type_code
6053   , p_transaction_coa_id           => l_adr_transaction_coa_id
6054   , p_accounting_coa_id            => l_adr_accounting_coa_id
6055   , p_adr_code                     => 'DIST_CCID'
6056   , p_adr_type_code                => 'S'
6057   , p_component_type               => l_component_type
6058   , p_component_code               => l_component_code
6059   , p_component_type_code          => l_component_type_code
6060   , p_component_appl_id            => l_component_appl_id
6061   , p_amb_context_code             => l_amb_context_code
6062   , p_side                         => 'NA'
6063   );
6064 
6065 
6066    --
6067    --
6068    END IF;
6069    --
6070    -- Bug 4922099
6071    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6072           (NVL(l_enc_upg_option, 'N') = 'O')
6073         ) AND
6074         (l_bflow_method_code = 'PRIOR_ENTRY')
6075       )
6076    THEN
6077       IF
6078       --
6079       1 = 2
6080       --
6081       THEN
6082       xla_accounting_err_pkg.build_message
6083                                     (p_appli_s_name            => 'XLA'
6084                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6085                                     ,p_token_1                 => 'LINE_NUMBER'
6086                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6087                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6088                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6089                                                                              l_component_type
6090                                                                             ,l_component_code
6091                                                                             ,l_component_type_code
6092                                                                             ,l_component_appl_id
6093                                                                             ,l_amb_context_code
6094                                                                             ,l_entity_code
6095                                                                             ,l_event_class_code
6096                                                                            )
6097                                     ,p_token_3                 => 'OWNER'
6098                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6099                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6100                                                                           ,p_lookup_code    => l_component_type_code
6101                                                                          )
6102                                     ,p_token_4                 => 'PRODUCT_NAME'
6103                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6104                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6105                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6106                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6107                                     ,p_ae_header_id            =>  NULL
6108                                        );
6109 
6110         IF (C_LEVEL_ERROR>= g_log_level) THEN
6111                  trace
6112                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6113                       ,p_level    => C_LEVEL_ERROR
6114                       ,p_module   => l_log_module);
6115         END IF;
6116       END IF;
6117    END IF;
6118    --
6119    --
6120    ------------------------------------------------------------------------------------------------
6121    -- 4219869 Business Flow
6122    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6123    -- Prior Entry.  Currently, the following code is always generated.
6124    ------------------------------------------------------------------------------------------------
6125    XLA_AE_LINES_PKG.ValidateCurrentLine;
6126 
6127    ------------------------------------------------------------------------------------
6128    -- 4219869 Business Flow
6129    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6130    ------------------------------------------------------------------------------------
6131    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6132 
6133    ----------------------------------------------------------------------------------
6134    -- 4219869 Business Flow
6135    -- Update journal entry status -- Need to generate this within IF <condition>
6136    ----------------------------------------------------------------------------------
6137    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6138          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6139          ,p_balance_type_code => l_balance_type_code
6140          );
6141 
6142    -------------------------------------------------------------------------------------------
6143    -- 4262811 - Generate the Accrual Reversal lines
6147                               (g_array_event(p_event_id).array_value_num('header_index'));
6144    -------------------------------------------------------------------------------------------
6145    BEGIN
6146       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6148       IF l_acc_rev_flag IS NULL THEN
6149          l_acc_rev_flag := 'N';
6150       END IF;
6151    EXCEPTION
6152       WHEN OTHERS THEN
6153          l_acc_rev_flag := 'N';
6154    END;
6155    --
6156    IF (l_acc_rev_flag = 'Y') THEN
6157 
6158        -- 4645092  ------------------------------------------------------------------------------
6159        -- To allow MPA report to determine if it should generate report process
6160        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6161        ------------------------------------------------------------------------------------------
6162 
6163        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6164        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6165    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
6166    -- call ADRs
6167    -- Bug 4922099
6168    --
6169    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6170         (NVL(l_actual_upg_option, 'N') = 'O') OR
6171         (NVL(l_enc_upg_option, 'N') = 'O')
6172       )
6173    THEN
6174    NULL;
6175    --
6176    --
6177    
6178   l_ccid := AcctDerRule_29(
6179            p_application_id           => p_application_id
6180          , p_ae_header_id             => l_ae_header_id 
6181 , p_source_32 => p_source_32
6182          , x_transaction_coa_id       => l_adr_transaction_coa_id
6183          , x_accounting_coa_id        => l_adr_accounting_coa_id
6184          , x_value_type_code          => l_adr_value_type_code
6185          , p_side                     => 'NA'
6186    );
6187 
6188    xla_ae_lines_pkg.set_ccid(
6189     p_code_combination_id          => l_ccid
6190   , p_value_type_code              => l_adr_value_type_code
6191   , p_transaction_coa_id           => l_adr_transaction_coa_id
6192   , p_accounting_coa_id            => l_adr_accounting_coa_id
6193   , p_adr_code                     => 'DIST_CCID'
6194   , p_adr_type_code                => 'S'
6195   , p_component_type               => l_component_type
6196   , p_component_code               => l_component_code
6197   , p_component_type_code          => l_component_type_code
6198   , p_component_appl_id            => l_component_appl_id
6199   , p_amb_context_code             => l_amb_context_code
6200   , p_side                         => 'NA'
6201   );
6202 
6203 
6204    --
6205    --
6206    END IF;
6207 
6208        --
6209        -- Update the line information that should be overwritten
6210        --
6211        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6212                                          p_header_num   => 1);
6213        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6214 
6215        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6216 
6217        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6218           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6219        END IF;
6220 
6221       --
6222       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6223       --
6224       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6225           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6226       ELSE
6227           ---------------------------------------------------------------------------------------------------
6228           -- 4262811a Switch Sign
6229           ---------------------------------------------------------------------------------------------------
6230           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6231           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6232                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6233           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6234                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6235           -- 5132302
6236           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6237                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6238 
6239       END IF;
6240 
6241       -- 4955764
6242       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6243       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6244 
6245 
6246       XLA_AE_LINES_PKG.ValidateCurrentLine;
6247       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6248 
6249       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6250                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6251                ,p_balance_type_code => l_balance_type_code);
6252 
6253    END IF;
6254 
6255    -----------------------------------------------------------------------------------------
6259 
6256    -- 4262811 Multiperiod Accounting
6257    -----------------------------------------------------------------------------------------
6258      -- No MPA option is assigned.
6260 
6261 END IF;
6262 END IF;
6263 --
6264 
6265 --
6266 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6267    trace
6268       (p_msg      => 'END of AcctLineType_39'
6269       ,p_level    => C_LEVEL_PROCEDURE
6270       ,p_module   => l_log_module);
6271 END IF;
6272 --
6273 EXCEPTION
6274   WHEN xla_exceptions_pkg.application_exception THEN
6275       RAISE;
6276   WHEN OTHERS THEN
6277        xla_exceptions_pkg.raise_message
6278            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_39');
6279 END AcctLineType_39;
6280 --
6281 
6282 ---------------------------------------
6283 --
6284 -- PRIVATE FUNCTION
6285 --         AcctLineType_40
6286 --
6287 ---------------------------------------
6288 PROCEDURE AcctLineType_40 (
6289   p_application_id        IN NUMBER
6290  ,p_event_id              IN NUMBER
6291  ,p_calculate_acctd_flag  IN VARCHAR2
6292  ,p_calculate_g_l_flag    IN VARCHAR2
6293  ,p_actual_flag           IN OUT VARCHAR2
6294  ,p_balance_type_code     OUT VARCHAR2
6295  ,p_gain_or_loss_ref      OUT VARCHAR2
6296  
6297 --Distribution GL Account
6298  , p_source_32            IN NUMBER
6299 --Distribution Source Type
6300  , p_source_39            IN VARCHAR2
6301 --Distribution Line Identifier
6302  , p_source_41            IN NUMBER
6303 --Distribution Type
6304  , p_source_42            IN VARCHAR2
6305 --Entered Amount
6306  , p_source_43            IN NUMBER
6307 --Currency Code
6308  , p_source_44            IN VARCHAR2
6309 --Exchange Date
6310  , p_source_45            IN DATE
6311 --Exchange Rate
6312  , p_source_46            IN NUMBER
6313 --Exchange Rate Type
6314  , p_source_47            IN VARCHAR2
6315 --Applied To Document Accounting Amount
6316  , p_source_48            IN NUMBER
6317 --Bill To Customer Account Identifier
6318  , p_source_49            IN NUMBER
6319 --Bill To Customer Site Use Identifier
6320  , p_source_50            IN NUMBER
6321 --SLA Party Type
6322  , p_source_51            IN VARCHAR2
6323 )
6324 IS
6325 
6326 l_component_type              VARCHAR2(80);
6327 l_component_code              VARCHAR2(30);
6328 l_component_type_code         VARCHAR2(1);
6329 l_component_appl_id           INTEGER;
6330 l_amb_context_code            VARCHAR2(30);
6331 l_entity_code                 VARCHAR2(30);
6332 l_event_class_code            VARCHAR2(30);
6333 l_ae_header_id                NUMBER;
6334 l_event_type_code             VARCHAR2(30);
6335 l_line_definition_code        VARCHAR2(30);
6336 l_line_definition_owner_code  VARCHAR2(1);
6337 --
6338 -- adr variables
6339 l_segment                     VARCHAR2(30);
6340 l_ccid                        NUMBER;
6341 l_adr_transaction_coa_id      NUMBER;
6342 l_adr_accounting_coa_id       NUMBER;
6343 l_adr_flexfield_segment_code  VARCHAR2(30);
6344 l_adr_flex_value_set_id       NUMBER;
6345 l_adr_value_type_code         VARCHAR2(30);
6346 l_adr_value_combination_id    NUMBER;
6347 l_adr_value_segment_code      VARCHAR2(30);
6348 
6349 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6350 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6351 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6352 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6353 
6354 -- 4262811 Variables ------------------------------------------------------------------------------------------
6355 l_entered_amt_idx             NUMBER;
6356 l_accted_amt_idx              NUMBER;
6357 l_acc_rev_flag                VARCHAR2(1);
6358 l_accrual_line_num            NUMBER;
6359 l_tmp_amt                     NUMBER;
6360 l_acc_rev_natural_side_code   VARCHAR2(1);
6361 
6362 l_num_entries                 NUMBER;
6363 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6364 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6365 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6366 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6367 l_recog_line_1                NUMBER;
6368 l_recog_line_2                NUMBER;
6369 
6370 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6371 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6372 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6373 
6374 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6375 
6376 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6377 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6378 
6379 ---------------------------------------------------------------------------------------------------------------
6380 
6381 
6382 --
6383 -- bulk performance
6384 --
6385 l_balance_type_code           VARCHAR2(1);
6386 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6387 l_log_module                  VARCHAR2(240);
6388 
6389 --
6390 -- Upgrade strategy
6391 --
6392 l_actual_upg_option           VARCHAR2(1);
6393 l_enc_upg_option           VARCHAR2(1);
6394 
6395 --
6396 BEGIN
6397 --
6398 IF g_log_enabled THEN
6402 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6399       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_40';
6400 END IF;
6401 --
6403 
6404       trace
6405          (p_msg      => 'BEGIN of AcctLineType_40'
6406          ,p_level    => C_LEVEL_PROCEDURE
6407          ,p_module   => l_log_module);
6408 
6409 END IF;
6410 --
6411 l_component_type             := 'AMB_JLT';
6412 l_component_code             := 'ADJ_DEFAULT_REC';
6413 l_component_type_code        := 'S';
6414 l_component_appl_id          :=  222;
6415 l_amb_context_code           := 'DEFAULT';
6416 l_entity_code                := 'ADJUSTMENTS';
6417 l_event_class_code           := 'ADJUSTMENT';
6418 l_event_type_code            := 'ADJUSTMENT_ALL';
6419 l_line_definition_owner_code := 'S';
6420 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
6421 --
6422 l_balance_type_code          := 'A';
6423 l_segment                     := NULL;
6424 l_ccid                        := NULL;
6425 l_adr_transaction_coa_id      := NULL;
6426 l_adr_accounting_coa_id       := NULL;
6427 l_adr_flexfield_segment_code  := NULL;
6428 l_adr_flex_value_set_id       := NULL;
6429 l_adr_value_type_code         := NULL;
6430 l_adr_value_combination_id    := NULL;
6431 l_adr_value_segment_code      := NULL;
6432 
6433 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
6434 l_bflow_class_code           := '';    -- 4219869 Business Flow
6435 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
6436 l_budgetary_control_flag     := 'N';
6437 
6438 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
6439 l_bflow_applied_to_amt       := NULL; -- 5132302
6440 l_entered_amt_idx            := NULL;          -- 4262811
6441 l_accted_amt_idx             := NULL;          -- 4262811
6442 l_acc_rev_flag               := NULL;          -- 4262811
6443 l_accrual_line_num           := NULL;          -- 4262811
6444 l_tmp_amt                    := NULL;          -- 4262811
6445 --
6446  
6447 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
6448     l_balance_type_code <> 'B' THEN
6449 IF NVL(p_source_39,'
6450 ') =  'REC'
6451  THEN 
6452 
6453    --
6454    XLA_AE_LINES_PKG.SetNewLine;
6455 
6456    p_balance_type_code          := l_balance_type_code;
6457    -- set the flag so later we will know whether the gain loss line needs to be created
6458    
6459    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
6460      p_actual_flag :='A';
6461    END IF;
6462 
6463    --
6464    -- bulk performance
6465    --
6466    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
6467                                       p_header_num   => 0); -- 4262811
6468    --
6469    -- set accounting line options
6470    --
6471    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
6472            p_natural_side_code          => 'C'
6473          , p_gain_or_loss_flag          => 'N'
6474          , p_gl_transfer_mode_code      => 'S'
6475          , p_acct_entry_type_code       => 'A'
6476          , p_switch_side_flag           => 'Y'
6477          , p_merge_duplicate_code       => 'A'
6478          );
6479    --
6480    l_acc_rev_natural_side_code := 'D';  -- 4262811
6481    -- 
6482    --
6483    -- set accounting line type info
6484    --
6485    xla_ae_lines_pkg.SetAcctLineType
6486       (p_component_type             => l_component_type
6487       ,p_event_type_code            => l_event_type_code
6488       ,p_line_definition_owner_code => l_line_definition_owner_code
6489       ,p_line_definition_code       => l_line_definition_code
6490       ,p_accounting_line_code       => l_component_code
6491       ,p_accounting_line_type_code  => l_component_type_code
6492       ,p_accounting_line_appl_id    => l_component_appl_id
6493       ,p_amb_context_code           => l_amb_context_code
6494       ,p_entity_code                => l_entity_code
6495       ,p_event_class_code           => l_event_class_code);
6496    --
6497    -- set accounting class
6498    --
6499    xla_ae_lines_pkg.SetAcctClass(
6500            p_accounting_class_code  => 'RECEIVABLE'
6501          , p_ae_header_id           => l_ae_header_id
6502          );
6503 
6504    --
6505    -- set rounding class
6506    --
6507    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
6508                       'RECEIVABLE';
6509 
6510    --
6511    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
6512    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
6513    --
6514    -- bulk performance
6515    --
6516    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
6517 
6518    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
6519       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
6520 
6521    -- 4955764
6522    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6523       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
6524 
6525    -- 4458381 Public Sector Enh
6526    
6527    --
6528    -- set accounting attributes for the line type
6529    --
6530    l_entered_amt_idx := 3;
6534    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
6531    l_accted_amt_idx  := 8;
6532    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
6533    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
6535    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
6536    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
6537    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
6538    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
6539    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
6540    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
6541    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
6542    l_rec_acct_attrs.array_date_value(5)  := p_source_45;
6543    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
6544    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
6545    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
6546    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
6547    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
6548    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
6549    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
6550    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
6551    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
6552    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
6553    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
6554    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
6555 
6556    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
6557    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
6558 
6559    ---------------------------------------------------------------------------------------------------------------
6560    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
6561    ---------------------------------------------------------------------------------------------------------------
6562    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
6563 
6564    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6565    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
6566 
6567    IF xla_accounting_cache_pkg.GetValueChar
6568          (p_source_code         => 'LEDGER_CATEGORY_CODE'
6569          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
6570    AND l_bflow_method_code = 'PRIOR_ENTRY'
6571 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
6572    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
6573          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
6574        )
6575    THEN
6576          xla_ae_lines_pkg.BflowUpgEntry
6577            (p_business_method_code    => l_bflow_method_code
6578            ,p_business_class_code     => l_bflow_class_code
6579            ,p_balance_type            => l_balance_type_code);
6580    ELSE
6581       NULL;
6582 -- No business flow processing for business flow method of NONE.
6583    END IF;
6584 
6585    --
6586    -- call analytical criteria
6587    --
6588    
6589    --
6590    -- call description
6591    --
6592    -- No description or it is inherited.
6593    --
6594    -- call ADRs
6595    -- Bug 4922099
6596    --
6597    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6598         (NVL(l_actual_upg_option, 'N') = 'O') OR
6599         (NVL(l_enc_upg_option, 'N') = 'O')
6600       )
6601    THEN
6602    NULL;
6603    --
6604    --
6605    
6606   l_ccid := AcctDerRule_29(
6607            p_application_id           => p_application_id
6608          , p_ae_header_id             => l_ae_header_id 
6609 , p_source_32 => p_source_32
6610          , x_transaction_coa_id       => l_adr_transaction_coa_id
6611          , x_accounting_coa_id        => l_adr_accounting_coa_id
6612          , x_value_type_code          => l_adr_value_type_code
6613          , p_side                     => 'NA'
6614    );
6615 
6616    xla_ae_lines_pkg.set_ccid(
6617     p_code_combination_id          => l_ccid
6618   , p_value_type_code              => l_adr_value_type_code
6619   , p_transaction_coa_id           => l_adr_transaction_coa_id
6620   , p_accounting_coa_id            => l_adr_accounting_coa_id
6621   , p_adr_code                     => 'DIST_CCID'
6622   , p_adr_type_code                => 'S'
6623   , p_component_type               => l_component_type
6624   , p_component_code               => l_component_code
6625   , p_component_type_code          => l_component_type_code
6626   , p_component_appl_id            => l_component_appl_id
6627   , p_amb_context_code             => l_amb_context_code
6628   , p_side                         => 'NA'
6629   );
6630 
6631 
6632    --
6633    --
6634    END IF;
6635    --
6636    -- Bug 4922099
6637    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
6638           (NVL(l_enc_upg_option, 'N') = 'O')
6639         ) AND
6640         (l_bflow_method_code = 'PRIOR_ENTRY')
6641       )
6642    THEN
6643       IF
6644       --
6645       1 = 2
6646       --
6647       THEN
6648       xla_accounting_err_pkg.build_message
6649                                     (p_appli_s_name            => 'XLA'
6653                                     ,p_token_2                 => 'LINE_TYPE_NAME'
6650                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6651                                     ,p_token_1                 => 'LINE_NUMBER'
6652                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
6654                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
6655                                                                              l_component_type
6656                                                                             ,l_component_code
6657                                                                             ,l_component_type_code
6658                                                                             ,l_component_appl_id
6659                                                                             ,l_amb_context_code
6660                                                                             ,l_entity_code
6661                                                                             ,l_event_class_code
6662                                                                            )
6663                                     ,p_token_3                 => 'OWNER'
6664                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
6665                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
6666                                                                           ,p_lookup_code    => l_component_type_code
6667                                                                          )
6668                                     ,p_token_4                 => 'PRODUCT_NAME'
6669                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
6670                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
6671                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
6672                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
6673                                     ,p_ae_header_id            =>  NULL
6674                                        );
6675 
6676         IF (C_LEVEL_ERROR>= g_log_level) THEN
6677                  trace
6678                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
6679                       ,p_level    => C_LEVEL_ERROR
6680                       ,p_module   => l_log_module);
6681         END IF;
6682       END IF;
6683    END IF;
6684    --
6685    --
6686    ------------------------------------------------------------------------------------------------
6687    -- 4219869 Business Flow
6688    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
6689    -- Prior Entry.  Currently, the following code is always generated.
6690    ------------------------------------------------------------------------------------------------
6691    XLA_AE_LINES_PKG.ValidateCurrentLine;
6692 
6693    ------------------------------------------------------------------------------------
6694    -- 4219869 Business Flow
6695    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
6696    ------------------------------------------------------------------------------------
6697    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6698 
6699    ----------------------------------------------------------------------------------
6700    -- 4219869 Business Flow
6701    -- Update journal entry status -- Need to generate this within IF <condition>
6702    ----------------------------------------------------------------------------------
6703    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6704          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
6705          ,p_balance_type_code => l_balance_type_code
6706          );
6707 
6708    -------------------------------------------------------------------------------------------
6709    -- 4262811 - Generate the Accrual Reversal lines
6710    -------------------------------------------------------------------------------------------
6711    BEGIN
6712       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
6713                               (g_array_event(p_event_id).array_value_num('header_index'));
6714       IF l_acc_rev_flag IS NULL THEN
6715          l_acc_rev_flag := 'N';
6716       END IF;
6717    EXCEPTION
6718       WHEN OTHERS THEN
6719          l_acc_rev_flag := 'N';
6720    END;
6721    --
6722    IF (l_acc_rev_flag = 'Y') THEN
6723 
6724        -- 4645092  ------------------------------------------------------------------------------
6725        -- To allow MPA report to determine if it should generate report process
6726        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
6727        ------------------------------------------------------------------------------------------
6728 
6729        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
6730        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
6731    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
6732    -- call ADRs
6733    -- Bug 4922099
6734    --
6735    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
6736         (NVL(l_actual_upg_option, 'N') = 'O') OR
6737         (NVL(l_enc_upg_option, 'N') = 'O')
6738       )
6739    THEN
6740    NULL;
6744   l_ccid := AcctDerRule_29(
6741    --
6742    --
6743    
6745            p_application_id           => p_application_id
6746          , p_ae_header_id             => l_ae_header_id 
6747 , p_source_32 => p_source_32
6748          , x_transaction_coa_id       => l_adr_transaction_coa_id
6749          , x_accounting_coa_id        => l_adr_accounting_coa_id
6750          , x_value_type_code          => l_adr_value_type_code
6751          , p_side                     => 'NA'
6752    );
6753 
6754    xla_ae_lines_pkg.set_ccid(
6755     p_code_combination_id          => l_ccid
6756   , p_value_type_code              => l_adr_value_type_code
6757   , p_transaction_coa_id           => l_adr_transaction_coa_id
6758   , p_accounting_coa_id            => l_adr_accounting_coa_id
6759   , p_adr_code                     => 'DIST_CCID'
6760   , p_adr_type_code                => 'S'
6761   , p_component_type               => l_component_type
6762   , p_component_code               => l_component_code
6763   , p_component_type_code          => l_component_type_code
6764   , p_component_appl_id            => l_component_appl_id
6765   , p_amb_context_code             => l_amb_context_code
6766   , p_side                         => 'NA'
6767   );
6768 
6769 
6770    --
6771    --
6772    END IF;
6773 
6774        --
6775        -- Update the line information that should be overwritten
6776        --
6777        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
6778                                          p_header_num   => 1);
6779        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
6780 
6781        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
6782 
6783        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
6784           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
6785        END IF;
6786 
6787       --
6788       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
6789       --
6790       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
6791           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
6792       ELSE
6793           ---------------------------------------------------------------------------------------------------
6794           -- 4262811a Switch Sign
6795           ---------------------------------------------------------------------------------------------------
6796           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
6797           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6798                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6799           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
6800                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6801           -- 5132302
6802           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
6803                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
6804 
6805       END IF;
6806 
6807       -- 4955764
6808       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
6809       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
6810 
6811 
6812       XLA_AE_LINES_PKG.ValidateCurrentLine;
6813       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
6814 
6815       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
6816                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
6817                ,p_balance_type_code => l_balance_type_code);
6818 
6819    END IF;
6820 
6821    -----------------------------------------------------------------------------------------
6822    -- 4262811 Multiperiod Accounting
6823    -----------------------------------------------------------------------------------------
6824      -- No MPA option is assigned.
6825 
6826 
6827 END IF;
6828 END IF;
6829 --
6830 
6831 --
6832 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6833    trace
6834       (p_msg      => 'END of AcctLineType_40'
6835       ,p_level    => C_LEVEL_PROCEDURE
6836       ,p_module   => l_log_module);
6837 END IF;
6838 --
6839 EXCEPTION
6840   WHEN xla_exceptions_pkg.application_exception THEN
6841       RAISE;
6842   WHEN OTHERS THEN
6843        xla_exceptions_pkg.raise_message
6844            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_40');
6845 END AcctLineType_40;
6846 --
6847 
6848 ---------------------------------------
6849 --
6850 -- PRIVATE FUNCTION
6851 --         AcctLineType_41
6852 --
6853 ---------------------------------------
6854 PROCEDURE AcctLineType_41 (
6855   p_application_id        IN NUMBER
6856  ,p_event_id              IN NUMBER
6857  ,p_calculate_acctd_flag  IN VARCHAR2
6858  ,p_calculate_g_l_flag    IN VARCHAR2
6859  ,p_actual_flag           IN OUT VARCHAR2
6860  ,p_balance_type_code     OUT VARCHAR2
6861  ,p_gain_or_loss_ref      OUT VARCHAR2
6862  
6863 --Distribution GL Account
6864  , p_source_32            IN NUMBER
6868  , p_source_41            IN NUMBER
6865 --Distribution Source Type
6866  , p_source_39            IN VARCHAR2
6867 --Distribution Line Identifier
6869 --Distribution Type
6870  , p_source_42            IN VARCHAR2
6871 --Entered Amount
6872  , p_source_43            IN NUMBER
6873 --Currency Code
6874  , p_source_44            IN VARCHAR2
6875 --Exchange Date
6876  , p_source_45            IN DATE
6877 --Exchange Rate
6878  , p_source_46            IN NUMBER
6879 --Exchange Rate Type
6880  , p_source_47            IN VARCHAR2
6881 --Applied To Document Accounting Amount
6882  , p_source_48            IN NUMBER
6883 --Bill To Customer Account Identifier
6884  , p_source_49            IN NUMBER
6885 --Bill To Customer Site Use Identifier
6886  , p_source_50            IN NUMBER
6887 --SLA Party Type
6888  , p_source_51            IN VARCHAR2
6889 )
6890 IS
6891 
6892 l_component_type              VARCHAR2(80);
6893 l_component_code              VARCHAR2(30);
6894 l_component_type_code         VARCHAR2(1);
6895 l_component_appl_id           INTEGER;
6896 l_amb_context_code            VARCHAR2(30);
6897 l_entity_code                 VARCHAR2(30);
6898 l_event_class_code            VARCHAR2(30);
6899 l_ae_header_id                NUMBER;
6900 l_event_type_code             VARCHAR2(30);
6901 l_line_definition_code        VARCHAR2(30);
6902 l_line_definition_owner_code  VARCHAR2(1);
6903 --
6904 -- adr variables
6905 l_segment                     VARCHAR2(30);
6906 l_ccid                        NUMBER;
6907 l_adr_transaction_coa_id      NUMBER;
6908 l_adr_accounting_coa_id       NUMBER;
6909 l_adr_flexfield_segment_code  VARCHAR2(30);
6910 l_adr_flex_value_set_id       NUMBER;
6911 l_adr_value_type_code         VARCHAR2(30);
6912 l_adr_value_combination_id    NUMBER;
6913 l_adr_value_segment_code      VARCHAR2(30);
6914 
6915 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
6916 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
6917 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
6918 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
6919 
6920 -- 4262811 Variables ------------------------------------------------------------------------------------------
6921 l_entered_amt_idx             NUMBER;
6922 l_accted_amt_idx              NUMBER;
6923 l_acc_rev_flag                VARCHAR2(1);
6924 l_accrual_line_num            NUMBER;
6925 l_tmp_amt                     NUMBER;
6926 l_acc_rev_natural_side_code   VARCHAR2(1);
6927 
6928 l_num_entries                 NUMBER;
6929 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
6930 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
6931 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
6932 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
6933 l_recog_line_1                NUMBER;
6934 l_recog_line_2                NUMBER;
6935 
6936 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
6937 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
6938 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
6939 
6940 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
6941 
6942 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
6943 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
6944 
6945 ---------------------------------------------------------------------------------------------------------------
6946 
6947 
6948 --
6949 -- bulk performance
6950 --
6951 l_balance_type_code           VARCHAR2(1);
6952 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
6953 l_log_module                  VARCHAR2(240);
6954 
6955 --
6956 -- Upgrade strategy
6957 --
6958 l_actual_upg_option           VARCHAR2(1);
6959 l_enc_upg_option           VARCHAR2(1);
6960 
6961 --
6962 BEGIN
6963 --
6964 IF g_log_enabled THEN
6965       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_41';
6966 END IF;
6967 --
6968 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
6969 
6970       trace
6971          (p_msg      => 'BEGIN of AcctLineType_41'
6972          ,p_level    => C_LEVEL_PROCEDURE
6973          ,p_module   => l_log_module);
6974 
6975 END IF;
6976 --
6977 l_component_type             := 'AMB_JLT';
6978 l_component_code             := 'ADJ_DEFERRED_TAX';
6979 l_component_type_code        := 'S';
6980 l_component_appl_id          :=  222;
6981 l_amb_context_code           := 'DEFAULT';
6982 l_entity_code                := 'ADJUSTMENTS';
6983 l_event_class_code           := 'ADJUSTMENT';
6984 l_event_type_code            := 'ADJUSTMENT_ALL';
6985 l_line_definition_owner_code := 'S';
6986 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
6987 --
6988 l_balance_type_code          := 'A';
6989 l_segment                     := NULL;
6990 l_ccid                        := NULL;
6991 l_adr_transaction_coa_id      := NULL;
6992 l_adr_accounting_coa_id       := NULL;
6993 l_adr_flexfield_segment_code  := NULL;
6994 l_adr_flex_value_set_id       := NULL;
6995 l_adr_value_type_code         := NULL;
6996 l_adr_value_combination_id    := NULL;
6997 l_adr_value_segment_code      := NULL;
6998 
7002 l_budgetary_control_flag     := 'N';
6999 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7000 l_bflow_class_code           := '';    -- 4219869 Business Flow
7001 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7003 
7004 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7005 l_bflow_applied_to_amt       := NULL; -- 5132302
7006 l_entered_amt_idx            := NULL;          -- 4262811
7007 l_accted_amt_idx             := NULL;          -- 4262811
7008 l_acc_rev_flag               := NULL;          -- 4262811
7009 l_accrual_line_num           := NULL;          -- 4262811
7010 l_tmp_amt                    := NULL;          -- 4262811
7011 --
7012  
7013 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7014     l_balance_type_code <> 'B' THEN
7015 IF NVL(p_source_39,'
7016 ') =  'DEFERRED_TAX'
7017  THEN 
7018 
7019    --
7020    XLA_AE_LINES_PKG.SetNewLine;
7021 
7022    p_balance_type_code          := l_balance_type_code;
7023    -- set the flag so later we will know whether the gain loss line needs to be created
7024    
7025    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7026      p_actual_flag :='A';
7027    END IF;
7028 
7029    --
7030    -- bulk performance
7031    --
7032    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7033                                       p_header_num   => 0); -- 4262811
7034    --
7035    -- set accounting line options
7036    --
7037    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7038            p_natural_side_code          => 'C'
7039          , p_gain_or_loss_flag          => 'N'
7040          , p_gl_transfer_mode_code      => 'S'
7041          , p_acct_entry_type_code       => 'A'
7042          , p_switch_side_flag           => 'Y'
7043          , p_merge_duplicate_code       => 'A'
7044          );
7045    --
7046    l_acc_rev_natural_side_code := 'D';  -- 4262811
7047    -- 
7048    --
7049    -- set accounting line type info
7050    --
7051    xla_ae_lines_pkg.SetAcctLineType
7052       (p_component_type             => l_component_type
7053       ,p_event_type_code            => l_event_type_code
7054       ,p_line_definition_owner_code => l_line_definition_owner_code
7055       ,p_line_definition_code       => l_line_definition_code
7056       ,p_accounting_line_code       => l_component_code
7057       ,p_accounting_line_type_code  => l_component_type_code
7058       ,p_accounting_line_appl_id    => l_component_appl_id
7059       ,p_amb_context_code           => l_amb_context_code
7060       ,p_entity_code                => l_entity_code
7061       ,p_event_class_code           => l_event_class_code);
7062    --
7063    -- set accounting class
7064    --
7065    xla_ae_lines_pkg.SetAcctClass(
7066            p_accounting_class_code  => 'DEFERRED_TAX'
7067          , p_ae_header_id           => l_ae_header_id
7068          );
7069 
7070    --
7071    -- set rounding class
7072    --
7073    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7074                       'RECEIVABLE';
7075 
7076    --
7077    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7078    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7079    --
7080    -- bulk performance
7081    --
7082    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7083 
7084    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7085       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7086 
7087    -- 4955764
7088    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7089       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7090 
7091    -- 4458381 Public Sector Enh
7092    
7093    --
7094    -- set accounting attributes for the line type
7095    --
7096    l_entered_amt_idx := 3;
7097    l_accted_amt_idx  := 8;
7098    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7099    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7100    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
7101    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7102    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
7103    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7104    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
7105    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7106    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
7107    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7108    l_rec_acct_attrs.array_date_value(5)  := p_source_45;
7109    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7110    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
7111    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7112    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
7113    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7114    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
7115    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
7116    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
7117    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
7118    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
7122    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7119    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
7120    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
7121 
7123    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7124 
7125    ---------------------------------------------------------------------------------------------------------------
7126    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7127    ---------------------------------------------------------------------------------------------------------------
7128    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7129 
7130    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7131    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7132 
7133    IF xla_accounting_cache_pkg.GetValueChar
7134          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7135          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7136    AND l_bflow_method_code = 'PRIOR_ENTRY'
7137 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7138    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7139          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7140        )
7141    THEN
7142          xla_ae_lines_pkg.BflowUpgEntry
7143            (p_business_method_code    => l_bflow_method_code
7144            ,p_business_class_code     => l_bflow_class_code
7145            ,p_balance_type            => l_balance_type_code);
7146    ELSE
7147       NULL;
7148 -- No business flow processing for business flow method of NONE.
7149    END IF;
7150 
7151    --
7152    -- call analytical criteria
7153    --
7154    
7155    --
7156    -- call description
7157    --
7158    -- No description or it is inherited.
7159    --
7160    -- call ADRs
7161    -- Bug 4922099
7162    --
7163    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7164         (NVL(l_actual_upg_option, 'N') = 'O') OR
7165         (NVL(l_enc_upg_option, 'N') = 'O')
7166       )
7167    THEN
7168    NULL;
7169    --
7170    --
7171    
7172   l_ccid := AcctDerRule_29(
7173            p_application_id           => p_application_id
7174          , p_ae_header_id             => l_ae_header_id 
7175 , p_source_32 => p_source_32
7176          , x_transaction_coa_id       => l_adr_transaction_coa_id
7177          , x_accounting_coa_id        => l_adr_accounting_coa_id
7178          , x_value_type_code          => l_adr_value_type_code
7179          , p_side                     => 'NA'
7180    );
7181 
7182    xla_ae_lines_pkg.set_ccid(
7183     p_code_combination_id          => l_ccid
7184   , p_value_type_code              => l_adr_value_type_code
7185   , p_transaction_coa_id           => l_adr_transaction_coa_id
7186   , p_accounting_coa_id            => l_adr_accounting_coa_id
7187   , p_adr_code                     => 'DIST_CCID'
7188   , p_adr_type_code                => 'S'
7189   , p_component_type               => l_component_type
7190   , p_component_code               => l_component_code
7191   , p_component_type_code          => l_component_type_code
7192   , p_component_appl_id            => l_component_appl_id
7193   , p_amb_context_code             => l_amb_context_code
7194   , p_side                         => 'NA'
7195   );
7196 
7197 
7198    --
7199    --
7200    END IF;
7201    --
7202    -- Bug 4922099
7203    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7204           (NVL(l_enc_upg_option, 'N') = 'O')
7205         ) AND
7206         (l_bflow_method_code = 'PRIOR_ENTRY')
7207       )
7208    THEN
7209       IF
7210       --
7211       1 = 2
7212       --
7213       THEN
7214       xla_accounting_err_pkg.build_message
7215                                     (p_appli_s_name            => 'XLA'
7216                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7217                                     ,p_token_1                 => 'LINE_NUMBER'
7218                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7219                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7220                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7221                                                                              l_component_type
7222                                                                             ,l_component_code
7223                                                                             ,l_component_type_code
7224                                                                             ,l_component_appl_id
7225                                                                             ,l_amb_context_code
7226                                                                             ,l_entity_code
7227                                                                             ,l_event_class_code
7228                                                                            )
7229                                     ,p_token_3                 => 'OWNER'
7230                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7234                                     ,p_token_4                 => 'PRODUCT_NAME'
7231                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7232                                                                           ,p_lookup_code    => l_component_type_code
7233                                                                          )
7235                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7236                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7237                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7238                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7239                                     ,p_ae_header_id            =>  NULL
7240                                        );
7241 
7242         IF (C_LEVEL_ERROR>= g_log_level) THEN
7243                  trace
7244                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7245                       ,p_level    => C_LEVEL_ERROR
7246                       ,p_module   => l_log_module);
7247         END IF;
7248       END IF;
7249    END IF;
7250    --
7251    --
7252    ------------------------------------------------------------------------------------------------
7253    -- 4219869 Business Flow
7254    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7255    -- Prior Entry.  Currently, the following code is always generated.
7256    ------------------------------------------------------------------------------------------------
7257    XLA_AE_LINES_PKG.ValidateCurrentLine;
7258 
7259    ------------------------------------------------------------------------------------
7260    -- 4219869 Business Flow
7261    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7262    ------------------------------------------------------------------------------------
7263    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7264 
7265    ----------------------------------------------------------------------------------
7266    -- 4219869 Business Flow
7267    -- Update journal entry status -- Need to generate this within IF <condition>
7268    ----------------------------------------------------------------------------------
7269    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7270          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7271          ,p_balance_type_code => l_balance_type_code
7272          );
7273 
7274    -------------------------------------------------------------------------------------------
7275    -- 4262811 - Generate the Accrual Reversal lines
7276    -------------------------------------------------------------------------------------------
7277    BEGIN
7278       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7279                               (g_array_event(p_event_id).array_value_num('header_index'));
7280       IF l_acc_rev_flag IS NULL THEN
7281          l_acc_rev_flag := 'N';
7282       END IF;
7283    EXCEPTION
7284       WHEN OTHERS THEN
7285          l_acc_rev_flag := 'N';
7286    END;
7287    --
7288    IF (l_acc_rev_flag = 'Y') THEN
7289 
7290        -- 4645092  ------------------------------------------------------------------------------
7291        -- To allow MPA report to determine if it should generate report process
7292        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7293        ------------------------------------------------------------------------------------------
7294 
7295        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7296        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7297    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
7298    -- call ADRs
7299    -- Bug 4922099
7300    --
7301    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7302         (NVL(l_actual_upg_option, 'N') = 'O') OR
7303         (NVL(l_enc_upg_option, 'N') = 'O')
7304       )
7305    THEN
7306    NULL;
7307    --
7308    --
7309    
7310   l_ccid := AcctDerRule_29(
7311            p_application_id           => p_application_id
7312          , p_ae_header_id             => l_ae_header_id 
7313 , p_source_32 => p_source_32
7314          , x_transaction_coa_id       => l_adr_transaction_coa_id
7315          , x_accounting_coa_id        => l_adr_accounting_coa_id
7316          , x_value_type_code          => l_adr_value_type_code
7317          , p_side                     => 'NA'
7318    );
7319 
7320    xla_ae_lines_pkg.set_ccid(
7321     p_code_combination_id          => l_ccid
7322   , p_value_type_code              => l_adr_value_type_code
7323   , p_transaction_coa_id           => l_adr_transaction_coa_id
7324   , p_accounting_coa_id            => l_adr_accounting_coa_id
7325   , p_adr_code                     => 'DIST_CCID'
7326   , p_adr_type_code                => 'S'
7327   , p_component_type               => l_component_type
7328   , p_component_code               => l_component_code
7329   , p_component_type_code          => l_component_type_code
7330   , p_component_appl_id            => l_component_appl_id
7331   , p_amb_context_code             => l_amb_context_code
7332   , p_side                         => 'NA'
7333   );
7334 
7335 
7336    --
7337    --
7338    END IF;
7339 
7340        --
7341        -- Update the line information that should be overwritten
7345        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7342        --
7343        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7344                                          p_header_num   => 1);
7346 
7347        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7348 
7349        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7350           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7351        END IF;
7352 
7353       --
7354       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7355       --
7356       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7357           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7358       ELSE
7359           ---------------------------------------------------------------------------------------------------
7360           -- 4262811a Switch Sign
7361           ---------------------------------------------------------------------------------------------------
7362           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7363           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7364                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7365           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7366                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7367           -- 5132302
7368           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7369                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7370 
7371       END IF;
7372 
7373       -- 4955764
7374       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7375       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7376 
7377 
7378       XLA_AE_LINES_PKG.ValidateCurrentLine;
7379       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7380 
7381       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7382                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7383                ,p_balance_type_code => l_balance_type_code);
7384 
7385    END IF;
7386 
7387    -----------------------------------------------------------------------------------------
7388    -- 4262811 Multiperiod Accounting
7389    -----------------------------------------------------------------------------------------
7390      -- No MPA option is assigned.
7391 
7392 
7393 END IF;
7394 END IF;
7395 --
7396 
7397 --
7398 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7399    trace
7400       (p_msg      => 'END of AcctLineType_41'
7401       ,p_level    => C_LEVEL_PROCEDURE
7402       ,p_module   => l_log_module);
7403 END IF;
7404 --
7405 EXCEPTION
7406   WHEN xla_exceptions_pkg.application_exception THEN
7407       RAISE;
7408   WHEN OTHERS THEN
7409        xla_exceptions_pkg.raise_message
7410            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_41');
7411 END AcctLineType_41;
7412 --
7413 
7414 ---------------------------------------
7415 --
7416 -- PRIVATE FUNCTION
7417 --         AcctLineType_42
7418 --
7419 ---------------------------------------
7420 PROCEDURE AcctLineType_42 (
7421   p_application_id        IN NUMBER
7422  ,p_event_id              IN NUMBER
7423  ,p_calculate_acctd_flag  IN VARCHAR2
7424  ,p_calculate_g_l_flag    IN VARCHAR2
7425  ,p_actual_flag           IN OUT VARCHAR2
7426  ,p_balance_type_code     OUT VARCHAR2
7427  ,p_gain_or_loss_ref      OUT VARCHAR2
7428  
7429 --Distribution GL Account
7430  , p_source_32            IN NUMBER
7431 --Distribution Source Type
7432  , p_source_39            IN VARCHAR2
7433 --Distribution Line Identifier
7434  , p_source_41            IN NUMBER
7435 --Distribution Type
7436  , p_source_42            IN VARCHAR2
7437 --Entered Amount
7438  , p_source_43            IN NUMBER
7439 --Currency Code
7440  , p_source_44            IN VARCHAR2
7441 --Exchange Date
7442  , p_source_45            IN DATE
7443 --Exchange Rate
7444  , p_source_46            IN NUMBER
7445 --Exchange Rate Type
7446  , p_source_47            IN VARCHAR2
7447 --Applied To Document Accounting Amount
7448  , p_source_48            IN NUMBER
7449 --Bill To Customer Account Identifier
7450  , p_source_49            IN NUMBER
7451 --Bill To Customer Site Use Identifier
7452  , p_source_50            IN NUMBER
7453 --SLA Party Type
7454  , p_source_51            IN VARCHAR2
7455 )
7456 IS
7457 
7458 l_component_type              VARCHAR2(80);
7459 l_component_code              VARCHAR2(30);
7460 l_component_type_code         VARCHAR2(1);
7461 l_component_appl_id           INTEGER;
7462 l_amb_context_code            VARCHAR2(30);
7463 l_entity_code                 VARCHAR2(30);
7464 l_event_class_code            VARCHAR2(30);
7465 l_ae_header_id                NUMBER;
7466 l_event_type_code             VARCHAR2(30);
7467 l_line_definition_code        VARCHAR2(30);
7471 l_segment                     VARCHAR2(30);
7468 l_line_definition_owner_code  VARCHAR2(1);
7469 --
7470 -- adr variables
7472 l_ccid                        NUMBER;
7473 l_adr_transaction_coa_id      NUMBER;
7474 l_adr_accounting_coa_id       NUMBER;
7475 l_adr_flexfield_segment_code  VARCHAR2(30);
7476 l_adr_flex_value_set_id       NUMBER;
7477 l_adr_value_type_code         VARCHAR2(30);
7478 l_adr_value_combination_id    NUMBER;
7479 l_adr_value_segment_code      VARCHAR2(30);
7480 
7481 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
7482 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
7483 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
7484 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
7485 
7486 -- 4262811 Variables ------------------------------------------------------------------------------------------
7487 l_entered_amt_idx             NUMBER;
7488 l_accted_amt_idx              NUMBER;
7489 l_acc_rev_flag                VARCHAR2(1);
7490 l_accrual_line_num            NUMBER;
7491 l_tmp_amt                     NUMBER;
7492 l_acc_rev_natural_side_code   VARCHAR2(1);
7493 
7494 l_num_entries                 NUMBER;
7495 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
7496 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
7497 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
7498 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
7499 l_recog_line_1                NUMBER;
7500 l_recog_line_2                NUMBER;
7501 
7502 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
7503 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
7504 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
7505 
7506 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
7507 
7508 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
7509 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
7510 
7511 ---------------------------------------------------------------------------------------------------------------
7512 
7513 
7514 --
7515 -- bulk performance
7516 --
7517 l_balance_type_code           VARCHAR2(1);
7518 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
7519 l_log_module                  VARCHAR2(240);
7520 
7521 --
7522 -- Upgrade strategy
7523 --
7524 l_actual_upg_option           VARCHAR2(1);
7525 l_enc_upg_option           VARCHAR2(1);
7526 
7527 --
7528 BEGIN
7529 --
7530 IF g_log_enabled THEN
7531       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_42';
7532 END IF;
7533 --
7534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7535 
7536       trace
7537          (p_msg      => 'BEGIN of AcctLineType_42'
7538          ,p_level    => C_LEVEL_PROCEDURE
7539          ,p_module   => l_log_module);
7540 
7541 END IF;
7542 --
7543 l_component_type             := 'AMB_JLT';
7544 l_component_code             := 'ADJ_FINCHRG_NON_REC_TAX';
7545 l_component_type_code        := 'S';
7546 l_component_appl_id          :=  222;
7547 l_amb_context_code           := 'DEFAULT';
7548 l_entity_code                := 'ADJUSTMENTS';
7549 l_event_class_code           := 'ADJUSTMENT';
7550 l_event_type_code            := 'ADJUSTMENT_ALL';
7551 l_line_definition_owner_code := 'S';
7552 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
7553 --
7554 l_balance_type_code          := 'A';
7555 l_segment                     := NULL;
7556 l_ccid                        := NULL;
7557 l_adr_transaction_coa_id      := NULL;
7558 l_adr_accounting_coa_id       := NULL;
7559 l_adr_flexfield_segment_code  := NULL;
7560 l_adr_flex_value_set_id       := NULL;
7561 l_adr_value_type_code         := NULL;
7562 l_adr_value_combination_id    := NULL;
7563 l_adr_value_segment_code      := NULL;
7564 
7565 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
7566 l_bflow_class_code           := '';    -- 4219869 Business Flow
7567 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
7568 l_budgetary_control_flag     := 'N';
7569 
7570 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
7571 l_bflow_applied_to_amt       := NULL; -- 5132302
7572 l_entered_amt_idx            := NULL;          -- 4262811
7573 l_accted_amt_idx             := NULL;          -- 4262811
7574 l_acc_rev_flag               := NULL;          -- 4262811
7575 l_accrual_line_num           := NULL;          -- 4262811
7576 l_tmp_amt                    := NULL;          -- 4262811
7577 --
7578  
7579 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
7580     l_balance_type_code <> 'B' THEN
7581 IF NVL(p_source_39,'
7582 ') =  'FINCHRG_NON_REC_TAX'
7583  THEN 
7584 
7585    --
7586    XLA_AE_LINES_PKG.SetNewLine;
7587 
7588    p_balance_type_code          := l_balance_type_code;
7589    -- set the flag so later we will know whether the gain loss line needs to be created
7590    
7591    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
7592      p_actual_flag :='A';
7593    END IF;
7594 
7595    --
7596    -- bulk performance
7597    --
7601    -- set accounting line options
7598    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
7599                                       p_header_num   => 0); -- 4262811
7600    --
7602    --
7603    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
7604            p_natural_side_code          => 'C'
7605          , p_gain_or_loss_flag          => 'N'
7606          , p_gl_transfer_mode_code      => 'S'
7607          , p_acct_entry_type_code       => 'A'
7608          , p_switch_side_flag           => 'Y'
7609          , p_merge_duplicate_code       => 'A'
7610          );
7611    --
7612    l_acc_rev_natural_side_code := 'D';  -- 4262811
7613    -- 
7614    --
7615    -- set accounting line type info
7616    --
7617    xla_ae_lines_pkg.SetAcctLineType
7618       (p_component_type             => l_component_type
7619       ,p_event_type_code            => l_event_type_code
7620       ,p_line_definition_owner_code => l_line_definition_owner_code
7621       ,p_line_definition_code       => l_line_definition_code
7622       ,p_accounting_line_code       => l_component_code
7623       ,p_accounting_line_type_code  => l_component_type_code
7624       ,p_accounting_line_appl_id    => l_component_appl_id
7625       ,p_amb_context_code           => l_amb_context_code
7626       ,p_entity_code                => l_entity_code
7627       ,p_event_class_code           => l_event_class_code);
7628    --
7629    -- set accounting class
7630    --
7631    xla_ae_lines_pkg.SetAcctClass(
7632            p_accounting_class_code  => 'FINCHRG_NON_REC_TAX'
7633          , p_ae_header_id           => l_ae_header_id
7634          );
7635 
7636    --
7637    -- set rounding class
7638    --
7639    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
7640                       'RECEIVABLE';
7641 
7642    --
7643    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
7644    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
7645    --
7646    -- bulk performance
7647    --
7648    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
7649 
7650    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
7651       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
7652 
7653    -- 4955764
7654    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7655       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
7656 
7657    -- 4458381 Public Sector Enh
7658    
7659    --
7660    -- set accounting attributes for the line type
7661    --
7662    l_entered_amt_idx := 3;
7663    l_accted_amt_idx  := 8;
7664    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
7665    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
7666    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
7667    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
7668    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
7669    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
7670    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
7671    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
7672    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
7673    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
7674    l_rec_acct_attrs.array_date_value(5)  := p_source_45;
7675    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
7676    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
7677    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
7678    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
7679    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
7680    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
7681    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
7682    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
7683    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
7684    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
7685    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
7686    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
7687 
7688    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
7689    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
7690 
7691    ---------------------------------------------------------------------------------------------------------------
7692    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
7693    ---------------------------------------------------------------------------------------------------------------
7694    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
7695 
7696    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7697    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
7698 
7699    IF xla_accounting_cache_pkg.GetValueChar
7700          (p_source_code         => 'LEDGER_CATEGORY_CODE'
7701          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
7702    AND l_bflow_method_code = 'PRIOR_ENTRY'
7703 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
7704    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
7708          xla_ae_lines_pkg.BflowUpgEntry
7705          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
7706        )
7707    THEN
7709            (p_business_method_code    => l_bflow_method_code
7710            ,p_business_class_code     => l_bflow_class_code
7711            ,p_balance_type            => l_balance_type_code);
7712    ELSE
7713       NULL;
7714 -- No business flow processing for business flow method of NONE.
7715    END IF;
7716 
7717    --
7718    -- call analytical criteria
7719    --
7720    
7721    --
7722    -- call description
7723    --
7724    -- No description or it is inherited.
7725    --
7726    -- call ADRs
7727    -- Bug 4922099
7728    --
7729    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7730         (NVL(l_actual_upg_option, 'N') = 'O') OR
7731         (NVL(l_enc_upg_option, 'N') = 'O')
7732       )
7733    THEN
7734    NULL;
7735    --
7736    --
7737    
7738   l_ccid := AcctDerRule_29(
7739            p_application_id           => p_application_id
7740          , p_ae_header_id             => l_ae_header_id 
7741 , p_source_32 => p_source_32
7742          , x_transaction_coa_id       => l_adr_transaction_coa_id
7743          , x_accounting_coa_id        => l_adr_accounting_coa_id
7744          , x_value_type_code          => l_adr_value_type_code
7745          , p_side                     => 'NA'
7746    );
7747 
7748    xla_ae_lines_pkg.set_ccid(
7749     p_code_combination_id          => l_ccid
7750   , p_value_type_code              => l_adr_value_type_code
7751   , p_transaction_coa_id           => l_adr_transaction_coa_id
7752   , p_accounting_coa_id            => l_adr_accounting_coa_id
7753   , p_adr_code                     => 'DIST_CCID'
7754   , p_adr_type_code                => 'S'
7755   , p_component_type               => l_component_type
7756   , p_component_code               => l_component_code
7757   , p_component_type_code          => l_component_type_code
7758   , p_component_appl_id            => l_component_appl_id
7759   , p_amb_context_code             => l_amb_context_code
7760   , p_side                         => 'NA'
7761   );
7762 
7763 
7764    --
7765    --
7766    END IF;
7767    --
7768    -- Bug 4922099
7769    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
7770           (NVL(l_enc_upg_option, 'N') = 'O')
7771         ) AND
7772         (l_bflow_method_code = 'PRIOR_ENTRY')
7773       )
7774    THEN
7775       IF
7776       --
7777       1 = 2
7778       --
7779       THEN
7780       xla_accounting_err_pkg.build_message
7781                                     (p_appli_s_name            => 'XLA'
7782                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7783                                     ,p_token_1                 => 'LINE_NUMBER'
7784                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
7785                                     ,p_token_2                 => 'LINE_TYPE_NAME'
7786                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
7787                                                                              l_component_type
7788                                                                             ,l_component_code
7789                                                                             ,l_component_type_code
7790                                                                             ,l_component_appl_id
7791                                                                             ,l_amb_context_code
7792                                                                             ,l_entity_code
7793                                                                             ,l_event_class_code
7794                                                                            )
7795                                     ,p_token_3                 => 'OWNER'
7796                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
7797                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
7798                                                                           ,p_lookup_code    => l_component_type_code
7799                                                                          )
7800                                     ,p_token_4                 => 'PRODUCT_NAME'
7801                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
7802                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
7803                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
7804                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
7805                                     ,p_ae_header_id            =>  NULL
7806                                        );
7807 
7808         IF (C_LEVEL_ERROR>= g_log_level) THEN
7809                  trace
7810                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
7811                       ,p_level    => C_LEVEL_ERROR
7812                       ,p_module   => l_log_module);
7813         END IF;
7814       END IF;
7815    END IF;
7816    --
7817    --
7818    ------------------------------------------------------------------------------------------------
7819    -- 4219869 Business Flow
7820    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
7821    -- Prior Entry.  Currently, the following code is always generated.
7825    ------------------------------------------------------------------------------------
7822    ------------------------------------------------------------------------------------------------
7823    XLA_AE_LINES_PKG.ValidateCurrentLine;
7824 
7826    -- 4219869 Business Flow
7827    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
7828    ------------------------------------------------------------------------------------
7829    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7830 
7831    ----------------------------------------------------------------------------------
7832    -- 4219869 Business Flow
7833    -- Update journal entry status -- Need to generate this within IF <condition>
7834    ----------------------------------------------------------------------------------
7835    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7836          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
7837          ,p_balance_type_code => l_balance_type_code
7838          );
7839 
7840    -------------------------------------------------------------------------------------------
7841    -- 4262811 - Generate the Accrual Reversal lines
7842    -------------------------------------------------------------------------------------------
7843    BEGIN
7844       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
7845                               (g_array_event(p_event_id).array_value_num('header_index'));
7846       IF l_acc_rev_flag IS NULL THEN
7847          l_acc_rev_flag := 'N';
7848       END IF;
7849    EXCEPTION
7850       WHEN OTHERS THEN
7851          l_acc_rev_flag := 'N';
7852    END;
7853    --
7854    IF (l_acc_rev_flag = 'Y') THEN
7855 
7856        -- 4645092  ------------------------------------------------------------------------------
7857        -- To allow MPA report to determine if it should generate report process
7858        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
7859        ------------------------------------------------------------------------------------------
7860 
7861        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
7862        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
7863    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
7864    -- call ADRs
7865    -- Bug 4922099
7866    --
7867    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
7868         (NVL(l_actual_upg_option, 'N') = 'O') OR
7869         (NVL(l_enc_upg_option, 'N') = 'O')
7870       )
7871    THEN
7872    NULL;
7873    --
7874    --
7875    
7876   l_ccid := AcctDerRule_29(
7877            p_application_id           => p_application_id
7878          , p_ae_header_id             => l_ae_header_id 
7879 , p_source_32 => p_source_32
7880          , x_transaction_coa_id       => l_adr_transaction_coa_id
7881          , x_accounting_coa_id        => l_adr_accounting_coa_id
7882          , x_value_type_code          => l_adr_value_type_code
7883          , p_side                     => 'NA'
7884    );
7885 
7886    xla_ae_lines_pkg.set_ccid(
7887     p_code_combination_id          => l_ccid
7888   , p_value_type_code              => l_adr_value_type_code
7889   , p_transaction_coa_id           => l_adr_transaction_coa_id
7890   , p_accounting_coa_id            => l_adr_accounting_coa_id
7891   , p_adr_code                     => 'DIST_CCID'
7892   , p_adr_type_code                => 'S'
7893   , p_component_type               => l_component_type
7894   , p_component_code               => l_component_code
7895   , p_component_type_code          => l_component_type_code
7896   , p_component_appl_id            => l_component_appl_id
7897   , p_amb_context_code             => l_amb_context_code
7898   , p_side                         => 'NA'
7899   );
7900 
7901 
7902    --
7903    --
7904    END IF;
7905 
7906        --
7907        -- Update the line information that should be overwritten
7908        --
7909        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
7910                                          p_header_num   => 1);
7911        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
7912 
7913        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
7914 
7915        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
7916           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
7917        END IF;
7918 
7919       --
7920       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
7921       --
7922       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
7923           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
7924       ELSE
7925           ---------------------------------------------------------------------------------------------------
7926           -- 4262811a Switch Sign
7927           ---------------------------------------------------------------------------------------------------
7928           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
7929           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7930                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7931           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
7935                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7932                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
7933           -- 5132302
7934           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
7936 
7937       END IF;
7938 
7939       -- 4955764
7940       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
7941       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
7942 
7943 
7944       XLA_AE_LINES_PKG.ValidateCurrentLine;
7945       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
7946 
7947       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
7948                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
7949                ,p_balance_type_code => l_balance_type_code);
7950 
7951    END IF;
7952 
7953    -----------------------------------------------------------------------------------------
7954    -- 4262811 Multiperiod Accounting
7955    -----------------------------------------------------------------------------------------
7956      -- No MPA option is assigned.
7957 
7958 
7959 END IF;
7960 END IF;
7961 --
7962 
7963 --
7964 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
7965    trace
7966       (p_msg      => 'END of AcctLineType_42'
7967       ,p_level    => C_LEVEL_PROCEDURE
7968       ,p_module   => l_log_module);
7969 END IF;
7970 --
7971 EXCEPTION
7972   WHEN xla_exceptions_pkg.application_exception THEN
7973       RAISE;
7974   WHEN OTHERS THEN
7975        xla_exceptions_pkg.raise_message
7976            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_42');
7977 END AcctLineType_42;
7978 --
7979 
7980 ---------------------------------------
7981 --
7982 -- PRIVATE FUNCTION
7983 --         AcctLineType_43
7984 --
7985 ---------------------------------------
7986 PROCEDURE AcctLineType_43 (
7987   p_application_id        IN NUMBER
7988  ,p_event_id              IN NUMBER
7989  ,p_calculate_acctd_flag  IN VARCHAR2
7990  ,p_calculate_g_l_flag    IN VARCHAR2
7991  ,p_actual_flag           IN OUT VARCHAR2
7992  ,p_balance_type_code     OUT VARCHAR2
7993  ,p_gain_or_loss_ref      OUT VARCHAR2
7994  
7995 --Distribution GL Account
7996  , p_source_32            IN NUMBER
7997 --Distribution Source Type
7998  , p_source_39            IN VARCHAR2
7999 --Distribution Line Identifier
8000  , p_source_41            IN NUMBER
8001 --Distribution Type
8002  , p_source_42            IN VARCHAR2
8003 --Entered Amount
8004  , p_source_43            IN NUMBER
8005 --Currency Code
8006  , p_source_44            IN VARCHAR2
8007 --Exchange Date
8008  , p_source_45            IN DATE
8009 --Exchange Rate
8010  , p_source_46            IN NUMBER
8011 --Exchange Rate Type
8012  , p_source_47            IN VARCHAR2
8013 --Applied To Document Accounting Amount
8014  , p_source_48            IN NUMBER
8015 --Bill To Customer Account Identifier
8016  , p_source_49            IN NUMBER
8017 --Bill To Customer Site Use Identifier
8018  , p_source_50            IN NUMBER
8019 --SLA Party Type
8020  , p_source_51            IN VARCHAR2
8021 )
8022 IS
8023 
8024 l_component_type              VARCHAR2(80);
8025 l_component_code              VARCHAR2(30);
8026 l_component_type_code         VARCHAR2(1);
8027 l_component_appl_id           INTEGER;
8028 l_amb_context_code            VARCHAR2(30);
8029 l_entity_code                 VARCHAR2(30);
8030 l_event_class_code            VARCHAR2(30);
8031 l_ae_header_id                NUMBER;
8032 l_event_type_code             VARCHAR2(30);
8033 l_line_definition_code        VARCHAR2(30);
8034 l_line_definition_owner_code  VARCHAR2(1);
8035 --
8036 -- adr variables
8037 l_segment                     VARCHAR2(30);
8038 l_ccid                        NUMBER;
8039 l_adr_transaction_coa_id      NUMBER;
8040 l_adr_accounting_coa_id       NUMBER;
8041 l_adr_flexfield_segment_code  VARCHAR2(30);
8042 l_adr_flex_value_set_id       NUMBER;
8043 l_adr_value_type_code         VARCHAR2(30);
8044 l_adr_value_combination_id    NUMBER;
8045 l_adr_value_segment_code      VARCHAR2(30);
8046 
8047 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8048 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8049 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8050 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8051 
8052 -- 4262811 Variables ------------------------------------------------------------------------------------------
8053 l_entered_amt_idx             NUMBER;
8054 l_accted_amt_idx              NUMBER;
8055 l_acc_rev_flag                VARCHAR2(1);
8056 l_accrual_line_num            NUMBER;
8057 l_tmp_amt                     NUMBER;
8058 l_acc_rev_natural_side_code   VARCHAR2(1);
8059 
8060 l_num_entries                 NUMBER;
8061 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8062 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8063 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8064 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8065 l_recog_line_1                NUMBER;
8066 l_recog_line_2                NUMBER;
8067 
8071 
8068 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8069 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8070 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8072 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8073 
8074 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8075 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8076 
8077 ---------------------------------------------------------------------------------------------------------------
8078 
8079 
8080 --
8081 -- bulk performance
8082 --
8083 l_balance_type_code           VARCHAR2(1);
8084 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8085 l_log_module                  VARCHAR2(240);
8086 
8087 --
8088 -- Upgrade strategy
8089 --
8090 l_actual_upg_option           VARCHAR2(1);
8091 l_enc_upg_option           VARCHAR2(1);
8092 
8093 --
8094 BEGIN
8095 --
8096 IF g_log_enabled THEN
8097       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_43';
8098 END IF;
8099 --
8100 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8101 
8102       trace
8103          (p_msg      => 'BEGIN of AcctLineType_43'
8104          ,p_level    => C_LEVEL_PROCEDURE
8105          ,p_module   => l_log_module);
8106 
8107 END IF;
8108 --
8109 l_component_type             := 'AMB_JLT';
8110 l_component_code             := 'ADJ_NON_REC_TAX';
8111 l_component_type_code        := 'S';
8112 l_component_appl_id          :=  222;
8113 l_amb_context_code           := 'DEFAULT';
8114 l_entity_code                := 'ADJUSTMENTS';
8115 l_event_class_code           := 'ADJUSTMENT';
8116 l_event_type_code            := 'ADJUSTMENT_ALL';
8117 l_line_definition_owner_code := 'S';
8118 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
8119 --
8120 l_balance_type_code          := 'A';
8121 l_segment                     := NULL;
8122 l_ccid                        := NULL;
8123 l_adr_transaction_coa_id      := NULL;
8124 l_adr_accounting_coa_id       := NULL;
8125 l_adr_flexfield_segment_code  := NULL;
8126 l_adr_flex_value_set_id       := NULL;
8127 l_adr_value_type_code         := NULL;
8128 l_adr_value_combination_id    := NULL;
8129 l_adr_value_segment_code      := NULL;
8130 
8131 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8132 l_bflow_class_code           := '';    -- 4219869 Business Flow
8133 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8134 l_budgetary_control_flag     := 'N';
8135 
8136 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8137 l_bflow_applied_to_amt       := NULL; -- 5132302
8138 l_entered_amt_idx            := NULL;          -- 4262811
8139 l_accted_amt_idx             := NULL;          -- 4262811
8140 l_acc_rev_flag               := NULL;          -- 4262811
8141 l_accrual_line_num           := NULL;          -- 4262811
8142 l_tmp_amt                    := NULL;          -- 4262811
8143 --
8144  
8145 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8146     l_balance_type_code <> 'B' THEN
8147 IF NVL(p_source_39,'
8148 ') =  'ADJ_NON_REC_TAX'
8149  THEN 
8150 
8151    --
8152    XLA_AE_LINES_PKG.SetNewLine;
8153 
8154    p_balance_type_code          := l_balance_type_code;
8155    -- set the flag so later we will know whether the gain loss line needs to be created
8156    
8157    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8158      p_actual_flag :='A';
8159    END IF;
8160 
8161    --
8162    -- bulk performance
8163    --
8164    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8165                                       p_header_num   => 0); -- 4262811
8166    --
8167    -- set accounting line options
8168    --
8169    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8170            p_natural_side_code          => 'C'
8171          , p_gain_or_loss_flag          => 'N'
8172          , p_gl_transfer_mode_code      => 'S'
8173          , p_acct_entry_type_code       => 'A'
8174          , p_switch_side_flag           => 'Y'
8175          , p_merge_duplicate_code       => 'A'
8176          );
8177    --
8178    l_acc_rev_natural_side_code := 'D';  -- 4262811
8179    -- 
8180    --
8181    -- set accounting line type info
8182    --
8183    xla_ae_lines_pkg.SetAcctLineType
8184       (p_component_type             => l_component_type
8185       ,p_event_type_code            => l_event_type_code
8186       ,p_line_definition_owner_code => l_line_definition_owner_code
8187       ,p_line_definition_code       => l_line_definition_code
8188       ,p_accounting_line_code       => l_component_code
8189       ,p_accounting_line_type_code  => l_component_type_code
8190       ,p_accounting_line_appl_id    => l_component_appl_id
8191       ,p_amb_context_code           => l_amb_context_code
8192       ,p_entity_code                => l_entity_code
8193       ,p_event_class_code           => l_event_class_code);
8194    --
8195    -- set accounting class
8196    --
8197    xla_ae_lines_pkg.SetAcctClass(
8198            p_accounting_class_code  => 'ADJ_NON_REC_TAX'
8199          , p_ae_header_id           => l_ae_header_id
8200          );
8201 
8202    --
8206                       'RECEIVABLE';
8203    -- set rounding class
8204    --
8205    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8207 
8208    --
8209    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8210    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8211    --
8212    -- bulk performance
8213    --
8214    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8215 
8216    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8217       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8218 
8219    -- 4955764
8220    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8221       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8222 
8223    -- 4458381 Public Sector Enh
8224    
8225    --
8226    -- set accounting attributes for the line type
8227    --
8228    l_entered_amt_idx := 3;
8229    l_accted_amt_idx  := 8;
8230    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8231    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8232    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
8233    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8234    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
8235    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8236    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
8237    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8238    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
8239    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8240    l_rec_acct_attrs.array_date_value(5)  := p_source_45;
8241    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8242    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
8243    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8244    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
8245    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
8246    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
8247    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
8248    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
8249    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
8250    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
8251    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
8252    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
8253 
8254    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8255    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8256 
8257    ---------------------------------------------------------------------------------------------------------------
8258    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8259    ---------------------------------------------------------------------------------------------------------------
8260    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8261 
8262    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8263    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8264 
8265    IF xla_accounting_cache_pkg.GetValueChar
8266          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8267          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8268    AND l_bflow_method_code = 'PRIOR_ENTRY'
8269 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8270    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8271          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8272        )
8273    THEN
8274          xla_ae_lines_pkg.BflowUpgEntry
8275            (p_business_method_code    => l_bflow_method_code
8276            ,p_business_class_code     => l_bflow_class_code
8277            ,p_balance_type            => l_balance_type_code);
8278    ELSE
8279       NULL;
8280 -- No business flow processing for business flow method of NONE.
8281    END IF;
8282 
8283    --
8284    -- call analytical criteria
8285    --
8286    
8287    --
8288    -- call description
8289    --
8290    -- No description or it is inherited.
8291    --
8292    -- call ADRs
8293    -- Bug 4922099
8294    --
8295    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8296         (NVL(l_actual_upg_option, 'N') = 'O') OR
8297         (NVL(l_enc_upg_option, 'N') = 'O')
8298       )
8299    THEN
8300    NULL;
8301    --
8302    --
8303    
8304   l_ccid := AcctDerRule_29(
8305            p_application_id           => p_application_id
8306          , p_ae_header_id             => l_ae_header_id 
8307 , p_source_32 => p_source_32
8308          , x_transaction_coa_id       => l_adr_transaction_coa_id
8309          , x_accounting_coa_id        => l_adr_accounting_coa_id
8310          , x_value_type_code          => l_adr_value_type_code
8311          , p_side                     => 'NA'
8312    );
8313 
8314    xla_ae_lines_pkg.set_ccid(
8315     p_code_combination_id          => l_ccid
8319   , p_adr_code                     => 'DIST_CCID'
8316   , p_value_type_code              => l_adr_value_type_code
8317   , p_transaction_coa_id           => l_adr_transaction_coa_id
8318   , p_accounting_coa_id            => l_adr_accounting_coa_id
8320   , p_adr_type_code                => 'S'
8321   , p_component_type               => l_component_type
8322   , p_component_code               => l_component_code
8323   , p_component_type_code          => l_component_type_code
8324   , p_component_appl_id            => l_component_appl_id
8325   , p_amb_context_code             => l_amb_context_code
8326   , p_side                         => 'NA'
8327   );
8328 
8329 
8330    --
8331    --
8332    END IF;
8333    --
8334    -- Bug 4922099
8335    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8336           (NVL(l_enc_upg_option, 'N') = 'O')
8337         ) AND
8338         (l_bflow_method_code = 'PRIOR_ENTRY')
8339       )
8340    THEN
8341       IF
8342       --
8343       1 = 2
8344       --
8345       THEN
8346       xla_accounting_err_pkg.build_message
8347                                     (p_appli_s_name            => 'XLA'
8348                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8349                                     ,p_token_1                 => 'LINE_NUMBER'
8350                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8351                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8352                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8353                                                                              l_component_type
8354                                                                             ,l_component_code
8355                                                                             ,l_component_type_code
8356                                                                             ,l_component_appl_id
8357                                                                             ,l_amb_context_code
8358                                                                             ,l_entity_code
8359                                                                             ,l_event_class_code
8360                                                                            )
8361                                     ,p_token_3                 => 'OWNER'
8362                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8363                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8364                                                                           ,p_lookup_code    => l_component_type_code
8365                                                                          )
8366                                     ,p_token_4                 => 'PRODUCT_NAME'
8367                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8368                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8369                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8370                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8371                                     ,p_ae_header_id            =>  NULL
8372                                        );
8373 
8374         IF (C_LEVEL_ERROR>= g_log_level) THEN
8375                  trace
8376                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8377                       ,p_level    => C_LEVEL_ERROR
8378                       ,p_module   => l_log_module);
8379         END IF;
8380       END IF;
8381    END IF;
8382    --
8383    --
8384    ------------------------------------------------------------------------------------------------
8385    -- 4219869 Business Flow
8386    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8387    -- Prior Entry.  Currently, the following code is always generated.
8388    ------------------------------------------------------------------------------------------------
8389    XLA_AE_LINES_PKG.ValidateCurrentLine;
8390 
8391    ------------------------------------------------------------------------------------
8392    -- 4219869 Business Flow
8393    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8394    ------------------------------------------------------------------------------------
8395    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8396 
8397    ----------------------------------------------------------------------------------
8398    -- 4219869 Business Flow
8399    -- Update journal entry status -- Need to generate this within IF <condition>
8400    ----------------------------------------------------------------------------------
8401    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8402          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8403          ,p_balance_type_code => l_balance_type_code
8404          );
8405 
8406    -------------------------------------------------------------------------------------------
8407    -- 4262811 - Generate the Accrual Reversal lines
8408    -------------------------------------------------------------------------------------------
8409    BEGIN
8410       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8414       END IF;
8411                               (g_array_event(p_event_id).array_value_num('header_index'));
8412       IF l_acc_rev_flag IS NULL THEN
8413          l_acc_rev_flag := 'N';
8415    EXCEPTION
8416       WHEN OTHERS THEN
8417          l_acc_rev_flag := 'N';
8418    END;
8419    --
8420    IF (l_acc_rev_flag = 'Y') THEN
8421 
8422        -- 4645092  ------------------------------------------------------------------------------
8423        -- To allow MPA report to determine if it should generate report process
8424        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8425        ------------------------------------------------------------------------------------------
8426 
8427        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8428        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8429    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
8430    -- call ADRs
8431    -- Bug 4922099
8432    --
8433    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8434         (NVL(l_actual_upg_option, 'N') = 'O') OR
8435         (NVL(l_enc_upg_option, 'N') = 'O')
8436       )
8437    THEN
8438    NULL;
8439    --
8440    --
8441    
8442   l_ccid := AcctDerRule_29(
8443            p_application_id           => p_application_id
8444          , p_ae_header_id             => l_ae_header_id 
8445 , p_source_32 => p_source_32
8446          , x_transaction_coa_id       => l_adr_transaction_coa_id
8447          , x_accounting_coa_id        => l_adr_accounting_coa_id
8448          , x_value_type_code          => l_adr_value_type_code
8449          , p_side                     => 'NA'
8450    );
8451 
8452    xla_ae_lines_pkg.set_ccid(
8453     p_code_combination_id          => l_ccid
8454   , p_value_type_code              => l_adr_value_type_code
8455   , p_transaction_coa_id           => l_adr_transaction_coa_id
8456   , p_accounting_coa_id            => l_adr_accounting_coa_id
8457   , p_adr_code                     => 'DIST_CCID'
8458   , p_adr_type_code                => 'S'
8459   , p_component_type               => l_component_type
8460   , p_component_code               => l_component_code
8461   , p_component_type_code          => l_component_type_code
8462   , p_component_appl_id            => l_component_appl_id
8463   , p_amb_context_code             => l_amb_context_code
8464   , p_side                         => 'NA'
8465   );
8466 
8467 
8468    --
8469    --
8470    END IF;
8471 
8472        --
8473        -- Update the line information that should be overwritten
8474        --
8475        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
8476                                          p_header_num   => 1);
8477        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
8478 
8479        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
8480 
8481        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
8482           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
8483        END IF;
8484 
8485       --
8486       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
8487       --
8488       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
8489           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
8490       ELSE
8491           ---------------------------------------------------------------------------------------------------
8492           -- 4262811a Switch Sign
8493           ---------------------------------------------------------------------------------------------------
8494           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
8495           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8496                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8497           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
8498                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8499           -- 5132302
8500           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
8501                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
8502 
8503       END IF;
8504 
8505       -- 4955764
8506       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8507       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
8508 
8509 
8510       XLA_AE_LINES_PKG.ValidateCurrentLine;
8511       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8512 
8513       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8514                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
8515                ,p_balance_type_code => l_balance_type_code);
8516 
8517    END IF;
8518 
8519    -----------------------------------------------------------------------------------------
8520    -- 4262811 Multiperiod Accounting
8521    -----------------------------------------------------------------------------------------
8522      -- No MPA option is assigned.
8523 
8524 
8525 END IF;
8526 END IF;
8527 --
8528 
8532       (p_msg      => 'END of AcctLineType_43'
8529 --
8530 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8531    trace
8533       ,p_level    => C_LEVEL_PROCEDURE
8534       ,p_module   => l_log_module);
8535 END IF;
8536 --
8537 EXCEPTION
8538   WHEN xla_exceptions_pkg.application_exception THEN
8539       RAISE;
8540   WHEN OTHERS THEN
8541        xla_exceptions_pkg.raise_message
8542            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_43');
8543 END AcctLineType_43;
8544 --
8545 
8546 ---------------------------------------
8547 --
8548 -- PRIVATE FUNCTION
8549 --         AcctLineType_44
8550 --
8551 ---------------------------------------
8552 PROCEDURE AcctLineType_44 (
8553   p_application_id        IN NUMBER
8554  ,p_event_id              IN NUMBER
8555  ,p_calculate_acctd_flag  IN VARCHAR2
8556  ,p_calculate_g_l_flag    IN VARCHAR2
8557  ,p_actual_flag           IN OUT VARCHAR2
8558  ,p_balance_type_code     OUT VARCHAR2
8559  ,p_gain_or_loss_ref      OUT VARCHAR2
8560  
8561 --Distribution GL Account
8562  , p_source_32            IN NUMBER
8563 --Distribution Source Type
8564  , p_source_39            IN VARCHAR2
8565 --Distribution Line Identifier
8566  , p_source_41            IN NUMBER
8567 --Distribution Type
8568  , p_source_42            IN VARCHAR2
8569 --Entered Amount
8570  , p_source_43            IN NUMBER
8571 --Currency Code
8572  , p_source_44            IN VARCHAR2
8573 --Exchange Date
8574  , p_source_45            IN DATE
8575 --Exchange Rate
8576  , p_source_46            IN NUMBER
8577 --Exchange Rate Type
8578  , p_source_47            IN VARCHAR2
8579 --Applied To Document Accounting Amount
8580  , p_source_48            IN NUMBER
8581 --Bill To Customer Account Identifier
8582  , p_source_49            IN NUMBER
8583 --Bill To Customer Site Use Identifier
8584  , p_source_50            IN NUMBER
8585 --SLA Party Type
8586  , p_source_51            IN VARCHAR2
8587 )
8588 IS
8589 
8590 l_component_type              VARCHAR2(80);
8591 l_component_code              VARCHAR2(30);
8592 l_component_type_code         VARCHAR2(1);
8593 l_component_appl_id           INTEGER;
8594 l_amb_context_code            VARCHAR2(30);
8595 l_entity_code                 VARCHAR2(30);
8596 l_event_class_code            VARCHAR2(30);
8597 l_ae_header_id                NUMBER;
8598 l_event_type_code             VARCHAR2(30);
8599 l_line_definition_code        VARCHAR2(30);
8600 l_line_definition_owner_code  VARCHAR2(1);
8601 --
8602 -- adr variables
8603 l_segment                     VARCHAR2(30);
8604 l_ccid                        NUMBER;
8605 l_adr_transaction_coa_id      NUMBER;
8606 l_adr_accounting_coa_id       NUMBER;
8607 l_adr_flexfield_segment_code  VARCHAR2(30);
8608 l_adr_flex_value_set_id       NUMBER;
8609 l_adr_value_type_code         VARCHAR2(30);
8610 l_adr_value_combination_id    NUMBER;
8611 l_adr_value_segment_code      VARCHAR2(30);
8612 
8613 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
8614 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
8615 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
8616 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
8617 
8618 -- 4262811 Variables ------------------------------------------------------------------------------------------
8619 l_entered_amt_idx             NUMBER;
8620 l_accted_amt_idx              NUMBER;
8621 l_acc_rev_flag                VARCHAR2(1);
8622 l_accrual_line_num            NUMBER;
8623 l_tmp_amt                     NUMBER;
8624 l_acc_rev_natural_side_code   VARCHAR2(1);
8625 
8626 l_num_entries                 NUMBER;
8627 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
8628 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
8629 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
8630 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
8631 l_recog_line_1                NUMBER;
8632 l_recog_line_2                NUMBER;
8633 
8634 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
8635 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
8636 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
8637 
8638 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
8639 
8640 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
8641 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
8642 
8643 ---------------------------------------------------------------------------------------------------------------
8644 
8645 
8646 --
8647 -- bulk performance
8648 --
8649 l_balance_type_code           VARCHAR2(1);
8650 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
8651 l_log_module                  VARCHAR2(240);
8652 
8653 --
8654 -- Upgrade strategy
8655 --
8656 l_actual_upg_option           VARCHAR2(1);
8657 l_enc_upg_option           VARCHAR2(1);
8658 
8659 --
8660 BEGIN
8661 --
8662 IF g_log_enabled THEN
8663       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_44';
8664 END IF;
8665 --
8666 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
8667 
8671          ,p_module   => l_log_module);
8668       trace
8669          (p_msg      => 'BEGIN of AcctLineType_44'
8670          ,p_level    => C_LEVEL_PROCEDURE
8672 
8673 END IF;
8674 --
8675 l_component_type             := 'AMB_JLT';
8676 l_component_code             := 'ADJ_TAX';
8677 l_component_type_code        := 'S';
8678 l_component_appl_id          :=  222;
8679 l_amb_context_code           := 'DEFAULT';
8680 l_entity_code                := 'ADJUSTMENTS';
8681 l_event_class_code           := 'ADJUSTMENT';
8682 l_event_type_code            := 'ADJUSTMENT_ALL';
8683 l_line_definition_owner_code := 'S';
8684 l_line_definition_code       := 'AR_ADJ_DEFAULT_ACCRUAL';
8685 --
8686 l_balance_type_code          := 'A';
8687 l_segment                     := NULL;
8688 l_ccid                        := NULL;
8689 l_adr_transaction_coa_id      := NULL;
8690 l_adr_accounting_coa_id       := NULL;
8691 l_adr_flexfield_segment_code  := NULL;
8692 l_adr_flex_value_set_id       := NULL;
8693 l_adr_value_type_code         := NULL;
8694 l_adr_value_combination_id    := NULL;
8695 l_adr_value_segment_code      := NULL;
8696 
8697 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
8698 l_bflow_class_code           := '';    -- 4219869 Business Flow
8699 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
8700 l_budgetary_control_flag     := 'N';
8701 
8702 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
8703 l_bflow_applied_to_amt       := NULL; -- 5132302
8704 l_entered_amt_idx            := NULL;          -- 4262811
8705 l_accted_amt_idx             := NULL;          -- 4262811
8706 l_acc_rev_flag               := NULL;          -- 4262811
8707 l_accrual_line_num           := NULL;          -- 4262811
8708 l_tmp_amt                    := NULL;          -- 4262811
8709 --
8710  
8711 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
8712     l_balance_type_code <> 'B' THEN
8713 IF NVL(p_source_39,'
8714 ') =  'TAX'
8715  THEN 
8716 
8717    --
8718    XLA_AE_LINES_PKG.SetNewLine;
8719 
8720    p_balance_type_code          := l_balance_type_code;
8721    -- set the flag so later we will know whether the gain loss line needs to be created
8722    
8723    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
8724      p_actual_flag :='A';
8725    END IF;
8726 
8727    --
8728    -- bulk performance
8729    --
8730    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
8731                                       p_header_num   => 0); -- 4262811
8732    --
8733    -- set accounting line options
8734    --
8735    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
8736            p_natural_side_code          => 'C'
8737          , p_gain_or_loss_flag          => 'N'
8738          , p_gl_transfer_mode_code      => 'S'
8739          , p_acct_entry_type_code       => 'A'
8740          , p_switch_side_flag           => 'Y'
8741          , p_merge_duplicate_code       => 'A'
8742          );
8743    --
8744    l_acc_rev_natural_side_code := 'D';  -- 4262811
8745    -- 
8746    --
8747    -- set accounting line type info
8748    --
8749    xla_ae_lines_pkg.SetAcctLineType
8750       (p_component_type             => l_component_type
8751       ,p_event_type_code            => l_event_type_code
8752       ,p_line_definition_owner_code => l_line_definition_owner_code
8753       ,p_line_definition_code       => l_line_definition_code
8754       ,p_accounting_line_code       => l_component_code
8755       ,p_accounting_line_type_code  => l_component_type_code
8756       ,p_accounting_line_appl_id    => l_component_appl_id
8757       ,p_amb_context_code           => l_amb_context_code
8758       ,p_entity_code                => l_entity_code
8759       ,p_event_class_code           => l_event_class_code);
8760    --
8761    -- set accounting class
8762    --
8763    xla_ae_lines_pkg.SetAcctClass(
8764            p_accounting_class_code  => 'TAX'
8765          , p_ae_header_id           => l_ae_header_id
8766          );
8767 
8768    --
8769    -- set rounding class
8770    --
8771    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
8772                       'RECEIVABLE';
8773 
8774    --
8775    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
8776    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
8777    --
8778    -- bulk performance
8779    --
8780    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
8781 
8782    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
8783       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
8784 
8785    -- 4955764
8786    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
8787       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
8788 
8789    -- 4458381 Public Sector Enh
8790    
8791    --
8792    -- set accounting attributes for the line type
8793    --
8794    l_entered_amt_idx := 3;
8795    l_accted_amt_idx  := 8;
8796    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
8797    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
8798    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
8802    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
8799    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
8800    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
8801    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
8803    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
8804    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
8805    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
8806    l_rec_acct_attrs.array_date_value(5)  := p_source_45;
8807    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
8808    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
8809    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
8810    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
8811    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
8812    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
8813    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
8814    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
8815    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
8816    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
8817    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
8818    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
8819 
8820    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
8821    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
8822 
8823    ---------------------------------------------------------------------------------------------------------------
8824    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
8825    ---------------------------------------------------------------------------------------------------------------
8826    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
8827 
8828    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8829    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
8830 
8831    IF xla_accounting_cache_pkg.GetValueChar
8832          (p_source_code         => 'LEDGER_CATEGORY_CODE'
8833          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
8834    AND l_bflow_method_code = 'PRIOR_ENTRY'
8835 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
8836    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
8837          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
8838        )
8839    THEN
8840          xla_ae_lines_pkg.BflowUpgEntry
8841            (p_business_method_code    => l_bflow_method_code
8842            ,p_business_class_code     => l_bflow_class_code
8843            ,p_balance_type            => l_balance_type_code);
8844    ELSE
8845       NULL;
8846 -- No business flow processing for business flow method of NONE.
8847    END IF;
8848 
8849    --
8850    -- call analytical criteria
8851    --
8852    
8853    --
8854    -- call description
8855    --
8856    -- No description or it is inherited.
8857    --
8858    -- call ADRs
8859    -- Bug 4922099
8860    --
8861    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
8862         (NVL(l_actual_upg_option, 'N') = 'O') OR
8863         (NVL(l_enc_upg_option, 'N') = 'O')
8864       )
8865    THEN
8866    NULL;
8867    --
8868    --
8869    
8870   l_ccid := AcctDerRule_29(
8871            p_application_id           => p_application_id
8872          , p_ae_header_id             => l_ae_header_id 
8873 , p_source_32 => p_source_32
8874          , x_transaction_coa_id       => l_adr_transaction_coa_id
8875          , x_accounting_coa_id        => l_adr_accounting_coa_id
8876          , x_value_type_code          => l_adr_value_type_code
8877          , p_side                     => 'NA'
8878    );
8879 
8880    xla_ae_lines_pkg.set_ccid(
8881     p_code_combination_id          => l_ccid
8882   , p_value_type_code              => l_adr_value_type_code
8883   , p_transaction_coa_id           => l_adr_transaction_coa_id
8884   , p_accounting_coa_id            => l_adr_accounting_coa_id
8885   , p_adr_code                     => 'DIST_CCID'
8886   , p_adr_type_code                => 'S'
8887   , p_component_type               => l_component_type
8888   , p_component_code               => l_component_code
8889   , p_component_type_code          => l_component_type_code
8890   , p_component_appl_id            => l_component_appl_id
8891   , p_amb_context_code             => l_amb_context_code
8892   , p_side                         => 'NA'
8893   );
8894 
8895 
8896    --
8897    --
8898    END IF;
8899    --
8900    -- Bug 4922099
8901    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
8902           (NVL(l_enc_upg_option, 'N') = 'O')
8903         ) AND
8904         (l_bflow_method_code = 'PRIOR_ENTRY')
8905       )
8906    THEN
8907       IF
8908       --
8909       1 = 2
8910       --
8911       THEN
8912       xla_accounting_err_pkg.build_message
8913                                     (p_appli_s_name            => 'XLA'
8914                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8915                                     ,p_token_1                 => 'LINE_NUMBER'
8919                                                                              l_component_type
8916                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
8917                                     ,p_token_2                 => 'LINE_TYPE_NAME'
8918                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
8920                                                                             ,l_component_code
8921                                                                             ,l_component_type_code
8922                                                                             ,l_component_appl_id
8923                                                                             ,l_amb_context_code
8924                                                                             ,l_entity_code
8925                                                                             ,l_event_class_code
8926                                                                            )
8927                                     ,p_token_3                 => 'OWNER'
8928                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
8929                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
8930                                                                           ,p_lookup_code    => l_component_type_code
8931                                                                          )
8932                                     ,p_token_4                 => 'PRODUCT_NAME'
8933                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
8934                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
8935                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
8936                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
8937                                     ,p_ae_header_id            =>  NULL
8938                                        );
8939 
8940         IF (C_LEVEL_ERROR>= g_log_level) THEN
8941                  trace
8942                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
8943                       ,p_level    => C_LEVEL_ERROR
8944                       ,p_module   => l_log_module);
8945         END IF;
8946       END IF;
8947    END IF;
8948    --
8949    --
8950    ------------------------------------------------------------------------------------------------
8951    -- 4219869 Business Flow
8952    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
8953    -- Prior Entry.  Currently, the following code is always generated.
8954    ------------------------------------------------------------------------------------------------
8955    XLA_AE_LINES_PKG.ValidateCurrentLine;
8956 
8957    ------------------------------------------------------------------------------------
8958    -- 4219869 Business Flow
8959    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
8960    ------------------------------------------------------------------------------------
8961    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
8962 
8963    ----------------------------------------------------------------------------------
8964    -- 4219869 Business Flow
8965    -- Update journal entry status -- Need to generate this within IF <condition>
8966    ----------------------------------------------------------------------------------
8967    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
8968          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
8969          ,p_balance_type_code => l_balance_type_code
8970          );
8971 
8972    -------------------------------------------------------------------------------------------
8973    -- 4262811 - Generate the Accrual Reversal lines
8974    -------------------------------------------------------------------------------------------
8975    BEGIN
8976       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
8977                               (g_array_event(p_event_id).array_value_num('header_index'));
8978       IF l_acc_rev_flag IS NULL THEN
8979          l_acc_rev_flag := 'N';
8980       END IF;
8981    EXCEPTION
8982       WHEN OTHERS THEN
8983          l_acc_rev_flag := 'N';
8984    END;
8985    --
8986    IF (l_acc_rev_flag = 'Y') THEN
8987 
8988        -- 4645092  ------------------------------------------------------------------------------
8989        -- To allow MPA report to determine if it should generate report process
8990        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
8991        ------------------------------------------------------------------------------------------
8992 
8993        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
8994        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
8995    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
8996    -- call ADRs
8997    -- Bug 4922099
8998    --
8999    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9000         (NVL(l_actual_upg_option, 'N') = 'O') OR
9001         (NVL(l_enc_upg_option, 'N') = 'O')
9002       )
9003    THEN
9004    NULL;
9005    --
9006    --
9007    
9008   l_ccid := AcctDerRule_29(
9009            p_application_id           => p_application_id
9010          , p_ae_header_id             => l_ae_header_id 
9011 , p_source_32 => p_source_32
9015          , p_side                     => 'NA'
9012          , x_transaction_coa_id       => l_adr_transaction_coa_id
9013          , x_accounting_coa_id        => l_adr_accounting_coa_id
9014          , x_value_type_code          => l_adr_value_type_code
9016    );
9017 
9018    xla_ae_lines_pkg.set_ccid(
9019     p_code_combination_id          => l_ccid
9020   , p_value_type_code              => l_adr_value_type_code
9021   , p_transaction_coa_id           => l_adr_transaction_coa_id
9022   , p_accounting_coa_id            => l_adr_accounting_coa_id
9023   , p_adr_code                     => 'DIST_CCID'
9024   , p_adr_type_code                => 'S'
9025   , p_component_type               => l_component_type
9026   , p_component_code               => l_component_code
9027   , p_component_type_code          => l_component_type_code
9028   , p_component_appl_id            => l_component_appl_id
9029   , p_amb_context_code             => l_amb_context_code
9030   , p_side                         => 'NA'
9031   );
9032 
9033 
9034    --
9035    --
9036    END IF;
9037 
9038        --
9039        -- Update the line information that should be overwritten
9040        --
9041        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9042                                          p_header_num   => 1);
9043        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9044 
9045        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9046 
9047        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9048           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9049        END IF;
9050 
9051       --
9052       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9053       --
9054       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9055           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9056       ELSE
9057           ---------------------------------------------------------------------------------------------------
9058           -- 4262811a Switch Sign
9059           ---------------------------------------------------------------------------------------------------
9060           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9061           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9062                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9063           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9064                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9065           -- 5132302
9066           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9067                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9068 
9069       END IF;
9070 
9071       -- 4955764
9072       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9073       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9074 
9075 
9076       XLA_AE_LINES_PKG.ValidateCurrentLine;
9077       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9078 
9079       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9080                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9081                ,p_balance_type_code => l_balance_type_code);
9082 
9083    END IF;
9084 
9085    -----------------------------------------------------------------------------------------
9086    -- 4262811 Multiperiod Accounting
9087    -----------------------------------------------------------------------------------------
9088      -- No MPA option is assigned.
9089 
9090 
9091 END IF;
9092 END IF;
9093 --
9094 
9095 --
9096 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9097    trace
9098       (p_msg      => 'END of AcctLineType_44'
9099       ,p_level    => C_LEVEL_PROCEDURE
9100       ,p_module   => l_log_module);
9101 END IF;
9102 --
9103 EXCEPTION
9104   WHEN xla_exceptions_pkg.application_exception THEN
9105       RAISE;
9106   WHEN OTHERS THEN
9107        xla_exceptions_pkg.raise_message
9108            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_44');
9109 END AcctLineType_44;
9110 --
9111 
9112 ---------------------------------------
9113 --
9114 -- PRIVATE FUNCTION
9115 --         AcctLineType_45
9116 --
9117 ---------------------------------------
9118 PROCEDURE AcctLineType_45 (
9119   p_application_id        IN NUMBER
9120  ,p_event_id              IN NUMBER
9121  ,p_calculate_acctd_flag  IN VARCHAR2
9122  ,p_calculate_g_l_flag    IN VARCHAR2
9123  ,p_actual_flag           IN OUT VARCHAR2
9124  ,p_balance_type_code     OUT VARCHAR2
9125  ,p_gain_or_loss_ref      OUT VARCHAR2
9126  
9127 --Distribution GL Account
9128  , p_source_32            IN NUMBER
9129 --Distribution Source Type
9130  , p_source_39            IN VARCHAR2
9131 --Distribution Line Identifier
9132  , p_source_41            IN NUMBER
9133 --Distribution Type
9134  , p_source_42            IN VARCHAR2
9135 --Entered Amount
9139 --Exchange Date
9136  , p_source_43            IN NUMBER
9137 --Currency Code
9138  , p_source_44            IN VARCHAR2
9140  , p_source_45            IN DATE
9141 --Exchange Rate
9142  , p_source_46            IN NUMBER
9143 --Exchange Rate Type
9144  , p_source_47            IN VARCHAR2
9145 --SLA Party Type
9146  , p_source_51            IN VARCHAR2
9147 --Accounting Amount
9148  , p_source_52            IN NUMBER
9149 --Drawee Account Identifier
9150  , p_source_53            IN NUMBER
9151 --DRAW_SITE_SITE_USE_ID
9152  , p_source_54            IN NUMBER
9153 )
9154 IS
9155 
9156 l_component_type              VARCHAR2(80);
9157 l_component_code              VARCHAR2(30);
9158 l_component_type_code         VARCHAR2(1);
9159 l_component_appl_id           INTEGER;
9160 l_amb_context_code            VARCHAR2(30);
9161 l_entity_code                 VARCHAR2(30);
9162 l_event_class_code            VARCHAR2(30);
9163 l_ae_header_id                NUMBER;
9164 l_event_type_code             VARCHAR2(30);
9165 l_line_definition_code        VARCHAR2(30);
9166 l_line_definition_owner_code  VARCHAR2(1);
9167 --
9168 -- adr variables
9169 l_segment                     VARCHAR2(30);
9170 l_ccid                        NUMBER;
9171 l_adr_transaction_coa_id      NUMBER;
9172 l_adr_accounting_coa_id       NUMBER;
9173 l_adr_flexfield_segment_code  VARCHAR2(30);
9174 l_adr_flex_value_set_id       NUMBER;
9175 l_adr_value_type_code         VARCHAR2(30);
9176 l_adr_value_combination_id    NUMBER;
9177 l_adr_value_segment_code      VARCHAR2(30);
9178 
9179 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9180 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9181 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9182 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9183 
9184 -- 4262811 Variables ------------------------------------------------------------------------------------------
9185 l_entered_amt_idx             NUMBER;
9186 l_accted_amt_idx              NUMBER;
9187 l_acc_rev_flag                VARCHAR2(1);
9188 l_accrual_line_num            NUMBER;
9189 l_tmp_amt                     NUMBER;
9190 l_acc_rev_natural_side_code   VARCHAR2(1);
9191 
9192 l_num_entries                 NUMBER;
9193 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9194 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9195 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9196 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9197 l_recog_line_1                NUMBER;
9198 l_recog_line_2                NUMBER;
9199 
9200 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9201 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9202 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9203 
9204 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9205 
9206 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9207 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9208 
9209 ---------------------------------------------------------------------------------------------------------------
9210 
9211 
9212 --
9213 -- bulk performance
9214 --
9215 l_balance_type_code           VARCHAR2(1);
9216 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9217 l_log_module                  VARCHAR2(240);
9218 
9219 --
9220 -- Upgrade strategy
9221 --
9222 l_actual_upg_option           VARCHAR2(1);
9223 l_enc_upg_option           VARCHAR2(1);
9224 
9225 --
9226 BEGIN
9227 --
9228 IF g_log_enabled THEN
9229       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_45';
9230 END IF;
9231 --
9232 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9233 
9234       trace
9235          (p_msg      => 'BEGIN of AcctLineType_45'
9236          ,p_level    => C_LEVEL_PROCEDURE
9237          ,p_module   => l_log_module);
9238 
9239 END IF;
9240 --
9241 l_component_type             := 'AMB_JLT';
9242 l_component_code             := 'BR_DEFERRED_TAX';
9243 l_component_type_code        := 'S';
9244 l_component_appl_id          :=  222;
9245 l_amb_context_code           := 'DEFAULT';
9246 l_entity_code                := 'BILLS_RECEIVABLE';
9247 l_event_class_code           := 'BILL';
9248 l_event_type_code            := 'BILL_ALL';
9249 l_line_definition_owner_code := 'S';
9250 l_line_definition_code       := 'AR_BILL_RECEIVABLES_JLD';
9251 --
9252 l_balance_type_code          := 'A';
9253 l_segment                     := NULL;
9254 l_ccid                        := NULL;
9255 l_adr_transaction_coa_id      := NULL;
9256 l_adr_accounting_coa_id       := NULL;
9257 l_adr_flexfield_segment_code  := NULL;
9258 l_adr_flex_value_set_id       := NULL;
9259 l_adr_value_type_code         := NULL;
9260 l_adr_value_combination_id    := NULL;
9261 l_adr_value_segment_code      := NULL;
9262 
9263 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9264 l_bflow_class_code           := '';    -- 4219869 Business Flow
9265 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9266 l_budgetary_control_flag     := 'N';
9267 
9268 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9272 l_acc_rev_flag               := NULL;          -- 4262811
9269 l_bflow_applied_to_amt       := NULL; -- 5132302
9270 l_entered_amt_idx            := NULL;          -- 4262811
9271 l_accted_amt_idx             := NULL;          -- 4262811
9273 l_accrual_line_num           := NULL;          -- 4262811
9274 l_tmp_amt                    := NULL;          -- 4262811
9275 --
9276  
9277 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9278     l_balance_type_code <> 'B' THEN
9279 IF NVL(p_source_39,'
9280 ') =  'DEFERRED_TAX'
9281  THEN 
9282 
9283    --
9284    XLA_AE_LINES_PKG.SetNewLine;
9285 
9286    p_balance_type_code          := l_balance_type_code;
9287    -- set the flag so later we will know whether the gain loss line needs to be created
9288    
9289    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9290      p_actual_flag :='A';
9291    END IF;
9292 
9293    --
9294    -- bulk performance
9295    --
9296    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9297                                       p_header_num   => 0); -- 4262811
9298    --
9299    -- set accounting line options
9300    --
9301    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9302            p_natural_side_code          => 'C'
9303          , p_gain_or_loss_flag          => 'N'
9304          , p_gl_transfer_mode_code      => 'S'
9305          , p_acct_entry_type_code       => 'A'
9306          , p_switch_side_flag           => 'Y'
9307          , p_merge_duplicate_code       => 'A'
9308          );
9309    --
9310    l_acc_rev_natural_side_code := 'D';  -- 4262811
9311    -- 
9312    --
9313    -- set accounting line type info
9314    --
9315    xla_ae_lines_pkg.SetAcctLineType
9316       (p_component_type             => l_component_type
9317       ,p_event_type_code            => l_event_type_code
9318       ,p_line_definition_owner_code => l_line_definition_owner_code
9319       ,p_line_definition_code       => l_line_definition_code
9320       ,p_accounting_line_code       => l_component_code
9321       ,p_accounting_line_type_code  => l_component_type_code
9322       ,p_accounting_line_appl_id    => l_component_appl_id
9323       ,p_amb_context_code           => l_amb_context_code
9324       ,p_entity_code                => l_entity_code
9325       ,p_event_class_code           => l_event_class_code);
9326    --
9327    -- set accounting class
9328    --
9329    xla_ae_lines_pkg.SetAcctClass(
9330            p_accounting_class_code  => 'DEFERRED_TAX'
9331          , p_ae_header_id           => l_ae_header_id
9332          );
9333 
9334    --
9335    -- set rounding class
9336    --
9337    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9338                       'DEFERRED_TAX';
9339 
9340    --
9341    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9342    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9343    --
9344    -- bulk performance
9345    --
9346    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9347 
9348    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9349       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9350 
9351    -- 4955764
9352    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9353       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9354 
9355    -- 4458381 Public Sector Enh
9356    
9357    --
9358    -- set accounting attributes for the line type
9359    --
9360    l_entered_amt_idx := 3;
9361    l_accted_amt_idx  := 8;
9362    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9363    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9364    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
9365    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9366    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
9367    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9368    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
9369    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9370    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
9371    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9372    l_rec_acct_attrs.array_date_value(5)  := p_source_45;
9373    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9374    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
9375    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9376    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
9377    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
9378    l_rec_acct_attrs.array_num_value(8)  := p_source_52;
9379    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
9380    l_rec_acct_attrs.array_num_value(9)  := p_source_53;
9381    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
9382    l_rec_acct_attrs.array_num_value(10)  := p_source_54;
9383    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
9384    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
9385 
9386    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9390    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9387    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9388 
9389    ---------------------------------------------------------------------------------------------------------------
9391    ---------------------------------------------------------------------------------------------------------------
9392    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9393 
9394    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9395    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9396 
9397    IF xla_accounting_cache_pkg.GetValueChar
9398          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9399          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9400    AND l_bflow_method_code = 'PRIOR_ENTRY'
9401 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9402    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9403          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9404        )
9405    THEN
9406          xla_ae_lines_pkg.BflowUpgEntry
9407            (p_business_method_code    => l_bflow_method_code
9408            ,p_business_class_code     => l_bflow_class_code
9409            ,p_balance_type            => l_balance_type_code);
9410    ELSE
9411       NULL;
9412 -- No business flow processing for business flow method of NONE.
9413    END IF;
9414 
9415    --
9416    -- call analytical criteria
9417    --
9418    
9419    --
9420    -- call description
9421    --
9422    -- No description or it is inherited.
9423    --
9424    -- call ADRs
9425    -- Bug 4922099
9426    --
9427    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9428         (NVL(l_actual_upg_option, 'N') = 'O') OR
9429         (NVL(l_enc_upg_option, 'N') = 'O')
9430       )
9431    THEN
9432    NULL;
9433    --
9434    --
9435    
9436   l_ccid := AcctDerRule_29(
9437            p_application_id           => p_application_id
9438          , p_ae_header_id             => l_ae_header_id 
9439 , p_source_32 => p_source_32
9440          , x_transaction_coa_id       => l_adr_transaction_coa_id
9441          , x_accounting_coa_id        => l_adr_accounting_coa_id
9442          , x_value_type_code          => l_adr_value_type_code
9443          , p_side                     => 'NA'
9444    );
9445 
9446    xla_ae_lines_pkg.set_ccid(
9447     p_code_combination_id          => l_ccid
9448   , p_value_type_code              => l_adr_value_type_code
9449   , p_transaction_coa_id           => l_adr_transaction_coa_id
9450   , p_accounting_coa_id            => l_adr_accounting_coa_id
9451   , p_adr_code                     => 'DIST_CCID'
9452   , p_adr_type_code                => 'S'
9453   , p_component_type               => l_component_type
9454   , p_component_code               => l_component_code
9455   , p_component_type_code          => l_component_type_code
9456   , p_component_appl_id            => l_component_appl_id
9457   , p_amb_context_code             => l_amb_context_code
9458   , p_side                         => 'NA'
9459   );
9460 
9461 
9462    --
9463    --
9464    END IF;
9465    --
9466    -- Bug 4922099
9467    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
9468           (NVL(l_enc_upg_option, 'N') = 'O')
9469         ) AND
9470         (l_bflow_method_code = 'PRIOR_ENTRY')
9471       )
9472    THEN
9473       IF
9474       --
9475       1 = 2
9476       --
9477       THEN
9478       xla_accounting_err_pkg.build_message
9479                                     (p_appli_s_name            => 'XLA'
9480                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9481                                     ,p_token_1                 => 'LINE_NUMBER'
9482                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
9483                                     ,p_token_2                 => 'LINE_TYPE_NAME'
9484                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
9485                                                                              l_component_type
9486                                                                             ,l_component_code
9487                                                                             ,l_component_type_code
9488                                                                             ,l_component_appl_id
9489                                                                             ,l_amb_context_code
9490                                                                             ,l_entity_code
9491                                                                             ,l_event_class_code
9492                                                                            )
9493                                     ,p_token_3                 => 'OWNER'
9494                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
9495                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
9499                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
9496                                                                           ,p_lookup_code    => l_component_type_code
9497                                                                          )
9498                                     ,p_token_4                 => 'PRODUCT_NAME'
9500                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
9501                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
9502                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
9503                                     ,p_ae_header_id            =>  NULL
9504                                        );
9505 
9506         IF (C_LEVEL_ERROR>= g_log_level) THEN
9507                  trace
9508                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
9509                       ,p_level    => C_LEVEL_ERROR
9510                       ,p_module   => l_log_module);
9511         END IF;
9512       END IF;
9513    END IF;
9514    --
9515    --
9516    ------------------------------------------------------------------------------------------------
9517    -- 4219869 Business Flow
9518    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
9519    -- Prior Entry.  Currently, the following code is always generated.
9520    ------------------------------------------------------------------------------------------------
9521    XLA_AE_LINES_PKG.ValidateCurrentLine;
9522 
9523    ------------------------------------------------------------------------------------
9524    -- 4219869 Business Flow
9525    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
9526    ------------------------------------------------------------------------------------
9527    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9528 
9529    ----------------------------------------------------------------------------------
9530    -- 4219869 Business Flow
9531    -- Update journal entry status -- Need to generate this within IF <condition>
9532    ----------------------------------------------------------------------------------
9533    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9534          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
9535          ,p_balance_type_code => l_balance_type_code
9536          );
9537 
9538    -------------------------------------------------------------------------------------------
9539    -- 4262811 - Generate the Accrual Reversal lines
9540    -------------------------------------------------------------------------------------------
9541    BEGIN
9542       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
9543                               (g_array_event(p_event_id).array_value_num('header_index'));
9544       IF l_acc_rev_flag IS NULL THEN
9545          l_acc_rev_flag := 'N';
9546       END IF;
9547    EXCEPTION
9548       WHEN OTHERS THEN
9549          l_acc_rev_flag := 'N';
9550    END;
9551    --
9552    IF (l_acc_rev_flag = 'Y') THEN
9553 
9554        -- 4645092  ------------------------------------------------------------------------------
9555        -- To allow MPA report to determine if it should generate report process
9556        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
9557        ------------------------------------------------------------------------------------------
9558 
9559        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
9560        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
9561    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
9562    -- call ADRs
9563    -- Bug 4922099
9564    --
9565    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9566         (NVL(l_actual_upg_option, 'N') = 'O') OR
9567         (NVL(l_enc_upg_option, 'N') = 'O')
9568       )
9569    THEN
9570    NULL;
9571    --
9572    --
9573    
9574   l_ccid := AcctDerRule_29(
9575            p_application_id           => p_application_id
9576          , p_ae_header_id             => l_ae_header_id 
9577 , p_source_32 => p_source_32
9578          , x_transaction_coa_id       => l_adr_transaction_coa_id
9579          , x_accounting_coa_id        => l_adr_accounting_coa_id
9580          , x_value_type_code          => l_adr_value_type_code
9581          , p_side                     => 'NA'
9582    );
9583 
9584    xla_ae_lines_pkg.set_ccid(
9585     p_code_combination_id          => l_ccid
9586   , p_value_type_code              => l_adr_value_type_code
9587   , p_transaction_coa_id           => l_adr_transaction_coa_id
9588   , p_accounting_coa_id            => l_adr_accounting_coa_id
9589   , p_adr_code                     => 'DIST_CCID'
9590   , p_adr_type_code                => 'S'
9591   , p_component_type               => l_component_type
9592   , p_component_code               => l_component_code
9593   , p_component_type_code          => l_component_type_code
9594   , p_component_appl_id            => l_component_appl_id
9595   , p_amb_context_code             => l_amb_context_code
9596   , p_side                         => 'NA'
9597   );
9598 
9599 
9600    --
9601    --
9602    END IF;
9603 
9604        --
9605        -- Update the line information that should be overwritten
9606        --
9610 
9607        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
9608                                          p_header_num   => 1);
9609        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
9611        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
9612 
9613        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
9614           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
9615        END IF;
9616 
9617       --
9618       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
9619       --
9620       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
9621           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
9622       ELSE
9623           ---------------------------------------------------------------------------------------------------
9624           -- 4262811a Switch Sign
9625           ---------------------------------------------------------------------------------------------------
9626           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
9627           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9628                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9629           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
9630                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9631           -- 5132302
9632           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
9633                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
9634 
9635       END IF;
9636 
9637       -- 4955764
9638       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9639       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
9640 
9641 
9642       XLA_AE_LINES_PKG.ValidateCurrentLine;
9643       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
9644 
9645       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
9646                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
9647                ,p_balance_type_code => l_balance_type_code);
9648 
9649    END IF;
9650 
9651    -----------------------------------------------------------------------------------------
9652    -- 4262811 Multiperiod Accounting
9653    -----------------------------------------------------------------------------------------
9654      -- No MPA option is assigned.
9655 
9656 
9657 END IF;
9658 END IF;
9659 --
9660 
9661 --
9662 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9663    trace
9664       (p_msg      => 'END of AcctLineType_45'
9665       ,p_level    => C_LEVEL_PROCEDURE
9666       ,p_module   => l_log_module);
9667 END IF;
9668 --
9669 EXCEPTION
9670   WHEN xla_exceptions_pkg.application_exception THEN
9671       RAISE;
9672   WHEN OTHERS THEN
9673        xla_exceptions_pkg.raise_message
9674            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_45');
9675 END AcctLineType_45;
9676 --
9677 
9678 ---------------------------------------
9679 --
9680 -- PRIVATE FUNCTION
9681 --         AcctLineType_46
9682 --
9683 ---------------------------------------
9684 PROCEDURE AcctLineType_46 (
9685   p_application_id        IN NUMBER
9686  ,p_event_id              IN NUMBER
9687  ,p_calculate_acctd_flag  IN VARCHAR2
9688  ,p_calculate_g_l_flag    IN VARCHAR2
9689  ,p_actual_flag           IN OUT VARCHAR2
9690  ,p_balance_type_code     OUT VARCHAR2
9691  ,p_gain_or_loss_ref      OUT VARCHAR2
9692  
9693 --Distribution GL Account
9694  , p_source_32            IN NUMBER
9695 --Distribution Source Type
9696  , p_source_39            IN VARCHAR2
9697 --Distribution Line Identifier
9698  , p_source_41            IN NUMBER
9699 --Distribution Type
9700  , p_source_42            IN VARCHAR2
9701 --Entered Amount
9702  , p_source_43            IN NUMBER
9703 --Currency Code
9704  , p_source_44            IN VARCHAR2
9705 --Exchange Date
9706  , p_source_45            IN DATE
9707 --Exchange Rate
9708  , p_source_46            IN NUMBER
9709 --Exchange Rate Type
9710  , p_source_47            IN VARCHAR2
9711 --SLA Party Type
9712  , p_source_51            IN VARCHAR2
9713 --Accounting Amount
9714  , p_source_52            IN NUMBER
9715 --Drawee Account Identifier
9716  , p_source_53            IN NUMBER
9717 --DRAW_SITE_SITE_USE_ID
9718  , p_source_54            IN NUMBER
9719 )
9720 IS
9721 
9722 l_component_type              VARCHAR2(80);
9723 l_component_code              VARCHAR2(30);
9724 l_component_type_code         VARCHAR2(1);
9725 l_component_appl_id           INTEGER;
9726 l_amb_context_code            VARCHAR2(30);
9727 l_entity_code                 VARCHAR2(30);
9728 l_event_class_code            VARCHAR2(30);
9729 l_ae_header_id                NUMBER;
9730 l_event_type_code             VARCHAR2(30);
9731 l_line_definition_code        VARCHAR2(30);
9732 l_line_definition_owner_code  VARCHAR2(1);
9733 --
9734 -- adr variables
9738 l_adr_accounting_coa_id       NUMBER;
9735 l_segment                     VARCHAR2(30);
9736 l_ccid                        NUMBER;
9737 l_adr_transaction_coa_id      NUMBER;
9739 l_adr_flexfield_segment_code  VARCHAR2(30);
9740 l_adr_flex_value_set_id       NUMBER;
9741 l_adr_value_type_code         VARCHAR2(30);
9742 l_adr_value_combination_id    NUMBER;
9743 l_adr_value_segment_code      VARCHAR2(30);
9744 
9745 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
9746 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
9747 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
9748 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
9749 
9750 -- 4262811 Variables ------------------------------------------------------------------------------------------
9751 l_entered_amt_idx             NUMBER;
9752 l_accted_amt_idx              NUMBER;
9753 l_acc_rev_flag                VARCHAR2(1);
9754 l_accrual_line_num            NUMBER;
9755 l_tmp_amt                     NUMBER;
9756 l_acc_rev_natural_side_code   VARCHAR2(1);
9757 
9758 l_num_entries                 NUMBER;
9759 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
9760 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
9761 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
9762 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
9763 l_recog_line_1                NUMBER;
9764 l_recog_line_2                NUMBER;
9765 
9766 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
9767 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
9768 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
9769 
9770 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
9771 
9772 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
9773 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
9774 
9775 ---------------------------------------------------------------------------------------------------------------
9776 
9777 
9778 --
9779 -- bulk performance
9780 --
9781 l_balance_type_code           VARCHAR2(1);
9782 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
9783 l_log_module                  VARCHAR2(240);
9784 
9785 --
9786 -- Upgrade strategy
9787 --
9788 l_actual_upg_option           VARCHAR2(1);
9789 l_enc_upg_option           VARCHAR2(1);
9790 
9791 --
9792 BEGIN
9793 --
9794 IF g_log_enabled THEN
9795       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_46';
9796 END IF;
9797 --
9798 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
9799 
9800       trace
9801          (p_msg      => 'BEGIN of AcctLineType_46'
9802          ,p_level    => C_LEVEL_PROCEDURE
9803          ,p_module   => l_log_module);
9804 
9805 END IF;
9806 --
9807 l_component_type             := 'AMB_JLT';
9808 l_component_code             := 'BR_FACTOR';
9809 l_component_type_code        := 'S';
9810 l_component_appl_id          :=  222;
9811 l_amb_context_code           := 'DEFAULT';
9812 l_entity_code                := 'BILLS_RECEIVABLE';
9813 l_event_class_code           := 'BILL';
9814 l_event_type_code            := 'BILL_ALL';
9815 l_line_definition_owner_code := 'S';
9816 l_line_definition_code       := 'AR_BILL_RECEIVABLES_JLD';
9817 --
9818 l_balance_type_code          := 'A';
9819 l_segment                     := NULL;
9820 l_ccid                        := NULL;
9821 l_adr_transaction_coa_id      := NULL;
9822 l_adr_accounting_coa_id       := NULL;
9823 l_adr_flexfield_segment_code  := NULL;
9824 l_adr_flex_value_set_id       := NULL;
9825 l_adr_value_type_code         := NULL;
9826 l_adr_value_combination_id    := NULL;
9827 l_adr_value_segment_code      := NULL;
9828 
9829 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
9830 l_bflow_class_code           := '';    -- 4219869 Business Flow
9831 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
9832 l_budgetary_control_flag     := 'N';
9833 
9834 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
9835 l_bflow_applied_to_amt       := NULL; -- 5132302
9836 l_entered_amt_idx            := NULL;          -- 4262811
9837 l_accted_amt_idx             := NULL;          -- 4262811
9838 l_acc_rev_flag               := NULL;          -- 4262811
9839 l_accrual_line_num           := NULL;          -- 4262811
9840 l_tmp_amt                    := NULL;          -- 4262811
9841 --
9842  
9843 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
9844     l_balance_type_code <> 'B' THEN
9845 IF NVL(p_source_39,'
9846 ') =  'FACTOR'
9847  THEN 
9848 
9849    --
9850    XLA_AE_LINES_PKG.SetNewLine;
9851 
9852    p_balance_type_code          := l_balance_type_code;
9853    -- set the flag so later we will know whether the gain loss line needs to be created
9854    
9855    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
9856      p_actual_flag :='A';
9857    END IF;
9858 
9859    --
9860    -- bulk performance
9861    --
9862    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
9863                                       p_header_num   => 0); -- 4262811
9864    --
9865    -- set accounting line options
9866    --
9870          , p_gl_transfer_mode_code      => 'S'
9867    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
9868            p_natural_side_code          => 'C'
9869          , p_gain_or_loss_flag          => 'N'
9871          , p_acct_entry_type_code       => 'A'
9872          , p_switch_side_flag           => 'Y'
9873          , p_merge_duplicate_code       => 'A'
9874          );
9875    --
9876    l_acc_rev_natural_side_code := 'D';  -- 4262811
9877    -- 
9878    --
9879    -- set accounting line type info
9880    --
9881    xla_ae_lines_pkg.SetAcctLineType
9882       (p_component_type             => l_component_type
9883       ,p_event_type_code            => l_event_type_code
9884       ,p_line_definition_owner_code => l_line_definition_owner_code
9885       ,p_line_definition_code       => l_line_definition_code
9886       ,p_accounting_line_code       => l_component_code
9887       ,p_accounting_line_type_code  => l_component_type_code
9888       ,p_accounting_line_appl_id    => l_component_appl_id
9889       ,p_amb_context_code           => l_amb_context_code
9890       ,p_entity_code                => l_entity_code
9891       ,p_event_class_code           => l_event_class_code);
9892    --
9893    -- set accounting class
9894    --
9895    xla_ae_lines_pkg.SetAcctClass(
9896            p_accounting_class_code  => 'FAC_BR'
9897          , p_ae_header_id           => l_ae_header_id
9898          );
9899 
9900    --
9901    -- set rounding class
9902    --
9903    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
9904                       'FAC_BR';
9905 
9906    --
9907    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
9908    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
9909    --
9910    -- bulk performance
9911    --
9912    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
9913 
9914    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
9915       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
9916 
9917    -- 4955764
9918    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
9919       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
9920 
9921    -- 4458381 Public Sector Enh
9922    
9923    --
9924    -- set accounting attributes for the line type
9925    --
9926    l_entered_amt_idx := 3;
9927    l_accted_amt_idx  := 8;
9928    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
9929    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
9930    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
9931    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
9932    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
9933    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
9934    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
9935    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
9936    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
9937    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
9938    l_rec_acct_attrs.array_date_value(5)  := p_source_45;
9939    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
9940    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
9941    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
9942    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
9943    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
9944    l_rec_acct_attrs.array_num_value(8)  := p_source_52;
9945    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
9946    l_rec_acct_attrs.array_num_value(9)  := p_source_53;
9947    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
9948    l_rec_acct_attrs.array_num_value(10)  := p_source_54;
9949    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
9950    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
9951 
9952    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
9953    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
9954 
9955    ---------------------------------------------------------------------------------------------------------------
9956    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
9957    ---------------------------------------------------------------------------------------------------------------
9958    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
9959 
9960    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9961    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
9962 
9963    IF xla_accounting_cache_pkg.GetValueChar
9964          (p_source_code         => 'LEDGER_CATEGORY_CODE'
9965          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
9966    AND l_bflow_method_code = 'PRIOR_ENTRY'
9967 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
9968    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
9969          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
9970        )
9971    THEN
9972          xla_ae_lines_pkg.BflowUpgEntry
9976    ELSE
9973            (p_business_method_code    => l_bflow_method_code
9974            ,p_business_class_code     => l_bflow_class_code
9975            ,p_balance_type            => l_balance_type_code);
9977       NULL;
9978 -- No business flow processing for business flow method of NONE.
9979    END IF;
9980 
9981    --
9982    -- call analytical criteria
9983    --
9984    
9985    --
9986    -- call description
9987    --
9988    -- No description or it is inherited.
9989    --
9990    -- call ADRs
9991    -- Bug 4922099
9992    --
9993    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
9994         (NVL(l_actual_upg_option, 'N') = 'O') OR
9995         (NVL(l_enc_upg_option, 'N') = 'O')
9996       )
9997    THEN
9998    NULL;
9999    --
10000    --
10001    
10002   l_ccid := AcctDerRule_29(
10003            p_application_id           => p_application_id
10004          , p_ae_header_id             => l_ae_header_id 
10005 , p_source_32 => p_source_32
10006          , x_transaction_coa_id       => l_adr_transaction_coa_id
10007          , x_accounting_coa_id        => l_adr_accounting_coa_id
10008          , x_value_type_code          => l_adr_value_type_code
10009          , p_side                     => 'NA'
10010    );
10011 
10012    xla_ae_lines_pkg.set_ccid(
10013     p_code_combination_id          => l_ccid
10014   , p_value_type_code              => l_adr_value_type_code
10015   , p_transaction_coa_id           => l_adr_transaction_coa_id
10016   , p_accounting_coa_id            => l_adr_accounting_coa_id
10017   , p_adr_code                     => 'DIST_CCID'
10018   , p_adr_type_code                => 'S'
10019   , p_component_type               => l_component_type
10020   , p_component_code               => l_component_code
10021   , p_component_type_code          => l_component_type_code
10022   , p_component_appl_id            => l_component_appl_id
10023   , p_amb_context_code             => l_amb_context_code
10024   , p_side                         => 'NA'
10025   );
10026 
10027 
10028    --
10029    --
10030    END IF;
10031    --
10032    -- Bug 4922099
10033    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10034           (NVL(l_enc_upg_option, 'N') = 'O')
10035         ) AND
10036         (l_bflow_method_code = 'PRIOR_ENTRY')
10037       )
10038    THEN
10039       IF
10040       --
10041       1 = 2
10042       --
10043       THEN
10044       xla_accounting_err_pkg.build_message
10045                                     (p_appli_s_name            => 'XLA'
10046                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10047                                     ,p_token_1                 => 'LINE_NUMBER'
10048                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10049                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10050                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10051                                                                              l_component_type
10052                                                                             ,l_component_code
10053                                                                             ,l_component_type_code
10054                                                                             ,l_component_appl_id
10055                                                                             ,l_amb_context_code
10056                                                                             ,l_entity_code
10057                                                                             ,l_event_class_code
10058                                                                            )
10059                                     ,p_token_3                 => 'OWNER'
10060                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10061                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10062                                                                           ,p_lookup_code    => l_component_type_code
10063                                                                          )
10064                                     ,p_token_4                 => 'PRODUCT_NAME'
10065                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10066                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10067                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10068                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10069                                     ,p_ae_header_id            =>  NULL
10070                                        );
10071 
10072         IF (C_LEVEL_ERROR>= g_log_level) THEN
10073                  trace
10074                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10075                       ,p_level    => C_LEVEL_ERROR
10076                       ,p_module   => l_log_module);
10077         END IF;
10078       END IF;
10079    END IF;
10080    --
10081    --
10082    ------------------------------------------------------------------------------------------------
10083    -- 4219869 Business Flow
10084    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10085    -- Prior Entry.  Currently, the following code is always generated.
10089    ------------------------------------------------------------------------------------
10086    ------------------------------------------------------------------------------------------------
10087    XLA_AE_LINES_PKG.ValidateCurrentLine;
10088 
10090    -- 4219869 Business Flow
10091    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10092    ------------------------------------------------------------------------------------
10093    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10094 
10095    ----------------------------------------------------------------------------------
10096    -- 4219869 Business Flow
10097    -- Update journal entry status -- Need to generate this within IF <condition>
10098    ----------------------------------------------------------------------------------
10099    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10100          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10101          ,p_balance_type_code => l_balance_type_code
10102          );
10103 
10104    -------------------------------------------------------------------------------------------
10105    -- 4262811 - Generate the Accrual Reversal lines
10106    -------------------------------------------------------------------------------------------
10107    BEGIN
10108       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10109                               (g_array_event(p_event_id).array_value_num('header_index'));
10110       IF l_acc_rev_flag IS NULL THEN
10111          l_acc_rev_flag := 'N';
10112       END IF;
10113    EXCEPTION
10114       WHEN OTHERS THEN
10115          l_acc_rev_flag := 'N';
10116    END;
10117    --
10118    IF (l_acc_rev_flag = 'Y') THEN
10119 
10120        -- 4645092  ------------------------------------------------------------------------------
10121        -- To allow MPA report to determine if it should generate report process
10122        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10123        ------------------------------------------------------------------------------------------
10124 
10125        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10126        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10127    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
10128    -- call ADRs
10129    -- Bug 4922099
10130    --
10131    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10132         (NVL(l_actual_upg_option, 'N') = 'O') OR
10133         (NVL(l_enc_upg_option, 'N') = 'O')
10134       )
10135    THEN
10136    NULL;
10137    --
10138    --
10139    
10140   l_ccid := AcctDerRule_29(
10141            p_application_id           => p_application_id
10142          , p_ae_header_id             => l_ae_header_id 
10143 , p_source_32 => p_source_32
10144          , x_transaction_coa_id       => l_adr_transaction_coa_id
10145          , x_accounting_coa_id        => l_adr_accounting_coa_id
10146          , x_value_type_code          => l_adr_value_type_code
10147          , p_side                     => 'NA'
10148    );
10149 
10150    xla_ae_lines_pkg.set_ccid(
10151     p_code_combination_id          => l_ccid
10152   , p_value_type_code              => l_adr_value_type_code
10153   , p_transaction_coa_id           => l_adr_transaction_coa_id
10154   , p_accounting_coa_id            => l_adr_accounting_coa_id
10155   , p_adr_code                     => 'DIST_CCID'
10156   , p_adr_type_code                => 'S'
10157   , p_component_type               => l_component_type
10158   , p_component_code               => l_component_code
10159   , p_component_type_code          => l_component_type_code
10160   , p_component_appl_id            => l_component_appl_id
10161   , p_amb_context_code             => l_amb_context_code
10162   , p_side                         => 'NA'
10163   );
10164 
10165 
10166    --
10167    --
10168    END IF;
10169 
10170        --
10171        -- Update the line information that should be overwritten
10172        --
10173        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10174                                          p_header_num   => 1);
10175        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10176 
10177        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10178 
10179        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10180           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10181        END IF;
10182 
10183       --
10184       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10185       --
10186       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10187           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10188       ELSE
10189           ---------------------------------------------------------------------------------------------------
10190           -- 4262811a Switch Sign
10191           ---------------------------------------------------------------------------------------------------
10192           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10193           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10197           -- 5132302
10194                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10195           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10196                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10198           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10199                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10200 
10201       END IF;
10202 
10203       -- 4955764
10204       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10205       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10206 
10207 
10208       XLA_AE_LINES_PKG.ValidateCurrentLine;
10209       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10210 
10211       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10212                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10213                ,p_balance_type_code => l_balance_type_code);
10214 
10215    END IF;
10216 
10217    -----------------------------------------------------------------------------------------
10218    -- 4262811 Multiperiod Accounting
10219    -----------------------------------------------------------------------------------------
10220      -- No MPA option is assigned.
10221 
10222 
10223 END IF;
10224 END IF;
10225 --
10226 
10227 --
10228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10229    trace
10230       (p_msg      => 'END of AcctLineType_46'
10231       ,p_level    => C_LEVEL_PROCEDURE
10232       ,p_module   => l_log_module);
10233 END IF;
10234 --
10235 EXCEPTION
10236   WHEN xla_exceptions_pkg.application_exception THEN
10237       RAISE;
10238   WHEN OTHERS THEN
10239        xla_exceptions_pkg.raise_message
10240            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_46');
10241 END AcctLineType_46;
10242 --
10243 
10244 ---------------------------------------
10245 --
10246 -- PRIVATE FUNCTION
10247 --         AcctLineType_47
10248 --
10249 ---------------------------------------
10250 PROCEDURE AcctLineType_47 (
10251   p_application_id        IN NUMBER
10252  ,p_event_id              IN NUMBER
10253  ,p_calculate_acctd_flag  IN VARCHAR2
10254  ,p_calculate_g_l_flag    IN VARCHAR2
10255  ,p_actual_flag           IN OUT VARCHAR2
10256  ,p_balance_type_code     OUT VARCHAR2
10257  ,p_gain_or_loss_ref      OUT VARCHAR2
10258  
10259 --Distribution GL Account
10260  , p_source_32            IN NUMBER
10261 --Distribution Source Type
10262  , p_source_39            IN VARCHAR2
10263 --Distribution Line Identifier
10264  , p_source_41            IN NUMBER
10265 --Distribution Type
10266  , p_source_42            IN VARCHAR2
10267 --Entered Amount
10268  , p_source_43            IN NUMBER
10269 --Currency Code
10270  , p_source_44            IN VARCHAR2
10271 --Exchange Date
10272  , p_source_45            IN DATE
10273 --Exchange Rate
10274  , p_source_46            IN NUMBER
10275 --Exchange Rate Type
10276  , p_source_47            IN VARCHAR2
10277 --SLA Party Type
10278  , p_source_51            IN VARCHAR2
10279 --Accounting Amount
10280  , p_source_52            IN NUMBER
10281 --Drawee Account Identifier
10282  , p_source_53            IN NUMBER
10283 --DRAW_SITE_SITE_USE_ID
10284  , p_source_54            IN NUMBER
10285 )
10286 IS
10287 
10288 l_component_type              VARCHAR2(80);
10289 l_component_code              VARCHAR2(30);
10290 l_component_type_code         VARCHAR2(1);
10291 l_component_appl_id           INTEGER;
10292 l_amb_context_code            VARCHAR2(30);
10293 l_entity_code                 VARCHAR2(30);
10294 l_event_class_code            VARCHAR2(30);
10295 l_ae_header_id                NUMBER;
10296 l_event_type_code             VARCHAR2(30);
10297 l_line_definition_code        VARCHAR2(30);
10298 l_line_definition_owner_code  VARCHAR2(1);
10299 --
10300 -- adr variables
10301 l_segment                     VARCHAR2(30);
10302 l_ccid                        NUMBER;
10303 l_adr_transaction_coa_id      NUMBER;
10304 l_adr_accounting_coa_id       NUMBER;
10305 l_adr_flexfield_segment_code  VARCHAR2(30);
10306 l_adr_flex_value_set_id       NUMBER;
10307 l_adr_value_type_code         VARCHAR2(30);
10308 l_adr_value_combination_id    NUMBER;
10309 l_adr_value_segment_code      VARCHAR2(30);
10310 
10311 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10312 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10313 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10314 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10315 
10316 -- 4262811 Variables ------------------------------------------------------------------------------------------
10317 l_entered_amt_idx             NUMBER;
10318 l_accted_amt_idx              NUMBER;
10319 l_acc_rev_flag                VARCHAR2(1);
10320 l_accrual_line_num            NUMBER;
10321 l_tmp_amt                     NUMBER;
10322 l_acc_rev_natural_side_code   VARCHAR2(1);
10323 
10324 l_num_entries                 NUMBER;
10325 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10326 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10330 l_recog_line_2                NUMBER;
10327 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10328 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10329 l_recog_line_1                NUMBER;
10331 
10332 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10333 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10334 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10335 
10336 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10337 
10338 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10339 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10340 
10341 ---------------------------------------------------------------------------------------------------------------
10342 
10343 
10344 --
10345 -- bulk performance
10346 --
10347 l_balance_type_code           VARCHAR2(1);
10348 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10349 l_log_module                  VARCHAR2(240);
10350 
10351 --
10352 -- Upgrade strategy
10353 --
10354 l_actual_upg_option           VARCHAR2(1);
10355 l_enc_upg_option           VARCHAR2(1);
10356 
10357 --
10358 BEGIN
10359 --
10360 IF g_log_enabled THEN
10361       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_47';
10362 END IF;
10363 --
10364 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10365 
10366       trace
10367          (p_msg      => 'BEGIN of AcctLineType_47'
10368          ,p_level    => C_LEVEL_PROCEDURE
10369          ,p_module   => l_log_module);
10370 
10371 END IF;
10372 --
10373 l_component_type             := 'AMB_JLT';
10374 l_component_code             := 'BR_REC';
10375 l_component_type_code        := 'S';
10376 l_component_appl_id          :=  222;
10377 l_amb_context_code           := 'DEFAULT';
10378 l_entity_code                := 'BILLS_RECEIVABLE';
10379 l_event_class_code           := 'BILL';
10380 l_event_type_code            := 'BILL_ALL';
10381 l_line_definition_owner_code := 'S';
10382 l_line_definition_code       := 'AR_BILL_RECEIVABLES_JLD';
10383 --
10384 l_balance_type_code          := 'A';
10385 l_segment                     := NULL;
10386 l_ccid                        := NULL;
10387 l_adr_transaction_coa_id      := NULL;
10388 l_adr_accounting_coa_id       := NULL;
10389 l_adr_flexfield_segment_code  := NULL;
10390 l_adr_flex_value_set_id       := NULL;
10391 l_adr_value_type_code         := NULL;
10392 l_adr_value_combination_id    := NULL;
10393 l_adr_value_segment_code      := NULL;
10394 
10395 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10396 l_bflow_class_code           := '';    -- 4219869 Business Flow
10397 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10398 l_budgetary_control_flag     := 'N';
10399 
10400 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10401 l_bflow_applied_to_amt       := NULL; -- 5132302
10402 l_entered_amt_idx            := NULL;          -- 4262811
10403 l_accted_amt_idx             := NULL;          -- 4262811
10404 l_acc_rev_flag               := NULL;          -- 4262811
10405 l_accrual_line_num           := NULL;          -- 4262811
10406 l_tmp_amt                    := NULL;          -- 4262811
10407 --
10408  
10409 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10410     l_balance_type_code <> 'B' THEN
10411 IF NVL(p_source_39,'
10412 ') =  'REC'
10413  THEN 
10414 
10415    --
10416    XLA_AE_LINES_PKG.SetNewLine;
10417 
10418    p_balance_type_code          := l_balance_type_code;
10419    -- set the flag so later we will know whether the gain loss line needs to be created
10420    
10421    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10422      p_actual_flag :='A';
10423    END IF;
10424 
10425    --
10426    -- bulk performance
10427    --
10428    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10429                                       p_header_num   => 0); -- 4262811
10430    --
10431    -- set accounting line options
10432    --
10433    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
10434            p_natural_side_code          => 'C'
10435          , p_gain_or_loss_flag          => 'N'
10436          , p_gl_transfer_mode_code      => 'S'
10437          , p_acct_entry_type_code       => 'A'
10438          , p_switch_side_flag           => 'Y'
10439          , p_merge_duplicate_code       => 'A'
10440          );
10441    --
10442    l_acc_rev_natural_side_code := 'D';  -- 4262811
10443    -- 
10444    --
10445    -- set accounting line type info
10446    --
10447    xla_ae_lines_pkg.SetAcctLineType
10448       (p_component_type             => l_component_type
10449       ,p_event_type_code            => l_event_type_code
10450       ,p_line_definition_owner_code => l_line_definition_owner_code
10451       ,p_line_definition_code       => l_line_definition_code
10452       ,p_accounting_line_code       => l_component_code
10453       ,p_accounting_line_type_code  => l_component_type_code
10454       ,p_accounting_line_appl_id    => l_component_appl_id
10455       ,p_amb_context_code           => l_amb_context_code
10456       ,p_entity_code                => l_entity_code
10457       ,p_event_class_code           => l_event_class_code);
10458    --
10459    -- set accounting class
10463          , p_ae_header_id           => l_ae_header_id
10460    --
10461    xla_ae_lines_pkg.SetAcctClass(
10462            p_accounting_class_code  => 'RECEIVABLE'
10464          );
10465 
10466    --
10467    -- set rounding class
10468    --
10469    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
10470                       'RECEIVABLE';
10471 
10472    --
10473    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
10474    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
10475    --
10476    -- bulk performance
10477    --
10478    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
10479 
10480    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
10481       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
10482 
10483    -- 4955764
10484    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10485       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
10486 
10487    -- 4458381 Public Sector Enh
10488    
10489    --
10490    -- set accounting attributes for the line type
10491    --
10492    l_entered_amt_idx := 3;
10493    l_accted_amt_idx  := 8;
10494    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
10495    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
10496    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
10497    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
10498    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
10499    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
10500    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
10501    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
10502    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
10503    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
10504    l_rec_acct_attrs.array_date_value(5)  := p_source_45;
10505    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
10506    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
10507    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
10508    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
10509    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
10510    l_rec_acct_attrs.array_num_value(8)  := p_source_52;
10511    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
10512    l_rec_acct_attrs.array_num_value(9)  := p_source_53;
10513    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
10514    l_rec_acct_attrs.array_num_value(10)  := p_source_54;
10515    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
10516    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
10517 
10518    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
10519    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
10520 
10521    ---------------------------------------------------------------------------------------------------------------
10522    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
10523    ---------------------------------------------------------------------------------------------------------------
10524    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
10525 
10526    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10527    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
10528 
10529    IF xla_accounting_cache_pkg.GetValueChar
10530          (p_source_code         => 'LEDGER_CATEGORY_CODE'
10531          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
10532    AND l_bflow_method_code = 'PRIOR_ENTRY'
10533 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
10534    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
10535          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
10536        )
10537    THEN
10538          xla_ae_lines_pkg.BflowUpgEntry
10539            (p_business_method_code    => l_bflow_method_code
10540            ,p_business_class_code     => l_bflow_class_code
10541            ,p_balance_type            => l_balance_type_code);
10542    ELSE
10543       NULL;
10544 -- No business flow processing for business flow method of NONE.
10545    END IF;
10546 
10547    --
10548    -- call analytical criteria
10549    --
10550    
10551    --
10552    -- call description
10553    --
10554    -- No description or it is inherited.
10555    --
10556    -- call ADRs
10557    -- Bug 4922099
10558    --
10559    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10560         (NVL(l_actual_upg_option, 'N') = 'O') OR
10561         (NVL(l_enc_upg_option, 'N') = 'O')
10562       )
10563    THEN
10564    NULL;
10565    --
10566    --
10567    
10568   l_ccid := AcctDerRule_29(
10569            p_application_id           => p_application_id
10570          , p_ae_header_id             => l_ae_header_id 
10571 , p_source_32 => p_source_32
10572          , x_transaction_coa_id       => l_adr_transaction_coa_id
10573          , x_accounting_coa_id        => l_adr_accounting_coa_id
10577 
10574          , x_value_type_code          => l_adr_value_type_code
10575          , p_side                     => 'NA'
10576    );
10578    xla_ae_lines_pkg.set_ccid(
10579     p_code_combination_id          => l_ccid
10580   , p_value_type_code              => l_adr_value_type_code
10581   , p_transaction_coa_id           => l_adr_transaction_coa_id
10582   , p_accounting_coa_id            => l_adr_accounting_coa_id
10583   , p_adr_code                     => 'DIST_CCID'
10584   , p_adr_type_code                => 'S'
10585   , p_component_type               => l_component_type
10586   , p_component_code               => l_component_code
10587   , p_component_type_code          => l_component_type_code
10588   , p_component_appl_id            => l_component_appl_id
10589   , p_amb_context_code             => l_amb_context_code
10590   , p_side                         => 'NA'
10591   );
10592 
10593 
10594    --
10595    --
10596    END IF;
10597    --
10598    -- Bug 4922099
10599    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
10600           (NVL(l_enc_upg_option, 'N') = 'O')
10601         ) AND
10602         (l_bflow_method_code = 'PRIOR_ENTRY')
10603       )
10604    THEN
10605       IF
10606       --
10607       1 = 2
10608       --
10609       THEN
10610       xla_accounting_err_pkg.build_message
10611                                     (p_appli_s_name            => 'XLA'
10612                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10613                                     ,p_token_1                 => 'LINE_NUMBER'
10614                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
10615                                     ,p_token_2                 => 'LINE_TYPE_NAME'
10616                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
10617                                                                              l_component_type
10618                                                                             ,l_component_code
10619                                                                             ,l_component_type_code
10620                                                                             ,l_component_appl_id
10621                                                                             ,l_amb_context_code
10622                                                                             ,l_entity_code
10623                                                                             ,l_event_class_code
10624                                                                            )
10625                                     ,p_token_3                 => 'OWNER'
10626                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
10627                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
10628                                                                           ,p_lookup_code    => l_component_type_code
10629                                                                          )
10630                                     ,p_token_4                 => 'PRODUCT_NAME'
10631                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
10632                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
10633                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
10634                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
10635                                     ,p_ae_header_id            =>  NULL
10636                                        );
10637 
10638         IF (C_LEVEL_ERROR>= g_log_level) THEN
10639                  trace
10640                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
10641                       ,p_level    => C_LEVEL_ERROR
10642                       ,p_module   => l_log_module);
10643         END IF;
10644       END IF;
10645    END IF;
10646    --
10647    --
10648    ------------------------------------------------------------------------------------------------
10649    -- 4219869 Business Flow
10650    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
10651    -- Prior Entry.  Currently, the following code is always generated.
10652    ------------------------------------------------------------------------------------------------
10653    XLA_AE_LINES_PKG.ValidateCurrentLine;
10654 
10655    ------------------------------------------------------------------------------------
10656    -- 4219869 Business Flow
10657    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
10658    ------------------------------------------------------------------------------------
10659    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10660 
10661    ----------------------------------------------------------------------------------
10662    -- 4219869 Business Flow
10663    -- Update journal entry status -- Need to generate this within IF <condition>
10664    ----------------------------------------------------------------------------------
10665    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10666          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
10667          ,p_balance_type_code => l_balance_type_code
10668          );
10669 
10673    BEGIN
10670    -------------------------------------------------------------------------------------------
10671    -- 4262811 - Generate the Accrual Reversal lines
10672    -------------------------------------------------------------------------------------------
10674       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
10675                               (g_array_event(p_event_id).array_value_num('header_index'));
10676       IF l_acc_rev_flag IS NULL THEN
10677          l_acc_rev_flag := 'N';
10678       END IF;
10679    EXCEPTION
10680       WHEN OTHERS THEN
10681          l_acc_rev_flag := 'N';
10682    END;
10683    --
10684    IF (l_acc_rev_flag = 'Y') THEN
10685 
10686        -- 4645092  ------------------------------------------------------------------------------
10687        -- To allow MPA report to determine if it should generate report process
10688        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
10689        ------------------------------------------------------------------------------------------
10690 
10691        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
10692        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
10693    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
10694    -- call ADRs
10695    -- Bug 4922099
10696    --
10697    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
10698         (NVL(l_actual_upg_option, 'N') = 'O') OR
10699         (NVL(l_enc_upg_option, 'N') = 'O')
10700       )
10701    THEN
10702    NULL;
10703    --
10704    --
10705    
10706   l_ccid := AcctDerRule_29(
10707            p_application_id           => p_application_id
10708          , p_ae_header_id             => l_ae_header_id 
10709 , p_source_32 => p_source_32
10710          , x_transaction_coa_id       => l_adr_transaction_coa_id
10711          , x_accounting_coa_id        => l_adr_accounting_coa_id
10712          , x_value_type_code          => l_adr_value_type_code
10713          , p_side                     => 'NA'
10714    );
10715 
10716    xla_ae_lines_pkg.set_ccid(
10717     p_code_combination_id          => l_ccid
10718   , p_value_type_code              => l_adr_value_type_code
10719   , p_transaction_coa_id           => l_adr_transaction_coa_id
10720   , p_accounting_coa_id            => l_adr_accounting_coa_id
10721   , p_adr_code                     => 'DIST_CCID'
10722   , p_adr_type_code                => 'S'
10723   , p_component_type               => l_component_type
10724   , p_component_code               => l_component_code
10725   , p_component_type_code          => l_component_type_code
10726   , p_component_appl_id            => l_component_appl_id
10727   , p_amb_context_code             => l_amb_context_code
10728   , p_side                         => 'NA'
10729   );
10730 
10731 
10732    --
10733    --
10734    END IF;
10735 
10736        --
10737        -- Update the line information that should be overwritten
10738        --
10739        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
10740                                          p_header_num   => 1);
10741        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
10742 
10743        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
10744 
10745        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
10746           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
10747        END IF;
10748 
10749       --
10750       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
10751       --
10752       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
10753           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
10754       ELSE
10755           ---------------------------------------------------------------------------------------------------
10756           -- 4262811a Switch Sign
10757           ---------------------------------------------------------------------------------------------------
10758           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
10759           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10760                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10761           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
10762                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10763           -- 5132302
10764           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
10765                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
10766 
10767       END IF;
10768 
10769       -- 4955764
10770       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
10771       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
10772 
10773 
10774       XLA_AE_LINES_PKG.ValidateCurrentLine;
10775       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
10776 
10780 
10777       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
10778                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
10779                ,p_balance_type_code => l_balance_type_code);
10781    END IF;
10782 
10783    -----------------------------------------------------------------------------------------
10784    -- 4262811 Multiperiod Accounting
10785    -----------------------------------------------------------------------------------------
10786      -- No MPA option is assigned.
10787 
10788 
10789 END IF;
10790 END IF;
10791 --
10792 
10793 --
10794 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10795    trace
10796       (p_msg      => 'END of AcctLineType_47'
10797       ,p_level    => C_LEVEL_PROCEDURE
10798       ,p_module   => l_log_module);
10799 END IF;
10800 --
10801 EXCEPTION
10802   WHEN xla_exceptions_pkg.application_exception THEN
10803       RAISE;
10804   WHEN OTHERS THEN
10805        xla_exceptions_pkg.raise_message
10806            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_47');
10807 END AcctLineType_47;
10808 --
10809 
10810 ---------------------------------------
10811 --
10812 -- PRIVATE FUNCTION
10813 --         AcctLineType_48
10814 --
10815 ---------------------------------------
10816 PROCEDURE AcctLineType_48 (
10817   p_application_id        IN NUMBER
10818  ,p_event_id              IN NUMBER
10819  ,p_calculate_acctd_flag  IN VARCHAR2
10820  ,p_calculate_g_l_flag    IN VARCHAR2
10821  ,p_actual_flag           IN OUT VARCHAR2
10822  ,p_balance_type_code     OUT VARCHAR2
10823  ,p_gain_or_loss_ref      OUT VARCHAR2
10824  
10825 --Distribution GL Account
10826  , p_source_32            IN NUMBER
10827 --Distribution Source Type
10828  , p_source_39            IN VARCHAR2
10829 --Distribution Line Identifier
10830  , p_source_41            IN NUMBER
10831 --Distribution Type
10832  , p_source_42            IN VARCHAR2
10833 --Entered Amount
10834  , p_source_43            IN NUMBER
10835 --Currency Code
10836  , p_source_44            IN VARCHAR2
10837 --Exchange Date
10838  , p_source_45            IN DATE
10839 --Exchange Rate
10840  , p_source_46            IN NUMBER
10841 --Exchange Rate Type
10842  , p_source_47            IN VARCHAR2
10843 --SLA Party Type
10844  , p_source_51            IN VARCHAR2
10845 --Accounting Amount
10846  , p_source_52            IN NUMBER
10847 --Drawee Account Identifier
10848  , p_source_53            IN NUMBER
10849 --DRAW_SITE_SITE_USE_ID
10850  , p_source_54            IN NUMBER
10851 )
10852 IS
10853 
10854 l_component_type              VARCHAR2(80);
10855 l_component_code              VARCHAR2(30);
10856 l_component_type_code         VARCHAR2(1);
10857 l_component_appl_id           INTEGER;
10858 l_amb_context_code            VARCHAR2(30);
10859 l_entity_code                 VARCHAR2(30);
10860 l_event_class_code            VARCHAR2(30);
10861 l_ae_header_id                NUMBER;
10862 l_event_type_code             VARCHAR2(30);
10863 l_line_definition_code        VARCHAR2(30);
10864 l_line_definition_owner_code  VARCHAR2(1);
10865 --
10866 -- adr variables
10867 l_segment                     VARCHAR2(30);
10868 l_ccid                        NUMBER;
10869 l_adr_transaction_coa_id      NUMBER;
10870 l_adr_accounting_coa_id       NUMBER;
10871 l_adr_flexfield_segment_code  VARCHAR2(30);
10872 l_adr_flex_value_set_id       NUMBER;
10873 l_adr_value_type_code         VARCHAR2(30);
10874 l_adr_value_combination_id    NUMBER;
10875 l_adr_value_segment_code      VARCHAR2(30);
10876 
10877 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
10878 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
10879 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
10880 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
10881 
10882 -- 4262811 Variables ------------------------------------------------------------------------------------------
10883 l_entered_amt_idx             NUMBER;
10884 l_accted_amt_idx              NUMBER;
10885 l_acc_rev_flag                VARCHAR2(1);
10886 l_accrual_line_num            NUMBER;
10887 l_tmp_amt                     NUMBER;
10888 l_acc_rev_natural_side_code   VARCHAR2(1);
10889 
10890 l_num_entries                 NUMBER;
10891 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
10892 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
10893 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
10894 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
10895 l_recog_line_1                NUMBER;
10896 l_recog_line_2                NUMBER;
10897 
10898 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
10899 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
10900 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
10901 
10902 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
10903 
10904 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
10905 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
10906 
10907 ---------------------------------------------------------------------------------------------------------------
10908 
10909 
10910 --
10914 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
10911 -- bulk performance
10912 --
10913 l_balance_type_code           VARCHAR2(1);
10915 l_log_module                  VARCHAR2(240);
10916 
10917 --
10918 -- Upgrade strategy
10919 --
10920 l_actual_upg_option           VARCHAR2(1);
10921 l_enc_upg_option           VARCHAR2(1);
10922 
10923 --
10924 BEGIN
10925 --
10926 IF g_log_enabled THEN
10927       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_48';
10928 END IF;
10929 --
10930 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
10931 
10932       trace
10933          (p_msg      => 'BEGIN of AcctLineType_48'
10934          ,p_level    => C_LEVEL_PROCEDURE
10935          ,p_module   => l_log_module);
10936 
10937 END IF;
10938 --
10939 l_component_type             := 'AMB_JLT';
10940 l_component_code             := 'BR_REMIT';
10941 l_component_type_code        := 'S';
10942 l_component_appl_id          :=  222;
10943 l_amb_context_code           := 'DEFAULT';
10944 l_entity_code                := 'BILLS_RECEIVABLE';
10945 l_event_class_code           := 'BILL';
10946 l_event_type_code            := 'BILL_ALL';
10947 l_line_definition_owner_code := 'S';
10948 l_line_definition_code       := 'AR_BILL_RECEIVABLES_JLD';
10949 --
10950 l_balance_type_code          := 'A';
10951 l_segment                     := NULL;
10952 l_ccid                        := NULL;
10953 l_adr_transaction_coa_id      := NULL;
10954 l_adr_accounting_coa_id       := NULL;
10955 l_adr_flexfield_segment_code  := NULL;
10956 l_adr_flex_value_set_id       := NULL;
10957 l_adr_value_type_code         := NULL;
10958 l_adr_value_combination_id    := NULL;
10959 l_adr_value_segment_code      := NULL;
10960 
10961 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
10962 l_bflow_class_code           := '';    -- 4219869 Business Flow
10963 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
10964 l_budgetary_control_flag     := 'N';
10965 
10966 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
10967 l_bflow_applied_to_amt       := NULL; -- 5132302
10968 l_entered_amt_idx            := NULL;          -- 4262811
10969 l_accted_amt_idx             := NULL;          -- 4262811
10970 l_acc_rev_flag               := NULL;          -- 4262811
10971 l_accrual_line_num           := NULL;          -- 4262811
10972 l_tmp_amt                    := NULL;          -- 4262811
10973 --
10974  
10975 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
10976     l_balance_type_code <> 'B' THEN
10977 IF NVL(p_source_39,'
10978 ') =  'REMITTANCE'
10979  THEN 
10980 
10981    --
10982    XLA_AE_LINES_PKG.SetNewLine;
10983 
10984    p_balance_type_code          := l_balance_type_code;
10985    -- set the flag so later we will know whether the gain loss line needs to be created
10986    
10987    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
10988      p_actual_flag :='A';
10989    END IF;
10990 
10991    --
10992    -- bulk performance
10993    --
10994    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
10995                                       p_header_num   => 0); -- 4262811
10996    --
10997    -- set accounting line options
10998    --
10999    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11000            p_natural_side_code          => 'C'
11001          , p_gain_or_loss_flag          => 'N'
11002          , p_gl_transfer_mode_code      => 'S'
11003          , p_acct_entry_type_code       => 'A'
11004          , p_switch_side_flag           => 'Y'
11005          , p_merge_duplicate_code       => 'A'
11006          );
11007    --
11008    l_acc_rev_natural_side_code := 'D';  -- 4262811
11009    -- 
11010    --
11011    -- set accounting line type info
11012    --
11013    xla_ae_lines_pkg.SetAcctLineType
11014       (p_component_type             => l_component_type
11015       ,p_event_type_code            => l_event_type_code
11016       ,p_line_definition_owner_code => l_line_definition_owner_code
11017       ,p_line_definition_code       => l_line_definition_code
11018       ,p_accounting_line_code       => l_component_code
11019       ,p_accounting_line_type_code  => l_component_type_code
11020       ,p_accounting_line_appl_id    => l_component_appl_id
11021       ,p_amb_context_code           => l_amb_context_code
11022       ,p_entity_code                => l_entity_code
11023       ,p_event_class_code           => l_event_class_code);
11024    --
11025    -- set accounting class
11026    --
11027    xla_ae_lines_pkg.SetAcctClass(
11028            p_accounting_class_code  => 'REM_BR'
11029          , p_ae_header_id           => l_ae_header_id
11030          );
11031 
11032    --
11033    -- set rounding class
11034    --
11035    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11036                       'REM_BR';
11037 
11038    --
11039    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11040    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11041    --
11042    -- bulk performance
11043    --
11047       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11044    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11045 
11046    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11048 
11049    -- 4955764
11050    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11051       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11052 
11053    -- 4458381 Public Sector Enh
11054    
11055    --
11056    -- set accounting attributes for the line type
11057    --
11058    l_entered_amt_idx := 3;
11059    l_accted_amt_idx  := 8;
11060    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11061    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11062    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
11063    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11064    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
11065    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11066    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
11067    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11068    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
11069    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11070    l_rec_acct_attrs.array_date_value(5)  := p_source_45;
11071    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11072    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
11073    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11074    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
11075    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
11076    l_rec_acct_attrs.array_num_value(8)  := p_source_52;
11077    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
11078    l_rec_acct_attrs.array_num_value(9)  := p_source_53;
11079    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
11080    l_rec_acct_attrs.array_num_value(10)  := p_source_54;
11081    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
11082    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
11083 
11084    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11085    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11086 
11087    ---------------------------------------------------------------------------------------------------------------
11088    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11089    ---------------------------------------------------------------------------------------------------------------
11090    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11091 
11092    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11093    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11094 
11095    IF xla_accounting_cache_pkg.GetValueChar
11096          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11097          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11098    AND l_bflow_method_code = 'PRIOR_ENTRY'
11099 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11100    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11101          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11102        )
11103    THEN
11104          xla_ae_lines_pkg.BflowUpgEntry
11105            (p_business_method_code    => l_bflow_method_code
11106            ,p_business_class_code     => l_bflow_class_code
11107            ,p_balance_type            => l_balance_type_code);
11108    ELSE
11109       NULL;
11110 -- No business flow processing for business flow method of NONE.
11111    END IF;
11112 
11113    --
11114    -- call analytical criteria
11115    --
11116    
11117    --
11118    -- call description
11119    --
11120    -- No description or it is inherited.
11121    --
11122    -- call ADRs
11123    -- Bug 4922099
11124    --
11125    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11126         (NVL(l_actual_upg_option, 'N') = 'O') OR
11127         (NVL(l_enc_upg_option, 'N') = 'O')
11128       )
11129    THEN
11130    NULL;
11131    --
11132    --
11133    
11134   l_ccid := AcctDerRule_29(
11135            p_application_id           => p_application_id
11136          , p_ae_header_id             => l_ae_header_id 
11137 , p_source_32 => p_source_32
11138          , x_transaction_coa_id       => l_adr_transaction_coa_id
11139          , x_accounting_coa_id        => l_adr_accounting_coa_id
11140          , x_value_type_code          => l_adr_value_type_code
11141          , p_side                     => 'NA'
11142    );
11143 
11144    xla_ae_lines_pkg.set_ccid(
11145     p_code_combination_id          => l_ccid
11146   , p_value_type_code              => l_adr_value_type_code
11147   , p_transaction_coa_id           => l_adr_transaction_coa_id
11148   , p_accounting_coa_id            => l_adr_accounting_coa_id
11149   , p_adr_code                     => 'DIST_CCID'
11150   , p_adr_type_code                => 'S'
11151   , p_component_type               => l_component_type
11152   , p_component_code               => l_component_code
11153   , p_component_type_code          => l_component_type_code
11157   );
11154   , p_component_appl_id            => l_component_appl_id
11155   , p_amb_context_code             => l_amb_context_code
11156   , p_side                         => 'NA'
11158 
11159 
11160    --
11161    --
11162    END IF;
11163    --
11164    -- Bug 4922099
11165    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11166           (NVL(l_enc_upg_option, 'N') = 'O')
11167         ) AND
11168         (l_bflow_method_code = 'PRIOR_ENTRY')
11169       )
11170    THEN
11171       IF
11172       --
11173       1 = 2
11174       --
11175       THEN
11176       xla_accounting_err_pkg.build_message
11177                                     (p_appli_s_name            => 'XLA'
11178                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11179                                     ,p_token_1                 => 'LINE_NUMBER'
11180                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11181                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11182                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11183                                                                              l_component_type
11184                                                                             ,l_component_code
11185                                                                             ,l_component_type_code
11186                                                                             ,l_component_appl_id
11187                                                                             ,l_amb_context_code
11188                                                                             ,l_entity_code
11189                                                                             ,l_event_class_code
11190                                                                            )
11191                                     ,p_token_3                 => 'OWNER'
11192                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11193                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11194                                                                           ,p_lookup_code    => l_component_type_code
11195                                                                          )
11196                                     ,p_token_4                 => 'PRODUCT_NAME'
11197                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11198                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11199                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11200                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11201                                     ,p_ae_header_id            =>  NULL
11202                                        );
11203 
11204         IF (C_LEVEL_ERROR>= g_log_level) THEN
11205                  trace
11206                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11207                       ,p_level    => C_LEVEL_ERROR
11208                       ,p_module   => l_log_module);
11209         END IF;
11210       END IF;
11211    END IF;
11212    --
11213    --
11214    ------------------------------------------------------------------------------------------------
11215    -- 4219869 Business Flow
11216    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11217    -- Prior Entry.  Currently, the following code is always generated.
11218    ------------------------------------------------------------------------------------------------
11219    XLA_AE_LINES_PKG.ValidateCurrentLine;
11220 
11221    ------------------------------------------------------------------------------------
11222    -- 4219869 Business Flow
11223    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11224    ------------------------------------------------------------------------------------
11225    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11226 
11227    ----------------------------------------------------------------------------------
11228    -- 4219869 Business Flow
11229    -- Update journal entry status -- Need to generate this within IF <condition>
11230    ----------------------------------------------------------------------------------
11231    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11232          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11233          ,p_balance_type_code => l_balance_type_code
11234          );
11235 
11236    -------------------------------------------------------------------------------------------
11237    -- 4262811 - Generate the Accrual Reversal lines
11238    -------------------------------------------------------------------------------------------
11239    BEGIN
11240       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11241                               (g_array_event(p_event_id).array_value_num('header_index'));
11242       IF l_acc_rev_flag IS NULL THEN
11243          l_acc_rev_flag := 'N';
11244       END IF;
11245    EXCEPTION
11246       WHEN OTHERS THEN
11247          l_acc_rev_flag := 'N';
11248    END;
11249    --
11250    IF (l_acc_rev_flag = 'Y') THEN
11251 
11255        ------------------------------------------------------------------------------------------
11252        -- 4645092  ------------------------------------------------------------------------------
11253        -- To allow MPA report to determine if it should generate report process
11254        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11256 
11257        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11258        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11259    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
11260    -- call ADRs
11261    -- Bug 4922099
11262    --
11263    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11264         (NVL(l_actual_upg_option, 'N') = 'O') OR
11265         (NVL(l_enc_upg_option, 'N') = 'O')
11266       )
11267    THEN
11268    NULL;
11269    --
11270    --
11271    
11272   l_ccid := AcctDerRule_29(
11273            p_application_id           => p_application_id
11274          , p_ae_header_id             => l_ae_header_id 
11275 , p_source_32 => p_source_32
11276          , x_transaction_coa_id       => l_adr_transaction_coa_id
11277          , x_accounting_coa_id        => l_adr_accounting_coa_id
11278          , x_value_type_code          => l_adr_value_type_code
11279          , p_side                     => 'NA'
11280    );
11281 
11282    xla_ae_lines_pkg.set_ccid(
11283     p_code_combination_id          => l_ccid
11284   , p_value_type_code              => l_adr_value_type_code
11285   , p_transaction_coa_id           => l_adr_transaction_coa_id
11286   , p_accounting_coa_id            => l_adr_accounting_coa_id
11287   , p_adr_code                     => 'DIST_CCID'
11288   , p_adr_type_code                => 'S'
11289   , p_component_type               => l_component_type
11290   , p_component_code               => l_component_code
11291   , p_component_type_code          => l_component_type_code
11292   , p_component_appl_id            => l_component_appl_id
11293   , p_amb_context_code             => l_amb_context_code
11294   , p_side                         => 'NA'
11295   );
11296 
11297 
11298    --
11299    --
11300    END IF;
11301 
11302        --
11303        -- Update the line information that should be overwritten
11304        --
11305        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11306                                          p_header_num   => 1);
11307        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11308 
11309        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11310 
11311        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11312           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11313        END IF;
11314 
11315       --
11316       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11317       --
11318       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11319           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11320       ELSE
11321           ---------------------------------------------------------------------------------------------------
11322           -- 4262811a Switch Sign
11323           ---------------------------------------------------------------------------------------------------
11324           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11325           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11326                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11327           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11328                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11329           -- 5132302
11330           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11331                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11332 
11333       END IF;
11334 
11335       -- 4955764
11336       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11337       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11338 
11339 
11340       XLA_AE_LINES_PKG.ValidateCurrentLine;
11341       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11342 
11343       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11344                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11345                ,p_balance_type_code => l_balance_type_code);
11346 
11347    END IF;
11348 
11349    -----------------------------------------------------------------------------------------
11350    -- 4262811 Multiperiod Accounting
11351    -----------------------------------------------------------------------------------------
11352      -- No MPA option is assigned.
11353 
11354 
11355 END IF;
11356 END IF;
11357 --
11358 
11359 --
11360 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11361    trace
11362       (p_msg      => 'END of AcctLineType_48'
11363       ,p_level    => C_LEVEL_PROCEDURE
11367 EXCEPTION
11364       ,p_module   => l_log_module);
11365 END IF;
11366 --
11368   WHEN xla_exceptions_pkg.application_exception THEN
11369       RAISE;
11370   WHEN OTHERS THEN
11371        xla_exceptions_pkg.raise_message
11372            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_48');
11373 END AcctLineType_48;
11374 --
11375 
11376 ---------------------------------------
11377 --
11378 -- PRIVATE FUNCTION
11379 --         AcctLineType_49
11380 --
11381 ---------------------------------------
11382 PROCEDURE AcctLineType_49 (
11383   p_application_id        IN NUMBER
11384  ,p_event_id              IN NUMBER
11385  ,p_calculate_acctd_flag  IN VARCHAR2
11386  ,p_calculate_g_l_flag    IN VARCHAR2
11387  ,p_actual_flag           IN OUT VARCHAR2
11388  ,p_balance_type_code     OUT VARCHAR2
11389  ,p_gain_or_loss_ref      OUT VARCHAR2
11390  
11391 --Distribution GL Account
11392  , p_source_32            IN NUMBER
11393 --Distribution Source Type
11394  , p_source_39            IN VARCHAR2
11395 --Distribution Line Identifier
11396  , p_source_41            IN NUMBER
11397 --Distribution Type
11398  , p_source_42            IN VARCHAR2
11399 --Entered Amount
11400  , p_source_43            IN NUMBER
11401 --Currency Code
11402  , p_source_44            IN VARCHAR2
11403 --Exchange Date
11404  , p_source_45            IN DATE
11405 --Exchange Rate
11406  , p_source_46            IN NUMBER
11407 --Exchange Rate Type
11408  , p_source_47            IN VARCHAR2
11409 --SLA Party Type
11410  , p_source_51            IN VARCHAR2
11411 --Accounting Amount
11412  , p_source_52            IN NUMBER
11413 --Drawee Account Identifier
11414  , p_source_53            IN NUMBER
11415 --DRAW_SITE_SITE_USE_ID
11416  , p_source_54            IN NUMBER
11417 )
11418 IS
11419 
11420 l_component_type              VARCHAR2(80);
11421 l_component_code              VARCHAR2(30);
11422 l_component_type_code         VARCHAR2(1);
11423 l_component_appl_id           INTEGER;
11424 l_amb_context_code            VARCHAR2(30);
11425 l_entity_code                 VARCHAR2(30);
11426 l_event_class_code            VARCHAR2(30);
11427 l_ae_header_id                NUMBER;
11428 l_event_type_code             VARCHAR2(30);
11429 l_line_definition_code        VARCHAR2(30);
11430 l_line_definition_owner_code  VARCHAR2(1);
11431 --
11432 -- adr variables
11433 l_segment                     VARCHAR2(30);
11434 l_ccid                        NUMBER;
11435 l_adr_transaction_coa_id      NUMBER;
11436 l_adr_accounting_coa_id       NUMBER;
11437 l_adr_flexfield_segment_code  VARCHAR2(30);
11438 l_adr_flex_value_set_id       NUMBER;
11439 l_adr_value_type_code         VARCHAR2(30);
11440 l_adr_value_combination_id    NUMBER;
11441 l_adr_value_segment_code      VARCHAR2(30);
11442 
11443 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
11444 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
11445 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
11446 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
11447 
11448 -- 4262811 Variables ------------------------------------------------------------------------------------------
11449 l_entered_amt_idx             NUMBER;
11450 l_accted_amt_idx              NUMBER;
11451 l_acc_rev_flag                VARCHAR2(1);
11452 l_accrual_line_num            NUMBER;
11453 l_tmp_amt                     NUMBER;
11454 l_acc_rev_natural_side_code   VARCHAR2(1);
11455 
11456 l_num_entries                 NUMBER;
11457 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
11458 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
11459 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
11460 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
11461 l_recog_line_1                NUMBER;
11462 l_recog_line_2                NUMBER;
11463 
11464 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
11465 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
11466 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
11467 
11468 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
11469 
11470 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
11471 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
11472 
11473 ---------------------------------------------------------------------------------------------------------------
11474 
11475 
11476 --
11477 -- bulk performance
11478 --
11479 l_balance_type_code           VARCHAR2(1);
11480 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
11481 l_log_module                  VARCHAR2(240);
11482 
11483 --
11484 -- Upgrade strategy
11485 --
11486 l_actual_upg_option           VARCHAR2(1);
11487 l_enc_upg_option           VARCHAR2(1);
11488 
11489 --
11490 BEGIN
11491 --
11492 IF g_log_enabled THEN
11493       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_49';
11494 END IF;
11495 --
11496 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11497 
11498       trace
11499          (p_msg      => 'BEGIN of AcctLineType_49'
11500          ,p_level    => C_LEVEL_PROCEDURE
11501          ,p_module   => l_log_module);
11502 
11503 END IF;
11507 l_component_type_code        := 'S';
11504 --
11505 l_component_type             := 'AMB_JLT';
11506 l_component_code             := 'BR_TAX';
11508 l_component_appl_id          :=  222;
11509 l_amb_context_code           := 'DEFAULT';
11510 l_entity_code                := 'BILLS_RECEIVABLE';
11511 l_event_class_code           := 'BILL';
11512 l_event_type_code            := 'BILL_ALL';
11513 l_line_definition_owner_code := 'S';
11514 l_line_definition_code       := 'AR_BILL_RECEIVABLES_JLD';
11515 --
11516 l_balance_type_code          := 'A';
11517 l_segment                     := NULL;
11518 l_ccid                        := NULL;
11519 l_adr_transaction_coa_id      := NULL;
11520 l_adr_accounting_coa_id       := NULL;
11521 l_adr_flexfield_segment_code  := NULL;
11522 l_adr_flex_value_set_id       := NULL;
11523 l_adr_value_type_code         := NULL;
11524 l_adr_value_combination_id    := NULL;
11525 l_adr_value_segment_code      := NULL;
11526 
11527 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
11528 l_bflow_class_code           := '';    -- 4219869 Business Flow
11529 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
11530 l_budgetary_control_flag     := 'N';
11531 
11532 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
11533 l_bflow_applied_to_amt       := NULL; -- 5132302
11534 l_entered_amt_idx            := NULL;          -- 4262811
11535 l_accted_amt_idx             := NULL;          -- 4262811
11536 l_acc_rev_flag               := NULL;          -- 4262811
11537 l_accrual_line_num           := NULL;          -- 4262811
11538 l_tmp_amt                    := NULL;          -- 4262811
11539 --
11540  
11541 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
11542     l_balance_type_code <> 'B' THEN
11543 IF NVL(p_source_39,'
11544 ') =  'TAX'
11545  THEN 
11546 
11547    --
11548    XLA_AE_LINES_PKG.SetNewLine;
11549 
11550    p_balance_type_code          := l_balance_type_code;
11551    -- set the flag so later we will know whether the gain loss line needs to be created
11552    
11553    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
11554      p_actual_flag :='A';
11555    END IF;
11556 
11557    --
11558    -- bulk performance
11559    --
11560    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
11561                                       p_header_num   => 0); -- 4262811
11562    --
11563    -- set accounting line options
11564    --
11565    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
11566            p_natural_side_code          => 'C'
11567          , p_gain_or_loss_flag          => 'N'
11568          , p_gl_transfer_mode_code      => 'S'
11569          , p_acct_entry_type_code       => 'A'
11570          , p_switch_side_flag           => 'Y'
11571          , p_merge_duplicate_code       => 'A'
11572          );
11573    --
11574    l_acc_rev_natural_side_code := 'D';  -- 4262811
11575    -- 
11576    --
11577    -- set accounting line type info
11578    --
11579    xla_ae_lines_pkg.SetAcctLineType
11580       (p_component_type             => l_component_type
11581       ,p_event_type_code            => l_event_type_code
11582       ,p_line_definition_owner_code => l_line_definition_owner_code
11583       ,p_line_definition_code       => l_line_definition_code
11584       ,p_accounting_line_code       => l_component_code
11585       ,p_accounting_line_type_code  => l_component_type_code
11586       ,p_accounting_line_appl_id    => l_component_appl_id
11587       ,p_amb_context_code           => l_amb_context_code
11588       ,p_entity_code                => l_entity_code
11589       ,p_event_class_code           => l_event_class_code);
11590    --
11591    -- set accounting class
11592    --
11593    xla_ae_lines_pkg.SetAcctClass(
11594            p_accounting_class_code  => 'TAX'
11595          , p_ae_header_id           => l_ae_header_id
11596          );
11597 
11598    --
11599    -- set rounding class
11600    --
11601    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
11602                       'TAX';
11603 
11604    --
11605    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
11606    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
11607    --
11608    -- bulk performance
11609    --
11610    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
11611 
11612    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
11613       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
11614 
11615    -- 4955764
11616    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11617       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
11618 
11619    -- 4458381 Public Sector Enh
11620    
11621    --
11622    -- set accounting attributes for the line type
11623    --
11624    l_entered_amt_idx := 3;
11625    l_accted_amt_idx  := 8;
11626    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
11627    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
11628    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
11632    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
11629    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
11630    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
11631    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
11633    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
11634    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
11635    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
11636    l_rec_acct_attrs.array_date_value(5)  := p_source_45;
11637    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
11638    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
11639    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
11640    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
11641    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
11642    l_rec_acct_attrs.array_num_value(8)  := p_source_52;
11643    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
11644    l_rec_acct_attrs.array_num_value(9)  := p_source_53;
11645    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
11646    l_rec_acct_attrs.array_num_value(10)  := p_source_54;
11647    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
11648    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
11649 
11650    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
11651    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
11652 
11653    ---------------------------------------------------------------------------------------------------------------
11654    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
11655    ---------------------------------------------------------------------------------------------------------------
11656    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
11657 
11658    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11659    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
11660 
11661    IF xla_accounting_cache_pkg.GetValueChar
11662          (p_source_code         => 'LEDGER_CATEGORY_CODE'
11663          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
11664    AND l_bflow_method_code = 'PRIOR_ENTRY'
11665 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
11666    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
11667          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
11668        )
11669    THEN
11670          xla_ae_lines_pkg.BflowUpgEntry
11671            (p_business_method_code    => l_bflow_method_code
11672            ,p_business_class_code     => l_bflow_class_code
11673            ,p_balance_type            => l_balance_type_code);
11674    ELSE
11675       NULL;
11676 -- No business flow processing for business flow method of NONE.
11677    END IF;
11678 
11679    --
11680    -- call analytical criteria
11681    --
11682    
11683    --
11684    -- call description
11685    --
11686    -- No description or it is inherited.
11687    --
11688    -- call ADRs
11689    -- Bug 4922099
11690    --
11691    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11692         (NVL(l_actual_upg_option, 'N') = 'O') OR
11693         (NVL(l_enc_upg_option, 'N') = 'O')
11694       )
11695    THEN
11696    NULL;
11697    --
11698    --
11699    
11700   l_ccid := AcctDerRule_29(
11701            p_application_id           => p_application_id
11702          , p_ae_header_id             => l_ae_header_id 
11703 , p_source_32 => p_source_32
11704          , x_transaction_coa_id       => l_adr_transaction_coa_id
11705          , x_accounting_coa_id        => l_adr_accounting_coa_id
11706          , x_value_type_code          => l_adr_value_type_code
11707          , p_side                     => 'NA'
11708    );
11709 
11710    xla_ae_lines_pkg.set_ccid(
11711     p_code_combination_id          => l_ccid
11712   , p_value_type_code              => l_adr_value_type_code
11713   , p_transaction_coa_id           => l_adr_transaction_coa_id
11714   , p_accounting_coa_id            => l_adr_accounting_coa_id
11715   , p_adr_code                     => 'DIST_CCID'
11716   , p_adr_type_code                => 'S'
11717   , p_component_type               => l_component_type
11718   , p_component_code               => l_component_code
11719   , p_component_type_code          => l_component_type_code
11720   , p_component_appl_id            => l_component_appl_id
11721   , p_amb_context_code             => l_amb_context_code
11722   , p_side                         => 'NA'
11723   );
11724 
11725 
11726    --
11727    --
11728    END IF;
11729    --
11730    -- Bug 4922099
11731    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
11732           (NVL(l_enc_upg_option, 'N') = 'O')
11733         ) AND
11734         (l_bflow_method_code = 'PRIOR_ENTRY')
11735       )
11736    THEN
11737       IF
11738       --
11739       1 = 2
11740       --
11741       THEN
11742       xla_accounting_err_pkg.build_message
11743                                     (p_appli_s_name            => 'XLA'
11744                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11748                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
11745                                     ,p_token_1                 => 'LINE_NUMBER'
11746                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
11747                                     ,p_token_2                 => 'LINE_TYPE_NAME'
11749                                                                              l_component_type
11750                                                                             ,l_component_code
11751                                                                             ,l_component_type_code
11752                                                                             ,l_component_appl_id
11753                                                                             ,l_amb_context_code
11754                                                                             ,l_entity_code
11755                                                                             ,l_event_class_code
11756                                                                            )
11757                                     ,p_token_3                 => 'OWNER'
11758                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
11759                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
11760                                                                           ,p_lookup_code    => l_component_type_code
11761                                                                          )
11762                                     ,p_token_4                 => 'PRODUCT_NAME'
11763                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
11764                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
11765                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
11766                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
11767                                     ,p_ae_header_id            =>  NULL
11768                                        );
11769 
11770         IF (C_LEVEL_ERROR>= g_log_level) THEN
11771                  trace
11772                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
11773                       ,p_level    => C_LEVEL_ERROR
11774                       ,p_module   => l_log_module);
11775         END IF;
11776       END IF;
11777    END IF;
11778    --
11779    --
11780    ------------------------------------------------------------------------------------------------
11781    -- 4219869 Business Flow
11782    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
11783    -- Prior Entry.  Currently, the following code is always generated.
11784    ------------------------------------------------------------------------------------------------
11785    XLA_AE_LINES_PKG.ValidateCurrentLine;
11786 
11787    ------------------------------------------------------------------------------------
11788    -- 4219869 Business Flow
11789    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
11790    ------------------------------------------------------------------------------------
11791    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11792 
11793    ----------------------------------------------------------------------------------
11794    -- 4219869 Business Flow
11795    -- Update journal entry status -- Need to generate this within IF <condition>
11796    ----------------------------------------------------------------------------------
11797    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11798          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
11799          ,p_balance_type_code => l_balance_type_code
11800          );
11801 
11802    -------------------------------------------------------------------------------------------
11803    -- 4262811 - Generate the Accrual Reversal lines
11804    -------------------------------------------------------------------------------------------
11805    BEGIN
11806       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
11807                               (g_array_event(p_event_id).array_value_num('header_index'));
11808       IF l_acc_rev_flag IS NULL THEN
11809          l_acc_rev_flag := 'N';
11810       END IF;
11811    EXCEPTION
11812       WHEN OTHERS THEN
11813          l_acc_rev_flag := 'N';
11814    END;
11815    --
11816    IF (l_acc_rev_flag = 'Y') THEN
11817 
11818        -- 4645092  ------------------------------------------------------------------------------
11819        -- To allow MPA report to determine if it should generate report process
11820        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
11821        ------------------------------------------------------------------------------------------
11822 
11823        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
11824        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
11825    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
11826    -- call ADRs
11827    -- Bug 4922099
11828    --
11829    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
11830         (NVL(l_actual_upg_option, 'N') = 'O') OR
11831         (NVL(l_enc_upg_option, 'N') = 'O')
11832       )
11833    THEN
11834    NULL;
11835    --
11836    --
11837    
11838   l_ccid := AcctDerRule_29(
11839            p_application_id           => p_application_id
11840          , p_ae_header_id             => l_ae_header_id 
11844          , x_value_type_code          => l_adr_value_type_code
11841 , p_source_32 => p_source_32
11842          , x_transaction_coa_id       => l_adr_transaction_coa_id
11843          , x_accounting_coa_id        => l_adr_accounting_coa_id
11845          , p_side                     => 'NA'
11846    );
11847 
11848    xla_ae_lines_pkg.set_ccid(
11849     p_code_combination_id          => l_ccid
11850   , p_value_type_code              => l_adr_value_type_code
11851   , p_transaction_coa_id           => l_adr_transaction_coa_id
11852   , p_accounting_coa_id            => l_adr_accounting_coa_id
11853   , p_adr_code                     => 'DIST_CCID'
11854   , p_adr_type_code                => 'S'
11855   , p_component_type               => l_component_type
11856   , p_component_code               => l_component_code
11857   , p_component_type_code          => l_component_type_code
11858   , p_component_appl_id            => l_component_appl_id
11859   , p_amb_context_code             => l_amb_context_code
11860   , p_side                         => 'NA'
11861   );
11862 
11863 
11864    --
11865    --
11866    END IF;
11867 
11868        --
11869        -- Update the line information that should be overwritten
11870        --
11871        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
11872                                          p_header_num   => 1);
11873        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
11874 
11875        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
11876 
11877        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
11878           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
11879        END IF;
11880 
11881       --
11882       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
11883       --
11884       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
11885           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
11886       ELSE
11887           ---------------------------------------------------------------------------------------------------
11888           -- 4262811a Switch Sign
11889           ---------------------------------------------------------------------------------------------------
11890           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
11891           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11892                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11893           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
11894                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11895           -- 5132302
11896           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
11897                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
11898 
11899       END IF;
11900 
11901       -- 4955764
11902       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
11903       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
11904 
11905 
11906       XLA_AE_LINES_PKG.ValidateCurrentLine;
11907       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
11908 
11909       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
11910                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
11911                ,p_balance_type_code => l_balance_type_code);
11912 
11913    END IF;
11914 
11915    -----------------------------------------------------------------------------------------
11916    -- 4262811 Multiperiod Accounting
11917    -----------------------------------------------------------------------------------------
11918      -- No MPA option is assigned.
11919 
11920 
11921 END IF;
11922 END IF;
11923 --
11924 
11925 --
11926 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
11927    trace
11928       (p_msg      => 'END of AcctLineType_49'
11929       ,p_level    => C_LEVEL_PROCEDURE
11930       ,p_module   => l_log_module);
11931 END IF;
11932 --
11933 EXCEPTION
11934   WHEN xla_exceptions_pkg.application_exception THEN
11935       RAISE;
11936   WHEN OTHERS THEN
11937        xla_exceptions_pkg.raise_message
11938            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_49');
11939 END AcctLineType_49;
11940 --
11941 
11942 ---------------------------------------
11943 --
11944 -- PRIVATE FUNCTION
11945 --         AcctLineType_50
11946 --
11947 ---------------------------------------
11948 PROCEDURE AcctLineType_50 (
11949   p_application_id        IN NUMBER
11950  ,p_event_id              IN NUMBER
11951  ,p_calculate_acctd_flag  IN VARCHAR2
11952  ,p_calculate_g_l_flag    IN VARCHAR2
11953  ,p_actual_flag           IN OUT VARCHAR2
11954  ,p_balance_type_code     OUT VARCHAR2
11955  ,p_gain_or_loss_ref      OUT VARCHAR2
11956  
11957 --Distribution GL Account
11958  , p_source_32            IN NUMBER
11959 --Distribution Source Type
11960  , p_source_39            IN VARCHAR2
11961 --Distribution Line Identifier
11962  , p_source_41            IN NUMBER
11966  , p_source_43            IN NUMBER
11963 --Distribution Type
11964  , p_source_42            IN VARCHAR2
11965 --Entered Amount
11967 --Currency Code
11968  , p_source_44            IN VARCHAR2
11969 --Exchange Date
11970  , p_source_45            IN DATE
11971 --Exchange Rate
11972  , p_source_46            IN NUMBER
11973 --Exchange Rate Type
11974  , p_source_47            IN VARCHAR2
11975 --SLA Party Type
11976  , p_source_51            IN VARCHAR2
11977 --Accounting Amount
11978  , p_source_52            IN NUMBER
11979 --Drawee Account Identifier
11980  , p_source_53            IN NUMBER
11981 --DRAW_SITE_SITE_USE_ID
11982  , p_source_54            IN NUMBER
11983 )
11984 IS
11985 
11986 l_component_type              VARCHAR2(80);
11987 l_component_code              VARCHAR2(30);
11988 l_component_type_code         VARCHAR2(1);
11989 l_component_appl_id           INTEGER;
11990 l_amb_context_code            VARCHAR2(30);
11991 l_entity_code                 VARCHAR2(30);
11992 l_event_class_code            VARCHAR2(30);
11993 l_ae_header_id                NUMBER;
11994 l_event_type_code             VARCHAR2(30);
11995 l_line_definition_code        VARCHAR2(30);
11996 l_line_definition_owner_code  VARCHAR2(1);
11997 --
11998 -- adr variables
11999 l_segment                     VARCHAR2(30);
12000 l_ccid                        NUMBER;
12001 l_adr_transaction_coa_id      NUMBER;
12002 l_adr_accounting_coa_id       NUMBER;
12003 l_adr_flexfield_segment_code  VARCHAR2(30);
12004 l_adr_flex_value_set_id       NUMBER;
12005 l_adr_value_type_code         VARCHAR2(30);
12006 l_adr_value_combination_id    NUMBER;
12007 l_adr_value_segment_code      VARCHAR2(30);
12008 
12009 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12010 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12011 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12012 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12013 
12014 -- 4262811 Variables ------------------------------------------------------------------------------------------
12015 l_entered_amt_idx             NUMBER;
12016 l_accted_amt_idx              NUMBER;
12017 l_acc_rev_flag                VARCHAR2(1);
12018 l_accrual_line_num            NUMBER;
12019 l_tmp_amt                     NUMBER;
12020 l_acc_rev_natural_side_code   VARCHAR2(1);
12021 
12022 l_num_entries                 NUMBER;
12023 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12024 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12025 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12026 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12027 l_recog_line_1                NUMBER;
12028 l_recog_line_2                NUMBER;
12029 
12030 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12031 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12032 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12033 
12034 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12035 
12036 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12037 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12038 
12039 ---------------------------------------------------------------------------------------------------------------
12040 
12041 
12042 --
12043 -- bulk performance
12044 --
12045 l_balance_type_code           VARCHAR2(1);
12046 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12047 l_log_module                  VARCHAR2(240);
12048 
12049 --
12050 -- Upgrade strategy
12051 --
12052 l_actual_upg_option           VARCHAR2(1);
12053 l_enc_upg_option           VARCHAR2(1);
12054 
12055 --
12056 BEGIN
12057 --
12058 IF g_log_enabled THEN
12059       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_50';
12060 END IF;
12061 --
12062 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12063 
12064       trace
12065          (p_msg      => 'BEGIN of AcctLineType_50'
12066          ,p_level    => C_LEVEL_PROCEDURE
12067          ,p_module   => l_log_module);
12068 
12069 END IF;
12070 --
12071 l_component_type             := 'AMB_JLT';
12072 l_component_code             := 'BR_UNPAID';
12073 l_component_type_code        := 'S';
12074 l_component_appl_id          :=  222;
12075 l_amb_context_code           := 'DEFAULT';
12076 l_entity_code                := 'BILLS_RECEIVABLE';
12077 l_event_class_code           := 'BILL';
12078 l_event_type_code            := 'BILL_ALL';
12079 l_line_definition_owner_code := 'S';
12080 l_line_definition_code       := 'AR_BILL_RECEIVABLES_JLD';
12081 --
12082 l_balance_type_code          := 'A';
12083 l_segment                     := NULL;
12084 l_ccid                        := NULL;
12085 l_adr_transaction_coa_id      := NULL;
12086 l_adr_accounting_coa_id       := NULL;
12087 l_adr_flexfield_segment_code  := NULL;
12088 l_adr_flex_value_set_id       := NULL;
12089 l_adr_value_type_code         := NULL;
12090 l_adr_value_combination_id    := NULL;
12091 l_adr_value_segment_code      := NULL;
12092 
12093 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12094 l_bflow_class_code           := '';    -- 4219869 Business Flow
12098 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12095 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12096 l_budgetary_control_flag     := 'N';
12097 
12099 l_bflow_applied_to_amt       := NULL; -- 5132302
12100 l_entered_amt_idx            := NULL;          -- 4262811
12101 l_accted_amt_idx             := NULL;          -- 4262811
12102 l_acc_rev_flag               := NULL;          -- 4262811
12103 l_accrual_line_num           := NULL;          -- 4262811
12104 l_tmp_amt                    := NULL;          -- 4262811
12105 --
12106  
12107 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12108     l_balance_type_code <> 'B' THEN
12109 IF NVL(p_source_39,'
12110 ') =  'UNPAIDREC'
12111  THEN 
12112 
12113    --
12114    XLA_AE_LINES_PKG.SetNewLine;
12115 
12116    p_balance_type_code          := l_balance_type_code;
12117    -- set the flag so later we will know whether the gain loss line needs to be created
12118    
12119    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12120      p_actual_flag :='A';
12121    END IF;
12122 
12123    --
12124    -- bulk performance
12125    --
12126    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12127                                       p_header_num   => 0); -- 4262811
12128    --
12129    -- set accounting line options
12130    --
12131    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12132            p_natural_side_code          => 'C'
12133          , p_gain_or_loss_flag          => 'N'
12134          , p_gl_transfer_mode_code      => 'S'
12135          , p_acct_entry_type_code       => 'A'
12136          , p_switch_side_flag           => 'Y'
12137          , p_merge_duplicate_code       => 'A'
12138          );
12139    --
12140    l_acc_rev_natural_side_code := 'D';  -- 4262811
12141    -- 
12142    --
12143    -- set accounting line type info
12144    --
12145    xla_ae_lines_pkg.SetAcctLineType
12146       (p_component_type             => l_component_type
12147       ,p_event_type_code            => l_event_type_code
12148       ,p_line_definition_owner_code => l_line_definition_owner_code
12149       ,p_line_definition_code       => l_line_definition_code
12150       ,p_accounting_line_code       => l_component_code
12151       ,p_accounting_line_type_code  => l_component_type_code
12152       ,p_accounting_line_appl_id    => l_component_appl_id
12153       ,p_amb_context_code           => l_amb_context_code
12154       ,p_entity_code                => l_entity_code
12155       ,p_event_class_code           => l_event_class_code);
12156    --
12157    -- set accounting class
12158    --
12159    xla_ae_lines_pkg.SetAcctClass(
12160            p_accounting_class_code  => 'UNPAID_BR'
12161          , p_ae_header_id           => l_ae_header_id
12162          );
12163 
12164    --
12165    -- set rounding class
12166    --
12167    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12168                       'UNPAID_BR';
12169 
12170    --
12171    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12172    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12173    --
12174    -- bulk performance
12175    --
12176    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12177 
12178    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12179       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12180 
12181    -- 4955764
12182    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12183       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12184 
12188    -- set accounting attributes for the line type
12185    -- 4458381 Public Sector Enh
12186    
12187    --
12189    --
12190    l_entered_amt_idx := 3;
12191    l_accted_amt_idx  := 8;
12192    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12193    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12194    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
12195    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12196    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
12197    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12198    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
12199    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12200    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
12201    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12202    l_rec_acct_attrs.array_date_value(5)  := p_source_45;
12203    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12204    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
12205    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12206    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
12207    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
12208    l_rec_acct_attrs.array_num_value(8)  := p_source_52;
12209    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
12210    l_rec_acct_attrs.array_num_value(9)  := p_source_53;
12211    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
12212    l_rec_acct_attrs.array_num_value(10)  := p_source_54;
12213    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
12214    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
12215 
12216    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12217    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12218 
12219    ---------------------------------------------------------------------------------------------------------------
12220    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12221    ---------------------------------------------------------------------------------------------------------------
12222    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12223 
12224    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12225    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12226 
12227    IF xla_accounting_cache_pkg.GetValueChar
12228          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12229          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12230    AND l_bflow_method_code = 'PRIOR_ENTRY'
12231 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12232    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12233          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12234        )
12235    THEN
12236          xla_ae_lines_pkg.BflowUpgEntry
12237            (p_business_method_code    => l_bflow_method_code
12238            ,p_business_class_code     => l_bflow_class_code
12239            ,p_balance_type            => l_balance_type_code);
12240    ELSE
12241       NULL;
12242 -- No business flow processing for business flow method of NONE.
12243    END IF;
12244 
12245    --
12246    -- call analytical criteria
12247    --
12248    
12249    --
12250    -- call description
12251    --
12252    -- No description or it is inherited.
12253    --
12254    -- call ADRs
12255    -- Bug 4922099
12256    --
12257    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12258         (NVL(l_actual_upg_option, 'N') = 'O') OR
12259         (NVL(l_enc_upg_option, 'N') = 'O')
12260       )
12261    THEN
12262    NULL;
12263    --
12264    --
12265    
12266   l_ccid := AcctDerRule_29(
12267            p_application_id           => p_application_id
12268          , p_ae_header_id             => l_ae_header_id 
12269 , p_source_32 => p_source_32
12270          , x_transaction_coa_id       => l_adr_transaction_coa_id
12271          , x_accounting_coa_id        => l_adr_accounting_coa_id
12272          , x_value_type_code          => l_adr_value_type_code
12273          , p_side                     => 'NA'
12274    );
12275 
12276    xla_ae_lines_pkg.set_ccid(
12277     p_code_combination_id          => l_ccid
12278   , p_value_type_code              => l_adr_value_type_code
12282   , p_adr_type_code                => 'S'
12279   , p_transaction_coa_id           => l_adr_transaction_coa_id
12280   , p_accounting_coa_id            => l_adr_accounting_coa_id
12281   , p_adr_code                     => 'DIST_CCID'
12283   , p_component_type               => l_component_type
12284   , p_component_code               => l_component_code
12285   , p_component_type_code          => l_component_type_code
12286   , p_component_appl_id            => l_component_appl_id
12287   , p_amb_context_code             => l_amb_context_code
12288   , p_side                         => 'NA'
12289   );
12290 
12291 
12292    --
12293    --
12294    END IF;
12295    --
12296    -- Bug 4922099
12297    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12298           (NVL(l_enc_upg_option, 'N') = 'O')
12299         ) AND
12300         (l_bflow_method_code = 'PRIOR_ENTRY')
12301       )
12302    THEN
12303       IF
12304       --
12305       1 = 2
12306       --
12307       THEN
12308       xla_accounting_err_pkg.build_message
12309                                     (p_appli_s_name            => 'XLA'
12310                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12311                                     ,p_token_1                 => 'LINE_NUMBER'
12312                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12313                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12314                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12315                                                                              l_component_type
12316                                                                             ,l_component_code
12317                                                                             ,l_component_type_code
12318                                                                             ,l_component_appl_id
12319                                                                             ,l_amb_context_code
12320                                                                             ,l_entity_code
12321                                                                             ,l_event_class_code
12322                                                                            )
12323                                     ,p_token_3                 => 'OWNER'
12324                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12325                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12326                                                                           ,p_lookup_code    => l_component_type_code
12327                                                                          )
12328                                     ,p_token_4                 => 'PRODUCT_NAME'
12329                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12330                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12331                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12332                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12333                                     ,p_ae_header_id            =>  NULL
12334                                        );
12335 
12336         IF (C_LEVEL_ERROR>= g_log_level) THEN
12337                  trace
12338                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12339                       ,p_level    => C_LEVEL_ERROR
12340                       ,p_module   => l_log_module);
12341         END IF;
12342       END IF;
12343    END IF;
12344    --
12345    --
12346    ------------------------------------------------------------------------------------------------
12347    -- 4219869 Business Flow
12348    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12349    -- Prior Entry.  Currently, the following code is always generated.
12350    ------------------------------------------------------------------------------------------------
12351    XLA_AE_LINES_PKG.ValidateCurrentLine;
12352 
12353    ------------------------------------------------------------------------------------
12354    -- 4219869 Business Flow
12355    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12356    ------------------------------------------------------------------------------------
12357    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12358 
12359    ----------------------------------------------------------------------------------
12360    -- 4219869 Business Flow
12361    -- Update journal entry status -- Need to generate this within IF <condition>
12362    ----------------------------------------------------------------------------------
12363    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12367 
12364          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12365          ,p_balance_type_code => l_balance_type_code
12366          );
12368    -------------------------------------------------------------------------------------------
12369    -- 4262811 - Generate the Accrual Reversal lines
12370    -------------------------------------------------------------------------------------------
12371    BEGIN
12372       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12373                               (g_array_event(p_event_id).array_value_num('header_index'));
12374       IF l_acc_rev_flag IS NULL THEN
12375          l_acc_rev_flag := 'N';
12376       END IF;
12377    EXCEPTION
12378       WHEN OTHERS THEN
12379          l_acc_rev_flag := 'N';
12380    END;
12381    --
12382    IF (l_acc_rev_flag = 'Y') THEN
12383 
12384        -- 4645092  ------------------------------------------------------------------------------
12385        -- To allow MPA report to determine if it should generate report process
12386        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12387        ------------------------------------------------------------------------------------------
12388 
12389        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12390        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12391    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
12392    -- call ADRs
12393    -- Bug 4922099
12394    --
12395    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12396         (NVL(l_actual_upg_option, 'N') = 'O') OR
12397         (NVL(l_enc_upg_option, 'N') = 'O')
12398       )
12399    THEN
12400    NULL;
12401    --
12402    --
12403    
12404   l_ccid := AcctDerRule_29(
12405            p_application_id           => p_application_id
12406          , p_ae_header_id             => l_ae_header_id 
12407 , p_source_32 => p_source_32
12408          , x_transaction_coa_id       => l_adr_transaction_coa_id
12409          , x_accounting_coa_id        => l_adr_accounting_coa_id
12410          , x_value_type_code          => l_adr_value_type_code
12411          , p_side                     => 'NA'
12412    );
12413 
12414    xla_ae_lines_pkg.set_ccid(
12415     p_code_combination_id          => l_ccid
12416   , p_value_type_code              => l_adr_value_type_code
12417   , p_transaction_coa_id           => l_adr_transaction_coa_id
12418   , p_accounting_coa_id            => l_adr_accounting_coa_id
12419   , p_adr_code                     => 'DIST_CCID'
12420   , p_adr_type_code                => 'S'
12421   , p_component_type               => l_component_type
12422   , p_component_code               => l_component_code
12423   , p_component_type_code          => l_component_type_code
12424   , p_component_appl_id            => l_component_appl_id
12425   , p_amb_context_code             => l_amb_context_code
12426   , p_side                         => 'NA'
12427   );
12428 
12429 
12430    --
12431    --
12432    END IF;
12433 
12434        --
12435        -- Update the line information that should be overwritten
12436        --
12437        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
12438                                          p_header_num   => 1);
12439        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
12440 
12441        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
12442 
12443        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
12444           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
12445        END IF;
12446 
12447       --
12448       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
12449       --
12450       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
12451           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
12452       ELSE
12453           ---------------------------------------------------------------------------------------------------
12454           -- 4262811a Switch Sign
12455           ---------------------------------------------------------------------------------------------------
12456           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
12457           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12458                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12459           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
12460                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12461           -- 5132302
12462           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
12463                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
12464 
12465       END IF;
12466 
12467       -- 4955764
12468       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12469       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
12470 
12471 
12472       XLA_AE_LINES_PKG.ValidateCurrentLine;
12476                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
12473       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12474 
12475       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12477                ,p_balance_type_code => l_balance_type_code);
12478 
12479    END IF;
12480 
12481    -----------------------------------------------------------------------------------------
12482    -- 4262811 Multiperiod Accounting
12483    -----------------------------------------------------------------------------------------
12484      -- No MPA option is assigned.
12485 
12486 
12487 END IF;
12488 END IF;
12489 --
12490 
12491 --
12492 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12493    trace
12494       (p_msg      => 'END of AcctLineType_50'
12495       ,p_level    => C_LEVEL_PROCEDURE
12496       ,p_module   => l_log_module);
12497 END IF;
12498 --
12499 EXCEPTION
12500   WHEN xla_exceptions_pkg.application_exception THEN
12501       RAISE;
12502   WHEN OTHERS THEN
12503        xla_exceptions_pkg.raise_message
12504            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_50');
12505 END AcctLineType_50;
12506 --
12507 
12508 ---------------------------------------
12509 --
12510 -- PRIVATE FUNCTION
12511 --         AcctLineType_51
12512 --
12513 ---------------------------------------
12514 PROCEDURE AcctLineType_51 (
12515   p_application_id        IN NUMBER
12516  ,p_event_id              IN NUMBER
12517  ,p_calculate_acctd_flag  IN VARCHAR2
12518  ,p_calculate_g_l_flag    IN VARCHAR2
12519  ,p_actual_flag           IN OUT VARCHAR2
12520  ,p_balance_type_code     OUT VARCHAR2
12521  ,p_gain_or_loss_ref      OUT VARCHAR2
12522  
12523 --Transaction Distribution GL Account
12524  , p_source_38            IN NUMBER
12525 --Bill To Customer Account Identifier
12526  , p_source_49            IN NUMBER
12527 --Bill To Customer Site Use Identifier
12528  , p_source_50            IN NUMBER
12529 --SLA Party Type
12530  , p_source_51            IN VARCHAR2
12531 --Transaction Distribution Account Class
12532  , p_source_55            IN VARCHAR2
12533 --Transaction Distribution Identifier
12534  , p_source_56            IN NUMBER
12535 --Transaction Distribution Type
12536  , p_source_57            IN VARCHAR2
12537 --Transaction Distribution Entered Amount
12538  , p_source_58            IN NUMBER
12539 --Transaction Currency Code
12540  , p_source_59            IN VARCHAR2
12541 --Transaction Exchange Date
12542  , p_source_60            IN DATE
12543 --Transaction Exchange Rate
12544  , p_source_61            IN NUMBER
12545 --Transaction Exchange Rate Type
12546  , p_source_62            IN VARCHAR2
12547 --Transaction Accounting Amount
12548  , p_source_63            IN NUMBER
12549 )
12550 IS
12551 
12552 l_component_type              VARCHAR2(80);
12553 l_component_code              VARCHAR2(30);
12554 l_component_type_code         VARCHAR2(1);
12555 l_component_appl_id           INTEGER;
12556 l_amb_context_code            VARCHAR2(30);
12557 l_entity_code                 VARCHAR2(30);
12558 l_event_class_code            VARCHAR2(30);
12559 l_ae_header_id                NUMBER;
12560 l_event_type_code             VARCHAR2(30);
12561 l_line_definition_code        VARCHAR2(30);
12562 l_line_definition_owner_code  VARCHAR2(1);
12563 --
12564 -- adr variables
12565 l_segment                     VARCHAR2(30);
12566 l_ccid                        NUMBER;
12567 l_adr_transaction_coa_id      NUMBER;
12568 l_adr_accounting_coa_id       NUMBER;
12569 l_adr_flexfield_segment_code  VARCHAR2(30);
12570 l_adr_flex_value_set_id       NUMBER;
12571 l_adr_value_type_code         VARCHAR2(30);
12572 l_adr_value_combination_id    NUMBER;
12573 l_adr_value_segment_code      VARCHAR2(30);
12574 
12575 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
12576 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
12577 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
12578 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
12579 
12580 -- 4262811 Variables ------------------------------------------------------------------------------------------
12581 l_entered_amt_idx             NUMBER;
12582 l_accted_amt_idx              NUMBER;
12583 l_acc_rev_flag                VARCHAR2(1);
12584 l_accrual_line_num            NUMBER;
12585 l_tmp_amt                     NUMBER;
12586 l_acc_rev_natural_side_code   VARCHAR2(1);
12587 
12588 l_num_entries                 NUMBER;
12589 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
12590 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
12591 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
12592 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
12593 l_recog_line_1                NUMBER;
12594 l_recog_line_2                NUMBER;
12595 
12596 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
12597 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
12598 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
12599 
12600 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
12601 
12602 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
12606 
12603 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
12604 
12605 ---------------------------------------------------------------------------------------------------------------
12607 
12608 --
12609 -- bulk performance
12610 --
12611 l_balance_type_code           VARCHAR2(1);
12612 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
12613 l_log_module                  VARCHAR2(240);
12614 
12615 --
12616 -- Upgrade strategy
12617 --
12618 l_actual_upg_option           VARCHAR2(1);
12619 l_enc_upg_option           VARCHAR2(1);
12620 
12621 --
12622 BEGIN
12623 --
12624 IF g_log_enabled THEN
12625       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_51';
12626 END IF;
12627 --
12628 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
12629 
12630       trace
12631          (p_msg      => 'BEGIN of AcctLineType_51'
12632          ,p_level    => C_LEVEL_PROCEDURE
12633          ,p_module   => l_log_module);
12634 
12635 END IF;
12636 --
12637 l_component_type             := 'AMB_JLT';
12638 l_component_code             := 'CB_DEFAULT_REC';
12639 l_component_type_code        := 'S';
12640 l_component_appl_id          :=  222;
12641 l_amb_context_code           := 'DEFAULT';
12642 l_entity_code                := 'TRANSACTIONS';
12643 l_event_class_code           := 'CHARGEBACK';
12644 l_event_type_code            := 'CHARGEBACK_ALL';
12645 l_line_definition_owner_code := 'S';
12646 l_line_definition_code       := 'AR_CB_DEFAULT_ACCRUAL';
12647 --
12648 l_balance_type_code          := 'A';
12649 l_segment                     := NULL;
12650 l_ccid                        := NULL;
12651 l_adr_transaction_coa_id      := NULL;
12652 l_adr_accounting_coa_id       := NULL;
12653 l_adr_flexfield_segment_code  := NULL;
12654 l_adr_flex_value_set_id       := NULL;
12655 l_adr_value_type_code         := NULL;
12656 l_adr_value_combination_id    := NULL;
12657 l_adr_value_segment_code      := NULL;
12658 
12659 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
12660 l_bflow_class_code           := '';    -- 4219869 Business Flow
12661 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
12662 l_budgetary_control_flag     := 'N';
12663 
12664 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
12665 l_bflow_applied_to_amt       := NULL; -- 5132302
12666 l_entered_amt_idx            := NULL;          -- 4262811
12667 l_accted_amt_idx             := NULL;          -- 4262811
12668 l_acc_rev_flag               := NULL;          -- 4262811
12669 l_accrual_line_num           := NULL;          -- 4262811
12670 l_tmp_amt                    := NULL;          -- 4262811
12671 --
12672  
12673 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
12674     l_balance_type_code <> 'B' THEN
12675 IF NVL(p_source_55,'
12676 ') =  'REC'
12677  THEN 
12678 
12679    --
12680    XLA_AE_LINES_PKG.SetNewLine;
12681 
12682    p_balance_type_code          := l_balance_type_code;
12683    -- set the flag so later we will know whether the gain loss line needs to be created
12684    
12685    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
12686      p_actual_flag :='A';
12687    END IF;
12688 
12689    --
12690    -- bulk performance
12691    --
12692    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
12693                                       p_header_num   => 0); -- 4262811
12694    --
12695    -- set accounting line options
12696    --
12697    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
12698            p_natural_side_code          => 'D'
12699          , p_gain_or_loss_flag          => 'N'
12700          , p_gl_transfer_mode_code      => 'S'
12701          , p_acct_entry_type_code       => 'A'
12702          , p_switch_side_flag           => 'Y'
12703          , p_merge_duplicate_code       => 'A'
12704          );
12705    --
12706    l_acc_rev_natural_side_code := 'C';  -- 4262811
12707    -- 
12708    --
12709    -- set accounting line type info
12710    --
12711    xla_ae_lines_pkg.SetAcctLineType
12712       (p_component_type             => l_component_type
12713       ,p_event_type_code            => l_event_type_code
12714       ,p_line_definition_owner_code => l_line_definition_owner_code
12715       ,p_line_definition_code       => l_line_definition_code
12716       ,p_accounting_line_code       => l_component_code
12717       ,p_accounting_line_type_code  => l_component_type_code
12718       ,p_accounting_line_appl_id    => l_component_appl_id
12719       ,p_amb_context_code           => l_amb_context_code
12720       ,p_entity_code                => l_entity_code
12721       ,p_event_class_code           => l_event_class_code);
12722    --
12723    -- set accounting class
12724    --
12725    xla_ae_lines_pkg.SetAcctClass(
12726            p_accounting_class_code  => 'RECEIVABLE'
12727          , p_ae_header_id           => l_ae_header_id
12728          );
12729 
12730    --
12731    -- set rounding class
12732    --
12733    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
12734                       'RECEIVABLE';
12735 
12736    --
12737    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
12738    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
12739    --
12740    -- bulk performance
12744    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
12741    --
12742    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
12743 
12745       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
12746 
12747    -- 4955764
12748    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
12749       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
12750 
12751    -- 4458381 Public Sector Enh
12752    
12753    --
12754    -- set accounting attributes for the line type
12755    --
12756    l_entered_amt_idx := 3;
12757    l_accted_amt_idx  := 8;
12758    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
12759    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
12760    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
12761    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
12762    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
12763    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
12764    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
12765    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
12766    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
12767    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
12768    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
12769    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
12770    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
12771    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
12772    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
12773    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
12774    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
12775    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
12776    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
12777    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
12778    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
12779    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
12780    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
12781 
12782    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
12783    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
12784 
12785    ---------------------------------------------------------------------------------------------------------------
12786    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
12787    ---------------------------------------------------------------------------------------------------------------
12788    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
12789 
12790    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12791    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
12792 
12793    IF xla_accounting_cache_pkg.GetValueChar
12794          (p_source_code         => 'LEDGER_CATEGORY_CODE'
12795          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
12796    AND l_bflow_method_code = 'PRIOR_ENTRY'
12797 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
12798    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
12799          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
12800        )
12801    THEN
12802          xla_ae_lines_pkg.BflowUpgEntry
12803            (p_business_method_code    => l_bflow_method_code
12804            ,p_business_class_code     => l_bflow_class_code
12805            ,p_balance_type            => l_balance_type_code);
12806    ELSE
12807       NULL;
12808 -- No business flow processing for business flow method of NONE.
12809    END IF;
12810 
12811    --
12812    -- call analytical criteria
12813    --
12814    
12815    --
12816    -- call description
12817    --
12821    -- Bug 4922099
12818    -- No description or it is inherited.
12819    --
12820    -- call ADRs
12822    --
12823    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12824         (NVL(l_actual_upg_option, 'N') = 'O') OR
12825         (NVL(l_enc_upg_option, 'N') = 'O')
12826       )
12827    THEN
12828    NULL;
12829    --
12830    --
12831    
12832   l_ccid := AcctDerRule_36(
12833            p_application_id           => p_application_id
12834          , p_ae_header_id             => l_ae_header_id 
12835 , p_source_38 => p_source_38
12836          , x_transaction_coa_id       => l_adr_transaction_coa_id
12837          , x_accounting_coa_id        => l_adr_accounting_coa_id
12838          , x_value_type_code          => l_adr_value_type_code
12839          , p_side                     => 'NA'
12840    );
12841 
12842    xla_ae_lines_pkg.set_ccid(
12843     p_code_combination_id          => l_ccid
12844   , p_value_type_code              => l_adr_value_type_code
12845   , p_transaction_coa_id           => l_adr_transaction_coa_id
12846   , p_accounting_coa_id            => l_adr_accounting_coa_id
12847   , p_adr_code                     => 'TRX_DIST_CCID'
12848   , p_adr_type_code                => 'S'
12849   , p_component_type               => l_component_type
12850   , p_component_code               => l_component_code
12851   , p_component_type_code          => l_component_type_code
12852   , p_component_appl_id            => l_component_appl_id
12853   , p_amb_context_code             => l_amb_context_code
12854   , p_side                         => 'NA'
12855   );
12856 
12857 
12858    --
12859    --
12860    END IF;
12861    --
12862    -- Bug 4922099
12863    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
12864           (NVL(l_enc_upg_option, 'N') = 'O')
12865         ) AND
12866         (l_bflow_method_code = 'PRIOR_ENTRY')
12867       )
12868    THEN
12869       IF
12870       --
12871       1 = 2
12872       --
12873       THEN
12874       xla_accounting_err_pkg.build_message
12875                                     (p_appli_s_name            => 'XLA'
12876                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12877                                     ,p_token_1                 => 'LINE_NUMBER'
12878                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
12879                                     ,p_token_2                 => 'LINE_TYPE_NAME'
12880                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
12881                                                                              l_component_type
12882                                                                             ,l_component_code
12883                                                                             ,l_component_type_code
12884                                                                             ,l_component_appl_id
12885                                                                             ,l_amb_context_code
12886                                                                             ,l_entity_code
12887                                                                             ,l_event_class_code
12888                                                                            )
12889                                     ,p_token_3                 => 'OWNER'
12890                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
12891                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
12892                                                                           ,p_lookup_code    => l_component_type_code
12893                                                                          )
12894                                     ,p_token_4                 => 'PRODUCT_NAME'
12895                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
12896                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
12897                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
12898                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
12899                                     ,p_ae_header_id            =>  NULL
12900                                        );
12901 
12902         IF (C_LEVEL_ERROR>= g_log_level) THEN
12903                  trace
12904                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
12905                       ,p_level    => C_LEVEL_ERROR
12906                       ,p_module   => l_log_module);
12907         END IF;
12908       END IF;
12909    END IF;
12910    --
12911    --
12912    ------------------------------------------------------------------------------------------------
12913    -- 4219869 Business Flow
12914    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
12915    -- Prior Entry.  Currently, the following code is always generated.
12916    ------------------------------------------------------------------------------------------------
12917    XLA_AE_LINES_PKG.ValidateCurrentLine;
12918 
12919    ------------------------------------------------------------------------------------
12920    -- 4219869 Business Flow
12921    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
12925    ----------------------------------------------------------------------------------
12922    ------------------------------------------------------------------------------------
12923    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
12924 
12926    -- 4219869 Business Flow
12927    -- Update journal entry status -- Need to generate this within IF <condition>
12928    ----------------------------------------------------------------------------------
12929    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
12930          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
12931          ,p_balance_type_code => l_balance_type_code
12932          );
12933 
12934    -------------------------------------------------------------------------------------------
12935    -- 4262811 - Generate the Accrual Reversal lines
12936    -------------------------------------------------------------------------------------------
12937    BEGIN
12938       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
12939                               (g_array_event(p_event_id).array_value_num('header_index'));
12940       IF l_acc_rev_flag IS NULL THEN
12941          l_acc_rev_flag := 'N';
12942       END IF;
12943    EXCEPTION
12944       WHEN OTHERS THEN
12945          l_acc_rev_flag := 'N';
12946    END;
12947    --
12948    IF (l_acc_rev_flag = 'Y') THEN
12949 
12950        -- 4645092  ------------------------------------------------------------------------------
12951        -- To allow MPA report to determine if it should generate report process
12952        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
12953        ------------------------------------------------------------------------------------------
12954 
12955        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
12956        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
12957    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
12958    -- call ADRs
12959    -- Bug 4922099
12960    --
12961    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
12962         (NVL(l_actual_upg_option, 'N') = 'O') OR
12963         (NVL(l_enc_upg_option, 'N') = 'O')
12964       )
12965    THEN
12966    NULL;
12967    --
12968    --
12969    
12970   l_ccid := AcctDerRule_36(
12971            p_application_id           => p_application_id
12972          , p_ae_header_id             => l_ae_header_id 
12973 , p_source_38 => p_source_38
12974          , x_transaction_coa_id       => l_adr_transaction_coa_id
12975          , x_accounting_coa_id        => l_adr_accounting_coa_id
12976          , x_value_type_code          => l_adr_value_type_code
12977          , p_side                     => 'NA'
12978    );
12979 
12980    xla_ae_lines_pkg.set_ccid(
12981     p_code_combination_id          => l_ccid
12982   , p_value_type_code              => l_adr_value_type_code
12983   , p_transaction_coa_id           => l_adr_transaction_coa_id
12984   , p_accounting_coa_id            => l_adr_accounting_coa_id
12985   , p_adr_code                     => 'TRX_DIST_CCID'
12986   , p_adr_type_code                => 'S'
12987   , p_component_type               => l_component_type
12988   , p_component_code               => l_component_code
12989   , p_component_type_code          => l_component_type_code
12990   , p_component_appl_id            => l_component_appl_id
12991   , p_amb_context_code             => l_amb_context_code
12992   , p_side                         => 'NA'
12993   );
12994 
12995 
12996    --
12997    --
12998    END IF;
12999 
13000        --
13001        -- Update the line information that should be overwritten
13002        --
13003        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13004                                          p_header_num   => 1);
13005        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13006 
13007        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13008 
13009        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13010           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13011        END IF;
13012 
13013       --
13014       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13015       --
13016       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13017           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13018       ELSE
13019           ---------------------------------------------------------------------------------------------------
13020           -- 4262811a Switch Sign
13021           ---------------------------------------------------------------------------------------------------
13022           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13023           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13024                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13025           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13026                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13027           -- 5132302
13028           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13029                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13033       -- 4955764
13030 
13031       END IF;
13032 
13034       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13035       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13036 
13037 
13038       XLA_AE_LINES_PKG.ValidateCurrentLine;
13039       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13040 
13041       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13042                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13043                ,p_balance_type_code => l_balance_type_code);
13044 
13045    END IF;
13046 
13047    -----------------------------------------------------------------------------------------
13048    -- 4262811 Multiperiod Accounting
13049    -----------------------------------------------------------------------------------------
13050      -- No MPA option is assigned.
13051 
13052 
13053 END IF;
13054 END IF;
13055 --
13056 
13057 --
13058 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13059    trace
13060       (p_msg      => 'END of AcctLineType_51'
13061       ,p_level    => C_LEVEL_PROCEDURE
13062       ,p_module   => l_log_module);
13063 END IF;
13064 --
13065 EXCEPTION
13066   WHEN xla_exceptions_pkg.application_exception THEN
13067       RAISE;
13068   WHEN OTHERS THEN
13069        xla_exceptions_pkg.raise_message
13070            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_51');
13071 END AcctLineType_51;
13072 --
13073 
13074 ---------------------------------------
13075 --
13076 -- PRIVATE FUNCTION
13077 --         AcctLineType_52
13078 --
13079 ---------------------------------------
13080 PROCEDURE AcctLineType_52 (
13081   p_application_id        IN NUMBER
13082  ,p_event_id              IN NUMBER
13083  ,p_calculate_acctd_flag  IN VARCHAR2
13084  ,p_calculate_g_l_flag    IN VARCHAR2
13085  ,p_actual_flag           IN OUT VARCHAR2
13086  ,p_balance_type_code     OUT VARCHAR2
13087  ,p_gain_or_loss_ref      OUT VARCHAR2
13088  
13089 --Transaction Distribution GL Account
13090  , p_source_38            IN NUMBER
13091 --Bill To Customer Account Identifier
13092  , p_source_49            IN NUMBER
13093 --Bill To Customer Site Use Identifier
13094  , p_source_50            IN NUMBER
13095 --SLA Party Type
13096  , p_source_51            IN VARCHAR2
13097 --Transaction Distribution Account Class
13098  , p_source_55            IN VARCHAR2
13099 --Transaction Distribution Identifier
13100  , p_source_56            IN NUMBER
13101 --Transaction Distribution Type
13102  , p_source_57            IN VARCHAR2
13103 --Transaction Distribution Entered Amount
13104  , p_source_58            IN NUMBER
13105 --Transaction Currency Code
13106  , p_source_59            IN VARCHAR2
13107 --Transaction Exchange Date
13108  , p_source_60            IN DATE
13109 --Transaction Exchange Rate
13110  , p_source_61            IN NUMBER
13111 --Transaction Exchange Rate Type
13112  , p_source_62            IN VARCHAR2
13113 --Transaction Accounting Amount
13114  , p_source_63            IN NUMBER
13115 )
13116 IS
13117 
13118 l_component_type              VARCHAR2(80);
13119 l_component_code              VARCHAR2(30);
13120 l_component_type_code         VARCHAR2(1);
13121 l_component_appl_id           INTEGER;
13122 l_amb_context_code            VARCHAR2(30);
13123 l_entity_code                 VARCHAR2(30);
13124 l_event_class_code            VARCHAR2(30);
13125 l_ae_header_id                NUMBER;
13126 l_event_type_code             VARCHAR2(30);
13127 l_line_definition_code        VARCHAR2(30);
13128 l_line_definition_owner_code  VARCHAR2(1);
13129 --
13130 -- adr variables
13131 l_segment                     VARCHAR2(30);
13132 l_ccid                        NUMBER;
13133 l_adr_transaction_coa_id      NUMBER;
13134 l_adr_accounting_coa_id       NUMBER;
13135 l_adr_flexfield_segment_code  VARCHAR2(30);
13136 l_adr_flex_value_set_id       NUMBER;
13137 l_adr_value_type_code         VARCHAR2(30);
13138 l_adr_value_combination_id    NUMBER;
13139 l_adr_value_segment_code      VARCHAR2(30);
13140 
13141 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13142 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13143 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13144 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13145 
13146 -- 4262811 Variables ------------------------------------------------------------------------------------------
13147 l_entered_amt_idx             NUMBER;
13148 l_accted_amt_idx              NUMBER;
13149 l_acc_rev_flag                VARCHAR2(1);
13150 l_accrual_line_num            NUMBER;
13151 l_tmp_amt                     NUMBER;
13152 l_acc_rev_natural_side_code   VARCHAR2(1);
13153 
13154 l_num_entries                 NUMBER;
13155 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13156 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13157 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13158 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13159 l_recog_line_1                NUMBER;
13160 l_recog_line_2                NUMBER;
13161 
13162 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13166 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13163 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13164 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13165 
13167 
13168 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13169 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13170 
13171 ---------------------------------------------------------------------------------------------------------------
13172 
13173 
13174 --
13175 -- bulk performance
13176 --
13177 l_balance_type_code           VARCHAR2(1);
13178 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13179 l_log_module                  VARCHAR2(240);
13180 
13181 --
13182 -- Upgrade strategy
13183 --
13184 l_actual_upg_option           VARCHAR2(1);
13185 l_enc_upg_option           VARCHAR2(1);
13186 
13187 --
13188 BEGIN
13189 --
13190 IF g_log_enabled THEN
13191       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_52';
13192 END IF;
13193 --
13194 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13195 
13196       trace
13197          (p_msg      => 'BEGIN of AcctLineType_52'
13198          ,p_level    => C_LEVEL_PROCEDURE
13199          ,p_module   => l_log_module);
13200 
13201 END IF;
13202 --
13203 l_component_type             := 'AMB_JLT';
13204 l_component_code             := 'CB_REV';
13205 l_component_type_code        := 'S';
13206 l_component_appl_id          :=  222;
13207 l_amb_context_code           := 'DEFAULT';
13208 l_entity_code                := 'TRANSACTIONS';
13209 l_event_class_code           := 'CHARGEBACK';
13210 l_event_type_code            := 'CHARGEBACK_ALL';
13211 l_line_definition_owner_code := 'S';
13212 l_line_definition_code       := 'AR_CB_DEFAULT_ACCRUAL';
13213 --
13214 l_balance_type_code          := 'A';
13215 l_segment                     := NULL;
13216 l_ccid                        := NULL;
13217 l_adr_transaction_coa_id      := NULL;
13218 l_adr_accounting_coa_id       := NULL;
13219 l_adr_flexfield_segment_code  := NULL;
13220 l_adr_flex_value_set_id       := NULL;
13221 l_adr_value_type_code         := NULL;
13222 l_adr_value_combination_id    := NULL;
13223 l_adr_value_segment_code      := NULL;
13224 
13225 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13226 l_bflow_class_code           := '';    -- 4219869 Business Flow
13227 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13228 l_budgetary_control_flag     := 'N';
13229 
13230 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13231 l_bflow_applied_to_amt       := NULL; -- 5132302
13232 l_entered_amt_idx            := NULL;          -- 4262811
13233 l_accted_amt_idx             := NULL;          -- 4262811
13234 l_acc_rev_flag               := NULL;          -- 4262811
13235 l_accrual_line_num           := NULL;          -- 4262811
13236 l_tmp_amt                    := NULL;          -- 4262811
13237 --
13238  
13239 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13240     l_balance_type_code <> 'B' THEN
13241 IF NVL(p_source_55,'
13242 ') =  'REV'
13243  THEN 
13244 
13245    --
13246    XLA_AE_LINES_PKG.SetNewLine;
13247 
13248    p_balance_type_code          := l_balance_type_code;
13249    -- set the flag so later we will know whether the gain loss line needs to be created
13250    
13251    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13252      p_actual_flag :='A';
13253    END IF;
13254 
13255    --
13256    -- bulk performance
13257    --
13258    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13259                                       p_header_num   => 0); -- 4262811
13260    --
13261    -- set accounting line options
13262    --
13263    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13264            p_natural_side_code          => 'C'
13265          , p_gain_or_loss_flag          => 'N'
13266          , p_gl_transfer_mode_code      => 'S'
13267          , p_acct_entry_type_code       => 'A'
13268          , p_switch_side_flag           => 'Y'
13269          , p_merge_duplicate_code       => 'A'
13270          );
13271    --
13272    l_acc_rev_natural_side_code := 'D';  -- 4262811
13273    -- 
13274    --
13275    -- set accounting line type info
13276    --
13277    xla_ae_lines_pkg.SetAcctLineType
13278       (p_component_type             => l_component_type
13279       ,p_event_type_code            => l_event_type_code
13280       ,p_line_definition_owner_code => l_line_definition_owner_code
13281       ,p_line_definition_code       => l_line_definition_code
13282       ,p_accounting_line_code       => l_component_code
13283       ,p_accounting_line_type_code  => l_component_type_code
13284       ,p_accounting_line_appl_id    => l_component_appl_id
13285       ,p_amb_context_code           => l_amb_context_code
13286       ,p_entity_code                => l_entity_code
13287       ,p_event_class_code           => l_event_class_code);
13288    --
13289    -- set accounting class
13290    --
13291    xla_ae_lines_pkg.SetAcctClass(
13292            p_accounting_class_code  => 'REVENUE'
13293          , p_ae_header_id           => l_ae_header_id
13294          );
13298    --
13295 
13296    --
13297    -- set rounding class
13299    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13300                       'RECEIVABLE';
13301 
13302    --
13303    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13304    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13305    --
13306    -- bulk performance
13307    --
13308    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13309 
13310    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13311       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13312 
13313    -- 4955764
13314    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13315       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13316 
13317    -- 4458381 Public Sector Enh
13318    
13319    --
13320    -- set accounting attributes for the line type
13321    --
13322    l_entered_amt_idx := 3;
13323    l_accted_amt_idx  := 8;
13324    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13325    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13326    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
13327    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13328    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
13329    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13330    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
13331    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13332    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
13333    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13334    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
13335    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13336    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
13337    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13338    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
13339    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
13340    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
13341    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
13342    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
13343    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
13344    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
13345    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
13346    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
13347 
13348    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13349    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13350 
13351    ---------------------------------------------------------------------------------------------------------------
13352    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13353    ---------------------------------------------------------------------------------------------------------------
13354    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13355 
13356    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13357    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13358 
13359    IF xla_accounting_cache_pkg.GetValueChar
13360          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13361          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13362    AND l_bflow_method_code = 'PRIOR_ENTRY'
13363 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13364    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13365          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13366        )
13367    THEN
13368          xla_ae_lines_pkg.BflowUpgEntry
13369            (p_business_method_code    => l_bflow_method_code
13370            ,p_business_class_code     => l_bflow_class_code
13371            ,p_balance_type            => l_balance_type_code);
13372    ELSE
13373       NULL;
13374 -- No business flow processing for business flow method of NONE.
13375    END IF;
13376 
13377    --
13378    -- call analytical criteria
13379    --
13380    
13381    --
13382    -- call description
13383    --
13384    -- No description or it is inherited.
13385    --
13386    -- call ADRs
13387    -- Bug 4922099
13388    --
13389    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13390         (NVL(l_actual_upg_option, 'N') = 'O') OR
13391         (NVL(l_enc_upg_option, 'N') = 'O')
13392       )
13393    THEN
13394    NULL;
13395    --
13396    --
13397    
13398   l_ccid := AcctDerRule_36(
13399            p_application_id           => p_application_id
13400          , p_ae_header_id             => l_ae_header_id 
13401 , p_source_38 => p_source_38
13402          , x_transaction_coa_id       => l_adr_transaction_coa_id
13403          , x_accounting_coa_id        => l_adr_accounting_coa_id
13404          , x_value_type_code          => l_adr_value_type_code
13405          , p_side                     => 'NA'
13406    );
13407 
13408    xla_ae_lines_pkg.set_ccid(
13409     p_code_combination_id          => l_ccid
13410   , p_value_type_code              => l_adr_value_type_code
13411   , p_transaction_coa_id           => l_adr_transaction_coa_id
13415   , p_component_type               => l_component_type
13412   , p_accounting_coa_id            => l_adr_accounting_coa_id
13413   , p_adr_code                     => 'TRX_DIST_CCID'
13414   , p_adr_type_code                => 'S'
13416   , p_component_code               => l_component_code
13417   , p_component_type_code          => l_component_type_code
13418   , p_component_appl_id            => l_component_appl_id
13419   , p_amb_context_code             => l_amb_context_code
13420   , p_side                         => 'NA'
13421   );
13422 
13423 
13424    --
13425    --
13426    END IF;
13427    --
13428    -- Bug 4922099
13429    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
13430           (NVL(l_enc_upg_option, 'N') = 'O')
13431         ) AND
13432         (l_bflow_method_code = 'PRIOR_ENTRY')
13433       )
13434    THEN
13435       IF
13436       --
13437       1 = 2
13438       --
13439       THEN
13440       xla_accounting_err_pkg.build_message
13441                                     (p_appli_s_name            => 'XLA'
13442                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13443                                     ,p_token_1                 => 'LINE_NUMBER'
13444                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
13445                                     ,p_token_2                 => 'LINE_TYPE_NAME'
13446                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
13447                                                                              l_component_type
13448                                                                             ,l_component_code
13449                                                                             ,l_component_type_code
13450                                                                             ,l_component_appl_id
13451                                                                             ,l_amb_context_code
13452                                                                             ,l_entity_code
13453                                                                             ,l_event_class_code
13454                                                                            )
13455                                     ,p_token_3                 => 'OWNER'
13456                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
13457                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
13458                                                                           ,p_lookup_code    => l_component_type_code
13459                                                                          )
13460                                     ,p_token_4                 => 'PRODUCT_NAME'
13461                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
13462                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
13463                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
13464                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
13465                                     ,p_ae_header_id            =>  NULL
13466                                        );
13467 
13468         IF (C_LEVEL_ERROR>= g_log_level) THEN
13469                  trace
13470                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
13471                       ,p_level    => C_LEVEL_ERROR
13472                       ,p_module   => l_log_module);
13473         END IF;
13474       END IF;
13475    END IF;
13476    --
13477    --
13478    ------------------------------------------------------------------------------------------------
13479    -- 4219869 Business Flow
13480    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
13481    -- Prior Entry.  Currently, the following code is always generated.
13482    ------------------------------------------------------------------------------------------------
13483    XLA_AE_LINES_PKG.ValidateCurrentLine;
13484 
13485    ------------------------------------------------------------------------------------
13486    -- 4219869 Business Flow
13487    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
13488    ------------------------------------------------------------------------------------
13489    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13490 
13491    ----------------------------------------------------------------------------------
13492    -- 4219869 Business Flow
13493    -- Update journal entry status -- Need to generate this within IF <condition>
13494    ----------------------------------------------------------------------------------
13495    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13496          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
13497          ,p_balance_type_code => l_balance_type_code
13498          );
13499 
13500    -------------------------------------------------------------------------------------------
13501    -- 4262811 - Generate the Accrual Reversal lines
13502    -------------------------------------------------------------------------------------------
13503    BEGIN
13504       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
13505                               (g_array_event(p_event_id).array_value_num('header_index'));
13506       IF l_acc_rev_flag IS NULL THEN
13510       WHEN OTHERS THEN
13507          l_acc_rev_flag := 'N';
13508       END IF;
13509    EXCEPTION
13511          l_acc_rev_flag := 'N';
13512    END;
13513    --
13514    IF (l_acc_rev_flag = 'Y') THEN
13515 
13516        -- 4645092  ------------------------------------------------------------------------------
13517        -- To allow MPA report to determine if it should generate report process
13518        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
13519        ------------------------------------------------------------------------------------------
13520 
13521        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
13522        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
13523    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
13524    -- call ADRs
13525    -- Bug 4922099
13526    --
13527    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13528         (NVL(l_actual_upg_option, 'N') = 'O') OR
13529         (NVL(l_enc_upg_option, 'N') = 'O')
13530       )
13531    THEN
13532    NULL;
13533    --
13534    --
13535    
13536   l_ccid := AcctDerRule_36(
13537            p_application_id           => p_application_id
13538          , p_ae_header_id             => l_ae_header_id 
13539 , p_source_38 => p_source_38
13540          , x_transaction_coa_id       => l_adr_transaction_coa_id
13541          , x_accounting_coa_id        => l_adr_accounting_coa_id
13542          , x_value_type_code          => l_adr_value_type_code
13543          , p_side                     => 'NA'
13544    );
13545 
13546    xla_ae_lines_pkg.set_ccid(
13547     p_code_combination_id          => l_ccid
13548   , p_value_type_code              => l_adr_value_type_code
13549   , p_transaction_coa_id           => l_adr_transaction_coa_id
13550   , p_accounting_coa_id            => l_adr_accounting_coa_id
13551   , p_adr_code                     => 'TRX_DIST_CCID'
13552   , p_adr_type_code                => 'S'
13553   , p_component_type               => l_component_type
13554   , p_component_code               => l_component_code
13555   , p_component_type_code          => l_component_type_code
13556   , p_component_appl_id            => l_component_appl_id
13557   , p_amb_context_code             => l_amb_context_code
13558   , p_side                         => 'NA'
13559   );
13560 
13561 
13562    --
13563    --
13564    END IF;
13565 
13566        --
13567        -- Update the line information that should be overwritten
13568        --
13569        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
13570                                          p_header_num   => 1);
13571        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
13572 
13573        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
13574 
13575        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
13576           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
13577        END IF;
13578 
13579       --
13580       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
13581       --
13582       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
13583           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
13584       ELSE
13585           ---------------------------------------------------------------------------------------------------
13586           -- 4262811a Switch Sign
13587           ---------------------------------------------------------------------------------------------------
13588           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
13589           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13590                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13591           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
13592                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13593           -- 5132302
13594           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
13595                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
13596 
13597       END IF;
13598 
13599       -- 4955764
13600       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13601       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
13602 
13603 
13604       XLA_AE_LINES_PKG.ValidateCurrentLine;
13605       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
13606 
13607       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
13608                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
13609                ,p_balance_type_code => l_balance_type_code);
13610 
13611    END IF;
13612 
13613    -----------------------------------------------------------------------------------------
13614    -- 4262811 Multiperiod Accounting
13615    -----------------------------------------------------------------------------------------
13616      -- No MPA option is assigned.
13617 
13618 
13619 END IF;
13620 END IF;
13621 --
13622 
13623 --
13624 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13625    trace
13629 END IF;
13626       (p_msg      => 'END of AcctLineType_52'
13627       ,p_level    => C_LEVEL_PROCEDURE
13628       ,p_module   => l_log_module);
13630 --
13631 EXCEPTION
13632   WHEN xla_exceptions_pkg.application_exception THEN
13633       RAISE;
13634   WHEN OTHERS THEN
13635        xla_exceptions_pkg.raise_message
13636            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_52');
13637 END AcctLineType_52;
13638 --
13639 
13640 ---------------------------------------
13641 --
13642 -- PRIVATE FUNCTION
13643 --         AcctLineType_53
13644 --
13645 ---------------------------------------
13646 PROCEDURE AcctLineType_53 (
13647   p_application_id        IN NUMBER
13648  ,p_event_id              IN NUMBER
13649  ,p_calculate_acctd_flag  IN VARCHAR2
13650  ,p_calculate_g_l_flag    IN VARCHAR2
13651  ,p_actual_flag           IN OUT VARCHAR2
13652  ,p_balance_type_code     OUT VARCHAR2
13653  ,p_gain_or_loss_ref      OUT VARCHAR2
13654  
13655 --Distribution GL Account
13656  , p_source_32            IN NUMBER
13657 --Distribution Source Type
13658  , p_source_39            IN VARCHAR2
13659 --Entered Amount
13660  , p_source_43            IN NUMBER
13661 --SLA Party Type
13662  , p_source_51            IN VARCHAR2
13663 --Credit Memo Distribution Identifier
13664  , p_source_64            IN NUMBER
13665 --Credit memo distributions type
13666  , p_source_65            IN VARCHAR2
13667 --Credit Memo Currency Code
13668  , p_source_66            IN VARCHAR2
13669 --Credit Memo Exchange Date
13670  , p_source_67            IN DATE
13671 --Credit Memo Exchange Rate
13672  , p_source_68            IN NUMBER
13673 --Credit Memo Exchange Rate Type
13674  , p_source_69            IN VARCHAR2
13675 --Gain Loss Reference
13676  , p_source_70            IN VARCHAR2
13677 --Credit Memo Accounting Amount
13678  , p_source_71            IN NUMBER
13679 --Credit Memo Bill To Customer Account Identifier
13680  , p_source_72            IN NUMBER
13681 --Credit Memo Bill To Customer Site Use Identifier
13682  , p_source_73            IN NUMBER
13683 --Credit Memo Tax Line Identifier
13684  , p_source_74            IN NUMBER
13685 )
13686 IS
13687 
13688 l_component_type              VARCHAR2(80);
13689 l_component_code              VARCHAR2(30);
13690 l_component_type_code         VARCHAR2(1);
13691 l_component_appl_id           INTEGER;
13692 l_amb_context_code            VARCHAR2(30);
13693 l_entity_code                 VARCHAR2(30);
13694 l_event_class_code            VARCHAR2(30);
13695 l_ae_header_id                NUMBER;
13696 l_event_type_code             VARCHAR2(30);
13697 l_line_definition_code        VARCHAR2(30);
13698 l_line_definition_owner_code  VARCHAR2(1);
13699 --
13700 -- adr variables
13701 l_segment                     VARCHAR2(30);
13702 l_ccid                        NUMBER;
13703 l_adr_transaction_coa_id      NUMBER;
13704 l_adr_accounting_coa_id       NUMBER;
13705 l_adr_flexfield_segment_code  VARCHAR2(30);
13706 l_adr_flex_value_set_id       NUMBER;
13707 l_adr_value_type_code         VARCHAR2(30);
13708 l_adr_value_combination_id    NUMBER;
13709 l_adr_value_segment_code      VARCHAR2(30);
13710 
13711 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
13712 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
13713 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
13714 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
13715 
13716 -- 4262811 Variables ------------------------------------------------------------------------------------------
13717 l_entered_amt_idx             NUMBER;
13718 l_accted_amt_idx              NUMBER;
13719 l_acc_rev_flag                VARCHAR2(1);
13720 l_accrual_line_num            NUMBER;
13721 l_tmp_amt                     NUMBER;
13722 l_acc_rev_natural_side_code   VARCHAR2(1);
13723 
13724 l_num_entries                 NUMBER;
13725 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
13726 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
13727 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
13728 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
13729 l_recog_line_1                NUMBER;
13730 l_recog_line_2                NUMBER;
13731 
13732 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
13733 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
13734 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
13735 
13736 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
13737 
13738 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
13739 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
13740 
13741 ---------------------------------------------------------------------------------------------------------------
13742 
13743 
13744 --
13745 -- bulk performance
13746 --
13747 l_balance_type_code           VARCHAR2(1);
13748 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
13749 l_log_module                  VARCHAR2(240);
13750 
13751 --
13752 -- Upgrade strategy
13753 --
13754 l_actual_upg_option           VARCHAR2(1);
13755 l_enc_upg_option           VARCHAR2(1);
13759 --
13756 
13757 --
13758 BEGIN
13760 IF g_log_enabled THEN
13761       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_53';
13762 END IF;
13763 --
13764 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
13765 
13766       trace
13767          (p_msg      => 'BEGIN of AcctLineType_53'
13768          ,p_level    => C_LEVEL_PROCEDURE
13769          ,p_module   => l_log_module);
13770 
13771 END IF;
13772 --
13773 l_component_type             := 'AMB_JLT';
13774 l_component_code             := 'CM_APP_DEFAULT_DEFERRED_TAX';
13775 l_component_type_code        := 'S';
13776 l_component_appl_id          :=  222;
13777 l_amb_context_code           := 'DEFAULT';
13778 l_entity_code                := 'TRANSACTIONS';
13779 l_event_class_code           := 'CREDIT_MEMO';
13780 l_event_type_code            := 'CREDIT_MEMO_ALL';
13781 l_line_definition_owner_code := 'S';
13782 l_line_definition_code       := 'AR_CM_DEFAULT_ACCRUAL';
13783 --
13784 l_balance_type_code          := 'A';
13785 l_segment                     := NULL;
13786 l_ccid                        := NULL;
13787 l_adr_transaction_coa_id      := NULL;
13788 l_adr_accounting_coa_id       := NULL;
13789 l_adr_flexfield_segment_code  := NULL;
13790 l_adr_flex_value_set_id       := NULL;
13791 l_adr_value_type_code         := NULL;
13792 l_adr_value_combination_id    := NULL;
13793 l_adr_value_segment_code      := NULL;
13794 
13795 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
13796 l_bflow_class_code           := '';    -- 4219869 Business Flow
13797 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
13798 l_budgetary_control_flag     := 'N';
13799 
13800 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
13801 l_bflow_applied_to_amt       := NULL; -- 5132302
13802 l_entered_amt_idx            := NULL;          -- 4262811
13803 l_accted_amt_idx             := NULL;          -- 4262811
13804 l_acc_rev_flag               := NULL;          -- 4262811
13805 l_accrual_line_num           := NULL;          -- 4262811
13806 l_tmp_amt                    := NULL;          -- 4262811
13807 --
13808  
13809 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
13810     l_balance_type_code <> 'B' THEN
13811 IF NVL(p_source_39,'
13812 ') =  'DEFERRED_TAX'
13813  THEN 
13814 
13815    --
13816    XLA_AE_LINES_PKG.SetNewLine;
13817 
13818    p_balance_type_code          := l_balance_type_code;
13819    -- set the flag so later we will know whether the gain loss line needs to be created
13820    
13821    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
13822      p_actual_flag :='A';
13823    END IF;
13824 
13825    --
13826    -- bulk performance
13827    --
13828    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
13829                                       p_header_num   => 0); -- 4262811
13830    --
13831    -- set accounting line options
13832    --
13833    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
13834            p_natural_side_code          => 'C'
13835          , p_gain_or_loss_flag          => 'N'
13836          , p_gl_transfer_mode_code      => 'S'
13837          , p_acct_entry_type_code       => 'A'
13838          , p_switch_side_flag           => 'Y'
13839          , p_merge_duplicate_code       => 'A'
13840          );
13841    --
13842    l_acc_rev_natural_side_code := 'D';  -- 4262811
13843    -- 
13844    --
13845    -- set accounting line type info
13846    --
13847    xla_ae_lines_pkg.SetAcctLineType
13848       (p_component_type             => l_component_type
13849       ,p_event_type_code            => l_event_type_code
13850       ,p_line_definition_owner_code => l_line_definition_owner_code
13851       ,p_line_definition_code       => l_line_definition_code
13852       ,p_accounting_line_code       => l_component_code
13853       ,p_accounting_line_type_code  => l_component_type_code
13854       ,p_accounting_line_appl_id    => l_component_appl_id
13855       ,p_amb_context_code           => l_amb_context_code
13856       ,p_entity_code                => l_entity_code
13857       ,p_event_class_code           => l_event_class_code);
13858    --
13859    -- set accounting class
13860    --
13861    xla_ae_lines_pkg.SetAcctClass(
13862            p_accounting_class_code  => 'DEFERRED_TAX'
13863          , p_ae_header_id           => l_ae_header_id
13864          );
13865 
13866    --
13867    -- set rounding class
13868    --
13869    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
13870                       'RECEIVABLE';
13871 
13872    --
13873    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
13874    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
13875    --
13876    -- bulk performance
13877    --
13878    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
13879 
13880    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
13881       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
13882 
13883    -- 4955764
13884    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
13885       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
13886 
13887    -- 4458381 Public Sector Enh
13891    --
13888    
13889    --
13890    -- set accounting attributes for the line type
13892    l_entered_amt_idx := 3;
13893    l_accted_amt_idx  := 9;
13894    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
13895    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
13896    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_64);
13897    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
13898    l_rec_acct_attrs.array_char_value(2)  := p_source_65;
13899    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
13900    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
13901    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
13902    l_rec_acct_attrs.array_char_value(4)  := p_source_66;
13903    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
13904    l_rec_acct_attrs.array_date_value(5)  := p_source_67;
13905    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
13906    l_rec_acct_attrs.array_num_value(6)  := p_source_68;
13907    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
13908    l_rec_acct_attrs.array_char_value(7)  := p_source_69;
13909    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
13910    l_rec_acct_attrs.array_char_value(8)  := p_source_70;
13911    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
13912    l_rec_acct_attrs.array_num_value(9)  := p_source_71;
13913    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
13914    l_rec_acct_attrs.array_num_value(10)  := p_source_72;
13915    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
13916    l_rec_acct_attrs.array_num_value(11)  := p_source_73;
13917    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
13918    l_rec_acct_attrs.array_char_value(12)  := p_source_51;
13919    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
13920    l_rec_acct_attrs.array_num_value(13)  := p_source_74;
13921 
13922    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
13923    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
13924 
13925    ---------------------------------------------------------------------------------------------------------------
13926    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
13927    ---------------------------------------------------------------------------------------------------------------
13928    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
13929 
13930    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13931    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
13932 
13933    IF xla_accounting_cache_pkg.GetValueChar
13934          (p_source_code         => 'LEDGER_CATEGORY_CODE'
13935          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
13936    AND l_bflow_method_code = 'PRIOR_ENTRY'
13937 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
13938    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
13939          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
13940        )
13941    THEN
13942          xla_ae_lines_pkg.BflowUpgEntry
13943            (p_business_method_code    => l_bflow_method_code
13944            ,p_business_class_code     => l_bflow_class_code
13945            ,p_balance_type            => l_balance_type_code);
13946    ELSE
13947       NULL;
13948 -- No business flow processing for business flow method of NONE.
13949    END IF;
13950 
13951    --
13952    -- call analytical criteria
13953    --
13954    
13955    --
13956    -- call description
13957    --
13958    -- No description or it is inherited.
13959    --
13960    -- call ADRs
13961    -- Bug 4922099
13962    --
13963    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
13964         (NVL(l_actual_upg_option, 'N') = 'O') OR
13965         (NVL(l_enc_upg_option, 'N') = 'O')
13966       )
13970    --
13967    THEN
13968    NULL;
13969    --
13971    
13972   l_ccid := AcctDerRule_29(
13973            p_application_id           => p_application_id
13974          , p_ae_header_id             => l_ae_header_id 
13975 , p_source_32 => p_source_32
13976          , x_transaction_coa_id       => l_adr_transaction_coa_id
13977          , x_accounting_coa_id        => l_adr_accounting_coa_id
13978          , x_value_type_code          => l_adr_value_type_code
13979          , p_side                     => 'NA'
13980    );
13981 
13982    xla_ae_lines_pkg.set_ccid(
13983     p_code_combination_id          => l_ccid
13984   , p_value_type_code              => l_adr_value_type_code
13985   , p_transaction_coa_id           => l_adr_transaction_coa_id
13986   , p_accounting_coa_id            => l_adr_accounting_coa_id
13987   , p_adr_code                     => 'DIST_CCID'
13988   , p_adr_type_code                => 'S'
13989   , p_component_type               => l_component_type
13990   , p_component_code               => l_component_code
13991   , p_component_type_code          => l_component_type_code
13992   , p_component_appl_id            => l_component_appl_id
13993   , p_amb_context_code             => l_amb_context_code
13994   , p_side                         => 'NA'
13995   );
13996 
13997 
13998    --
13999    --
14000    END IF;
14001    --
14002    -- Bug 4922099
14003    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14004           (NVL(l_enc_upg_option, 'N') = 'O')
14005         ) AND
14006         (l_bflow_method_code = 'PRIOR_ENTRY')
14007       )
14008    THEN
14009       IF
14010       --
14011       1 = 2
14012       --
14013       THEN
14014       xla_accounting_err_pkg.build_message
14015                                     (p_appli_s_name            => 'XLA'
14016                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14017                                     ,p_token_1                 => 'LINE_NUMBER'
14018                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14019                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14020                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14021                                                                              l_component_type
14022                                                                             ,l_component_code
14023                                                                             ,l_component_type_code
14024                                                                             ,l_component_appl_id
14025                                                                             ,l_amb_context_code
14026                                                                             ,l_entity_code
14027                                                                             ,l_event_class_code
14028                                                                            )
14029                                     ,p_token_3                 => 'OWNER'
14030                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14031                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14032                                                                           ,p_lookup_code    => l_component_type_code
14033                                                                          )
14034                                     ,p_token_4                 => 'PRODUCT_NAME'
14035                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14036                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14037                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14038                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14039                                     ,p_ae_header_id            =>  NULL
14040                                        );
14041 
14042         IF (C_LEVEL_ERROR>= g_log_level) THEN
14043                  trace
14044                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14045                       ,p_level    => C_LEVEL_ERROR
14049    END IF;
14046                       ,p_module   => l_log_module);
14047         END IF;
14048       END IF;
14050    --
14051    --
14052    ------------------------------------------------------------------------------------------------
14053    -- 4219869 Business Flow
14054    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14055    -- Prior Entry.  Currently, the following code is always generated.
14056    ------------------------------------------------------------------------------------------------
14057    XLA_AE_LINES_PKG.ValidateCurrentLine;
14058 
14059    ------------------------------------------------------------------------------------
14060    -- 4219869 Business Flow
14061    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14062    ------------------------------------------------------------------------------------
14063    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14064 
14065    ----------------------------------------------------------------------------------
14066    -- 4219869 Business Flow
14067    -- Update journal entry status -- Need to generate this within IF <condition>
14068    ----------------------------------------------------------------------------------
14069    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14070          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14071          ,p_balance_type_code => l_balance_type_code
14072          );
14073 
14074    -------------------------------------------------------------------------------------------
14075    -- 4262811 - Generate the Accrual Reversal lines
14076    -------------------------------------------------------------------------------------------
14077    BEGIN
14078       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14079                               (g_array_event(p_event_id).array_value_num('header_index'));
14080       IF l_acc_rev_flag IS NULL THEN
14081          l_acc_rev_flag := 'N';
14082       END IF;
14083    EXCEPTION
14084       WHEN OTHERS THEN
14085          l_acc_rev_flag := 'N';
14086    END;
14087    --
14088    IF (l_acc_rev_flag = 'Y') THEN
14089 
14090        -- 4645092  ------------------------------------------------------------------------------
14091        -- To allow MPA report to determine if it should generate report process
14092        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14093        ------------------------------------------------------------------------------------------
14094 
14095        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14096        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14097    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
14098    -- call ADRs
14099    -- Bug 4922099
14100    --
14101    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14102         (NVL(l_actual_upg_option, 'N') = 'O') OR
14103         (NVL(l_enc_upg_option, 'N') = 'O')
14104       )
14105    THEN
14106    NULL;
14107    --
14108    --
14109    
14110   l_ccid := AcctDerRule_29(
14111            p_application_id           => p_application_id
14112          , p_ae_header_id             => l_ae_header_id 
14113 , p_source_32 => p_source_32
14114          , x_transaction_coa_id       => l_adr_transaction_coa_id
14115          , x_accounting_coa_id        => l_adr_accounting_coa_id
14116          , x_value_type_code          => l_adr_value_type_code
14117          , p_side                     => 'NA'
14118    );
14119 
14120    xla_ae_lines_pkg.set_ccid(
14121     p_code_combination_id          => l_ccid
14122   , p_value_type_code              => l_adr_value_type_code
14123   , p_transaction_coa_id           => l_adr_transaction_coa_id
14124   , p_accounting_coa_id            => l_adr_accounting_coa_id
14125   , p_adr_code                     => 'DIST_CCID'
14126   , p_adr_type_code                => 'S'
14127   , p_component_type               => l_component_type
14128   , p_component_code               => l_component_code
14129   , p_component_type_code          => l_component_type_code
14130   , p_component_appl_id            => l_component_appl_id
14131   , p_amb_context_code             => l_amb_context_code
14132   , p_side                         => 'NA'
14133   );
14134 
14135 
14136    --
14137    --
14138    END IF;
14139 
14140        --
14141        -- Update the line information that should be overwritten
14142        --
14143        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14144                                          p_header_num   => 1);
14145        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14146 
14147        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14148 
14149        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14150           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14151        END IF;
14152 
14153       --
14154       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14155       --
14156       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14157           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14161           ---------------------------------------------------------------------------------------------------
14158       ELSE
14159           ---------------------------------------------------------------------------------------------------
14160           -- 4262811a Switch Sign
14162           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14163           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14164                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14165           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14166                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14167           -- 5132302
14168           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14169                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14170 
14171       END IF;
14172 
14173       -- 4955764
14174       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14175       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14176 
14177 
14178       XLA_AE_LINES_PKG.ValidateCurrentLine;
14179       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14180 
14181       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14182                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14183                ,p_balance_type_code => l_balance_type_code);
14184 
14185    END IF;
14186 
14187    -----------------------------------------------------------------------------------------
14188    -- 4262811 Multiperiod Accounting
14189    -----------------------------------------------------------------------------------------
14190      -- No MPA option is assigned.
14191 
14192 
14193 END IF;
14194 END IF;
14195 --
14196 
14197 --
14198 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14199    trace
14200       (p_msg      => 'END of AcctLineType_53'
14201       ,p_level    => C_LEVEL_PROCEDURE
14202       ,p_module   => l_log_module);
14203 END IF;
14204 --
14205 EXCEPTION
14206   WHEN xla_exceptions_pkg.application_exception THEN
14207       RAISE;
14208   WHEN OTHERS THEN
14209        xla_exceptions_pkg.raise_message
14210            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_53');
14211 END AcctLineType_53;
14212 --
14213 
14214 ---------------------------------------
14215 --
14216 -- PRIVATE FUNCTION
14217 --         AcctLineType_54
14218 --
14219 ---------------------------------------
14220 PROCEDURE AcctLineType_54 (
14221   p_application_id        IN NUMBER
14222  ,p_event_id              IN NUMBER
14223  ,p_calculate_acctd_flag  IN VARCHAR2
14224  ,p_calculate_g_l_flag    IN VARCHAR2
14225  ,p_actual_flag           IN OUT VARCHAR2
14226  ,p_balance_type_code     OUT VARCHAR2
14227  ,p_gain_or_loss_ref      OUT VARCHAR2
14228  
14229 --Transaction Type Name
14230  , p_source_3            IN VARCHAR2
14231 --Transaction Number
14232  , p_source_4            IN VARCHAR2
14233 --Transaction Document Sequence Number
14234  , p_source_6            IN NUMBER
14235 --Distribution GL Account
14236  , p_source_32            IN NUMBER
14237 --Distribution Source Type
14238  , p_source_39            IN VARCHAR2
14239 --Entered Amount
14243 --Credit Memo Distribution Identifier
14240  , p_source_43            IN NUMBER
14241 --SLA Party Type
14242  , p_source_51            IN VARCHAR2
14244  , p_source_64            IN NUMBER
14245 --Credit memo distributions type
14246  , p_source_65            IN VARCHAR2
14247 --Credit Memo Currency Code
14248  , p_source_66            IN VARCHAR2
14249 --Credit Memo Exchange Date
14250  , p_source_67            IN DATE
14251 --Credit Memo Exchange Rate
14252  , p_source_68            IN NUMBER
14253 --Credit Memo Exchange Rate Type
14254  , p_source_69            IN VARCHAR2
14255 --Gain Loss Reference
14256  , p_source_70            IN VARCHAR2
14257 --Credit Memo Accounting Amount
14258  , p_source_71            IN NUMBER
14259 --Credit Memo Bill To Customer Account Identifier
14260  , p_source_72            IN NUMBER
14261 --Credit Memo Bill To Customer Site Use Identifier
14262  , p_source_73            IN NUMBER
14263 --Credit Memo Tax Line Identifier
14264  , p_source_74            IN NUMBER
14265 )
14266 IS
14267 
14268 l_component_type              VARCHAR2(80);
14269 l_component_code              VARCHAR2(30);
14270 l_component_type_code         VARCHAR2(1);
14271 l_component_appl_id           INTEGER;
14272 l_amb_context_code            VARCHAR2(30);
14273 l_entity_code                 VARCHAR2(30);
14274 l_event_class_code            VARCHAR2(30);
14275 l_ae_header_id                NUMBER;
14276 l_event_type_code             VARCHAR2(30);
14277 l_line_definition_code        VARCHAR2(30);
14278 l_line_definition_owner_code  VARCHAR2(1);
14279 --
14280 -- adr variables
14281 l_segment                     VARCHAR2(30);
14282 l_ccid                        NUMBER;
14283 l_adr_transaction_coa_id      NUMBER;
14284 l_adr_accounting_coa_id       NUMBER;
14285 l_adr_flexfield_segment_code  VARCHAR2(30);
14286 l_adr_flex_value_set_id       NUMBER;
14287 l_adr_value_type_code         VARCHAR2(30);
14288 l_adr_value_combination_id    NUMBER;
14289 l_adr_value_segment_code      VARCHAR2(30);
14290 
14291 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14292 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14293 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14294 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14295 
14296 -- 4262811 Variables ------------------------------------------------------------------------------------------
14297 l_entered_amt_idx             NUMBER;
14298 l_accted_amt_idx              NUMBER;
14299 l_acc_rev_flag                VARCHAR2(1);
14300 l_accrual_line_num            NUMBER;
14301 l_tmp_amt                     NUMBER;
14302 l_acc_rev_natural_side_code   VARCHAR2(1);
14303 
14304 l_num_entries                 NUMBER;
14305 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14306 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14307 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14311 
14308 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14309 l_recog_line_1                NUMBER;
14310 l_recog_line_2                NUMBER;
14312 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14313 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14314 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14315 
14316 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14317 
14318 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14319 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14320 
14321 ---------------------------------------------------------------------------------------------------------------
14322 
14323 
14324 --
14325 -- bulk performance
14326 --
14327 l_balance_type_code           VARCHAR2(1);
14328 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14329 l_log_module                  VARCHAR2(240);
14330 
14331 --
14332 -- Upgrade strategy
14333 --
14334 l_actual_upg_option           VARCHAR2(1);
14335 l_enc_upg_option           VARCHAR2(1);
14336 
14337 --
14338 BEGIN
14339 --
14340 IF g_log_enabled THEN
14341       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_54';
14342 END IF;
14343 --
14344 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14345 
14346       trace
14347          (p_msg      => 'BEGIN of AcctLineType_54'
14348          ,p_level    => C_LEVEL_PROCEDURE
14349          ,p_module   => l_log_module);
14350 
14351 END IF;
14352 --
14353 l_component_type             := 'AMB_JLT';
14354 l_component_code             := 'CM_APP_DEFAULT_REC';
14355 l_component_type_code        := 'S';
14356 l_component_appl_id          :=  222;
14357 l_amb_context_code           := 'DEFAULT';
14358 l_entity_code                := 'TRANSACTIONS';
14359 l_event_class_code           := 'CREDIT_MEMO';
14360 l_event_type_code            := 'CREDIT_MEMO_ALL';
14361 l_line_definition_owner_code := 'S';
14362 l_line_definition_code       := 'AR_CM_DEFAULT_ACCRUAL';
14363 --
14364 l_balance_type_code          := 'A';
14365 l_segment                     := NULL;
14366 l_ccid                        := NULL;
14367 l_adr_transaction_coa_id      := NULL;
14368 l_adr_accounting_coa_id       := NULL;
14369 l_adr_flexfield_segment_code  := NULL;
14370 l_adr_flex_value_set_id       := NULL;
14371 l_adr_value_type_code         := NULL;
14372 l_adr_value_combination_id    := NULL;
14373 l_adr_value_segment_code      := NULL;
14374 
14375 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14376 l_bflow_class_code           := '';    -- 4219869 Business Flow
14377 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14378 l_budgetary_control_flag     := 'N';
14379 
14380 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14381 l_bflow_applied_to_amt       := NULL; -- 5132302
14382 l_entered_amt_idx            := NULL;          -- 4262811
14383 l_accted_amt_idx             := NULL;          -- 4262811
14384 l_acc_rev_flag               := NULL;          -- 4262811
14385 l_accrual_line_num           := NULL;          -- 4262811
14386 l_tmp_amt                    := NULL;          -- 4262811
14387 --
14388  
14389 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14390     l_balance_type_code <> 'B' THEN
14391 IF NVL(p_source_39,'
14392 ') =  'REC'
14393  THEN 
14394 
14395    --
14396    XLA_AE_LINES_PKG.SetNewLine;
14397 
14398    p_balance_type_code          := l_balance_type_code;
14399    -- set the flag so later we will know whether the gain loss line needs to be created
14400    
14401    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14402      p_actual_flag :='A';
14403    END IF;
14404 
14405    --
14406    -- bulk performance
14407    --
14408    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14409                                       p_header_num   => 0); -- 4262811
14410    --
14411    -- set accounting line options
14412    --
14413    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
14414            p_natural_side_code          => 'C'
14415          , p_gain_or_loss_flag          => 'N'
14416          , p_gl_transfer_mode_code      => 'S'
14417          , p_acct_entry_type_code       => 'A'
14418          , p_switch_side_flag           => 'Y'
14419          , p_merge_duplicate_code       => 'A'
14420          );
14421    --
14422    l_acc_rev_natural_side_code := 'D';  -- 4262811
14423    -- 
14424    --
14425    -- set accounting line type info
14426    --
14427    xla_ae_lines_pkg.SetAcctLineType
14428       (p_component_type             => l_component_type
14429       ,p_event_type_code            => l_event_type_code
14430       ,p_line_definition_owner_code => l_line_definition_owner_code
14431       ,p_line_definition_code       => l_line_definition_code
14432       ,p_accounting_line_code       => l_component_code
14433       ,p_accounting_line_type_code  => l_component_type_code
14434       ,p_accounting_line_appl_id    => l_component_appl_id
14435       ,p_amb_context_code           => l_amb_context_code
14436       ,p_entity_code                => l_entity_code
14437       ,p_event_class_code           => l_event_class_code);
14438    --
14439    -- set accounting class
14440    --
14444          );
14441    xla_ae_lines_pkg.SetAcctClass(
14442            p_accounting_class_code  => 'RECEIVABLE'
14443          , p_ae_header_id           => l_ae_header_id
14445 
14446    --
14447    -- set rounding class
14448    --
14449    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
14450                       'RECEIVABLE';
14451 
14452    --
14453    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
14454    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
14455    --
14456    -- bulk performance
14457    --
14458    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
14459 
14460    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
14461       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
14462 
14463    -- 4955764
14464    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14465       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
14466 
14467    -- 4458381 Public Sector Enh
14468    
14469    --
14470    -- set accounting attributes for the line type
14471    --
14472    l_entered_amt_idx := 3;
14473    l_accted_amt_idx  := 9;
14474    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
14475    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
14476    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_64);
14477    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
14478    l_rec_acct_attrs.array_char_value(2)  := p_source_65;
14479    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
14480    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
14481    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
14482    l_rec_acct_attrs.array_char_value(4)  := p_source_66;
14483    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
14484    l_rec_acct_attrs.array_date_value(5)  := p_source_67;
14485    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
14486    l_rec_acct_attrs.array_num_value(6)  := p_source_68;
14487    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
14488    l_rec_acct_attrs.array_char_value(7)  := p_source_69;
14489    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
14490    l_rec_acct_attrs.array_char_value(8)  := p_source_70;
14491    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
14492    l_rec_acct_attrs.array_num_value(9)  := p_source_71;
14493    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
14494    l_rec_acct_attrs.array_num_value(10)  := p_source_72;
14495    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
14496    l_rec_acct_attrs.array_num_value(11)  := p_source_73;
14497    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
14498    l_rec_acct_attrs.array_char_value(12)  := p_source_51;
14499    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
14500    l_rec_acct_attrs.array_num_value(13)  := p_source_74;
14501 
14502    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
14503    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
14504 
14505    ---------------------------------------------------------------------------------------------------------------
14506    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
14507    ---------------------------------------------------------------------------------------------------------------
14508    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
14509 
14510    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14511    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
14512 
14513    IF xla_accounting_cache_pkg.GetValueChar
14514          (p_source_code         => 'LEDGER_CATEGORY_CODE'
14515          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
14516    AND l_bflow_method_code = 'PRIOR_ENTRY'
14517 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
14518    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
14519          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
14520        )
14521    THEN
14522          xla_ae_lines_pkg.BflowUpgEntry
14523            (p_business_method_code    => l_bflow_method_code
14524            ,p_business_class_code     => l_bflow_class_code
14525            ,p_balance_type            => l_balance_type_code);
14526    ELSE
14527       NULL;
14528 -- No business flow processing for business flow method of NONE.
14529    END IF;
14530 
14531    --
14532    -- call analytical criteria
14533    --
14534    
14535    --
14536    -- call description
14537    --
14538    
14539 xla_ae_lines_pkg.SetLineDescription(
14540    p_ae_header_id => l_ae_header_id
14541   ,p_description  => Description_5 (
14542      p_application_id         => p_application_id
14543    , p_ae_header_id           => l_ae_header_id 
14544 , p_source_3 => p_source_3
14545 , p_source_4 => p_source_4
14546 , p_source_6 => p_source_6
14547    )
14548 );
14549 
14550 
14551    --
14555    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14552    -- call ADRs
14553    -- Bug 4922099
14554    --
14556         (NVL(l_actual_upg_option, 'N') = 'O') OR
14557         (NVL(l_enc_upg_option, 'N') = 'O')
14558       )
14559    THEN
14560    NULL;
14561    --
14562    --
14563    
14564   l_ccid := AcctDerRule_29(
14565            p_application_id           => p_application_id
14566          , p_ae_header_id             => l_ae_header_id 
14567 , p_source_32 => p_source_32
14568          , x_transaction_coa_id       => l_adr_transaction_coa_id
14569          , x_accounting_coa_id        => l_adr_accounting_coa_id
14570          , x_value_type_code          => l_adr_value_type_code
14571          , p_side                     => 'NA'
14572    );
14573 
14574    xla_ae_lines_pkg.set_ccid(
14575     p_code_combination_id          => l_ccid
14576   , p_value_type_code              => l_adr_value_type_code
14577   , p_transaction_coa_id           => l_adr_transaction_coa_id
14578   , p_accounting_coa_id            => l_adr_accounting_coa_id
14579   , p_adr_code                     => 'DIST_CCID'
14580   , p_adr_type_code                => 'S'
14581   , p_component_type               => l_component_type
14582   , p_component_code               => l_component_code
14583   , p_component_type_code          => l_component_type_code
14584   , p_component_appl_id            => l_component_appl_id
14585   , p_amb_context_code             => l_amb_context_code
14586   , p_side                         => 'NA'
14587   );
14588 
14589 
14590    --
14591    --
14592    END IF;
14593    --
14594    -- Bug 4922099
14595    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
14596           (NVL(l_enc_upg_option, 'N') = 'O')
14597         ) AND
14598         (l_bflow_method_code = 'PRIOR_ENTRY')
14599       )
14600    THEN
14601       IF
14602       --
14603       1 = 2
14604       --
14605       THEN
14606       xla_accounting_err_pkg.build_message
14607                                     (p_appli_s_name            => 'XLA'
14608                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14609                                     ,p_token_1                 => 'LINE_NUMBER'
14610                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
14611                                     ,p_token_2                 => 'LINE_TYPE_NAME'
14612                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
14613                                                                              l_component_type
14614                                                                             ,l_component_code
14615                                                                             ,l_component_type_code
14616                                                                             ,l_component_appl_id
14617                                                                             ,l_amb_context_code
14618                                                                             ,l_entity_code
14619                                                                             ,l_event_class_code
14620                                                                            )
14621                                     ,p_token_3                 => 'OWNER'
14622                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
14623                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
14624                                                                           ,p_lookup_code    => l_component_type_code
14625                                                                          )
14626                                     ,p_token_4                 => 'PRODUCT_NAME'
14627                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
14628                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
14629                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
14630                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
14631                                     ,p_ae_header_id            =>  NULL
14632                                        );
14633 
14634         IF (C_LEVEL_ERROR>= g_log_level) THEN
14635                  trace
14636                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
14637                       ,p_level    => C_LEVEL_ERROR
14638                       ,p_module   => l_log_module);
14639         END IF;
14640       END IF;
14641    END IF;
14642    --
14643    --
14644    ------------------------------------------------------------------------------------------------
14645    -- 4219869 Business Flow
14646    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
14647    -- Prior Entry.  Currently, the following code is always generated.
14648    ------------------------------------------------------------------------------------------------
14649    XLA_AE_LINES_PKG.ValidateCurrentLine;
14650 
14651    ------------------------------------------------------------------------------------
14652    -- 4219869 Business Flow
14656 
14653    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
14654    ------------------------------------------------------------------------------------
14655    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14657    ----------------------------------------------------------------------------------
14658    -- 4219869 Business Flow
14659    -- Update journal entry status -- Need to generate this within IF <condition>
14660    ----------------------------------------------------------------------------------
14661    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14662          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
14663          ,p_balance_type_code => l_balance_type_code
14664          );
14665 
14666    -------------------------------------------------------------------------------------------
14667    -- 4262811 - Generate the Accrual Reversal lines
14668    -------------------------------------------------------------------------------------------
14669    BEGIN
14670       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
14671                               (g_array_event(p_event_id).array_value_num('header_index'));
14672       IF l_acc_rev_flag IS NULL THEN
14673          l_acc_rev_flag := 'N';
14674       END IF;
14675    EXCEPTION
14676       WHEN OTHERS THEN
14677          l_acc_rev_flag := 'N';
14678    END;
14679    --
14680    IF (l_acc_rev_flag = 'Y') THEN
14681 
14682        -- 4645092  ------------------------------------------------------------------------------
14683        -- To allow MPA report to determine if it should generate report process
14684        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
14685        ------------------------------------------------------------------------------------------
14686 
14687        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
14688        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
14689    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
14690    -- call ADRs
14691    -- Bug 4922099
14692    --
14693    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
14694         (NVL(l_actual_upg_option, 'N') = 'O') OR
14695         (NVL(l_enc_upg_option, 'N') = 'O')
14696       )
14697    THEN
14698    NULL;
14699    --
14700    --
14701    
14702   l_ccid := AcctDerRule_29(
14703            p_application_id           => p_application_id
14704          , p_ae_header_id             => l_ae_header_id 
14705 , p_source_32 => p_source_32
14706          , x_transaction_coa_id       => l_adr_transaction_coa_id
14707          , x_accounting_coa_id        => l_adr_accounting_coa_id
14708          , x_value_type_code          => l_adr_value_type_code
14709          , p_side                     => 'NA'
14710    );
14711 
14712    xla_ae_lines_pkg.set_ccid(
14713     p_code_combination_id          => l_ccid
14714   , p_value_type_code              => l_adr_value_type_code
14715   , p_transaction_coa_id           => l_adr_transaction_coa_id
14716   , p_accounting_coa_id            => l_adr_accounting_coa_id
14717   , p_adr_code                     => 'DIST_CCID'
14718   , p_adr_type_code                => 'S'
14722   , p_component_appl_id            => l_component_appl_id
14719   , p_component_type               => l_component_type
14720   , p_component_code               => l_component_code
14721   , p_component_type_code          => l_component_type_code
14723   , p_amb_context_code             => l_amb_context_code
14724   , p_side                         => 'NA'
14725   );
14726 
14727 
14728    --
14729    --
14730    END IF;
14731 
14732        --
14733        -- Update the line information that should be overwritten
14734        --
14735        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
14736                                          p_header_num   => 1);
14737        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
14738 
14739        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
14740 
14741        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
14742           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
14743        END IF;
14744 
14745       --
14746       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
14747       --
14748       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
14749           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
14750       ELSE
14751           ---------------------------------------------------------------------------------------------------
14752           -- 4262811a Switch Sign
14753           ---------------------------------------------------------------------------------------------------
14754           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
14755           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14756                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14757           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
14758                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14759           -- 5132302
14760           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
14761                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
14762 
14763       END IF;
14764 
14765       -- 4955764
14766       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
14767       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
14768 
14769 
14770       XLA_AE_LINES_PKG.ValidateCurrentLine;
14771       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
14772 
14773       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
14774                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
14775                ,p_balance_type_code => l_balance_type_code);
14776 
14777    END IF;
14778 
14779    -----------------------------------------------------------------------------------------
14780    -- 4262811 Multiperiod Accounting
14781    -----------------------------------------------------------------------------------------
14782      -- No MPA option is assigned.
14783 
14784 
14785 END IF;
14786 END IF;
14787 --
14788 
14789 --
14790 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14791    trace
14792       (p_msg      => 'END of AcctLineType_54'
14793       ,p_level    => C_LEVEL_PROCEDURE
14794       ,p_module   => l_log_module);
14795 END IF;
14796 --
14797 EXCEPTION
14798   WHEN xla_exceptions_pkg.application_exception THEN
14799       RAISE;
14800   WHEN OTHERS THEN
14801        xla_exceptions_pkg.raise_message
14802            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_54');
14803 END AcctLineType_54;
14804 --
14805 
14806 ---------------------------------------
14807 --
14808 -- PRIVATE FUNCTION
14809 --         AcctLineType_55
14810 --
14811 ---------------------------------------
14812 PROCEDURE AcctLineType_55 (
14813   p_application_id        IN NUMBER
14814  ,p_event_id              IN NUMBER
14815  ,p_calculate_acctd_flag  IN VARCHAR2
14816  ,p_calculate_g_l_flag    IN VARCHAR2
14817  ,p_actual_flag           IN OUT VARCHAR2
14818  ,p_balance_type_code     OUT VARCHAR2
14819  ,p_gain_or_loss_ref      OUT VARCHAR2
14820  
14821 --Distribution GL Account
14822  , p_source_32            IN NUMBER
14823 --Distribution Source Type
14824  , p_source_39            IN VARCHAR2
14825 --Entered Amount
14826  , p_source_43            IN NUMBER
14827 --SLA Party Type
14828  , p_source_51            IN VARCHAR2
14829 --Credit Memo Distribution Identifier
14830  , p_source_64            IN NUMBER
14831 --Credit memo distributions type
14832  , p_source_65            IN VARCHAR2
14833 --Credit Memo Currency Code
14834  , p_source_66            IN VARCHAR2
14835 --Credit Memo Exchange Date
14836  , p_source_67            IN DATE
14837 --Credit Memo Exchange Rate
14838  , p_source_68            IN NUMBER
14839 --Credit Memo Exchange Rate Type
14840  , p_source_69            IN VARCHAR2
14841 --Gain Loss Reference
14842  , p_source_70            IN VARCHAR2
14843 --Credit Memo Accounting Amount
14847 --Credit Memo Bill To Customer Site Use Identifier
14844  , p_source_71            IN NUMBER
14845 --Credit Memo Bill To Customer Account Identifier
14846  , p_source_72            IN NUMBER
14848  , p_source_73            IN NUMBER
14849 --Credit Memo Tax Line Identifier
14850  , p_source_74            IN NUMBER
14851 )
14852 IS
14853 
14854 l_component_type              VARCHAR2(80);
14855 l_component_code              VARCHAR2(30);
14856 l_component_type_code         VARCHAR2(1);
14857 l_component_appl_id           INTEGER;
14858 l_amb_context_code            VARCHAR2(30);
14859 l_entity_code                 VARCHAR2(30);
14860 l_event_class_code            VARCHAR2(30);
14861 l_ae_header_id                NUMBER;
14862 l_event_type_code             VARCHAR2(30);
14863 l_line_definition_code        VARCHAR2(30);
14864 l_line_definition_owner_code  VARCHAR2(1);
14865 --
14866 -- adr variables
14867 l_segment                     VARCHAR2(30);
14868 l_ccid                        NUMBER;
14869 l_adr_transaction_coa_id      NUMBER;
14870 l_adr_accounting_coa_id       NUMBER;
14871 l_adr_flexfield_segment_code  VARCHAR2(30);
14872 l_adr_flex_value_set_id       NUMBER;
14873 l_adr_value_type_code         VARCHAR2(30);
14874 l_adr_value_combination_id    NUMBER;
14875 l_adr_value_segment_code      VARCHAR2(30);
14876 
14877 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
14878 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
14879 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
14880 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
14881 
14882 -- 4262811 Variables ------------------------------------------------------------------------------------------
14883 l_entered_amt_idx             NUMBER;
14884 l_accted_amt_idx              NUMBER;
14885 l_acc_rev_flag                VARCHAR2(1);
14886 l_accrual_line_num            NUMBER;
14887 l_tmp_amt                     NUMBER;
14888 l_acc_rev_natural_side_code   VARCHAR2(1);
14889 
14890 l_num_entries                 NUMBER;
14891 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
14892 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
14893 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
14894 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
14895 l_recog_line_1                NUMBER;
14896 l_recog_line_2                NUMBER;
14897 
14898 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
14899 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
14900 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
14901 
14902 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
14903 
14904 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
14905 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
14906 
14907 ---------------------------------------------------------------------------------------------------------------
14908 
14909 
14910 --
14911 -- bulk performance
14912 --
14913 l_balance_type_code           VARCHAR2(1);
14914 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
14915 l_log_module                  VARCHAR2(240);
14916 
14917 --
14918 -- Upgrade strategy
14919 --
14920 l_actual_upg_option           VARCHAR2(1);
14921 l_enc_upg_option           VARCHAR2(1);
14922 
14923 --
14924 BEGIN
14925 --
14926 IF g_log_enabled THEN
14927       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_55';
14928 END IF;
14929 --
14930 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
14931 
14932       trace
14933          (p_msg      => 'BEGIN of AcctLineType_55'
14934          ,p_level    => C_LEVEL_PROCEDURE
14935          ,p_module   => l_log_module);
14936 
14937 END IF;
14938 --
14939 l_component_type             := 'AMB_JLT';
14940 l_component_code             := 'CM_APP_DEFAULT_TAX';
14941 l_component_type_code        := 'S';
14942 l_component_appl_id          :=  222;
14943 l_amb_context_code           := 'DEFAULT';
14944 l_entity_code                := 'TRANSACTIONS';
14945 l_event_class_code           := 'CREDIT_MEMO';
14946 l_event_type_code            := 'CREDIT_MEMO_ALL';
14947 l_line_definition_owner_code := 'S';
14948 l_line_definition_code       := 'AR_CM_DEFAULT_ACCRUAL';
14949 --
14950 l_balance_type_code          := 'A';
14951 l_segment                     := NULL;
14952 l_ccid                        := NULL;
14953 l_adr_transaction_coa_id      := NULL;
14954 l_adr_accounting_coa_id       := NULL;
14955 l_adr_flexfield_segment_code  := NULL;
14956 l_adr_flex_value_set_id       := NULL;
14957 l_adr_value_type_code         := NULL;
14958 l_adr_value_combination_id    := NULL;
14959 l_adr_value_segment_code      := NULL;
14960 
14961 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
14962 l_bflow_class_code           := '';    -- 4219869 Business Flow
14963 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
14964 l_budgetary_control_flag     := 'N';
14965 
14966 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
14967 l_bflow_applied_to_amt       := NULL; -- 5132302
14968 l_entered_amt_idx            := NULL;          -- 4262811
14972 l_tmp_amt                    := NULL;          -- 4262811
14969 l_accted_amt_idx             := NULL;          -- 4262811
14970 l_acc_rev_flag               := NULL;          -- 4262811
14971 l_accrual_line_num           := NULL;          -- 4262811
14973 --
14974  
14975 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
14976     l_balance_type_code <> 'B' THEN
14977 IF NVL(p_source_39,'
14978 ') =  'TAX'
14979  THEN 
14980 
14981    --
14982    XLA_AE_LINES_PKG.SetNewLine;
14983 
14984    p_balance_type_code          := l_balance_type_code;
14985    -- set the flag so later we will know whether the gain loss line needs to be created
14986    
14987    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
14988      p_actual_flag :='A';
14989    END IF;
14990 
14991    --
14992    -- bulk performance
14993    --
14994    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
14995                                       p_header_num   => 0); -- 4262811
14996    --
14997    -- set accounting line options
14998    --
14999    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15000            p_natural_side_code          => 'C'
15001          , p_gain_or_loss_flag          => 'N'
15002          , p_gl_transfer_mode_code      => 'S'
15003          , p_acct_entry_type_code       => 'A'
15004          , p_switch_side_flag           => 'Y'
15005          , p_merge_duplicate_code       => 'A'
15006          );
15007    --
15008    l_acc_rev_natural_side_code := 'D';  -- 4262811
15009    -- 
15010    --
15011    -- set accounting line type info
15012    --
15013    xla_ae_lines_pkg.SetAcctLineType
15014       (p_component_type             => l_component_type
15015       ,p_event_type_code            => l_event_type_code
15016       ,p_line_definition_owner_code => l_line_definition_owner_code
15017       ,p_line_definition_code       => l_line_definition_code
15018       ,p_accounting_line_code       => l_component_code
15019       ,p_accounting_line_type_code  => l_component_type_code
15020       ,p_accounting_line_appl_id    => l_component_appl_id
15021       ,p_amb_context_code           => l_amb_context_code
15022       ,p_entity_code                => l_entity_code
15023       ,p_event_class_code           => l_event_class_code);
15024    --
15025    -- set accounting class
15026    --
15027    xla_ae_lines_pkg.SetAcctClass(
15028            p_accounting_class_code  => 'TAX'
15029          , p_ae_header_id           => l_ae_header_id
15030          );
15031 
15032    --
15033    -- set rounding class
15034    --
15035    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15036                       'RECEIVABLE';
15037 
15038    --
15039    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15040    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15041    --
15042    -- bulk performance
15043    --
15044    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15045 
15046    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15047       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15048 
15049    -- 4955764
15050    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15051       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15052 
15053    -- 4458381 Public Sector Enh
15054    
15055    --
15056    -- set accounting attributes for the line type
15057    --
15058    l_entered_amt_idx := 3;
15059    l_accted_amt_idx  := 9;
15060    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15061    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
15062    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_64);
15063    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
15064    l_rec_acct_attrs.array_char_value(2)  := p_source_65;
15065    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
15066    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
15067    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
15068    l_rec_acct_attrs.array_char_value(4)  := p_source_66;
15069    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
15070    l_rec_acct_attrs.array_date_value(5)  := p_source_67;
15071    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
15072    l_rec_acct_attrs.array_num_value(6)  := p_source_68;
15073    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
15074    l_rec_acct_attrs.array_char_value(7)  := p_source_69;
15075    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
15076    l_rec_acct_attrs.array_char_value(8)  := p_source_70;
15080    l_rec_acct_attrs.array_num_value(10)  := p_source_72;
15077    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
15078    l_rec_acct_attrs.array_num_value(9)  := p_source_71;
15079    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
15081    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
15082    l_rec_acct_attrs.array_num_value(11)  := p_source_73;
15083    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
15084    l_rec_acct_attrs.array_char_value(12)  := p_source_51;
15085    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
15086    l_rec_acct_attrs.array_num_value(13)  := p_source_74;
15087 
15088    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15089    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15090 
15091    ---------------------------------------------------------------------------------------------------------------
15092    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15093    ---------------------------------------------------------------------------------------------------------------
15094    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15095 
15096    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15097    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15098 
15099    IF xla_accounting_cache_pkg.GetValueChar
15100          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15101          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15102    AND l_bflow_method_code = 'PRIOR_ENTRY'
15103 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15104    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15105          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15106        )
15107    THEN
15108          xla_ae_lines_pkg.BflowUpgEntry
15109            (p_business_method_code    => l_bflow_method_code
15110            ,p_business_class_code     => l_bflow_class_code
15111            ,p_balance_type            => l_balance_type_code);
15112    ELSE
15113       NULL;
15114 -- No business flow processing for business flow method of NONE.
15115    END IF;
15116 
15117    --
15118    -- call analytical criteria
15119    --
15120    
15121    --
15122    -- call description
15123    --
15124    -- No description or it is inherited.
15125    --
15126    -- call ADRs
15127    -- Bug 4922099
15128    --
15129    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15130         (NVL(l_actual_upg_option, 'N') = 'O') OR
15131         (NVL(l_enc_upg_option, 'N') = 'O')
15132       )
15133    THEN
15134    NULL;
15135    --
15136    --
15137    
15138   l_ccid := AcctDerRule_29(
15139            p_application_id           => p_application_id
15140          , p_ae_header_id             => l_ae_header_id 
15141 , p_source_32 => p_source_32
15142          , x_transaction_coa_id       => l_adr_transaction_coa_id
15143          , x_accounting_coa_id        => l_adr_accounting_coa_id
15144          , x_value_type_code          => l_adr_value_type_code
15145          , p_side                     => 'NA'
15146    );
15147 
15148    xla_ae_lines_pkg.set_ccid(
15149     p_code_combination_id          => l_ccid
15150   , p_value_type_code              => l_adr_value_type_code
15151   , p_transaction_coa_id           => l_adr_transaction_coa_id
15152   , p_accounting_coa_id            => l_adr_accounting_coa_id
15153   , p_adr_code                     => 'DIST_CCID'
15154   , p_adr_type_code                => 'S'
15155   , p_component_type               => l_component_type
15156   , p_component_code               => l_component_code
15157   , p_component_type_code          => l_component_type_code
15158   , p_component_appl_id            => l_component_appl_id
15159   , p_amb_context_code             => l_amb_context_code
15160   , p_side                         => 'NA'
15161   );
15162 
15163 
15164    --
15165    --
15166    END IF;
15167    --
15168    -- Bug 4922099
15169    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15170           (NVL(l_enc_upg_option, 'N') = 'O')
15171         ) AND
15172         (l_bflow_method_code = 'PRIOR_ENTRY')
15173       )
15174    THEN
15175       IF
15176       --
15177       1 = 2
15178       --
15179       THEN
15180       xla_accounting_err_pkg.build_message
15181                                     (p_appli_s_name            => 'XLA'
15182                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15183                                     ,p_token_1                 => 'LINE_NUMBER'
15187                                                                              l_component_type
15184                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15185                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15186                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15188                                                                             ,l_component_code
15189                                                                             ,l_component_type_code
15190                                                                             ,l_component_appl_id
15191                                                                             ,l_amb_context_code
15192                                                                             ,l_entity_code
15193                                                                             ,l_event_class_code
15194                                                                            )
15195                                     ,p_token_3                 => 'OWNER'
15196                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15197                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15198                                                                           ,p_lookup_code    => l_component_type_code
15199                                                                          )
15200                                     ,p_token_4                 => 'PRODUCT_NAME'
15201                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15202                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15203                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15204                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15205                                     ,p_ae_header_id            =>  NULL
15206                                        );
15207 
15208         IF (C_LEVEL_ERROR>= g_log_level) THEN
15209                  trace
15210                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15211                       ,p_level    => C_LEVEL_ERROR
15212                       ,p_module   => l_log_module);
15213         END IF;
15214       END IF;
15215    END IF;
15216    --
15217    --
15218    ------------------------------------------------------------------------------------------------
15219    -- 4219869 Business Flow
15220    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15221    -- Prior Entry.  Currently, the following code is always generated.
15222    ------------------------------------------------------------------------------------------------
15223    XLA_AE_LINES_PKG.ValidateCurrentLine;
15224 
15225    ------------------------------------------------------------------------------------
15226    -- 4219869 Business Flow
15227    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15228    ------------------------------------------------------------------------------------
15229    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15230 
15231    ----------------------------------------------------------------------------------
15232    -- 4219869 Business Flow
15233    -- Update journal entry status -- Need to generate this within IF <condition>
15234    ----------------------------------------------------------------------------------
15235    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15236          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15237          ,p_balance_type_code => l_balance_type_code
15238          );
15239 
15240    -------------------------------------------------------------------------------------------
15241    -- 4262811 - Generate the Accrual Reversal lines
15242    -------------------------------------------------------------------------------------------
15243    BEGIN
15244       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15245                               (g_array_event(p_event_id).array_value_num('header_index'));
15246       IF l_acc_rev_flag IS NULL THEN
15247          l_acc_rev_flag := 'N';
15248       END IF;
15249    EXCEPTION
15250       WHEN OTHERS THEN
15251          l_acc_rev_flag := 'N';
15252    END;
15253    --
15254    IF (l_acc_rev_flag = 'Y') THEN
15255 
15256        -- 4645092  ------------------------------------------------------------------------------
15257        -- To allow MPA report to determine if it should generate report process
15258        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15259        ------------------------------------------------------------------------------------------
15260 
15261        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15262        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15263    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
15264    -- call ADRs
15265    -- Bug 4922099
15266    --
15267    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15268         (NVL(l_actual_upg_option, 'N') = 'O') OR
15269         (NVL(l_enc_upg_option, 'N') = 'O')
15270       )
15271    THEN
15272    NULL;
15273    --
15274    --
15275    
15276   l_ccid := AcctDerRule_29(
15277            p_application_id           => p_application_id
15281          , x_accounting_coa_id        => l_adr_accounting_coa_id
15278          , p_ae_header_id             => l_ae_header_id 
15279 , p_source_32 => p_source_32
15280          , x_transaction_coa_id       => l_adr_transaction_coa_id
15282          , x_value_type_code          => l_adr_value_type_code
15283          , p_side                     => 'NA'
15284    );
15285 
15286    xla_ae_lines_pkg.set_ccid(
15287     p_code_combination_id          => l_ccid
15288   , p_value_type_code              => l_adr_value_type_code
15289   , p_transaction_coa_id           => l_adr_transaction_coa_id
15290   , p_accounting_coa_id            => l_adr_accounting_coa_id
15291   , p_adr_code                     => 'DIST_CCID'
15292   , p_adr_type_code                => 'S'
15293   , p_component_type               => l_component_type
15294   , p_component_code               => l_component_code
15295   , p_component_type_code          => l_component_type_code
15296   , p_component_appl_id            => l_component_appl_id
15297   , p_amb_context_code             => l_amb_context_code
15298   , p_side                         => 'NA'
15299   );
15300 
15301 
15302    --
15303    --
15304    END IF;
15305 
15306        --
15307        -- Update the line information that should be overwritten
15308        --
15309        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15310                                          p_header_num   => 1);
15311        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15312 
15313        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15314 
15315        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15316           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15317        END IF;
15318 
15319       --
15320       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15321       --
15322       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15323           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15324       ELSE
15325           ---------------------------------------------------------------------------------------------------
15326           -- 4262811a Switch Sign
15327           ---------------------------------------------------------------------------------------------------
15328           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15329           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15330                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15331           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15332                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15333           -- 5132302
15334           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15335                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15336 
15337       END IF;
15338 
15339       -- 4955764
15340       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15341       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15342 
15343 
15344       XLA_AE_LINES_PKG.ValidateCurrentLine;
15345       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15346 
15347       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15348                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15349                ,p_balance_type_code => l_balance_type_code);
15350 
15351    END IF;
15352 
15353    -----------------------------------------------------------------------------------------
15354    -- 4262811 Multiperiod Accounting
15355    -----------------------------------------------------------------------------------------
15356      -- No MPA option is assigned.
15357 
15358 
15359 END IF;
15360 END IF;
15361 --
15362 
15363 --
15364 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15365    trace
15366       (p_msg      => 'END of AcctLineType_55'
15367       ,p_level    => C_LEVEL_PROCEDURE
15368       ,p_module   => l_log_module);
15369 END IF;
15370 --
15371 EXCEPTION
15372   WHEN xla_exceptions_pkg.application_exception THEN
15373       RAISE;
15374   WHEN OTHERS THEN
15375        xla_exceptions_pkg.raise_message
15376            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_55');
15377 END AcctLineType_55;
15378 --
15379 
15380 ---------------------------------------
15381 --
15382 -- PRIVATE FUNCTION
15383 --         AcctLineType_56
15384 --
15385 ---------------------------------------
15386 PROCEDURE AcctLineType_56 (
15387   p_application_id        IN NUMBER
15388  ,p_event_id              IN NUMBER
15389  ,p_calculate_acctd_flag  IN VARCHAR2
15390  ,p_calculate_g_l_flag    IN VARCHAR2
15391  ,p_actual_flag           IN OUT VARCHAR2
15392  ,p_balance_type_code     OUT VARCHAR2
15393  ,p_gain_or_loss_ref      OUT VARCHAR2
15394  
15395 --Distribution GL Account
15396  , p_source_32            IN NUMBER
15397 --Distribution Source Type
15401 --Entered Amount
15398  , p_source_39            IN VARCHAR2
15399 --Receivable Activity Type
15400  , p_source_40            IN VARCHAR2
15402  , p_source_43            IN NUMBER
15403 --SLA Party Type
15404  , p_source_51            IN VARCHAR2
15405 --Credit Memo Distribution Identifier
15406  , p_source_64            IN NUMBER
15407 --Credit memo distributions type
15408  , p_source_65            IN VARCHAR2
15409 --Credit Memo Currency Code
15410  , p_source_66            IN VARCHAR2
15411 --Credit Memo Exchange Date
15412  , p_source_67            IN DATE
15413 --Credit Memo Exchange Rate
15414  , p_source_68            IN NUMBER
15415 --Credit Memo Exchange Rate Type
15416  , p_source_69            IN VARCHAR2
15417 --Gain Loss Reference
15418  , p_source_70            IN VARCHAR2
15419 --Credit Memo Accounting Amount
15420  , p_source_71            IN NUMBER
15421 --Credit Memo Bill To Customer Account Identifier
15422  , p_source_72            IN NUMBER
15423 --Credit Memo Bill To Customer Site Use Identifier
15424  , p_source_73            IN NUMBER
15425 --Credit Memo Tax Line Identifier
15426  , p_source_74            IN NUMBER
15427 )
15428 IS
15429 
15430 l_component_type              VARCHAR2(80);
15431 l_component_code              VARCHAR2(30);
15432 l_component_type_code         VARCHAR2(1);
15433 l_component_appl_id           INTEGER;
15434 l_amb_context_code            VARCHAR2(30);
15435 l_entity_code                 VARCHAR2(30);
15436 l_event_class_code            VARCHAR2(30);
15437 l_ae_header_id                NUMBER;
15438 l_event_type_code             VARCHAR2(30);
15439 l_line_definition_code        VARCHAR2(30);
15440 l_line_definition_owner_code  VARCHAR2(1);
15441 --
15442 -- adr variables
15443 l_segment                     VARCHAR2(30);
15444 l_ccid                        NUMBER;
15445 l_adr_transaction_coa_id      NUMBER;
15446 l_adr_accounting_coa_id       NUMBER;
15447 l_adr_flexfield_segment_code  VARCHAR2(30);
15448 l_adr_flex_value_set_id       NUMBER;
15449 l_adr_value_type_code         VARCHAR2(30);
15450 l_adr_value_combination_id    NUMBER;
15451 l_adr_value_segment_code      VARCHAR2(30);
15452 
15453 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
15454 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
15455 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
15456 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
15457 
15458 -- 4262811 Variables ------------------------------------------------------------------------------------------
15459 l_entered_amt_idx             NUMBER;
15460 l_accted_amt_idx              NUMBER;
15461 l_acc_rev_flag                VARCHAR2(1);
15462 l_accrual_line_num            NUMBER;
15463 l_tmp_amt                     NUMBER;
15464 l_acc_rev_natural_side_code   VARCHAR2(1);
15465 
15466 l_num_entries                 NUMBER;
15467 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
15468 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
15469 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
15473 
15470 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
15471 l_recog_line_1                NUMBER;
15472 l_recog_line_2                NUMBER;
15474 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
15475 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
15476 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
15477 
15478 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
15479 
15480 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
15481 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
15482 
15483 ---------------------------------------------------------------------------------------------------------------
15484 
15485 
15486 --
15487 -- bulk performance
15488 --
15489 l_balance_type_code           VARCHAR2(1);
15490 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
15491 l_log_module                  VARCHAR2(240);
15492 
15493 --
15494 -- Upgrade strategy
15495 --
15496 l_actual_upg_option           VARCHAR2(1);
15497 l_enc_upg_option           VARCHAR2(1);
15498 
15499 --
15500 BEGIN
15501 --
15502 IF g_log_enabled THEN
15503       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_56';
15504 END IF;
15505 --
15506 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15507 
15508       trace
15509          (p_msg      => 'BEGIN of AcctLineType_56'
15510          ,p_level    => C_LEVEL_PROCEDURE
15511          ,p_module   => l_log_module);
15512 
15513 END IF;
15514 --
15515 l_component_type             := 'AMB_JLT';
15516 l_component_code             := 'CM_APP_REFUND';
15517 l_component_type_code        := 'S';
15518 l_component_appl_id          :=  222;
15519 l_amb_context_code           := 'DEFAULT';
15520 l_entity_code                := 'TRANSACTIONS';
15521 l_event_class_code           := 'CREDIT_MEMO';
15522 l_event_type_code            := 'CREDIT_MEMO_ALL';
15523 l_line_definition_owner_code := 'S';
15524 l_line_definition_code       := 'AR_CM_DEFAULT_ACCRUAL';
15525 --
15526 l_balance_type_code          := 'A';
15527 l_segment                     := NULL;
15528 l_ccid                        := NULL;
15529 l_adr_transaction_coa_id      := NULL;
15530 l_adr_accounting_coa_id       := NULL;
15531 l_adr_flexfield_segment_code  := NULL;
15532 l_adr_flex_value_set_id       := NULL;
15533 l_adr_value_type_code         := NULL;
15534 l_adr_value_combination_id    := NULL;
15535 l_adr_value_segment_code      := NULL;
15536 
15537 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
15538 l_bflow_class_code           := '';    -- 4219869 Business Flow
15539 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
15540 l_budgetary_control_flag     := 'N';
15541 
15542 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
15543 l_bflow_applied_to_amt       := NULL; -- 5132302
15544 l_entered_amt_idx            := NULL;          -- 4262811
15545 l_accted_amt_idx             := NULL;          -- 4262811
15546 l_acc_rev_flag               := NULL;          -- 4262811
15547 l_accrual_line_num           := NULL;          -- 4262811
15548 l_tmp_amt                    := NULL;          -- 4262811
15549 --
15550  
15551 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
15552     l_balance_type_code <> 'B' THEN
15553 IF (NVL(p_source_39,'
15554 ') =  'ACTIVITY' AND 
15555 NVL(p_source_40,'
15556 ') =  'REFUND') OR 
15557 (NVL(p_source_39,'
15558 ') =  'ACTIVITY' AND 
15559 NVL(p_source_40,'
15560 ') =  'CM_REFUND')
15561  THEN 
15562 
15563    --
15564    XLA_AE_LINES_PKG.SetNewLine;
15565 
15566    p_balance_type_code          := l_balance_type_code;
15567    -- set the flag so later we will know whether the gain loss line needs to be created
15568    
15569    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
15570      p_actual_flag :='A';
15571    END IF;
15572 
15573    --
15574    -- bulk performance
15575    --
15576    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
15577                                       p_header_num   => 0); -- 4262811
15578    --
15579    -- set accounting line options
15580    --
15581    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
15582            p_natural_side_code          => 'C'
15583          , p_gain_or_loss_flag          => 'N'
15584          , p_gl_transfer_mode_code      => 'S'
15585          , p_acct_entry_type_code       => 'A'
15586          , p_switch_side_flag           => 'Y'
15587          , p_merge_duplicate_code       => 'A'
15588          );
15589    --
15590    l_acc_rev_natural_side_code := 'D';  -- 4262811
15591    -- 
15592    --
15593    -- set accounting line type info
15594    --
15595    xla_ae_lines_pkg.SetAcctLineType
15596       (p_component_type             => l_component_type
15597       ,p_event_type_code            => l_event_type_code
15598       ,p_line_definition_owner_code => l_line_definition_owner_code
15599       ,p_line_definition_code       => l_line_definition_code
15600       ,p_accounting_line_code       => l_component_code
15601       ,p_accounting_line_type_code  => l_component_type_code
15602       ,p_accounting_line_appl_id    => l_component_appl_id
15606    --
15603       ,p_amb_context_code           => l_amb_context_code
15604       ,p_entity_code                => l_entity_code
15605       ,p_event_class_code           => l_event_class_code);
15607    -- set accounting class
15608    --
15609    xla_ae_lines_pkg.SetAcctClass(
15610            p_accounting_class_code  => 'REFUND'
15611          , p_ae_header_id           => l_ae_header_id
15612          );
15613 
15614    --
15615    -- set rounding class
15616    --
15617    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
15618                       'REFUND';
15619 
15620    --
15621    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
15622    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
15623    --
15624    -- bulk performance
15625    --
15626    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
15627 
15628    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
15629       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
15630 
15631    -- 4955764
15632    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15633       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
15634 
15635    -- 4458381 Public Sector Enh
15636    
15637    --
15638    -- set accounting attributes for the line type
15639    --
15640    l_entered_amt_idx := 3;
15641    l_accted_amt_idx  := 9;
15642    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
15643    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
15644    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_64);
15645    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
15646    l_rec_acct_attrs.array_char_value(2)  := p_source_65;
15647    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
15648    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
15649    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
15650    l_rec_acct_attrs.array_char_value(4)  := p_source_66;
15651    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
15652    l_rec_acct_attrs.array_date_value(5)  := p_source_67;
15653    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
15654    l_rec_acct_attrs.array_num_value(6)  := p_source_68;
15655    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
15656    l_rec_acct_attrs.array_char_value(7)  := p_source_69;
15657    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
15658    l_rec_acct_attrs.array_char_value(8)  := p_source_70;
15659    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
15660    l_rec_acct_attrs.array_num_value(9)  := p_source_71;
15661    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
15662    l_rec_acct_attrs.array_num_value(10)  := p_source_72;
15663    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
15664    l_rec_acct_attrs.array_num_value(11)  := p_source_73;
15665    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
15666    l_rec_acct_attrs.array_char_value(12)  := p_source_51;
15667    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
15668    l_rec_acct_attrs.array_num_value(13)  := p_source_74;
15669 
15670    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
15671    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
15672 
15673    ---------------------------------------------------------------------------------------------------------------
15674    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
15675    ---------------------------------------------------------------------------------------------------------------
15676    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
15677 
15678    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15679    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
15680 
15681    IF xla_accounting_cache_pkg.GetValueChar
15682          (p_source_code         => 'LEDGER_CATEGORY_CODE'
15683          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
15684    AND l_bflow_method_code = 'PRIOR_ENTRY'
15685 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
15686    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
15687          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
15688        )
15689    THEN
15690          xla_ae_lines_pkg.BflowUpgEntry
15691            (p_business_method_code    => l_bflow_method_code
15692            ,p_business_class_code     => l_bflow_class_code
15693            ,p_balance_type            => l_balance_type_code);
15694    ELSE
15695       NULL;
15696 -- No business flow processing for business flow method of NONE.
15697    END IF;
15698 
15699    --
15700    -- call analytical criteria
15701    --
15702    
15703    --
15704    -- call description
15705    --
15706    -- No description or it is inherited.
15707    --
15708    -- call ADRs
15709    -- Bug 4922099
15710    --
15711    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15712         (NVL(l_actual_upg_option, 'N') = 'O') OR
15713         (NVL(l_enc_upg_option, 'N') = 'O')
15714       )
15718    --
15715    THEN
15716    NULL;
15717    --
15719    
15720   l_ccid := AcctDerRule_29(
15721            p_application_id           => p_application_id
15722          , p_ae_header_id             => l_ae_header_id 
15723 , p_source_32 => p_source_32
15724          , x_transaction_coa_id       => l_adr_transaction_coa_id
15725          , x_accounting_coa_id        => l_adr_accounting_coa_id
15726          , x_value_type_code          => l_adr_value_type_code
15727          , p_side                     => 'NA'
15728    );
15729 
15730    xla_ae_lines_pkg.set_ccid(
15731     p_code_combination_id          => l_ccid
15732   , p_value_type_code              => l_adr_value_type_code
15733   , p_transaction_coa_id           => l_adr_transaction_coa_id
15734   , p_accounting_coa_id            => l_adr_accounting_coa_id
15735   , p_adr_code                     => 'DIST_CCID'
15736   , p_adr_type_code                => 'S'
15737   , p_component_type               => l_component_type
15738   , p_component_code               => l_component_code
15739   , p_component_type_code          => l_component_type_code
15740   , p_component_appl_id            => l_component_appl_id
15741   , p_amb_context_code             => l_amb_context_code
15742   , p_side                         => 'NA'
15743   );
15744 
15745 
15746    --
15747    --
15748    END IF;
15749    --
15750    -- Bug 4922099
15751    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
15752           (NVL(l_enc_upg_option, 'N') = 'O')
15753         ) AND
15754         (l_bflow_method_code = 'PRIOR_ENTRY')
15755       )
15756    THEN
15757       IF
15758       --
15759       1 = 2
15760       --
15761       THEN
15762       xla_accounting_err_pkg.build_message
15763                                     (p_appli_s_name            => 'XLA'
15764                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15765                                     ,p_token_1                 => 'LINE_NUMBER'
15766                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
15767                                     ,p_token_2                 => 'LINE_TYPE_NAME'
15768                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
15769                                                                              l_component_type
15770                                                                             ,l_component_code
15771                                                                             ,l_component_type_code
15772                                                                             ,l_component_appl_id
15773                                                                             ,l_amb_context_code
15774                                                                             ,l_entity_code
15775                                                                             ,l_event_class_code
15776                                                                            )
15777                                     ,p_token_3                 => 'OWNER'
15778                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
15779                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
15780                                                                           ,p_lookup_code    => l_component_type_code
15781                                                                          )
15782                                     ,p_token_4                 => 'PRODUCT_NAME'
15783                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
15784                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
15785                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
15786                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
15787                                     ,p_ae_header_id            =>  NULL
15788                                        );
15789 
15790         IF (C_LEVEL_ERROR>= g_log_level) THEN
15791                  trace
15792                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
15793                       ,p_level    => C_LEVEL_ERROR
15794                       ,p_module   => l_log_module);
15795         END IF;
15796       END IF;
15797    END IF;
15798    --
15799    --
15800    ------------------------------------------------------------------------------------------------
15801    -- 4219869 Business Flow
15802    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
15803    -- Prior Entry.  Currently, the following code is always generated.
15804    ------------------------------------------------------------------------------------------------
15805    XLA_AE_LINES_PKG.ValidateCurrentLine;
15806 
15807    ------------------------------------------------------------------------------------
15808    -- 4219869 Business Flow
15809    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
15810    ------------------------------------------------------------------------------------
15811    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15812 
15813    ----------------------------------------------------------------------------------
15814    -- 4219869 Business Flow
15818          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
15815    -- Update journal entry status -- Need to generate this within IF <condition>
15816    ----------------------------------------------------------------------------------
15817    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15819          ,p_balance_type_code => l_balance_type_code
15820          );
15821 
15822    -------------------------------------------------------------------------------------------
15823    -- 4262811 - Generate the Accrual Reversal lines
15824    -------------------------------------------------------------------------------------------
15825    BEGIN
15826       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
15827                               (g_array_event(p_event_id).array_value_num('header_index'));
15828       IF l_acc_rev_flag IS NULL THEN
15829          l_acc_rev_flag := 'N';
15830       END IF;
15831    EXCEPTION
15832       WHEN OTHERS THEN
15833          l_acc_rev_flag := 'N';
15834    END;
15835    --
15836    IF (l_acc_rev_flag = 'Y') THEN
15837 
15838        -- 4645092  ------------------------------------------------------------------------------
15839        -- To allow MPA report to determine if it should generate report process
15840        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
15841        ------------------------------------------------------------------------------------------
15842 
15843        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
15844        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
15845    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
15846    -- call ADRs
15847    -- Bug 4922099
15848    --
15849    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
15850         (NVL(l_actual_upg_option, 'N') = 'O') OR
15851         (NVL(l_enc_upg_option, 'N') = 'O')
15852       )
15853    THEN
15854    NULL;
15855    --
15856    --
15857    
15858   l_ccid := AcctDerRule_29(
15859            p_application_id           => p_application_id
15860          , p_ae_header_id             => l_ae_header_id 
15861 , p_source_32 => p_source_32
15862          , x_transaction_coa_id       => l_adr_transaction_coa_id
15863          , x_accounting_coa_id        => l_adr_accounting_coa_id
15864          , x_value_type_code          => l_adr_value_type_code
15865          , p_side                     => 'NA'
15866    );
15867 
15868    xla_ae_lines_pkg.set_ccid(
15869     p_code_combination_id          => l_ccid
15870   , p_value_type_code              => l_adr_value_type_code
15871   , p_transaction_coa_id           => l_adr_transaction_coa_id
15872   , p_accounting_coa_id            => l_adr_accounting_coa_id
15873   , p_adr_code                     => 'DIST_CCID'
15874   , p_adr_type_code                => 'S'
15875   , p_component_type               => l_component_type
15876   , p_component_code               => l_component_code
15877   , p_component_type_code          => l_component_type_code
15878   , p_component_appl_id            => l_component_appl_id
15879   , p_amb_context_code             => l_amb_context_code
15880   , p_side                         => 'NA'
15881   );
15882 
15883 
15884    --
15885    --
15886    END IF;
15887 
15888        --
15889        -- Update the line information that should be overwritten
15890        --
15891        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
15892                                          p_header_num   => 1);
15893        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
15894 
15895        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
15896 
15897        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
15898           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
15899        END IF;
15900 
15901       --
15902       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
15903       --
15904       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
15905           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
15906       ELSE
15907           ---------------------------------------------------------------------------------------------------
15908           -- 4262811a Switch Sign
15909           ---------------------------------------------------------------------------------------------------
15910           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
15911           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15912                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15913           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
15914                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15915           -- 5132302
15916           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
15917                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
15918 
15919       END IF;
15920 
15921       -- 4955764
15922       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
15926       XLA_AE_LINES_PKG.ValidateCurrentLine;
15923       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
15924 
15925 
15927       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
15928 
15929       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
15930                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
15931                ,p_balance_type_code => l_balance_type_code);
15932 
15933    END IF;
15934 
15935    -----------------------------------------------------------------------------------------
15936    -- 4262811 Multiperiod Accounting
15937    -----------------------------------------------------------------------------------------
15938      -- No MPA option is assigned.
15939 
15940 
15941 END IF;
15942 END IF;
15943 --
15944 
15945 --
15946 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
15947    trace
15948       (p_msg      => 'END of AcctLineType_56'
15949       ,p_level    => C_LEVEL_PROCEDURE
15950       ,p_module   => l_log_module);
15951 END IF;
15952 --
15953 EXCEPTION
15954   WHEN xla_exceptions_pkg.application_exception THEN
15955       RAISE;
15956   WHEN OTHERS THEN
15957        xla_exceptions_pkg.raise_message
15958            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_56');
15959 END AcctLineType_56;
15960 --
15961 
15962 ---------------------------------------
15963 --
15964 -- PRIVATE FUNCTION
15965 --         AcctLineType_57
15966 --
15967 ---------------------------------------
15968 PROCEDURE AcctLineType_57 (
15969   p_application_id        IN NUMBER
15970  ,p_event_id              IN NUMBER
15971  ,p_calculate_acctd_flag  IN VARCHAR2
15972  ,p_calculate_g_l_flag    IN VARCHAR2
15973  ,p_actual_flag           IN OUT VARCHAR2
15974  ,p_balance_type_code     OUT VARCHAR2
15975  ,p_gain_or_loss_ref      OUT VARCHAR2
15976  
15977 --Credit Memo Distribution GL Account
15978  , p_source_24            IN NUMBER
15979 --SLA Party Type
15980  , p_source_51            IN VARCHAR2
15981 --Credit Memo Distribution Identifier
15982  , p_source_64            IN NUMBER
15983 --Credit memo distributions type
15984  , p_source_65            IN VARCHAR2
15985 --Credit Memo Currency Code
15986  , p_source_66            IN VARCHAR2
15987 --Credit Memo Exchange Date
15988  , p_source_67            IN DATE
15989 --Credit Memo Exchange Rate
15990  , p_source_68            IN NUMBER
15991 --Credit Memo Exchange Rate Type
15992  , p_source_69            IN VARCHAR2
15993 --Gain Loss Reference
15994  , p_source_70            IN VARCHAR2
15995 --Credit Memo Accounting Amount
15996  , p_source_71            IN NUMBER
15997 --Credit Memo Bill To Customer Account Identifier
15998  , p_source_72            IN NUMBER
15999 --Credit Memo Bill To Customer Site Use Identifier
16000  , p_source_73            IN NUMBER
16001 --Credit Memo Tax Line Identifier
16002  , p_source_74            IN NUMBER
16003 --Credit Memo Distribution Account Class
16004  , p_source_75            IN VARCHAR2
16005 --Credit Memo Distribution Entered Amount
16006  , p_source_76            IN NUMBER
16007 )
16008 IS
16009 
16010 l_component_type              VARCHAR2(80);
16011 l_component_code              VARCHAR2(30);
16012 l_component_type_code         VARCHAR2(1);
16013 l_component_appl_id           INTEGER;
16014 l_amb_context_code            VARCHAR2(30);
16015 l_entity_code                 VARCHAR2(30);
16016 l_event_class_code            VARCHAR2(30);
16017 l_ae_header_id                NUMBER;
16018 l_event_type_code             VARCHAR2(30);
16019 l_line_definition_code        VARCHAR2(30);
16020 l_line_definition_owner_code  VARCHAR2(1);
16021 --
16022 -- adr variables
16023 l_segment                     VARCHAR2(30);
16024 l_ccid                        NUMBER;
16025 l_adr_transaction_coa_id      NUMBER;
16026 l_adr_accounting_coa_id       NUMBER;
16027 l_adr_flexfield_segment_code  VARCHAR2(30);
16028 l_adr_flex_value_set_id       NUMBER;
16029 l_adr_value_type_code         VARCHAR2(30);
16030 l_adr_value_combination_id    NUMBER;
16031 l_adr_value_segment_code      VARCHAR2(30);
16032 
16033 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16034 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16035 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16036 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16037 
16038 -- 4262811 Variables ------------------------------------------------------------------------------------------
16039 l_entered_amt_idx             NUMBER;
16040 l_accted_amt_idx              NUMBER;
16041 l_acc_rev_flag                VARCHAR2(1);
16042 l_accrual_line_num            NUMBER;
16043 l_tmp_amt                     NUMBER;
16044 l_acc_rev_natural_side_code   VARCHAR2(1);
16045 
16046 l_num_entries                 NUMBER;
16047 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16048 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16049 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16050 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16051 l_recog_line_1                NUMBER;
16052 l_recog_line_2                NUMBER;
16053 
16054 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16058 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16055 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16056 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16057 
16059 
16060 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16061 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16062 
16063 ---------------------------------------------------------------------------------------------------------------
16064 
16065 
16066 --
16067 -- bulk performance
16068 --
16069 l_balance_type_code           VARCHAR2(1);
16070 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16071 l_log_module                  VARCHAR2(240);
16072 
16073 --
16074 -- Upgrade strategy
16075 --
16076 l_actual_upg_option           VARCHAR2(1);
16077 l_enc_upg_option           VARCHAR2(1);
16078 
16079 --
16080 BEGIN
16081 --
16082 IF g_log_enabled THEN
16083       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_57';
16084 END IF;
16085 --
16086 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16087 
16088       trace
16089          (p_msg      => 'BEGIN of AcctLineType_57'
16090          ,p_level    => C_LEVEL_PROCEDURE
16091          ,p_module   => l_log_module);
16092 
16093 END IF;
16094 --
16095 l_component_type             := 'AMB_JLT';
16096 l_component_code             := 'CM_CHARGES';
16097 l_component_type_code        := 'S';
16098 l_component_appl_id          :=  222;
16099 l_amb_context_code           := 'DEFAULT';
16100 l_entity_code                := 'TRANSACTIONS';
16101 l_event_class_code           := 'CREDIT_MEMO';
16102 l_event_type_code            := 'CREDIT_MEMO_ALL';
16103 l_line_definition_owner_code := 'S';
16104 l_line_definition_code       := 'AR_CM_DEFAULT_ACCRUAL';
16105 --
16106 l_balance_type_code          := 'A';
16107 l_segment                     := NULL;
16108 l_ccid                        := NULL;
16109 l_adr_transaction_coa_id      := NULL;
16110 l_adr_accounting_coa_id       := NULL;
16111 l_adr_flexfield_segment_code  := NULL;
16112 l_adr_flex_value_set_id       := NULL;
16113 l_adr_value_type_code         := NULL;
16114 l_adr_value_combination_id    := NULL;
16115 l_adr_value_segment_code      := NULL;
16116 
16117 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16118 l_bflow_class_code           := '';    -- 4219869 Business Flow
16119 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16120 l_budgetary_control_flag     := 'N';
16121 
16122 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16123 l_bflow_applied_to_amt       := NULL; -- 5132302
16124 l_entered_amt_idx            := NULL;          -- 4262811
16125 l_accted_amt_idx             := NULL;          -- 4262811
16126 l_acc_rev_flag               := NULL;          -- 4262811
16127 l_accrual_line_num           := NULL;          -- 4262811
16128 l_tmp_amt                    := NULL;          -- 4262811
16129 --
16130  
16131 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16132     l_balance_type_code <> 'B' THEN
16133 IF NVL(p_source_75,'
16134 ') =  'CHARGES'
16135  THEN 
16136 
16137    --
16138    XLA_AE_LINES_PKG.SetNewLine;
16139 
16140    p_balance_type_code          := l_balance_type_code;
16141    -- set the flag so later we will know whether the gain loss line needs to be created
16142    
16143    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16144      p_actual_flag :='A';
16145    END IF;
16146 
16147    --
16148    -- bulk performance
16149    --
16150    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16151                                       p_header_num   => 0); -- 4262811
16152    --
16153    -- set accounting line options
16154    --
16155    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16156            p_natural_side_code          => 'C'
16157          , p_gain_or_loss_flag          => 'N'
16158          , p_gl_transfer_mode_code      => 'S'
16159          , p_acct_entry_type_code       => 'A'
16160          , p_switch_side_flag           => 'Y'
16161          , p_merge_duplicate_code       => 'A'
16162          );
16163    --
16164    l_acc_rev_natural_side_code := 'D';  -- 4262811
16165    -- 
16166    --
16167    -- set accounting line type info
16168    --
16169    xla_ae_lines_pkg.SetAcctLineType
16170       (p_component_type             => l_component_type
16171       ,p_event_type_code            => l_event_type_code
16172       ,p_line_definition_owner_code => l_line_definition_owner_code
16173       ,p_line_definition_code       => l_line_definition_code
16174       ,p_accounting_line_code       => l_component_code
16175       ,p_accounting_line_type_code  => l_component_type_code
16176       ,p_accounting_line_appl_id    => l_component_appl_id
16177       ,p_amb_context_code           => l_amb_context_code
16178       ,p_entity_code                => l_entity_code
16179       ,p_event_class_code           => l_event_class_code);
16180    --
16181    -- set accounting class
16182    --
16183    xla_ae_lines_pkg.SetAcctClass(
16184            p_accounting_class_code  => 'CHARGES'
16185          , p_ae_header_id           => l_ae_header_id
16186          );
16187 
16188    --
16192                       'RECEIVABLE';
16189    -- set rounding class
16190    --
16191    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16193 
16194    --
16195    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16196    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16197    --
16198    -- bulk performance
16199    --
16200    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16201 
16202    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16203       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16204 
16205    -- 4955764
16206    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16207       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16208 
16209    -- 4458381 Public Sector Enh
16210    
16211    --
16212    -- set accounting attributes for the line type
16213    --
16214    l_entered_amt_idx := 3;
16215    l_accted_amt_idx  := 9;
16216    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16217    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
16218    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_64);
16219    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
16220    l_rec_acct_attrs.array_char_value(2)  := p_source_65;
16221    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
16222    l_rec_acct_attrs.array_num_value(3)  := p_source_76;
16223    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
16224    l_rec_acct_attrs.array_char_value(4)  := p_source_66;
16225    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
16226    l_rec_acct_attrs.array_date_value(5)  := p_source_67;
16227    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
16228    l_rec_acct_attrs.array_num_value(6)  := p_source_68;
16229    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
16230    l_rec_acct_attrs.array_char_value(7)  := p_source_69;
16231    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
16232    l_rec_acct_attrs.array_char_value(8)  := p_source_70;
16233    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
16234    l_rec_acct_attrs.array_num_value(9)  := p_source_71;
16235    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
16236    l_rec_acct_attrs.array_num_value(10)  := p_source_72;
16237    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
16238    l_rec_acct_attrs.array_num_value(11)  := p_source_73;
16239    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
16240    l_rec_acct_attrs.array_char_value(12)  := p_source_51;
16241    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
16242    l_rec_acct_attrs.array_num_value(13)  := p_source_74;
16243 
16244    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16245    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16246 
16247    ---------------------------------------------------------------------------------------------------------------
16248    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16249    ---------------------------------------------------------------------------------------------------------------
16250    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16251 
16252    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16253    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16254 
16255    IF xla_accounting_cache_pkg.GetValueChar
16256          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16257          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16258    AND l_bflow_method_code = 'PRIOR_ENTRY'
16259 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16260    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16261          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16262        )
16263    THEN
16264          xla_ae_lines_pkg.BflowUpgEntry
16265            (p_business_method_code    => l_bflow_method_code
16266            ,p_business_class_code     => l_bflow_class_code
16267            ,p_balance_type            => l_balance_type_code);
16268    ELSE
16269       NULL;
16270 -- No business flow processing for business flow method of NONE.
16271    END IF;
16272 
16273    --
16274    -- call analytical criteria
16275    --
16276    
16277    --
16278    -- call description
16279    --
16280    -- No description or it is inherited.
16281    --
16282    -- call ADRs
16283    -- Bug 4922099
16284    --
16285    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16286         (NVL(l_actual_upg_option, 'N') = 'O') OR
16287         (NVL(l_enc_upg_option, 'N') = 'O')
16288       )
16289    THEN
16290    NULL;
16291    --
16292    --
16293    
16294   l_ccid := AcctDerRule_21(
16295            p_application_id           => p_application_id
16296          , p_ae_header_id             => l_ae_header_id 
16297 , p_source_24 => p_source_24
16298          , x_transaction_coa_id       => l_adr_transaction_coa_id
16302    );
16299          , x_accounting_coa_id        => l_adr_accounting_coa_id
16300          , x_value_type_code          => l_adr_value_type_code
16301          , p_side                     => 'NA'
16303 
16304    xla_ae_lines_pkg.set_ccid(
16305     p_code_combination_id          => l_ccid
16306   , p_value_type_code              => l_adr_value_type_code
16307   , p_transaction_coa_id           => l_adr_transaction_coa_id
16308   , p_accounting_coa_id            => l_adr_accounting_coa_id
16309   , p_adr_code                     => 'CM_DIST_CCID'
16310   , p_adr_type_code                => 'S'
16311   , p_component_type               => l_component_type
16312   , p_component_code               => l_component_code
16313   , p_component_type_code          => l_component_type_code
16314   , p_component_appl_id            => l_component_appl_id
16315   , p_amb_context_code             => l_amb_context_code
16316   , p_side                         => 'NA'
16317   );
16318 
16319 
16320    --
16321    --
16322    END IF;
16323    --
16324    -- Bug 4922099
16325    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16326           (NVL(l_enc_upg_option, 'N') = 'O')
16327         ) AND
16328         (l_bflow_method_code = 'PRIOR_ENTRY')
16329       )
16330    THEN
16331       IF
16332       --
16333       1 = 2
16334       --
16335       THEN
16336       xla_accounting_err_pkg.build_message
16337                                     (p_appli_s_name            => 'XLA'
16338                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16339                                     ,p_token_1                 => 'LINE_NUMBER'
16340                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16341                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16342                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16343                                                                              l_component_type
16344                                                                             ,l_component_code
16345                                                                             ,l_component_type_code
16346                                                                             ,l_component_appl_id
16347                                                                             ,l_amb_context_code
16348                                                                             ,l_entity_code
16349                                                                             ,l_event_class_code
16350                                                                            )
16351                                     ,p_token_3                 => 'OWNER'
16352                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16353                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16354                                                                           ,p_lookup_code    => l_component_type_code
16355                                                                          )
16356                                     ,p_token_4                 => 'PRODUCT_NAME'
16357                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16358                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16359                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16360                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16361                                     ,p_ae_header_id            =>  NULL
16362                                        );
16363 
16364         IF (C_LEVEL_ERROR>= g_log_level) THEN
16365                  trace
16366                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16367                       ,p_level    => C_LEVEL_ERROR
16368                       ,p_module   => l_log_module);
16369         END IF;
16370       END IF;
16371    END IF;
16372    --
16373    --
16374    ------------------------------------------------------------------------------------------------
16375    -- 4219869 Business Flow
16376    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16377    -- Prior Entry.  Currently, the following code is always generated.
16378    ------------------------------------------------------------------------------------------------
16379    XLA_AE_LINES_PKG.ValidateCurrentLine;
16380 
16381    ------------------------------------------------------------------------------------
16382    -- 4219869 Business Flow
16383    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16384    ------------------------------------------------------------------------------------
16385    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16386 
16387    ----------------------------------------------------------------------------------
16388    -- 4219869 Business Flow
16389    -- Update journal entry status -- Need to generate this within IF <condition>
16390    ----------------------------------------------------------------------------------
16391    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16392          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16396    -------------------------------------------------------------------------------------------
16393          ,p_balance_type_code => l_balance_type_code
16394          );
16395 
16397    -- 4262811 - Generate the Accrual Reversal lines
16398    -------------------------------------------------------------------------------------------
16399    BEGIN
16400       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16401                               (g_array_event(p_event_id).array_value_num('header_index'));
16402       IF l_acc_rev_flag IS NULL THEN
16403          l_acc_rev_flag := 'N';
16404       END IF;
16405    EXCEPTION
16406       WHEN OTHERS THEN
16407          l_acc_rev_flag := 'N';
16408    END;
16409    --
16410    IF (l_acc_rev_flag = 'Y') THEN
16411 
16412        -- 4645092  ------------------------------------------------------------------------------
16413        -- To allow MPA report to determine if it should generate report process
16414        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16415        ------------------------------------------------------------------------------------------
16416 
16417        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16418        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16419    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
16420    -- call ADRs
16421    -- Bug 4922099
16422    --
16423    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16424         (NVL(l_actual_upg_option, 'N') = 'O') OR
16425         (NVL(l_enc_upg_option, 'N') = 'O')
16426       )
16427    THEN
16428    NULL;
16429    --
16430    --
16431    
16432   l_ccid := AcctDerRule_21(
16433            p_application_id           => p_application_id
16434          , p_ae_header_id             => l_ae_header_id 
16435 , p_source_24 => p_source_24
16436          , x_transaction_coa_id       => l_adr_transaction_coa_id
16437          , x_accounting_coa_id        => l_adr_accounting_coa_id
16438          , x_value_type_code          => l_adr_value_type_code
16439          , p_side                     => 'NA'
16440    );
16441 
16442    xla_ae_lines_pkg.set_ccid(
16443     p_code_combination_id          => l_ccid
16444   , p_value_type_code              => l_adr_value_type_code
16445   , p_transaction_coa_id           => l_adr_transaction_coa_id
16446   , p_accounting_coa_id            => l_adr_accounting_coa_id
16447   , p_adr_code                     => 'CM_DIST_CCID'
16448   , p_adr_type_code                => 'S'
16449   , p_component_type               => l_component_type
16450   , p_component_code               => l_component_code
16451   , p_component_type_code          => l_component_type_code
16452   , p_component_appl_id            => l_component_appl_id
16453   , p_amb_context_code             => l_amb_context_code
16454   , p_side                         => 'NA'
16455   );
16456 
16457 
16458    --
16459    --
16460    END IF;
16461 
16462        --
16463        -- Update the line information that should be overwritten
16464        --
16465        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
16466                                          p_header_num   => 1);
16467        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
16468 
16469        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
16470 
16471        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
16472           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
16473        END IF;
16474 
16475       --
16476       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
16477       --
16478       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
16479           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
16480       ELSE
16481           ---------------------------------------------------------------------------------------------------
16482           -- 4262811a Switch Sign
16483           ---------------------------------------------------------------------------------------------------
16484           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
16485           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16486                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16487           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
16488                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16489           -- 5132302
16490           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
16491                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
16492 
16493       END IF;
16494 
16495       -- 4955764
16496       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16497       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
16498 
16499 
16500       XLA_AE_LINES_PKG.ValidateCurrentLine;
16501       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16502 
16506 
16503       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16504                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
16505                ,p_balance_type_code => l_balance_type_code);
16507    END IF;
16508 
16509    -----------------------------------------------------------------------------------------
16510    -- 4262811 Multiperiod Accounting
16511    -----------------------------------------------------------------------------------------
16512      -- No MPA option is assigned.
16513 
16514 
16515 END IF;
16516 END IF;
16517 --
16518 
16519 --
16520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16521    trace
16522       (p_msg      => 'END of AcctLineType_57'
16523       ,p_level    => C_LEVEL_PROCEDURE
16524       ,p_module   => l_log_module);
16525 END IF;
16526 --
16527 EXCEPTION
16528   WHEN xla_exceptions_pkg.application_exception THEN
16529       RAISE;
16530   WHEN OTHERS THEN
16531        xla_exceptions_pkg.raise_message
16532            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_57');
16533 END AcctLineType_57;
16534 --
16535 
16536 ---------------------------------------
16537 --
16538 -- PRIVATE FUNCTION
16539 --         AcctLineType_58
16540 --
16541 ---------------------------------------
16542 PROCEDURE AcctLineType_58 (
16543   p_application_id        IN NUMBER
16544  ,p_event_id              IN NUMBER
16545  ,p_calculate_acctd_flag  IN VARCHAR2
16546  ,p_calculate_g_l_flag    IN VARCHAR2
16547  ,p_actual_flag           IN OUT VARCHAR2
16548  ,p_balance_type_code     OUT VARCHAR2
16549  ,p_gain_or_loss_ref      OUT VARCHAR2
16550  
16551 --Credit Memo Distribution GL Account
16552  , p_source_24            IN NUMBER
16553 --SLA Party Type
16554  , p_source_51            IN VARCHAR2
16555 --Credit Memo Distribution Identifier
16556  , p_source_64            IN NUMBER
16557 --Credit memo distributions type
16558  , p_source_65            IN VARCHAR2
16559 --Credit Memo Currency Code
16560  , p_source_66            IN VARCHAR2
16561 --Credit Memo Exchange Date
16562  , p_source_67            IN DATE
16563 --Credit Memo Exchange Rate
16564  , p_source_68            IN NUMBER
16565 --Credit Memo Exchange Rate Type
16566  , p_source_69            IN VARCHAR2
16567 --Gain Loss Reference
16568  , p_source_70            IN VARCHAR2
16569 --Credit Memo Accounting Amount
16570  , p_source_71            IN NUMBER
16571 --Credit Memo Bill To Customer Account Identifier
16572  , p_source_72            IN NUMBER
16573 --Credit Memo Bill To Customer Site Use Identifier
16574  , p_source_73            IN NUMBER
16575 --Credit Memo Tax Line Identifier
16576  , p_source_74            IN NUMBER
16577 --Credit Memo Distribution Account Class
16578  , p_source_75            IN VARCHAR2
16579 --Credit Memo Distribution Entered Amount
16580  , p_source_76            IN NUMBER
16581 )
16582 IS
16583 
16584 l_component_type              VARCHAR2(80);
16585 l_component_code              VARCHAR2(30);
16586 l_component_type_code         VARCHAR2(1);
16587 l_component_appl_id           INTEGER;
16588 l_amb_context_code            VARCHAR2(30);
16589 l_entity_code                 VARCHAR2(30);
16590 l_event_class_code            VARCHAR2(30);
16591 l_ae_header_id                NUMBER;
16592 l_event_type_code             VARCHAR2(30);
16593 l_line_definition_code        VARCHAR2(30);
16594 l_line_definition_owner_code  VARCHAR2(1);
16595 --
16596 -- adr variables
16597 l_segment                     VARCHAR2(30);
16598 l_ccid                        NUMBER;
16599 l_adr_transaction_coa_id      NUMBER;
16600 l_adr_accounting_coa_id       NUMBER;
16601 l_adr_flexfield_segment_code  VARCHAR2(30);
16602 l_adr_flex_value_set_id       NUMBER;
16603 l_adr_value_type_code         VARCHAR2(30);
16604 l_adr_value_combination_id    NUMBER;
16605 l_adr_value_segment_code      VARCHAR2(30);
16606 
16607 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
16608 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
16609 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
16610 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
16611 
16612 -- 4262811 Variables ------------------------------------------------------------------------------------------
16613 l_entered_amt_idx             NUMBER;
16614 l_accted_amt_idx              NUMBER;
16615 l_acc_rev_flag                VARCHAR2(1);
16616 l_accrual_line_num            NUMBER;
16617 l_tmp_amt                     NUMBER;
16618 l_acc_rev_natural_side_code   VARCHAR2(1);
16619 
16620 l_num_entries                 NUMBER;
16621 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
16622 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
16623 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
16624 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
16625 l_recog_line_1                NUMBER;
16626 l_recog_line_2                NUMBER;
16627 
16628 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
16629 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
16630 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
16631 
16632 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
16633 
16637 ---------------------------------------------------------------------------------------------------------------
16634 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
16635 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
16636 
16638 
16639 
16640 --
16641 -- bulk performance
16642 --
16643 l_balance_type_code           VARCHAR2(1);
16644 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
16645 l_log_module                  VARCHAR2(240);
16646 
16647 --
16648 -- Upgrade strategy
16649 --
16650 l_actual_upg_option           VARCHAR2(1);
16651 l_enc_upg_option           VARCHAR2(1);
16652 
16653 --
16654 BEGIN
16655 --
16656 IF g_log_enabled THEN
16657       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_58';
16658 END IF;
16659 --
16660 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
16661 
16662       trace
16663          (p_msg      => 'BEGIN of AcctLineType_58'
16664          ,p_level    => C_LEVEL_PROCEDURE
16665          ,p_module   => l_log_module);
16666 
16667 END IF;
16668 --
16669 l_component_type             := 'AMB_JLT';
16670 l_component_code             := 'CM_DEFAULT_FREIGHT';
16671 l_component_type_code        := 'S';
16672 l_component_appl_id          :=  222;
16673 l_amb_context_code           := 'DEFAULT';
16674 l_entity_code                := 'TRANSACTIONS';
16675 l_event_class_code           := 'CREDIT_MEMO';
16676 l_event_type_code            := 'CREDIT_MEMO_ALL';
16677 l_line_definition_owner_code := 'S';
16678 l_line_definition_code       := 'AR_CM_DEFAULT_ACCRUAL';
16679 --
16680 l_balance_type_code          := 'A';
16681 l_segment                     := NULL;
16682 l_ccid                        := NULL;
16683 l_adr_transaction_coa_id      := NULL;
16684 l_adr_accounting_coa_id       := NULL;
16685 l_adr_flexfield_segment_code  := NULL;
16686 l_adr_flex_value_set_id       := NULL;
16687 l_adr_value_type_code         := NULL;
16688 l_adr_value_combination_id    := NULL;
16689 l_adr_value_segment_code      := NULL;
16690 
16691 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
16692 l_bflow_class_code           := '';    -- 4219869 Business Flow
16693 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
16694 l_budgetary_control_flag     := 'N';
16695 
16696 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
16697 l_bflow_applied_to_amt       := NULL; -- 5132302
16698 l_entered_amt_idx            := NULL;          -- 4262811
16699 l_accted_amt_idx             := NULL;          -- 4262811
16700 l_acc_rev_flag               := NULL;          -- 4262811
16701 l_accrual_line_num           := NULL;          -- 4262811
16702 l_tmp_amt                    := NULL;          -- 4262811
16703 --
16704  
16705 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
16706     l_balance_type_code <> 'B' THEN
16707 IF NVL(p_source_75,'
16708 ') =  'FREIGHT'
16709  THEN 
16710 
16711    --
16712    XLA_AE_LINES_PKG.SetNewLine;
16713 
16714    p_balance_type_code          := l_balance_type_code;
16715    -- set the flag so later we will know whether the gain loss line needs to be created
16716    
16717    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
16718      p_actual_flag :='A';
16719    END IF;
16720 
16721    --
16722    -- bulk performance
16723    --
16724    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
16725                                       p_header_num   => 0); -- 4262811
16726    --
16727    -- set accounting line options
16728    --
16729    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
16730            p_natural_side_code          => 'C'
16731          , p_gain_or_loss_flag          => 'N'
16732          , p_gl_transfer_mode_code      => 'S'
16733          , p_acct_entry_type_code       => 'A'
16734          , p_switch_side_flag           => 'Y'
16735          , p_merge_duplicate_code       => 'A'
16736          );
16737    --
16738    l_acc_rev_natural_side_code := 'D';  -- 4262811
16739    -- 
16740    --
16741    -- set accounting line type info
16742    --
16743    xla_ae_lines_pkg.SetAcctLineType
16744       (p_component_type             => l_component_type
16745       ,p_event_type_code            => l_event_type_code
16746       ,p_line_definition_owner_code => l_line_definition_owner_code
16747       ,p_line_definition_code       => l_line_definition_code
16748       ,p_accounting_line_code       => l_component_code
16749       ,p_accounting_line_type_code  => l_component_type_code
16750       ,p_accounting_line_appl_id    => l_component_appl_id
16751       ,p_amb_context_code           => l_amb_context_code
16752       ,p_entity_code                => l_entity_code
16753       ,p_event_class_code           => l_event_class_code);
16754    --
16755    -- set accounting class
16756    --
16757    xla_ae_lines_pkg.SetAcctClass(
16758            p_accounting_class_code  => 'FREIGHT'
16759          , p_ae_header_id           => l_ae_header_id
16760          );
16761 
16762    --
16763    -- set rounding class
16764    --
16765    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
16766                       'RECEIVABLE';
16767 
16768    --
16772    -- bulk performance
16769    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
16770    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
16771    --
16773    --
16774    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
16775 
16776    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
16777       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
16778 
16779    -- 4955764
16780    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
16781       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
16782 
16783    -- 4458381 Public Sector Enh
16784    
16785    --
16786    -- set accounting attributes for the line type
16787    --
16788    l_entered_amt_idx := 3;
16789    l_accted_amt_idx  := 9;
16790    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
16791    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
16792    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_64);
16793    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
16794    l_rec_acct_attrs.array_char_value(2)  := p_source_65;
16795    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
16796    l_rec_acct_attrs.array_num_value(3)  := p_source_76;
16797    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
16798    l_rec_acct_attrs.array_char_value(4)  := p_source_66;
16799    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
16800    l_rec_acct_attrs.array_date_value(5)  := p_source_67;
16801    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
16802    l_rec_acct_attrs.array_num_value(6)  := p_source_68;
16803    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
16804    l_rec_acct_attrs.array_char_value(7)  := p_source_69;
16805    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
16806    l_rec_acct_attrs.array_char_value(8)  := p_source_70;
16807    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
16808    l_rec_acct_attrs.array_num_value(9)  := p_source_71;
16809    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
16810    l_rec_acct_attrs.array_num_value(10)  := p_source_72;
16811    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
16812    l_rec_acct_attrs.array_num_value(11)  := p_source_73;
16813    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
16814    l_rec_acct_attrs.array_char_value(12)  := p_source_51;
16815    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
16816    l_rec_acct_attrs.array_num_value(13)  := p_source_74;
16817 
16818    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
16819    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
16820 
16821    ---------------------------------------------------------------------------------------------------------------
16822    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
16823    ---------------------------------------------------------------------------------------------------------------
16824    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
16825 
16826    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16827    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
16828 
16829    IF xla_accounting_cache_pkg.GetValueChar
16830          (p_source_code         => 'LEDGER_CATEGORY_CODE'
16831          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
16832    AND l_bflow_method_code = 'PRIOR_ENTRY'
16833 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
16834    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
16835          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
16836        )
16837    THEN
16838          xla_ae_lines_pkg.BflowUpgEntry
16839            (p_business_method_code    => l_bflow_method_code
16840            ,p_business_class_code     => l_bflow_class_code
16841            ,p_balance_type            => l_balance_type_code);
16842    ELSE
16843       NULL;
16844 -- No business flow processing for business flow method of NONE.
16845    END IF;
16846 
16847    --
16848    -- call analytical criteria
16849    --
16850    
16851    --
16852    -- call description
16853    --
16854    -- No description or it is inherited.
16855    --
16856    -- call ADRs
16857    -- Bug 4922099
16858    --
16859    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16860         (NVL(l_actual_upg_option, 'N') = 'O') OR
16861         (NVL(l_enc_upg_option, 'N') = 'O')
16862       )
16863    THEN
16864    NULL;
16865    --
16866    --
16867    
16868   l_ccid := AcctDerRule_21(
16869            p_application_id           => p_application_id
16870          , p_ae_header_id             => l_ae_header_id 
16871 , p_source_24 => p_source_24
16872          , x_transaction_coa_id       => l_adr_transaction_coa_id
16873          , x_accounting_coa_id        => l_adr_accounting_coa_id
16874          , x_value_type_code          => l_adr_value_type_code
16875          , p_side                     => 'NA'
16876    );
16877 
16881   , p_transaction_coa_id           => l_adr_transaction_coa_id
16878    xla_ae_lines_pkg.set_ccid(
16879     p_code_combination_id          => l_ccid
16880   , p_value_type_code              => l_adr_value_type_code
16882   , p_accounting_coa_id            => l_adr_accounting_coa_id
16883   , p_adr_code                     => 'CM_DIST_CCID'
16884   , p_adr_type_code                => 'S'
16885   , p_component_type               => l_component_type
16886   , p_component_code               => l_component_code
16887   , p_component_type_code          => l_component_type_code
16888   , p_component_appl_id            => l_component_appl_id
16889   , p_amb_context_code             => l_amb_context_code
16890   , p_side                         => 'NA'
16891   );
16892 
16893 
16894    --
16895    --
16896    END IF;
16897    --
16898    -- Bug 4922099
16899    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
16900           (NVL(l_enc_upg_option, 'N') = 'O')
16901         ) AND
16902         (l_bflow_method_code = 'PRIOR_ENTRY')
16903       )
16904    THEN
16905       IF
16906       --
16907       1 = 2
16908       --
16909       THEN
16910       xla_accounting_err_pkg.build_message
16911                                     (p_appli_s_name            => 'XLA'
16912                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16913                                     ,p_token_1                 => 'LINE_NUMBER'
16914                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
16915                                     ,p_token_2                 => 'LINE_TYPE_NAME'
16916                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
16917                                                                              l_component_type
16918                                                                             ,l_component_code
16919                                                                             ,l_component_type_code
16920                                                                             ,l_component_appl_id
16921                                                                             ,l_amb_context_code
16922                                                                             ,l_entity_code
16923                                                                             ,l_event_class_code
16924                                                                            )
16925                                     ,p_token_3                 => 'OWNER'
16926                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
16927                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
16928                                                                           ,p_lookup_code    => l_component_type_code
16929                                                                          )
16930                                     ,p_token_4                 => 'PRODUCT_NAME'
16931                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
16932                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
16933                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
16934                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
16935                                     ,p_ae_header_id            =>  NULL
16936                                        );
16937 
16938         IF (C_LEVEL_ERROR>= g_log_level) THEN
16939                  trace
16940                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
16941                       ,p_level    => C_LEVEL_ERROR
16942                       ,p_module   => l_log_module);
16943         END IF;
16944       END IF;
16945    END IF;
16946    --
16947    --
16948    ------------------------------------------------------------------------------------------------
16949    -- 4219869 Business Flow
16950    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
16951    -- Prior Entry.  Currently, the following code is always generated.
16952    ------------------------------------------------------------------------------------------------
16953    XLA_AE_LINES_PKG.ValidateCurrentLine;
16954 
16955    ------------------------------------------------------------------------------------
16956    -- 4219869 Business Flow
16957    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
16958    ------------------------------------------------------------------------------------
16959    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
16960 
16961    ----------------------------------------------------------------------------------
16962    -- 4219869 Business Flow
16963    -- Update journal entry status -- Need to generate this within IF <condition>
16964    ----------------------------------------------------------------------------------
16965    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
16966          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
16967          ,p_balance_type_code => l_balance_type_code
16968          );
16969 
16970    -------------------------------------------------------------------------------------------
16971    -- 4262811 - Generate the Accrual Reversal lines
16972    -------------------------------------------------------------------------------------------
16976       IF l_acc_rev_flag IS NULL THEN
16973    BEGIN
16974       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
16975                               (g_array_event(p_event_id).array_value_num('header_index'));
16977          l_acc_rev_flag := 'N';
16978       END IF;
16979    EXCEPTION
16980       WHEN OTHERS THEN
16981          l_acc_rev_flag := 'N';
16982    END;
16983    --
16984    IF (l_acc_rev_flag = 'Y') THEN
16985 
16986        -- 4645092  ------------------------------------------------------------------------------
16987        -- To allow MPA report to determine if it should generate report process
16988        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
16989        ------------------------------------------------------------------------------------------
16990 
16991        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
16992        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
16993    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
16994    -- call ADRs
16995    -- Bug 4922099
16996    --
16997    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
16998         (NVL(l_actual_upg_option, 'N') = 'O') OR
16999         (NVL(l_enc_upg_option, 'N') = 'O')
17000       )
17001    THEN
17002    NULL;
17003    --
17004    --
17005    
17006   l_ccid := AcctDerRule_21(
17007            p_application_id           => p_application_id
17008          , p_ae_header_id             => l_ae_header_id 
17009 , p_source_24 => p_source_24
17010          , x_transaction_coa_id       => l_adr_transaction_coa_id
17011          , x_accounting_coa_id        => l_adr_accounting_coa_id
17012          , x_value_type_code          => l_adr_value_type_code
17013          , p_side                     => 'NA'
17014    );
17015 
17016    xla_ae_lines_pkg.set_ccid(
17017     p_code_combination_id          => l_ccid
17018   , p_value_type_code              => l_adr_value_type_code
17019   , p_transaction_coa_id           => l_adr_transaction_coa_id
17020   , p_accounting_coa_id            => l_adr_accounting_coa_id
17021   , p_adr_code                     => 'CM_DIST_CCID'
17022   , p_adr_type_code                => 'S'
17023   , p_component_type               => l_component_type
17024   , p_component_code               => l_component_code
17025   , p_component_type_code          => l_component_type_code
17026   , p_component_appl_id            => l_component_appl_id
17027   , p_amb_context_code             => l_amb_context_code
17028   , p_side                         => 'NA'
17029   );
17030 
17031 
17032    --
17033    --
17034    END IF;
17035 
17036        --
17037        -- Update the line information that should be overwritten
17038        --
17039        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17040                                          p_header_num   => 1);
17041        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17042 
17043        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17044 
17045        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17046           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17047        END IF;
17048 
17049       --
17050       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17051       --
17052       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17053           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17054       ELSE
17055           ---------------------------------------------------------------------------------------------------
17056           -- 4262811a Switch Sign
17057           ---------------------------------------------------------------------------------------------------
17058           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17059           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17060                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17061           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17062                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17063           -- 5132302
17064           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17065                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17066 
17067       END IF;
17068 
17069       -- 4955764
17070       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17071       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17072 
17073 
17074       XLA_AE_LINES_PKG.ValidateCurrentLine;
17075       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17076 
17077       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17078                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17079                ,p_balance_type_code => l_balance_type_code);
17080 
17081    END IF;
17082 
17086      -- No MPA option is assigned.
17083    -----------------------------------------------------------------------------------------
17084    -- 4262811 Multiperiod Accounting
17085    -----------------------------------------------------------------------------------------
17087 
17088 
17089 END IF;
17090 END IF;
17091 --
17092 
17093 --
17094 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17095    trace
17096       (p_msg      => 'END of AcctLineType_58'
17097       ,p_level    => C_LEVEL_PROCEDURE
17098       ,p_module   => l_log_module);
17099 END IF;
17100 --
17101 EXCEPTION
17102   WHEN xla_exceptions_pkg.application_exception THEN
17103       RAISE;
17104   WHEN OTHERS THEN
17105        xla_exceptions_pkg.raise_message
17106            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_58');
17107 END AcctLineType_58;
17108 --
17109 
17110 ---------------------------------------
17111 --
17112 -- PRIVATE FUNCTION
17113 --         AcctLineType_59
17114 --
17115 ---------------------------------------
17116 PROCEDURE AcctLineType_59 (
17117   p_application_id        IN NUMBER
17118  ,p_event_id              IN NUMBER
17119  ,p_calculate_acctd_flag  IN VARCHAR2
17120  ,p_calculate_g_l_flag    IN VARCHAR2
17121  ,p_actual_flag           IN OUT VARCHAR2
17122  ,p_balance_type_code     OUT VARCHAR2
17123  ,p_gain_or_loss_ref      OUT VARCHAR2
17124  
17125 --Credit Memo Distribution GL Account
17126  , p_source_24            IN NUMBER
17127 --SLA Party Type
17128  , p_source_51            IN VARCHAR2
17129 --Credit Memo Distribution Identifier
17130  , p_source_64            IN NUMBER
17131 --Credit memo distributions type
17132  , p_source_65            IN VARCHAR2
17133 --Credit Memo Currency Code
17134  , p_source_66            IN VARCHAR2
17135 --Credit Memo Exchange Date
17136  , p_source_67            IN DATE
17137 --Credit Memo Exchange Rate
17138  , p_source_68            IN NUMBER
17139 --Credit Memo Exchange Rate Type
17140  , p_source_69            IN VARCHAR2
17141 --Gain Loss Reference
17142  , p_source_70            IN VARCHAR2
17143 --Credit Memo Accounting Amount
17144  , p_source_71            IN NUMBER
17145 --Credit Memo Bill To Customer Account Identifier
17146  , p_source_72            IN NUMBER
17147 --Credit Memo Bill To Customer Site Use Identifier
17148  , p_source_73            IN NUMBER
17149 --Credit Memo Tax Line Identifier
17150  , p_source_74            IN NUMBER
17151 --Credit Memo Distribution Account Class
17152  , p_source_75            IN VARCHAR2
17153 --Credit Memo Distribution Entered Amount
17154  , p_source_76            IN NUMBER
17155 )
17156 IS
17157 
17158 l_component_type              VARCHAR2(80);
17159 l_component_code              VARCHAR2(30);
17160 l_component_type_code         VARCHAR2(1);
17161 l_component_appl_id           INTEGER;
17162 l_amb_context_code            VARCHAR2(30);
17163 l_entity_code                 VARCHAR2(30);
17164 l_event_class_code            VARCHAR2(30);
17165 l_ae_header_id                NUMBER;
17166 l_event_type_code             VARCHAR2(30);
17167 l_line_definition_code        VARCHAR2(30);
17168 l_line_definition_owner_code  VARCHAR2(1);
17169 --
17170 -- adr variables
17171 l_segment                     VARCHAR2(30);
17172 l_ccid                        NUMBER;
17173 l_adr_transaction_coa_id      NUMBER;
17174 l_adr_accounting_coa_id       NUMBER;
17175 l_adr_flexfield_segment_code  VARCHAR2(30);
17176 l_adr_flex_value_set_id       NUMBER;
17177 l_adr_value_type_code         VARCHAR2(30);
17178 l_adr_value_combination_id    NUMBER;
17179 l_adr_value_segment_code      VARCHAR2(30);
17180 
17181 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17182 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17183 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17184 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17185 
17186 -- 4262811 Variables ------------------------------------------------------------------------------------------
17187 l_entered_amt_idx             NUMBER;
17188 l_accted_amt_idx              NUMBER;
17189 l_acc_rev_flag                VARCHAR2(1);
17190 l_accrual_line_num            NUMBER;
17191 l_tmp_amt                     NUMBER;
17192 l_acc_rev_natural_side_code   VARCHAR2(1);
17193 
17194 l_num_entries                 NUMBER;
17195 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17196 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17197 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17198 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17199 l_recog_line_1                NUMBER;
17200 l_recog_line_2                NUMBER;
17201 
17202 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17203 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17204 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17205 
17206 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17207 
17208 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17209 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17210 
17211 ---------------------------------------------------------------------------------------------------------------
17212 
17213 
17214 --
17218 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17215 -- bulk performance
17216 --
17217 l_balance_type_code           VARCHAR2(1);
17219 l_log_module                  VARCHAR2(240);
17220 
17221 --
17222 -- Upgrade strategy
17223 --
17224 l_actual_upg_option           VARCHAR2(1);
17225 l_enc_upg_option           VARCHAR2(1);
17226 
17227 --
17228 BEGIN
17229 --
17230 IF g_log_enabled THEN
17231       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_59';
17232 END IF;
17233 --
17234 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17235 
17236       trace
17237          (p_msg      => 'BEGIN of AcctLineType_59'
17238          ,p_level    => C_LEVEL_PROCEDURE
17239          ,p_module   => l_log_module);
17240 
17241 END IF;
17242 --
17243 l_component_type             := 'AMB_JLT';
17244 l_component_code             := 'CM_DEFAULT_REC';
17245 l_component_type_code        := 'S';
17246 l_component_appl_id          :=  222;
17247 l_amb_context_code           := 'DEFAULT';
17248 l_entity_code                := 'TRANSACTIONS';
17249 l_event_class_code           := 'CREDIT_MEMO';
17250 l_event_type_code            := 'CREDIT_MEMO_ALL';
17251 l_line_definition_owner_code := 'S';
17252 l_line_definition_code       := 'AR_CM_DEFAULT_ACCRUAL';
17253 --
17254 l_balance_type_code          := 'A';
17255 l_segment                     := NULL;
17256 l_ccid                        := NULL;
17257 l_adr_transaction_coa_id      := NULL;
17258 l_adr_accounting_coa_id       := NULL;
17259 l_adr_flexfield_segment_code  := NULL;
17260 l_adr_flex_value_set_id       := NULL;
17261 l_adr_value_type_code         := NULL;
17262 l_adr_value_combination_id    := NULL;
17263 l_adr_value_segment_code      := NULL;
17264 
17265 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17266 l_bflow_class_code           := 'RECEIVABLE';    -- 4219869 Business Flow
17267 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17268 l_budgetary_control_flag     := 'N';
17269 
17270 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17271 l_bflow_applied_to_amt       := NULL; -- 5132302
17272 l_entered_amt_idx            := NULL;          -- 4262811
17273 l_accted_amt_idx             := NULL;          -- 4262811
17274 l_acc_rev_flag               := NULL;          -- 4262811
17275 l_accrual_line_num           := NULL;          -- 4262811
17276 l_tmp_amt                    := NULL;          -- 4262811
17277 --
17278  
17279 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17280     l_balance_type_code <> 'B' THEN
17281 IF NVL(p_source_75,'
17282 ') =  'REC'
17283  THEN 
17284 
17285    --
17286    XLA_AE_LINES_PKG.SetNewLine;
17287 
17288    p_balance_type_code          := l_balance_type_code;
17289    -- set the flag so later we will know whether the gain loss line needs to be created
17290    
17291    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17292      p_actual_flag :='A';
17293    END IF;
17294 
17295    --
17296    -- bulk performance
17297    --
17298    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17299                                       p_header_num   => 0); -- 4262811
17300    --
17301    -- set accounting line options
17302    --
17303    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17304            p_natural_side_code          => 'D'
17305          , p_gain_or_loss_flag          => 'N'
17306          , p_gl_transfer_mode_code      => 'S'
17307          , p_acct_entry_type_code       => 'A'
17308          , p_switch_side_flag           => 'Y'
17309          , p_merge_duplicate_code       => 'N'
17310          );
17311    --
17312    l_acc_rev_natural_side_code := 'C';  -- 4262811
17313    -- 
17314    --
17315    -- set accounting line type info
17316    --
17317    xla_ae_lines_pkg.SetAcctLineType
17318       (p_component_type             => l_component_type
17319       ,p_event_type_code            => l_event_type_code
17320       ,p_line_definition_owner_code => l_line_definition_owner_code
17321       ,p_line_definition_code       => l_line_definition_code
17322       ,p_accounting_line_code       => l_component_code
17323       ,p_accounting_line_type_code  => l_component_type_code
17324       ,p_accounting_line_appl_id    => l_component_appl_id
17325       ,p_amb_context_code           => l_amb_context_code
17326       ,p_entity_code                => l_entity_code
17327       ,p_event_class_code           => l_event_class_code);
17328    --
17329    -- set accounting class
17330    --
17331    xla_ae_lines_pkg.SetAcctClass(
17332            p_accounting_class_code  => 'RECEIVABLE'
17333          , p_ae_header_id           => l_ae_header_id
17334          );
17335 
17336    --
17337    -- set rounding class
17338    --
17339    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17340                       'RECEIVABLE';
17341 
17342    --
17343    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17344    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17345    --
17346    -- bulk performance
17347    --
17348    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17349 
17353    -- 4955764
17350    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17351       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17352 
17354    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17355       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17356 
17357    -- 4458381 Public Sector Enh
17358    
17359    --
17360    -- set accounting attributes for the line type
17361    --
17362    l_entered_amt_idx := 3;
17363    l_accted_amt_idx  := 9;
17364    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17365    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17366    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_64);
17367    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17368    l_rec_acct_attrs.array_char_value(2)  := p_source_65;
17369    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17370    l_rec_acct_attrs.array_num_value(3)  := p_source_76;
17371    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17372    l_rec_acct_attrs.array_char_value(4)  := p_source_66;
17373    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17374    l_rec_acct_attrs.array_date_value(5)  := p_source_67;
17375    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17376    l_rec_acct_attrs.array_num_value(6)  := p_source_68;
17377    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17378    l_rec_acct_attrs.array_char_value(7)  := p_source_69;
17379    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
17380    l_rec_acct_attrs.array_char_value(8)  := p_source_70;
17381    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
17382    l_rec_acct_attrs.array_num_value(9)  := p_source_71;
17383    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
17384    l_rec_acct_attrs.array_num_value(10)  := p_source_72;
17385    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
17386    l_rec_acct_attrs.array_num_value(11)  := p_source_73;
17387    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
17388    l_rec_acct_attrs.array_char_value(12)  := p_source_51;
17389    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
17390    l_rec_acct_attrs.array_num_value(13)  := p_source_74;
17391 
17392    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17393    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17394 
17395    ---------------------------------------------------------------------------------------------------------------
17396    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17397    ---------------------------------------------------------------------------------------------------------------
17398    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17399 
17400    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17401    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17402 
17403    IF xla_accounting_cache_pkg.GetValueChar
17404          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17405          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17406    AND l_bflow_method_code = 'PRIOR_ENTRY'
17407 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17408    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17409          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17410        )
17411    THEN
17412          xla_ae_lines_pkg.BflowUpgEntry
17413            (p_business_method_code    => l_bflow_method_code
17414            ,p_business_class_code     => l_bflow_class_code
17415            ,p_balance_type            => l_balance_type_code);
17416    ELSE
17417       NULL;
17418 -- No business flow processing for business flow method of NONE.
17419    END IF;
17420 
17421    --
17422    -- call analytical criteria
17423    --
17424    
17425    --
17426    -- call description
17427    --
17428    -- No description or it is inherited.
17429    --
17430    -- call ADRs
17431    -- Bug 4922099
17432    --
17433    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17434         (NVL(l_actual_upg_option, 'N') = 'O') OR
17435         (NVL(l_enc_upg_option, 'N') = 'O')
17436       )
17437    THEN
17438    NULL;
17439    --
17440    --
17441    
17442   l_ccid := AcctDerRule_21(
17443            p_application_id           => p_application_id
17444          , p_ae_header_id             => l_ae_header_id 
17445 , p_source_24 => p_source_24
17446          , x_transaction_coa_id       => l_adr_transaction_coa_id
17447          , x_accounting_coa_id        => l_adr_accounting_coa_id
17448          , x_value_type_code          => l_adr_value_type_code
17449          , p_side                     => 'NA'
17450    );
17451 
17452    xla_ae_lines_pkg.set_ccid(
17453     p_code_combination_id          => l_ccid
17454   , p_value_type_code              => l_adr_value_type_code
17455   , p_transaction_coa_id           => l_adr_transaction_coa_id
17456   , p_accounting_coa_id            => l_adr_accounting_coa_id
17457   , p_adr_code                     => 'CM_DIST_CCID'
17461   , p_component_type_code          => l_component_type_code
17458   , p_adr_type_code                => 'S'
17459   , p_component_type               => l_component_type
17460   , p_component_code               => l_component_code
17462   , p_component_appl_id            => l_component_appl_id
17463   , p_amb_context_code             => l_amb_context_code
17464   , p_side                         => 'NA'
17465   );
17466 
17467 
17468    --
17469    --
17470    END IF;
17471    --
17472    -- Bug 4922099
17473    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
17474           (NVL(l_enc_upg_option, 'N') = 'O')
17475         ) AND
17476         (l_bflow_method_code = 'PRIOR_ENTRY')
17477       )
17478    THEN
17479       IF
17480       --
17481       1 = 2
17482       --
17483       THEN
17484       xla_accounting_err_pkg.build_message
17485                                     (p_appli_s_name            => 'XLA'
17486                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17487                                     ,p_token_1                 => 'LINE_NUMBER'
17488                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
17489                                     ,p_token_2                 => 'LINE_TYPE_NAME'
17490                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
17491                                                                              l_component_type
17492                                                                             ,l_component_code
17493                                                                             ,l_component_type_code
17494                                                                             ,l_component_appl_id
17495                                                                             ,l_amb_context_code
17496                                                                             ,l_entity_code
17497                                                                             ,l_event_class_code
17498                                                                            )
17499                                     ,p_token_3                 => 'OWNER'
17500                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
17501                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
17502                                                                           ,p_lookup_code    => l_component_type_code
17503                                                                          )
17504                                     ,p_token_4                 => 'PRODUCT_NAME'
17505                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
17506                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
17507                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
17508                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
17509                                     ,p_ae_header_id            =>  NULL
17510                                        );
17511 
17512         IF (C_LEVEL_ERROR>= g_log_level) THEN
17513                  trace
17514                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
17515                       ,p_level    => C_LEVEL_ERROR
17516                       ,p_module   => l_log_module);
17517         END IF;
17518       END IF;
17519    END IF;
17520    --
17521    --
17522    ------------------------------------------------------------------------------------------------
17523    -- 4219869 Business Flow
17524    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
17525    -- Prior Entry.  Currently, the following code is always generated.
17526    ------------------------------------------------------------------------------------------------
17527    XLA_AE_LINES_PKG.ValidateCurrentLine;
17528 
17529    ------------------------------------------------------------------------------------
17530    -- 4219869 Business Flow
17531    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
17532    ------------------------------------------------------------------------------------
17533    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17534 
17535    ----------------------------------------------------------------------------------
17536    -- 4219869 Business Flow
17537    -- Update journal entry status -- Need to generate this within IF <condition>
17538    ----------------------------------------------------------------------------------
17539    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17540          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
17541          ,p_balance_type_code => l_balance_type_code
17542          );
17543 
17544    -------------------------------------------------------------------------------------------
17545    -- 4262811 - Generate the Accrual Reversal lines
17546    -------------------------------------------------------------------------------------------
17547    BEGIN
17548       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
17549                               (g_array_event(p_event_id).array_value_num('header_index'));
17550       IF l_acc_rev_flag IS NULL THEN
17551          l_acc_rev_flag := 'N';
17555          l_acc_rev_flag := 'N';
17552       END IF;
17553    EXCEPTION
17554       WHEN OTHERS THEN
17556    END;
17557    --
17558    IF (l_acc_rev_flag = 'Y') THEN
17559 
17560        -- 4645092  ------------------------------------------------------------------------------
17561        -- To allow MPA report to determine if it should generate report process
17562        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
17563        ------------------------------------------------------------------------------------------
17564 
17565        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
17566        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
17567    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
17568    -- call ADRs
17569    -- Bug 4922099
17570    --
17571    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
17572         (NVL(l_actual_upg_option, 'N') = 'O') OR
17573         (NVL(l_enc_upg_option, 'N') = 'O')
17574       )
17575    THEN
17576    NULL;
17577    --
17578    --
17579    
17580   l_ccid := AcctDerRule_21(
17581            p_application_id           => p_application_id
17582          , p_ae_header_id             => l_ae_header_id 
17583 , p_source_24 => p_source_24
17584          , x_transaction_coa_id       => l_adr_transaction_coa_id
17585          , x_accounting_coa_id        => l_adr_accounting_coa_id
17586          , x_value_type_code          => l_adr_value_type_code
17587          , p_side                     => 'NA'
17588    );
17589 
17590    xla_ae_lines_pkg.set_ccid(
17591     p_code_combination_id          => l_ccid
17592   , p_value_type_code              => l_adr_value_type_code
17593   , p_transaction_coa_id           => l_adr_transaction_coa_id
17594   , p_accounting_coa_id            => l_adr_accounting_coa_id
17595   , p_adr_code                     => 'CM_DIST_CCID'
17596   , p_adr_type_code                => 'S'
17597   , p_component_type               => l_component_type
17598   , p_component_code               => l_component_code
17599   , p_component_type_code          => l_component_type_code
17600   , p_component_appl_id            => l_component_appl_id
17601   , p_amb_context_code             => l_amb_context_code
17602   , p_side                         => 'NA'
17603   );
17604 
17605 
17606    --
17607    --
17608    END IF;
17609 
17610        --
17611        -- Update the line information that should be overwritten
17612        --
17613        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
17614                                          p_header_num   => 1);
17615        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
17616 
17617        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
17618 
17619        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
17620           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
17621        END IF;
17622 
17623       --
17624       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
17625       --
17626       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
17627           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
17628       ELSE
17629           ---------------------------------------------------------------------------------------------------
17630           -- 4262811a Switch Sign
17631           ---------------------------------------------------------------------------------------------------
17632           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
17633           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17634                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17635           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
17636                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17637           -- 5132302
17638           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
17639                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
17640 
17641       END IF;
17642 
17643       -- 4955764
17644       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17645       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
17646 
17647 
17648       XLA_AE_LINES_PKG.ValidateCurrentLine;
17649       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
17650 
17651       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
17652                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
17653                ,p_balance_type_code => l_balance_type_code);
17654 
17655    END IF;
17656 
17657    -----------------------------------------------------------------------------------------
17658    -- 4262811 Multiperiod Accounting
17659    -----------------------------------------------------------------------------------------
17660      -- No MPA option is assigned.
17661 
17662 
17663 END IF;
17664 END IF;
17665 --
17666 
17667 --
17668 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17669    trace
17673 END IF;
17670       (p_msg      => 'END of AcctLineType_59'
17671       ,p_level    => C_LEVEL_PROCEDURE
17672       ,p_module   => l_log_module);
17674 --
17675 EXCEPTION
17676   WHEN xla_exceptions_pkg.application_exception THEN
17677       RAISE;
17678   WHEN OTHERS THEN
17679        xla_exceptions_pkg.raise_message
17680            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_59');
17681 END AcctLineType_59;
17682 --
17683 
17684 ---------------------------------------
17685 --
17686 -- PRIVATE FUNCTION
17687 --         AcctLineType_60
17688 --
17689 ---------------------------------------
17690 PROCEDURE AcctLineType_60 (
17691   p_application_id        IN NUMBER
17692  ,p_event_id              IN NUMBER
17693  ,p_calculate_acctd_flag  IN VARCHAR2
17694  ,p_calculate_g_l_flag    IN VARCHAR2
17695  ,p_actual_flag           IN OUT VARCHAR2
17696  ,p_balance_type_code     OUT VARCHAR2
17697  ,p_gain_or_loss_ref      OUT VARCHAR2
17698  
17699 --Credit Memo Distribution GL Account
17700  , p_source_24            IN NUMBER
17701 --SLA Party Type
17702  , p_source_51            IN VARCHAR2
17703 --Credit Memo Distribution Identifier
17704  , p_source_64            IN NUMBER
17705 --Credit memo distributions type
17706  , p_source_65            IN VARCHAR2
17707 --Credit Memo Currency Code
17708  , p_source_66            IN VARCHAR2
17709 --Credit Memo Exchange Date
17710  , p_source_67            IN DATE
17711 --Credit Memo Exchange Rate
17712  , p_source_68            IN NUMBER
17713 --Credit Memo Exchange Rate Type
17714  , p_source_69            IN VARCHAR2
17715 --Gain Loss Reference
17716  , p_source_70            IN VARCHAR2
17717 --Credit Memo Accounting Amount
17718  , p_source_71            IN NUMBER
17719 --Credit Memo Bill To Customer Account Identifier
17720  , p_source_72            IN NUMBER
17721 --Credit Memo Bill To Customer Site Use Identifier
17722  , p_source_73            IN NUMBER
17723 --Credit Memo Tax Line Identifier
17724  , p_source_74            IN NUMBER
17725 --Credit Memo Distribution Account Class
17726  , p_source_75            IN VARCHAR2
17727 --Credit Memo Distribution Entered Amount
17728  , p_source_76            IN NUMBER
17729 )
17730 IS
17731 
17732 l_component_type              VARCHAR2(80);
17733 l_component_code              VARCHAR2(30);
17734 l_component_type_code         VARCHAR2(1);
17735 l_component_appl_id           INTEGER;
17736 l_amb_context_code            VARCHAR2(30);
17737 l_entity_code                 VARCHAR2(30);
17738 l_event_class_code            VARCHAR2(30);
17739 l_ae_header_id                NUMBER;
17740 l_event_type_code             VARCHAR2(30);
17741 l_line_definition_code        VARCHAR2(30);
17742 l_line_definition_owner_code  VARCHAR2(1);
17743 --
17744 -- adr variables
17745 l_segment                     VARCHAR2(30);
17746 l_ccid                        NUMBER;
17747 l_adr_transaction_coa_id      NUMBER;
17748 l_adr_accounting_coa_id       NUMBER;
17749 l_adr_flexfield_segment_code  VARCHAR2(30);
17750 l_adr_flex_value_set_id       NUMBER;
17751 l_adr_value_type_code         VARCHAR2(30);
17752 l_adr_value_combination_id    NUMBER;
17753 l_adr_value_segment_code      VARCHAR2(30);
17754 
17755 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
17756 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
17757 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
17758 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
17759 
17760 -- 4262811 Variables ------------------------------------------------------------------------------------------
17761 l_entered_amt_idx             NUMBER;
17762 l_accted_amt_idx              NUMBER;
17763 l_acc_rev_flag                VARCHAR2(1);
17764 l_accrual_line_num            NUMBER;
17765 l_tmp_amt                     NUMBER;
17766 l_acc_rev_natural_side_code   VARCHAR2(1);
17767 
17768 l_num_entries                 NUMBER;
17769 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
17770 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
17771 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
17772 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
17773 l_recog_line_1                NUMBER;
17774 l_recog_line_2                NUMBER;
17775 
17776 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
17777 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
17778 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
17779 
17780 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
17781 
17782 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
17783 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
17784 
17785 ---------------------------------------------------------------------------------------------------------------
17786 
17787 
17788 --
17789 -- bulk performance
17790 --
17791 l_balance_type_code           VARCHAR2(1);
17792 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
17793 l_log_module                  VARCHAR2(240);
17794 
17795 --
17796 -- Upgrade strategy
17797 --
17798 l_actual_upg_option           VARCHAR2(1);
17799 l_enc_upg_option           VARCHAR2(1);
17800 
17801 --
17802 BEGIN
17803 --
17804 IF g_log_enabled THEN
17808 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
17805       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_60';
17806 END IF;
17807 --
17809 
17810       trace
17811          (p_msg      => 'BEGIN of AcctLineType_60'
17812          ,p_level    => C_LEVEL_PROCEDURE
17813          ,p_module   => l_log_module);
17814 
17815 END IF;
17816 --
17817 l_component_type             := 'AMB_JLT';
17818 l_component_code             := 'CM_DEFAULT_REV';
17819 l_component_type_code        := 'S';
17820 l_component_appl_id          :=  222;
17821 l_amb_context_code           := 'DEFAULT';
17822 l_entity_code                := 'TRANSACTIONS';
17823 l_event_class_code           := 'CREDIT_MEMO';
17824 l_event_type_code            := 'CREDIT_MEMO_ALL';
17825 l_line_definition_owner_code := 'S';
17826 l_line_definition_code       := 'AR_CM_DEFAULT_ACCRUAL';
17827 --
17828 l_balance_type_code          := 'A';
17829 l_segment                     := NULL;
17830 l_ccid                        := NULL;
17831 l_adr_transaction_coa_id      := NULL;
17832 l_adr_accounting_coa_id       := NULL;
17833 l_adr_flexfield_segment_code  := NULL;
17834 l_adr_flex_value_set_id       := NULL;
17835 l_adr_value_type_code         := NULL;
17836 l_adr_value_combination_id    := NULL;
17837 l_adr_value_segment_code      := NULL;
17838 
17839 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
17840 l_bflow_class_code           := '';    -- 4219869 Business Flow
17841 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
17842 l_budgetary_control_flag     := 'N';
17843 
17844 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
17845 l_bflow_applied_to_amt       := NULL; -- 5132302
17846 l_entered_amt_idx            := NULL;          -- 4262811
17847 l_accted_amt_idx             := NULL;          -- 4262811
17848 l_acc_rev_flag               := NULL;          -- 4262811
17849 l_accrual_line_num           := NULL;          -- 4262811
17850 l_tmp_amt                    := NULL;          -- 4262811
17851 --
17852  
17853 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
17854     l_balance_type_code <> 'B' THEN
17855 IF NVL(p_source_75,'
17856 ') =  'REV'
17857  THEN 
17858 
17859    --
17860    XLA_AE_LINES_PKG.SetNewLine;
17861 
17862    p_balance_type_code          := l_balance_type_code;
17863    -- set the flag so later we will know whether the gain loss line needs to be created
17864    
17865    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
17866      p_actual_flag :='A';
17867    END IF;
17868 
17869    --
17870    -- bulk performance
17871    --
17872    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
17873                                       p_header_num   => 0); -- 4262811
17874    --
17875    -- set accounting line options
17876    --
17877    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
17878            p_natural_side_code          => 'C'
17879          , p_gain_or_loss_flag          => 'N'
17880          , p_gl_transfer_mode_code      => 'S'
17881          , p_acct_entry_type_code       => 'A'
17882          , p_switch_side_flag           => 'Y'
17883          , p_merge_duplicate_code       => 'A'
17884          );
17885    --
17886    l_acc_rev_natural_side_code := 'D';  -- 4262811
17887    -- 
17888    --
17889    -- set accounting line type info
17890    --
17891    xla_ae_lines_pkg.SetAcctLineType
17892       (p_component_type             => l_component_type
17893       ,p_event_type_code            => l_event_type_code
17894       ,p_line_definition_owner_code => l_line_definition_owner_code
17895       ,p_line_definition_code       => l_line_definition_code
17896       ,p_accounting_line_code       => l_component_code
17897       ,p_accounting_line_type_code  => l_component_type_code
17898       ,p_accounting_line_appl_id    => l_component_appl_id
17899       ,p_amb_context_code           => l_amb_context_code
17900       ,p_entity_code                => l_entity_code
17901       ,p_event_class_code           => l_event_class_code);
17902    --
17903    -- set accounting class
17904    --
17905    xla_ae_lines_pkg.SetAcctClass(
17906            p_accounting_class_code  => 'REVENUE'
17907          , p_ae_header_id           => l_ae_header_id
17908          );
17909 
17910    --
17911    -- set rounding class
17912    --
17913    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
17914                       'RECEIVABLE';
17915 
17916    --
17917    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
17918    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
17919    --
17920    -- bulk performance
17921    --
17922    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
17923 
17924    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
17925       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
17926 
17927    -- 4955764
17928    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
17929       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
17930 
17931    -- 4458381 Public Sector Enh
17932    
17933    --
17934    -- set accounting attributes for the line type
17935    --
17939    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
17936    l_entered_amt_idx := 3;
17937    l_accted_amt_idx  := 9;
17938    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
17940    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_64);
17941    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
17942    l_rec_acct_attrs.array_char_value(2)  := p_source_65;
17943    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
17944    l_rec_acct_attrs.array_num_value(3)  := p_source_76;
17945    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
17946    l_rec_acct_attrs.array_char_value(4)  := p_source_66;
17947    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
17948    l_rec_acct_attrs.array_date_value(5)  := p_source_67;
17949    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
17950    l_rec_acct_attrs.array_num_value(6)  := p_source_68;
17951    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
17952    l_rec_acct_attrs.array_char_value(7)  := p_source_69;
17953    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
17954    l_rec_acct_attrs.array_char_value(8)  := p_source_70;
17955    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
17956    l_rec_acct_attrs.array_num_value(9)  := p_source_71;
17957    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
17958    l_rec_acct_attrs.array_num_value(10)  := p_source_72;
17959    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
17960    l_rec_acct_attrs.array_num_value(11)  := p_source_73;
17961    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
17962    l_rec_acct_attrs.array_char_value(12)  := p_source_51;
17963    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
17964    l_rec_acct_attrs.array_num_value(13)  := p_source_74;
17965 
17966    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
17967    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
17968 
17969    ---------------------------------------------------------------------------------------------------------------
17970    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
17971    ---------------------------------------------------------------------------------------------------------------
17972    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
17973 
17974    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17975    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
17976 
17977    IF xla_accounting_cache_pkg.GetValueChar
17978          (p_source_code         => 'LEDGER_CATEGORY_CODE'
17979          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
17980    AND l_bflow_method_code = 'PRIOR_ENTRY'
17981 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
17982    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
17983          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
17984        )
17985    THEN
17986          xla_ae_lines_pkg.BflowUpgEntry
17987            (p_business_method_code    => l_bflow_method_code
17988            ,p_business_class_code     => l_bflow_class_code
17989            ,p_balance_type            => l_balance_type_code);
17990    ELSE
17991       NULL;
17992 -- No business flow processing for business flow method of NONE.
17993    END IF;
17994 
17995    --
17996    -- call analytical criteria
17997    --
17998    
17999    --
18000    -- call description
18001    --
18002    -- No description or it is inherited.
18003    --
18004    -- call ADRs
18005    -- Bug 4922099
18006    --
18007    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18008         (NVL(l_actual_upg_option, 'N') = 'O') OR
18009         (NVL(l_enc_upg_option, 'N') = 'O')
18010       )
18011    THEN
18012    NULL;
18013    --
18014    --
18015    
18016   l_ccid := AcctDerRule_21(
18017            p_application_id           => p_application_id
18018          , p_ae_header_id             => l_ae_header_id 
18019 , p_source_24 => p_source_24
18020          , x_transaction_coa_id       => l_adr_transaction_coa_id
18021          , x_accounting_coa_id        => l_adr_accounting_coa_id
18022          , x_value_type_code          => l_adr_value_type_code
18023          , p_side                     => 'NA'
18024    );
18025 
18026    xla_ae_lines_pkg.set_ccid(
18027     p_code_combination_id          => l_ccid
18028   , p_value_type_code              => l_adr_value_type_code
18029   , p_transaction_coa_id           => l_adr_transaction_coa_id
18030   , p_accounting_coa_id            => l_adr_accounting_coa_id
18031   , p_adr_code                     => 'CM_DIST_CCID'
18032   , p_adr_type_code                => 'S'
18033   , p_component_type               => l_component_type
18034   , p_component_code               => l_component_code
18035   , p_component_type_code          => l_component_type_code
18036   , p_component_appl_id            => l_component_appl_id
18037   , p_amb_context_code             => l_amb_context_code
18038   , p_side                         => 'NA'
18039   );
18040 
18041 
18042    --
18043    --
18044    END IF;
18045    --
18049         ) AND
18046    -- Bug 4922099
18047    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18048           (NVL(l_enc_upg_option, 'N') = 'O')
18050         (l_bflow_method_code = 'PRIOR_ENTRY')
18051       )
18052    THEN
18053       IF
18054       --
18055       1 = 2
18056       --
18057       THEN
18058       xla_accounting_err_pkg.build_message
18059                                     (p_appli_s_name            => 'XLA'
18060                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18061                                     ,p_token_1                 => 'LINE_NUMBER'
18062                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18063                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18064                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18065                                                                              l_component_type
18066                                                                             ,l_component_code
18067                                                                             ,l_component_type_code
18068                                                                             ,l_component_appl_id
18069                                                                             ,l_amb_context_code
18070                                                                             ,l_entity_code
18071                                                                             ,l_event_class_code
18072                                                                            )
18073                                     ,p_token_3                 => 'OWNER'
18074                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18075                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18076                                                                           ,p_lookup_code    => l_component_type_code
18077                                                                          )
18078                                     ,p_token_4                 => 'PRODUCT_NAME'
18079                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18080                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18081                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18082                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18083                                     ,p_ae_header_id            =>  NULL
18084                                        );
18085 
18086         IF (C_LEVEL_ERROR>= g_log_level) THEN
18087                  trace
18088                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18089                       ,p_level    => C_LEVEL_ERROR
18090                       ,p_module   => l_log_module);
18091         END IF;
18092       END IF;
18093    END IF;
18094    --
18095    --
18096    ------------------------------------------------------------------------------------------------
18097    -- 4219869 Business Flow
18098    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18099    -- Prior Entry.  Currently, the following code is always generated.
18100    ------------------------------------------------------------------------------------------------
18101    XLA_AE_LINES_PKG.ValidateCurrentLine;
18102 
18103    ------------------------------------------------------------------------------------
18104    -- 4219869 Business Flow
18105    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18106    ------------------------------------------------------------------------------------
18107    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18108 
18109    ----------------------------------------------------------------------------------
18110    -- 4219869 Business Flow
18111    -- Update journal entry status -- Need to generate this within IF <condition>
18112    ----------------------------------------------------------------------------------
18113    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18114          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18115          ,p_balance_type_code => l_balance_type_code
18116          );
18117 
18118    -------------------------------------------------------------------------------------------
18119    -- 4262811 - Generate the Accrual Reversal lines
18120    -------------------------------------------------------------------------------------------
18121    BEGIN
18122       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18123                               (g_array_event(p_event_id).array_value_num('header_index'));
18124       IF l_acc_rev_flag IS NULL THEN
18125          l_acc_rev_flag := 'N';
18126       END IF;
18127    EXCEPTION
18128       WHEN OTHERS THEN
18129          l_acc_rev_flag := 'N';
18130    END;
18131    --
18132    IF (l_acc_rev_flag = 'Y') THEN
18133 
18134        -- 4645092  ------------------------------------------------------------------------------
18135        -- To allow MPA report to determine if it should generate report process
18136        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18140        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18137        ------------------------------------------------------------------------------------------
18138 
18139        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18141    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
18142    -- call ADRs
18143    -- Bug 4922099
18144    --
18145    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18146         (NVL(l_actual_upg_option, 'N') = 'O') OR
18147         (NVL(l_enc_upg_option, 'N') = 'O')
18148       )
18149    THEN
18150    NULL;
18151    --
18152    --
18153    
18154   l_ccid := AcctDerRule_21(
18155            p_application_id           => p_application_id
18156          , p_ae_header_id             => l_ae_header_id 
18157 , p_source_24 => p_source_24
18158          , x_transaction_coa_id       => l_adr_transaction_coa_id
18159          , x_accounting_coa_id        => l_adr_accounting_coa_id
18160          , x_value_type_code          => l_adr_value_type_code
18161          , p_side                     => 'NA'
18162    );
18163 
18164    xla_ae_lines_pkg.set_ccid(
18165     p_code_combination_id          => l_ccid
18166   , p_value_type_code              => l_adr_value_type_code
18167   , p_transaction_coa_id           => l_adr_transaction_coa_id
18168   , p_accounting_coa_id            => l_adr_accounting_coa_id
18169   , p_adr_code                     => 'CM_DIST_CCID'
18170   , p_adr_type_code                => 'S'
18171   , p_component_type               => l_component_type
18172   , p_component_code               => l_component_code
18173   , p_component_type_code          => l_component_type_code
18174   , p_component_appl_id            => l_component_appl_id
18175   , p_amb_context_code             => l_amb_context_code
18176   , p_side                         => 'NA'
18177   );
18178 
18179 
18180    --
18181    --
18182    END IF;
18183 
18184        --
18185        -- Update the line information that should be overwritten
18186        --
18187        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18188                                          p_header_num   => 1);
18189        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18190 
18191        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18192 
18193        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18194           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18195        END IF;
18196 
18197       --
18198       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18199       --
18200       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18201           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18202       ELSE
18203           ---------------------------------------------------------------------------------------------------
18204           -- 4262811a Switch Sign
18205           ---------------------------------------------------------------------------------------------------
18206           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18207           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18208                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18209           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18210                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18211           -- 5132302
18212           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18213                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18214 
18215       END IF;
18216 
18217       -- 4955764
18218       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18219       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18220 
18221 
18222       XLA_AE_LINES_PKG.ValidateCurrentLine;
18223       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18224 
18225       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18226                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18227                ,p_balance_type_code => l_balance_type_code);
18228 
18229    END IF;
18230 
18231    -----------------------------------------------------------------------------------------
18232    -- 4262811 Multiperiod Accounting
18233    -----------------------------------------------------------------------------------------
18234      -- No MPA option is assigned.
18235 
18236 
18237 END IF;
18238 END IF;
18239 --
18240 
18241 --
18242 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18243    trace
18244       (p_msg      => 'END of AcctLineType_60'
18245       ,p_level    => C_LEVEL_PROCEDURE
18246       ,p_module   => l_log_module);
18247 END IF;
18248 --
18249 EXCEPTION
18250   WHEN xla_exceptions_pkg.application_exception THEN
18251       RAISE;
18252   WHEN OTHERS THEN
18253        xla_exceptions_pkg.raise_message
18257 
18254            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_60');
18255 END AcctLineType_60;
18256 --
18258 ---------------------------------------
18259 --
18260 -- PRIVATE FUNCTION
18261 --         AcctLineType_61
18262 --
18263 ---------------------------------------
18264 PROCEDURE AcctLineType_61 (
18265   p_application_id        IN NUMBER
18266  ,p_event_id              IN NUMBER
18267  ,p_calculate_acctd_flag  IN VARCHAR2
18268  ,p_calculate_g_l_flag    IN VARCHAR2
18269  ,p_actual_flag           IN OUT VARCHAR2
18270  ,p_balance_type_code     OUT VARCHAR2
18271  ,p_gain_or_loss_ref      OUT VARCHAR2
18272  
18273 --Credit Memo Distribution GL Account
18274  , p_source_24            IN NUMBER
18275 --SLA Party Type
18276  , p_source_51            IN VARCHAR2
18277 --Credit Memo Distribution Identifier
18278  , p_source_64            IN NUMBER
18279 --Credit memo distributions type
18280  , p_source_65            IN VARCHAR2
18281 --Credit Memo Currency Code
18282  , p_source_66            IN VARCHAR2
18283 --Credit Memo Exchange Date
18284  , p_source_67            IN DATE
18285 --Credit Memo Exchange Rate
18286  , p_source_68            IN NUMBER
18287 --Credit Memo Exchange Rate Type
18288  , p_source_69            IN VARCHAR2
18289 --Gain Loss Reference
18290  , p_source_70            IN VARCHAR2
18291 --Credit Memo Accounting Amount
18292  , p_source_71            IN NUMBER
18293 --Credit Memo Bill To Customer Account Identifier
18294  , p_source_72            IN NUMBER
18295 --Credit Memo Bill To Customer Site Use Identifier
18296  , p_source_73            IN NUMBER
18297 --Credit Memo Tax Line Identifier
18298  , p_source_74            IN NUMBER
18299 --Credit Memo Distribution Account Class
18300  , p_source_75            IN VARCHAR2
18301 --Credit Memo Distribution Entered Amount
18302  , p_source_76            IN NUMBER
18303 )
18304 IS
18305 
18306 l_component_type              VARCHAR2(80);
18307 l_component_code              VARCHAR2(30);
18308 l_component_type_code         VARCHAR2(1);
18309 l_component_appl_id           INTEGER;
18310 l_amb_context_code            VARCHAR2(30);
18311 l_entity_code                 VARCHAR2(30);
18312 l_event_class_code            VARCHAR2(30);
18313 l_ae_header_id                NUMBER;
18314 l_event_type_code             VARCHAR2(30);
18315 l_line_definition_code        VARCHAR2(30);
18316 l_line_definition_owner_code  VARCHAR2(1);
18317 --
18318 -- adr variables
18319 l_segment                     VARCHAR2(30);
18320 l_ccid                        NUMBER;
18321 l_adr_transaction_coa_id      NUMBER;
18322 l_adr_accounting_coa_id       NUMBER;
18323 l_adr_flexfield_segment_code  VARCHAR2(30);
18324 l_adr_flex_value_set_id       NUMBER;
18325 l_adr_value_type_code         VARCHAR2(30);
18326 l_adr_value_combination_id    NUMBER;
18327 l_adr_value_segment_code      VARCHAR2(30);
18328 
18329 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18330 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18331 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18332 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18333 
18334 -- 4262811 Variables ------------------------------------------------------------------------------------------
18335 l_entered_amt_idx             NUMBER;
18336 l_accted_amt_idx              NUMBER;
18337 l_acc_rev_flag                VARCHAR2(1);
18338 l_accrual_line_num            NUMBER;
18339 l_tmp_amt                     NUMBER;
18340 l_acc_rev_natural_side_code   VARCHAR2(1);
18341 
18342 l_num_entries                 NUMBER;
18343 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18344 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18345 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18346 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18347 l_recog_line_1                NUMBER;
18348 l_recog_line_2                NUMBER;
18349 
18350 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18351 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18352 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18353 
18354 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18355 
18356 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18357 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18358 
18359 ---------------------------------------------------------------------------------------------------------------
18360 
18361 
18362 --
18363 -- bulk performance
18364 --
18365 l_balance_type_code           VARCHAR2(1);
18366 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18367 l_log_module                  VARCHAR2(240);
18368 
18369 --
18370 -- Upgrade strategy
18371 --
18372 l_actual_upg_option           VARCHAR2(1);
18373 l_enc_upg_option           VARCHAR2(1);
18374 
18375 --
18376 BEGIN
18377 --
18378 IF g_log_enabled THEN
18379       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_61';
18380 END IF;
18381 --
18382 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18383 
18384       trace
18385          (p_msg      => 'BEGIN of AcctLineType_61'
18386          ,p_level    => C_LEVEL_PROCEDURE
18390 --
18387          ,p_module   => l_log_module);
18388 
18389 END IF;
18391 l_component_type             := 'AMB_JLT';
18392 l_component_code             := 'CM_DEFAULT_SUSPENSE';
18393 l_component_type_code        := 'S';
18394 l_component_appl_id          :=  222;
18395 l_amb_context_code           := 'DEFAULT';
18396 l_entity_code                := 'TRANSACTIONS';
18397 l_event_class_code           := 'CREDIT_MEMO';
18398 l_event_type_code            := 'CREDIT_MEMO_ALL';
18399 l_line_definition_owner_code := 'S';
18400 l_line_definition_code       := 'AR_CM_DEFAULT_ACCRUAL';
18401 --
18402 l_balance_type_code          := 'A';
18403 l_segment                     := NULL;
18404 l_ccid                        := NULL;
18405 l_adr_transaction_coa_id      := NULL;
18406 l_adr_accounting_coa_id       := NULL;
18407 l_adr_flexfield_segment_code  := NULL;
18408 l_adr_flex_value_set_id       := NULL;
18409 l_adr_value_type_code         := NULL;
18410 l_adr_value_combination_id    := NULL;
18411 l_adr_value_segment_code      := NULL;
18412 
18413 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18414 l_bflow_class_code           := '';    -- 4219869 Business Flow
18415 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18416 l_budgetary_control_flag     := 'N';
18417 
18418 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18419 l_bflow_applied_to_amt       := NULL; -- 5132302
18420 l_entered_amt_idx            := NULL;          -- 4262811
18421 l_accted_amt_idx             := NULL;          -- 4262811
18422 l_acc_rev_flag               := NULL;          -- 4262811
18423 l_accrual_line_num           := NULL;          -- 4262811
18424 l_tmp_amt                    := NULL;          -- 4262811
18425 --
18426  
18427 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
18428     l_balance_type_code <> 'B' THEN
18429 IF NVL(p_source_75,'
18430 ') =  'SUSPENSE'
18431  THEN 
18432 
18433    --
18434    XLA_AE_LINES_PKG.SetNewLine;
18435 
18436    p_balance_type_code          := l_balance_type_code;
18437    -- set the flag so later we will know whether the gain loss line needs to be created
18438    
18439    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
18440      p_actual_flag :='A';
18441    END IF;
18442 
18443    --
18444    -- bulk performance
18445    --
18446    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
18447                                       p_header_num   => 0); -- 4262811
18448    --
18449    -- set accounting line options
18450    --
18451    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
18452            p_natural_side_code          => 'C'
18453          , p_gain_or_loss_flag          => 'N'
18454          , p_gl_transfer_mode_code      => 'S'
18455          , p_acct_entry_type_code       => 'A'
18456          , p_switch_side_flag           => 'Y'
18457          , p_merge_duplicate_code       => 'A'
18458          );
18459    --
18460    l_acc_rev_natural_side_code := 'D';  -- 4262811
18461    -- 
18462    --
18463    -- set accounting line type info
18464    --
18465    xla_ae_lines_pkg.SetAcctLineType
18466       (p_component_type             => l_component_type
18467       ,p_event_type_code            => l_event_type_code
18468       ,p_line_definition_owner_code => l_line_definition_owner_code
18469       ,p_line_definition_code       => l_line_definition_code
18470       ,p_accounting_line_code       => l_component_code
18471       ,p_accounting_line_type_code  => l_component_type_code
18472       ,p_accounting_line_appl_id    => l_component_appl_id
18473       ,p_amb_context_code           => l_amb_context_code
18474       ,p_entity_code                => l_entity_code
18475       ,p_event_class_code           => l_event_class_code);
18476    --
18477    -- set accounting class
18478    --
18479    xla_ae_lines_pkg.SetAcctClass(
18480            p_accounting_class_code  => 'SUSPENSE'
18481          , p_ae_header_id           => l_ae_header_id
18482          );
18483 
18484    --
18485    -- set rounding class
18486    --
18487    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
18488                       'RECEIVABLE';
18489 
18490    --
18491    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
18492    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
18493    --
18494    -- bulk performance
18495    --
18496    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
18497 
18498    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
18499       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
18500 
18501    -- 4955764
18502    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18503       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
18504 
18505    -- 4458381 Public Sector Enh
18506    
18507    --
18508    -- set accounting attributes for the line type
18509    --
18510    l_entered_amt_idx := 3;
18511    l_accted_amt_idx  := 9;
18512    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
18513    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
18514    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_64);
18518    l_rec_acct_attrs.array_num_value(3)  := p_source_76;
18515    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
18516    l_rec_acct_attrs.array_char_value(2)  := p_source_65;
18517    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
18519    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
18520    l_rec_acct_attrs.array_char_value(4)  := p_source_66;
18521    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
18522    l_rec_acct_attrs.array_date_value(5)  := p_source_67;
18523    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
18524    l_rec_acct_attrs.array_num_value(6)  := p_source_68;
18525    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
18526    l_rec_acct_attrs.array_char_value(7)  := p_source_69;
18527    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
18528    l_rec_acct_attrs.array_char_value(8)  := p_source_70;
18529    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
18530    l_rec_acct_attrs.array_num_value(9)  := p_source_71;
18531    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
18532    l_rec_acct_attrs.array_num_value(10)  := p_source_72;
18533    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
18534    l_rec_acct_attrs.array_num_value(11)  := p_source_73;
18535    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
18536    l_rec_acct_attrs.array_char_value(12)  := p_source_51;
18537    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
18538    l_rec_acct_attrs.array_num_value(13)  := p_source_74;
18539 
18540    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
18541    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
18542 
18543    ---------------------------------------------------------------------------------------------------------------
18544    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
18545    ---------------------------------------------------------------------------------------------------------------
18546    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
18547 
18548    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18549    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
18550 
18551    IF xla_accounting_cache_pkg.GetValueChar
18552          (p_source_code         => 'LEDGER_CATEGORY_CODE'
18553          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
18554    AND l_bflow_method_code = 'PRIOR_ENTRY'
18555 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
18556    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
18557          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
18558        )
18559    THEN
18560          xla_ae_lines_pkg.BflowUpgEntry
18561            (p_business_method_code    => l_bflow_method_code
18562            ,p_business_class_code     => l_bflow_class_code
18563            ,p_balance_type            => l_balance_type_code);
18564    ELSE
18565       NULL;
18566 -- No business flow processing for business flow method of NONE.
18567    END IF;
18568 
18569    --
18570    -- call analytical criteria
18571    --
18572    
18573    --
18574    -- call description
18575    --
18576    -- No description or it is inherited.
18577    --
18578    -- call ADRs
18579    -- Bug 4922099
18580    --
18581    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18582         (NVL(l_actual_upg_option, 'N') = 'O') OR
18583         (NVL(l_enc_upg_option, 'N') = 'O')
18584       )
18585    THEN
18586    NULL;
18587    --
18588    --
18589    
18590   l_ccid := AcctDerRule_21(
18591            p_application_id           => p_application_id
18592          , p_ae_header_id             => l_ae_header_id 
18593 , p_source_24 => p_source_24
18594          , x_transaction_coa_id       => l_adr_transaction_coa_id
18595          , x_accounting_coa_id        => l_adr_accounting_coa_id
18596          , x_value_type_code          => l_adr_value_type_code
18597          , p_side                     => 'NA'
18598    );
18599 
18600    xla_ae_lines_pkg.set_ccid(
18601     p_code_combination_id          => l_ccid
18602   , p_value_type_code              => l_adr_value_type_code
18603   , p_transaction_coa_id           => l_adr_transaction_coa_id
18604   , p_accounting_coa_id            => l_adr_accounting_coa_id
18605   , p_adr_code                     => 'CM_DIST_CCID'
18606   , p_adr_type_code                => 'S'
18607   , p_component_type               => l_component_type
18608   , p_component_code               => l_component_code
18609   , p_component_type_code          => l_component_type_code
18610   , p_component_appl_id            => l_component_appl_id
18611   , p_amb_context_code             => l_amb_context_code
18612   , p_side                         => 'NA'
18613   );
18614 
18615 
18616    --
18617    --
18618    END IF;
18619    --
18620    -- Bug 4922099
18621    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
18622           (NVL(l_enc_upg_option, 'N') = 'O')
18623         ) AND
18624         (l_bflow_method_code = 'PRIOR_ENTRY')
18625       )
18626    THEN
18627       IF
18628       --
18629       1 = 2
18630       --
18631       THEN
18632       xla_accounting_err_pkg.build_message
18636                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
18633                                     (p_appli_s_name            => 'XLA'
18634                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18635                                     ,p_token_1                 => 'LINE_NUMBER'
18637                                     ,p_token_2                 => 'LINE_TYPE_NAME'
18638                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
18639                                                                              l_component_type
18640                                                                             ,l_component_code
18641                                                                             ,l_component_type_code
18642                                                                             ,l_component_appl_id
18643                                                                             ,l_amb_context_code
18644                                                                             ,l_entity_code
18645                                                                             ,l_event_class_code
18646                                                                            )
18647                                     ,p_token_3                 => 'OWNER'
18648                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
18649                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
18650                                                                           ,p_lookup_code    => l_component_type_code
18651                                                                          )
18652                                     ,p_token_4                 => 'PRODUCT_NAME'
18653                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
18654                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
18655                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
18656                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
18657                                     ,p_ae_header_id            =>  NULL
18658                                        );
18659 
18660         IF (C_LEVEL_ERROR>= g_log_level) THEN
18661                  trace
18662                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
18663                       ,p_level    => C_LEVEL_ERROR
18664                       ,p_module   => l_log_module);
18665         END IF;
18666       END IF;
18667    END IF;
18668    --
18669    --
18670    ------------------------------------------------------------------------------------------------
18671    -- 4219869 Business Flow
18672    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
18673    -- Prior Entry.  Currently, the following code is always generated.
18674    ------------------------------------------------------------------------------------------------
18675    XLA_AE_LINES_PKG.ValidateCurrentLine;
18676 
18677    ------------------------------------------------------------------------------------
18678    -- 4219869 Business Flow
18679    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
18680    ------------------------------------------------------------------------------------
18681    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18682 
18683    ----------------------------------------------------------------------------------
18684    -- 4219869 Business Flow
18685    -- Update journal entry status -- Need to generate this within IF <condition>
18686    ----------------------------------------------------------------------------------
18687    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18688          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
18689          ,p_balance_type_code => l_balance_type_code
18690          );
18691 
18692    -------------------------------------------------------------------------------------------
18693    -- 4262811 - Generate the Accrual Reversal lines
18694    -------------------------------------------------------------------------------------------
18695    BEGIN
18696       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
18697                               (g_array_event(p_event_id).array_value_num('header_index'));
18698       IF l_acc_rev_flag IS NULL THEN
18699          l_acc_rev_flag := 'N';
18700       END IF;
18701    EXCEPTION
18702       WHEN OTHERS THEN
18703          l_acc_rev_flag := 'N';
18704    END;
18705    --
18706    IF (l_acc_rev_flag = 'Y') THEN
18707 
18708        -- 4645092  ------------------------------------------------------------------------------
18709        -- To allow MPA report to determine if it should generate report process
18710        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
18711        ------------------------------------------------------------------------------------------
18712 
18713        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
18714        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
18715    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
18716    -- call ADRs
18717    -- Bug 4922099
18718    --
18719    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
18723    THEN
18720         (NVL(l_actual_upg_option, 'N') = 'O') OR
18721         (NVL(l_enc_upg_option, 'N') = 'O')
18722       )
18724    NULL;
18725    --
18726    --
18727    
18728   l_ccid := AcctDerRule_21(
18729            p_application_id           => p_application_id
18730          , p_ae_header_id             => l_ae_header_id 
18731 , p_source_24 => p_source_24
18732          , x_transaction_coa_id       => l_adr_transaction_coa_id
18733          , x_accounting_coa_id        => l_adr_accounting_coa_id
18734          , x_value_type_code          => l_adr_value_type_code
18735          , p_side                     => 'NA'
18736    );
18737 
18738    xla_ae_lines_pkg.set_ccid(
18739     p_code_combination_id          => l_ccid
18740   , p_value_type_code              => l_adr_value_type_code
18741   , p_transaction_coa_id           => l_adr_transaction_coa_id
18742   , p_accounting_coa_id            => l_adr_accounting_coa_id
18743   , p_adr_code                     => 'CM_DIST_CCID'
18744   , p_adr_type_code                => 'S'
18745   , p_component_type               => l_component_type
18746   , p_component_code               => l_component_code
18747   , p_component_type_code          => l_component_type_code
18748   , p_component_appl_id            => l_component_appl_id
18749   , p_amb_context_code             => l_amb_context_code
18750   , p_side                         => 'NA'
18751   );
18752 
18753 
18754    --
18755    --
18756    END IF;
18757 
18758        --
18759        -- Update the line information that should be overwritten
18760        --
18761        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
18762                                          p_header_num   => 1);
18763        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
18764 
18765        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
18766 
18767        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
18768           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
18769        END IF;
18770 
18771       --
18772       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
18773       --
18774       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
18775           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
18776       ELSE
18777           ---------------------------------------------------------------------------------------------------
18778           -- 4262811a Switch Sign
18779           ---------------------------------------------------------------------------------------------------
18780           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
18781           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18782                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18783           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
18784                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18785           -- 5132302
18786           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
18787                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
18788 
18789       END IF;
18790 
18791       -- 4955764
18792       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
18793       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
18794 
18795 
18796       XLA_AE_LINES_PKG.ValidateCurrentLine;
18797       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
18798 
18799       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
18800                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
18801                ,p_balance_type_code => l_balance_type_code);
18802 
18803    END IF;
18804 
18805    -----------------------------------------------------------------------------------------
18806    -- 4262811 Multiperiod Accounting
18807    -----------------------------------------------------------------------------------------
18808      -- No MPA option is assigned.
18809 
18810 
18811 END IF;
18812 END IF;
18813 --
18814 
18815 --
18816 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18817    trace
18818       (p_msg      => 'END of AcctLineType_61'
18819       ,p_level    => C_LEVEL_PROCEDURE
18820       ,p_module   => l_log_module);
18821 END IF;
18822 --
18823 EXCEPTION
18824   WHEN xla_exceptions_pkg.application_exception THEN
18825       RAISE;
18826   WHEN OTHERS THEN
18827        xla_exceptions_pkg.raise_message
18828            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_61');
18829 END AcctLineType_61;
18830 --
18831 
18832 ---------------------------------------
18833 --
18834 -- PRIVATE FUNCTION
18835 --         AcctLineType_62
18836 --
18837 ---------------------------------------
18838 PROCEDURE AcctLineType_62 (
18839   p_application_id        IN NUMBER
18840  ,p_event_id              IN NUMBER
18841  ,p_calculate_acctd_flag  IN VARCHAR2
18842  ,p_calculate_g_l_flag    IN VARCHAR2
18843  ,p_actual_flag           IN OUT VARCHAR2
18847 --Credit Memo Distribution GL Account
18844  ,p_balance_type_code     OUT VARCHAR2
18845  ,p_gain_or_loss_ref      OUT VARCHAR2
18846  
18848  , p_source_24            IN NUMBER
18849 --SLA Party Type
18850  , p_source_51            IN VARCHAR2
18851 --Credit Memo Distribution Identifier
18852  , p_source_64            IN NUMBER
18853 --Credit memo distributions type
18854  , p_source_65            IN VARCHAR2
18855 --Credit Memo Currency Code
18856  , p_source_66            IN VARCHAR2
18857 --Credit Memo Exchange Date
18858  , p_source_67            IN DATE
18859 --Credit Memo Exchange Rate
18860  , p_source_68            IN NUMBER
18861 --Credit Memo Exchange Rate Type
18862  , p_source_69            IN VARCHAR2
18863 --Gain Loss Reference
18864  , p_source_70            IN VARCHAR2
18865 --Credit Memo Accounting Amount
18866  , p_source_71            IN NUMBER
18867 --Credit Memo Bill To Customer Account Identifier
18868  , p_source_72            IN NUMBER
18869 --Credit Memo Bill To Customer Site Use Identifier
18870  , p_source_73            IN NUMBER
18871 --Credit Memo Tax Line Identifier
18872  , p_source_74            IN NUMBER
18873 --Credit Memo Distribution Account Class
18874  , p_source_75            IN VARCHAR2
18875 --Credit Memo Distribution Entered Amount
18876  , p_source_76            IN NUMBER
18877 )
18878 IS
18879 
18880 l_component_type              VARCHAR2(80);
18881 l_component_code              VARCHAR2(30);
18882 l_component_type_code         VARCHAR2(1);
18883 l_component_appl_id           INTEGER;
18884 l_amb_context_code            VARCHAR2(30);
18885 l_entity_code                 VARCHAR2(30);
18886 l_event_class_code            VARCHAR2(30);
18887 l_ae_header_id                NUMBER;
18888 l_event_type_code             VARCHAR2(30);
18889 l_line_definition_code        VARCHAR2(30);
18890 l_line_definition_owner_code  VARCHAR2(1);
18891 --
18892 -- adr variables
18893 l_segment                     VARCHAR2(30);
18894 l_ccid                        NUMBER;
18895 l_adr_transaction_coa_id      NUMBER;
18896 l_adr_accounting_coa_id       NUMBER;
18897 l_adr_flexfield_segment_code  VARCHAR2(30);
18898 l_adr_flex_value_set_id       NUMBER;
18899 l_adr_value_type_code         VARCHAR2(30);
18900 l_adr_value_combination_id    NUMBER;
18901 l_adr_value_segment_code      VARCHAR2(30);
18902 
18903 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
18904 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
18905 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
18906 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
18907 
18908 -- 4262811 Variables ------------------------------------------------------------------------------------------
18909 l_entered_amt_idx             NUMBER;
18910 l_accted_amt_idx              NUMBER;
18911 l_acc_rev_flag                VARCHAR2(1);
18912 l_accrual_line_num            NUMBER;
18913 l_tmp_amt                     NUMBER;
18914 l_acc_rev_natural_side_code   VARCHAR2(1);
18915 
18916 l_num_entries                 NUMBER;
18917 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
18918 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
18919 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
18920 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
18921 l_recog_line_1                NUMBER;
18922 l_recog_line_2                NUMBER;
18923 
18924 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
18925 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
18926 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
18927 
18928 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
18929 
18930 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
18931 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
18932 
18933 ---------------------------------------------------------------------------------------------------------------
18934 
18935 
18936 --
18937 -- bulk performance
18938 --
18939 l_balance_type_code           VARCHAR2(1);
18940 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
18941 l_log_module                  VARCHAR2(240);
18942 
18943 --
18944 -- Upgrade strategy
18945 --
18946 l_actual_upg_option           VARCHAR2(1);
18947 l_enc_upg_option           VARCHAR2(1);
18948 
18949 --
18950 BEGIN
18951 --
18952 IF g_log_enabled THEN
18953       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_62';
18954 END IF;
18955 --
18956 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
18957 
18958       trace
18959          (p_msg      => 'BEGIN of AcctLineType_62'
18960          ,p_level    => C_LEVEL_PROCEDURE
18961          ,p_module   => l_log_module);
18962 
18963 END IF;
18964 --
18965 l_component_type             := 'AMB_JLT';
18966 l_component_code             := 'CM_DEFAULT_TAX';
18967 l_component_type_code        := 'S';
18968 l_component_appl_id          :=  222;
18969 l_amb_context_code           := 'DEFAULT';
18970 l_entity_code                := 'TRANSACTIONS';
18971 l_event_class_code           := 'CREDIT_MEMO';
18972 l_event_type_code            := 'CREDIT_MEMO_ALL';
18973 l_line_definition_owner_code := 'S';
18977 l_segment                     := NULL;
18974 l_line_definition_code       := 'AR_CM_DEFAULT_ACCRUAL';
18975 --
18976 l_balance_type_code          := 'A';
18978 l_ccid                        := NULL;
18979 l_adr_transaction_coa_id      := NULL;
18980 l_adr_accounting_coa_id       := NULL;
18981 l_adr_flexfield_segment_code  := NULL;
18982 l_adr_flex_value_set_id       := NULL;
18983 l_adr_value_type_code         := NULL;
18984 l_adr_value_combination_id    := NULL;
18985 l_adr_value_segment_code      := NULL;
18986 
18987 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
18988 l_bflow_class_code           := '';    -- 4219869 Business Flow
18989 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
18990 l_budgetary_control_flag     := 'N';
18991 
18992 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
18993 l_bflow_applied_to_amt       := NULL; -- 5132302
18994 l_entered_amt_idx            := NULL;          -- 4262811
18995 l_accted_amt_idx             := NULL;          -- 4262811
18996 l_acc_rev_flag               := NULL;          -- 4262811
18997 l_accrual_line_num           := NULL;          -- 4262811
18998 l_tmp_amt                    := NULL;          -- 4262811
18999 --
19000  
19001 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19002     l_balance_type_code <> 'B' THEN
19003 IF NVL(p_source_75,'
19004 ') =  'TAX'
19005  THEN 
19006 
19007    --
19008    XLA_AE_LINES_PKG.SetNewLine;
19009 
19010    p_balance_type_code          := l_balance_type_code;
19011    -- set the flag so later we will know whether the gain loss line needs to be created
19012    
19013    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
19014      p_actual_flag :='A';
19015    END IF;
19016 
19017    --
19018    -- bulk performance
19019    --
19020    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19021                                       p_header_num   => 0); -- 4262811
19022    --
19023    -- set accounting line options
19024    --
19025    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19026            p_natural_side_code          => 'C'
19027          , p_gain_or_loss_flag          => 'N'
19028          , p_gl_transfer_mode_code      => 'S'
19029          , p_acct_entry_type_code       => 'A'
19030          , p_switch_side_flag           => 'Y'
19031          , p_merge_duplicate_code       => 'A'
19032          );
19033    --
19034    l_acc_rev_natural_side_code := 'D';  -- 4262811
19035    -- 
19036    --
19037    -- set accounting line type info
19038    --
19039    xla_ae_lines_pkg.SetAcctLineType
19040       (p_component_type             => l_component_type
19041       ,p_event_type_code            => l_event_type_code
19042       ,p_line_definition_owner_code => l_line_definition_owner_code
19043       ,p_line_definition_code       => l_line_definition_code
19044       ,p_accounting_line_code       => l_component_code
19045       ,p_accounting_line_type_code  => l_component_type_code
19046       ,p_accounting_line_appl_id    => l_component_appl_id
19047       ,p_amb_context_code           => l_amb_context_code
19048       ,p_entity_code                => l_entity_code
19049       ,p_event_class_code           => l_event_class_code);
19050    --
19051    -- set accounting class
19052    --
19053    xla_ae_lines_pkg.SetAcctClass(
19054            p_accounting_class_code  => 'TAX'
19055          , p_ae_header_id           => l_ae_header_id
19056          );
19057 
19058    --
19059    -- set rounding class
19060    --
19061    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19062                       'RECEIVABLE';
19063 
19064    --
19065    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19066    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19067    --
19068    -- bulk performance
19069    --
19070    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19071 
19072    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19073       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19074 
19075    -- 4955764
19076    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19077       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19078 
19079    -- 4458381 Public Sector Enh
19080    
19081    --
19082    -- set accounting attributes for the line type
19083    --
19084    l_entered_amt_idx := 3;
19085    l_accted_amt_idx  := 9;
19086    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19087    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
19088    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_64);
19089    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
19090    l_rec_acct_attrs.array_char_value(2)  := p_source_65;
19091    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
19092    l_rec_acct_attrs.array_num_value(3)  := p_source_76;
19093    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
19094    l_rec_acct_attrs.array_char_value(4)  := p_source_66;
19095    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
19096    l_rec_acct_attrs.array_date_value(5)  := p_source_67;
19100    l_rec_acct_attrs.array_char_value(7)  := p_source_69;
19097    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
19098    l_rec_acct_attrs.array_num_value(6)  := p_source_68;
19099    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
19101    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
19102    l_rec_acct_attrs.array_char_value(8)  := p_source_70;
19103    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
19104    l_rec_acct_attrs.array_num_value(9)  := p_source_71;
19105    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
19106    l_rec_acct_attrs.array_num_value(10)  := p_source_72;
19107    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
19108    l_rec_acct_attrs.array_num_value(11)  := p_source_73;
19109    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
19110    l_rec_acct_attrs.array_char_value(12)  := p_source_51;
19111    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
19112    l_rec_acct_attrs.array_num_value(13)  := p_source_74;
19113 
19114    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19115    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19116 
19117    ---------------------------------------------------------------------------------------------------------------
19118    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19119    ---------------------------------------------------------------------------------------------------------------
19120    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19121 
19122    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19123    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19124 
19125    IF xla_accounting_cache_pkg.GetValueChar
19126          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19127          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19128    AND l_bflow_method_code = 'PRIOR_ENTRY'
19129 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19130    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19131          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19132        )
19133    THEN
19134          xla_ae_lines_pkg.BflowUpgEntry
19135            (p_business_method_code    => l_bflow_method_code
19136            ,p_business_class_code     => l_bflow_class_code
19137            ,p_balance_type            => l_balance_type_code);
19138    ELSE
19139       NULL;
19140 -- No business flow processing for business flow method of NONE.
19141    END IF;
19142 
19143    --
19144    -- call analytical criteria
19145    --
19146    
19147    --
19148    -- call description
19149    --
19150    -- No description or it is inherited.
19151    --
19152    -- call ADRs
19153    -- Bug 4922099
19154    --
19155    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19156         (NVL(l_actual_upg_option, 'N') = 'O') OR
19157         (NVL(l_enc_upg_option, 'N') = 'O')
19158       )
19159    THEN
19160    NULL;
19161    --
19162    --
19163    
19164   l_ccid := AcctDerRule_21(
19165            p_application_id           => p_application_id
19166          , p_ae_header_id             => l_ae_header_id 
19167 , p_source_24 => p_source_24
19168          , x_transaction_coa_id       => l_adr_transaction_coa_id
19169          , x_accounting_coa_id        => l_adr_accounting_coa_id
19170          , x_value_type_code          => l_adr_value_type_code
19171          , p_side                     => 'NA'
19172    );
19173 
19174    xla_ae_lines_pkg.set_ccid(
19175     p_code_combination_id          => l_ccid
19176   , p_value_type_code              => l_adr_value_type_code
19177   , p_transaction_coa_id           => l_adr_transaction_coa_id
19178   , p_accounting_coa_id            => l_adr_accounting_coa_id
19179   , p_adr_code                     => 'CM_DIST_CCID'
19180   , p_adr_type_code                => 'S'
19181   , p_component_type               => l_component_type
19182   , p_component_code               => l_component_code
19183   , p_component_type_code          => l_component_type_code
19184   , p_component_appl_id            => l_component_appl_id
19185   , p_amb_context_code             => l_amb_context_code
19186   , p_side                         => 'NA'
19187   );
19188 
19189 
19190    --
19191    --
19192    END IF;
19193    --
19194    -- Bug 4922099
19195    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19196           (NVL(l_enc_upg_option, 'N') = 'O')
19197         ) AND
19198         (l_bflow_method_code = 'PRIOR_ENTRY')
19199       )
19200    THEN
19201       IF
19202       --
19203       1 = 2
19204       --
19205       THEN
19206       xla_accounting_err_pkg.build_message
19207                                     (p_appli_s_name            => 'XLA'
19208                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19209                                     ,p_token_1                 => 'LINE_NUMBER'
19210                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19211                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19215                                                                             ,l_component_type_code
19212                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19213                                                                              l_component_type
19214                                                                             ,l_component_code
19216                                                                             ,l_component_appl_id
19217                                                                             ,l_amb_context_code
19218                                                                             ,l_entity_code
19219                                                                             ,l_event_class_code
19220                                                                            )
19221                                     ,p_token_3                 => 'OWNER'
19222                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19223                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19224                                                                           ,p_lookup_code    => l_component_type_code
19225                                                                          )
19226                                     ,p_token_4                 => 'PRODUCT_NAME'
19227                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19228                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19229                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19230                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19231                                     ,p_ae_header_id            =>  NULL
19232                                        );
19233 
19234         IF (C_LEVEL_ERROR>= g_log_level) THEN
19235                  trace
19236                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19237                       ,p_level    => C_LEVEL_ERROR
19238                       ,p_module   => l_log_module);
19239         END IF;
19240       END IF;
19241    END IF;
19242    --
19243    --
19244    ------------------------------------------------------------------------------------------------
19245    -- 4219869 Business Flow
19246    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19247    -- Prior Entry.  Currently, the following code is always generated.
19248    ------------------------------------------------------------------------------------------------
19249    XLA_AE_LINES_PKG.ValidateCurrentLine;
19250 
19251    ------------------------------------------------------------------------------------
19252    -- 4219869 Business Flow
19253    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19254    ------------------------------------------------------------------------------------
19255    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19256 
19257    ----------------------------------------------------------------------------------
19258    -- 4219869 Business Flow
19259    -- Update journal entry status -- Need to generate this within IF <condition>
19260    ----------------------------------------------------------------------------------
19261    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19262          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19263          ,p_balance_type_code => l_balance_type_code
19264          );
19265 
19266    -------------------------------------------------------------------------------------------
19267    -- 4262811 - Generate the Accrual Reversal lines
19268    -------------------------------------------------------------------------------------------
19269    BEGIN
19270       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19271                               (g_array_event(p_event_id).array_value_num('header_index'));
19272       IF l_acc_rev_flag IS NULL THEN
19273          l_acc_rev_flag := 'N';
19274       END IF;
19275    EXCEPTION
19276       WHEN OTHERS THEN
19277          l_acc_rev_flag := 'N';
19278    END;
19279    --
19280    IF (l_acc_rev_flag = 'Y') THEN
19281 
19282        -- 4645092  ------------------------------------------------------------------------------
19283        -- To allow MPA report to determine if it should generate report process
19284        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19285        ------------------------------------------------------------------------------------------
19286 
19287        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19288        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19289    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
19290    -- call ADRs
19291    -- Bug 4922099
19292    --
19293    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19294         (NVL(l_actual_upg_option, 'N') = 'O') OR
19295         (NVL(l_enc_upg_option, 'N') = 'O')
19296       )
19297    THEN
19298    NULL;
19299    --
19300    --
19301    
19302   l_ccid := AcctDerRule_21(
19303            p_application_id           => p_application_id
19304          , p_ae_header_id             => l_ae_header_id 
19305 , p_source_24 => p_source_24
19306          , x_transaction_coa_id       => l_adr_transaction_coa_id
19310    );
19307          , x_accounting_coa_id        => l_adr_accounting_coa_id
19308          , x_value_type_code          => l_adr_value_type_code
19309          , p_side                     => 'NA'
19311 
19312    xla_ae_lines_pkg.set_ccid(
19313     p_code_combination_id          => l_ccid
19314   , p_value_type_code              => l_adr_value_type_code
19315   , p_transaction_coa_id           => l_adr_transaction_coa_id
19316   , p_accounting_coa_id            => l_adr_accounting_coa_id
19317   , p_adr_code                     => 'CM_DIST_CCID'
19318   , p_adr_type_code                => 'S'
19319   , p_component_type               => l_component_type
19320   , p_component_code               => l_component_code
19321   , p_component_type_code          => l_component_type_code
19322   , p_component_appl_id            => l_component_appl_id
19323   , p_amb_context_code             => l_amb_context_code
19324   , p_side                         => 'NA'
19325   );
19326 
19327 
19328    --
19329    --
19330    END IF;
19331 
19332        --
19333        -- Update the line information that should be overwritten
19334        --
19335        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19336                                          p_header_num   => 1);
19337        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19338 
19339        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19340 
19341        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19342           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19343        END IF;
19344 
19345       --
19346       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19347       --
19348       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19349           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19350       ELSE
19351           ---------------------------------------------------------------------------------------------------
19352           -- 4262811a Switch Sign
19353           ---------------------------------------------------------------------------------------------------
19354           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19355           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19356                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19357           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19358                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19359           -- 5132302
19360           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19361                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19362 
19363       END IF;
19364 
19365       -- 4955764
19366       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19367       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19368 
19369 
19370       XLA_AE_LINES_PKG.ValidateCurrentLine;
19371       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19372 
19373       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19374                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19375                ,p_balance_type_code => l_balance_type_code);
19376 
19377    END IF;
19378 
19379    -----------------------------------------------------------------------------------------
19380    -- 4262811 Multiperiod Accounting
19381    -----------------------------------------------------------------------------------------
19382      -- No MPA option is assigned.
19383 
19384 
19385 END IF;
19386 END IF;
19387 --
19388 
19389 --
19390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19391    trace
19392       (p_msg      => 'END of AcctLineType_62'
19393       ,p_level    => C_LEVEL_PROCEDURE
19394       ,p_module   => l_log_module);
19395 END IF;
19396 --
19397 EXCEPTION
19398   WHEN xla_exceptions_pkg.application_exception THEN
19399       RAISE;
19400   WHEN OTHERS THEN
19401        xla_exceptions_pkg.raise_message
19402            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_62');
19403 END AcctLineType_62;
19404 --
19405 
19406 ---------------------------------------
19407 --
19408 -- PRIVATE FUNCTION
19409 --         AcctLineType_63
19410 --
19411 ---------------------------------------
19412 PROCEDURE AcctLineType_63 (
19413   p_application_id        IN NUMBER
19414  ,p_event_id              IN NUMBER
19415  ,p_calculate_acctd_flag  IN VARCHAR2
19416  ,p_calculate_g_l_flag    IN VARCHAR2
19417  ,p_actual_flag           IN OUT VARCHAR2
19418  ,p_balance_type_code     OUT VARCHAR2
19419  ,p_gain_or_loss_ref      OUT VARCHAR2
19420  
19421 --System Gain Account
19422  , p_source_34            IN NUMBER
19423 --System Loss Account
19424  , p_source_35            IN NUMBER
19425 --SLA Party Type
19426  , p_source_51            IN VARCHAR2
19427 --Credit Memo Distribution Identifier
19428  , p_source_64            IN NUMBER
19429 --Credit memo distributions type
19430  , p_source_65            IN VARCHAR2
19434  , p_source_71            IN NUMBER
19431 --Gain Loss Reference
19432  , p_source_70            IN VARCHAR2
19433 --Credit Memo Accounting Amount
19435 --Credit Memo Bill To Customer Account Identifier
19436  , p_source_72            IN NUMBER
19437 --Credit Memo Bill To Customer Site Use Identifier
19438  , p_source_73            IN NUMBER
19439 --Credit Memo Tax Line Identifier
19440  , p_source_74            IN NUMBER
19441 )
19442 IS
19443 
19444 l_component_type              VARCHAR2(80);
19445 l_component_code              VARCHAR2(30);
19446 l_component_type_code         VARCHAR2(1);
19447 l_component_appl_id           INTEGER;
19448 l_amb_context_code            VARCHAR2(30);
19449 l_entity_code                 VARCHAR2(30);
19450 l_event_class_code            VARCHAR2(30);
19451 l_ae_header_id                NUMBER;
19452 l_event_type_code             VARCHAR2(30);
19453 l_line_definition_code        VARCHAR2(30);
19454 l_line_definition_owner_code  VARCHAR2(1);
19455 --
19456 -- adr variables
19457 l_segment                     VARCHAR2(30);
19458 l_ccid                        NUMBER;
19459 l_adr_transaction_coa_id      NUMBER;
19460 l_adr_accounting_coa_id       NUMBER;
19461 l_adr_flexfield_segment_code  VARCHAR2(30);
19462 l_adr_flex_value_set_id       NUMBER;
19463 l_adr_value_type_code         VARCHAR2(30);
19464 l_adr_value_combination_id    NUMBER;
19465 l_adr_value_segment_code      VARCHAR2(30);
19466 
19467 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
19468 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
19469 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
19470 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
19471 
19472 -- 4262811 Variables ------------------------------------------------------------------------------------------
19473 l_entered_amt_idx             NUMBER;
19474 l_accted_amt_idx              NUMBER;
19475 l_acc_rev_flag                VARCHAR2(1);
19476 l_accrual_line_num            NUMBER;
19477 l_tmp_amt                     NUMBER;
19478 l_acc_rev_natural_side_code   VARCHAR2(1);
19479 
19480 l_num_entries                 NUMBER;
19481 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
19482 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
19483 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
19484 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
19485 l_recog_line_1                NUMBER;
19486 l_recog_line_2                NUMBER;
19487 
19488 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
19489 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
19490 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
19491 
19492 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
19493 
19494 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
19495 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
19496 
19497 ---------------------------------------------------------------------------------------------------------------
19498 
19499 
19500 --
19501 -- bulk performance
19502 --
19503 l_balance_type_code           VARCHAR2(1);
19504 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
19505 l_log_module                  VARCHAR2(240);
19506 
19507 --
19508 -- Upgrade strategy
19509 --
19510 l_actual_upg_option           VARCHAR2(1);
19511 l_enc_upg_option           VARCHAR2(1);
19512 
19513 --
19514 BEGIN
19515 --
19516 IF g_log_enabled THEN
19517       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_63';
19518 END IF;
19519 --
19520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19521 
19522       trace
19523          (p_msg      => 'BEGIN of AcctLineType_63'
19524          ,p_level    => C_LEVEL_PROCEDURE
19525          ,p_module   => l_log_module);
19526 
19527 END IF;
19528 --
19529 l_component_type             := 'AMB_JLT';
19530 l_component_code             := 'CM_EXCH_GAIN_LOSS';
19531 l_component_type_code        := 'S';
19532 l_component_appl_id          :=  222;
19533 l_amb_context_code           := 'DEFAULT';
19534 l_entity_code                := 'TRANSACTIONS';
19535 l_event_class_code           := 'CREDIT_MEMO';
19536 l_event_type_code            := 'CREDIT_MEMO_ALL';
19537 l_line_definition_owner_code := 'S';
19538 l_line_definition_code       := 'AR_CM_DEFAULT_ACCRUAL';
19539 --
19540 l_balance_type_code          := 'A';
19541 l_segment                     := NULL;
19542 l_ccid                        := NULL;
19543 l_adr_transaction_coa_id      := NULL;
19544 l_adr_accounting_coa_id       := NULL;
19545 l_adr_flexfield_segment_code  := NULL;
19546 l_adr_flex_value_set_id       := NULL;
19547 l_adr_value_type_code         := NULL;
19548 l_adr_value_combination_id    := NULL;
19549 l_adr_value_segment_code      := NULL;
19550 
19551 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
19552 l_bflow_class_code           := '';    -- 4219869 Business Flow
19553 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
19554 l_budgetary_control_flag     := 'N';
19555 
19556 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
19557 l_bflow_applied_to_amt       := NULL; -- 5132302
19558 l_entered_amt_idx            := NULL;          -- 4262811
19562 l_tmp_amt                    := NULL;          -- 4262811
19559 l_accted_amt_idx             := NULL;          -- 4262811
19560 l_acc_rev_flag               := NULL;          -- 4262811
19561 l_accrual_line_num           := NULL;          -- 4262811
19563 --
19564 IF NOT ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
19565             (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
19566                return;
19567   END IF;
19568   
19569 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
19570     l_balance_type_code <> 'B' THEN
19571 
19572    --
19573    XLA_AE_LINES_PKG.SetNewLine;
19574 
19575    p_balance_type_code          := l_balance_type_code;
19576    -- set the flag so later we will know whether the gain loss line needs to be created
19577    
19578    IF(l_balance_type_code = 'A' ) THEN
19579      p_actual_flag :='G';
19580    END IF;
19581 
19582    --
19583    -- bulk performance
19584    --
19585    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
19586                                       p_header_num   => 0); -- 4262811
19587    --
19588    -- set accounting line options
19589    --
19590    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
19591            p_natural_side_code          => 'G'
19592          , p_gain_or_loss_flag          => 'N'
19593          , p_gl_transfer_mode_code      => 'S'
19594          , p_acct_entry_type_code       => 'A'
19595          , p_switch_side_flag           => ''
19596          , p_merge_duplicate_code       => 'A'
19597          );
19598    --
19599    l_acc_rev_natural_side_code := 'C';  -- 4262811
19600    -- 
19601    --
19602    -- set accounting line type info
19603    --
19604    xla_ae_lines_pkg.SetAcctLineType
19605       (p_component_type             => l_component_type
19606       ,p_event_type_code            => l_event_type_code
19607       ,p_line_definition_owner_code => l_line_definition_owner_code
19608       ,p_line_definition_code       => l_line_definition_code
19609       ,p_accounting_line_code       => l_component_code
19610       ,p_accounting_line_type_code  => l_component_type_code
19611       ,p_accounting_line_appl_id    => l_component_appl_id
19612       ,p_amb_context_code           => l_amb_context_code
19613       ,p_entity_code                => l_entity_code
19614       ,p_event_class_code           => l_event_class_code);
19615    --
19616    -- set accounting class
19617    --
19618    xla_ae_lines_pkg.SetAcctClass(
19619            p_accounting_class_code  => 'EXCHANGE_GAIN_LOSS'
19620          , p_ae_header_id           => l_ae_header_id
19621          );
19622 
19623    --
19624    -- set rounding class
19625    --
19626    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
19627                       'EXCHANGE_GAIN_LOSS';
19628 
19629    --
19630    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
19631    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
19632    --
19633    -- bulk performance
19634    --
19635    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
19636 
19637    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
19638       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
19639 
19640    -- 4955764
19641    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19642       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
19643 
19644    -- 4458381 Public Sector Enh
19645    
19646    --
19647    -- set accounting attributes for the line type
19648    --
19649    l_entered_amt_idx := NULL;
19650    l_accted_amt_idx  := 4;
19651    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
19652    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
19653    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_64);
19654    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
19655    l_rec_acct_attrs.array_char_value(2)  := p_source_65;
19656    l_rec_acct_attrs.array_acct_attr_code(3) := 'GAIN_LOSS_REFERENCE';
19657    l_rec_acct_attrs.array_char_value(3)  := p_source_70;
19658    l_rec_acct_attrs.array_acct_attr_code(4) := 'LEDGER_AMOUNT';
19659    l_rec_acct_attrs.array_num_value(4)  := p_source_71;
19660    l_rec_acct_attrs.array_acct_attr_code(5) := 'PARTY_ID';
19661    l_rec_acct_attrs.array_num_value(5)  := p_source_72;
19662    l_rec_acct_attrs.array_acct_attr_code(6) := 'PARTY_SITE_ID';
19663    l_rec_acct_attrs.array_num_value(6)  := p_source_73;
19664    l_rec_acct_attrs.array_acct_attr_code(7) := 'PARTY_TYPE';
19665    l_rec_acct_attrs.array_char_value(7)  := p_source_51;
19666    l_rec_acct_attrs.array_acct_attr_code(8) := 'TAX_LINE_REF_ID';
19667    l_rec_acct_attrs.array_num_value(8)  := p_source_74;
19668 
19669    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
19670    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
19671 
19672    ---------------------------------------------------------------------------------------------------------------
19676 
19673    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
19674    ---------------------------------------------------------------------------------------------------------------
19675    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
19677    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19678    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
19679 
19680    IF xla_accounting_cache_pkg.GetValueChar
19681          (p_source_code         => 'LEDGER_CATEGORY_CODE'
19682          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
19683    AND l_bflow_method_code = 'PRIOR_ENTRY'
19684 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
19685    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
19686          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
19687        )
19688    THEN
19689          xla_ae_lines_pkg.BflowUpgEntry
19690            (p_business_method_code    => l_bflow_method_code
19691            ,p_business_class_code     => l_bflow_class_code
19692            ,p_balance_type            => l_balance_type_code);
19693    ELSE
19694       NULL;
19695 -- No business flow processing for business flow method of NONE.
19696    END IF;
19697 
19698    --
19699    -- call analytical criteria
19700    --
19701    
19702    --
19703    -- call description
19704    --
19705    -- No description or it is inherited.
19706    --
19707    -- call ADRs
19708    -- Bug 4922099
19709    --
19710    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19711         (NVL(l_actual_upg_option, 'N') = 'O') OR
19712         (NVL(l_enc_upg_option, 'N') = 'O')
19713       )
19714    THEN
19715    NULL;
19716    --
19717    --
19718    
19719   l_ccid := AcctDerRule_34(
19720            p_application_id           => p_application_id
19721          , p_ae_header_id             => l_ae_header_id 
19722 , p_source_34 => p_source_34
19723          , x_transaction_coa_id       => l_adr_transaction_coa_id
19724          , x_accounting_coa_id        => l_adr_accounting_coa_id
19725          , x_value_type_code          => l_adr_value_type_code
19726          , p_side                     => 'CREDIT'
19727    );
19728 
19729    xla_ae_lines_pkg.set_ccid(
19730     p_code_combination_id          => l_ccid
19731   , p_value_type_code              => l_adr_value_type_code
19732   , p_transaction_coa_id           => l_adr_transaction_coa_id
19733   , p_accounting_coa_id            => l_adr_accounting_coa_id
19734   , p_adr_code                     => 'SYS_GAIN_CCID'
19735   , p_adr_type_code                => 'S'
19736   , p_component_type               => l_component_type
19737   , p_component_code               => l_component_code
19738   , p_component_type_code          => l_component_type_code
19739   , p_component_appl_id            => l_component_appl_id
19740   , p_amb_context_code             => l_amb_context_code
19741   , p_side                         => 'CREDIT'
19742   );
19743 
19744 
19745   l_ccid := AcctDerRule_35(
19746            p_application_id           => p_application_id
19747          , p_ae_header_id             => l_ae_header_id 
19748 , p_source_35 => p_source_35
19749          , x_transaction_coa_id       => l_adr_transaction_coa_id
19750          , x_accounting_coa_id        => l_adr_accounting_coa_id
19751          , x_value_type_code          => l_adr_value_type_code
19752          , p_side                     => 'DEBIT'
19753    );
19754 
19755    xla_ae_lines_pkg.set_ccid(
19756     p_code_combination_id          => l_ccid
19757   , p_value_type_code              => l_adr_value_type_code
19758   , p_transaction_coa_id           => l_adr_transaction_coa_id
19759   , p_accounting_coa_id            => l_adr_accounting_coa_id
19760   , p_adr_code                     => 'SYS_LOSS_CCID'
19761   , p_adr_type_code                => 'S'
19762   , p_component_type               => l_component_type
19763   , p_component_code               => l_component_code
19764   , p_component_type_code          => l_component_type_code
19765   , p_component_appl_id            => l_component_appl_id
19766   , p_amb_context_code             => l_amb_context_code
19767   , p_side                         => 'DEBIT'
19768   );
19769 
19770 
19771    --
19772    --
19773    END IF;
19774    --
19775    -- Bug 4922099
19776    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
19777           (NVL(l_enc_upg_option, 'N') = 'O')
19778         ) AND
19779         (l_bflow_method_code = 'PRIOR_ENTRY')
19780       )
19781    THEN
19782       IF
19783       --
19784       1 = 2
19785       --
19786       THEN
19787       xla_accounting_err_pkg.build_message
19788                                     (p_appli_s_name            => 'XLA'
19789                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19790                                     ,p_token_1                 => 'LINE_NUMBER'
19791                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
19792                                     ,p_token_2                 => 'LINE_TYPE_NAME'
19793                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
19797                                                                             ,l_component_appl_id
19794                                                                              l_component_type
19795                                                                             ,l_component_code
19796                                                                             ,l_component_type_code
19798                                                                             ,l_amb_context_code
19799                                                                             ,l_entity_code
19800                                                                             ,l_event_class_code
19801                                                                            )
19802                                     ,p_token_3                 => 'OWNER'
19803                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
19804                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
19805                                                                           ,p_lookup_code    => l_component_type_code
19806                                                                          )
19807                                     ,p_token_4                 => 'PRODUCT_NAME'
19808                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
19809                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
19810                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
19811                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
19812                                     ,p_ae_header_id            =>  NULL
19813                                        );
19814 
19815         IF (C_LEVEL_ERROR>= g_log_level) THEN
19816                  trace
19817                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
19818                       ,p_level    => C_LEVEL_ERROR
19819                       ,p_module   => l_log_module);
19820         END IF;
19821       END IF;
19822    END IF;
19823    --
19824    --
19825    ------------------------------------------------------------------------------------------------
19826    -- 4219869 Business Flow
19827    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
19828    -- Prior Entry.  Currently, the following code is always generated.
19829    ------------------------------------------------------------------------------------------------
19830    XLA_AE_LINES_PKG.ValidateCurrentLine;
19831 
19832    ------------------------------------------------------------------------------------
19833    -- 4219869 Business Flow
19834    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
19835    ------------------------------------------------------------------------------------
19836    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19837 
19838    ----------------------------------------------------------------------------------
19839    -- 4219869 Business Flow
19840    -- Update journal entry status -- Need to generate this within IF <condition>
19841    ----------------------------------------------------------------------------------
19842    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19843          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
19844          ,p_balance_type_code => l_balance_type_code
19845          );
19846 
19847    -------------------------------------------------------------------------------------------
19848    -- 4262811 - Generate the Accrual Reversal lines
19849    -------------------------------------------------------------------------------------------
19850    BEGIN
19851       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
19852                               (g_array_event(p_event_id).array_value_num('header_index'));
19853       IF l_acc_rev_flag IS NULL THEN
19854          l_acc_rev_flag := 'N';
19855       END IF;
19856    EXCEPTION
19857       WHEN OTHERS THEN
19858          l_acc_rev_flag := 'N';
19859    END;
19860    --
19861    IF (l_acc_rev_flag = 'Y') THEN
19862 
19863        -- 4645092  ------------------------------------------------------------------------------
19864        -- To allow MPA report to determine if it should generate report process
19865        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
19866        ------------------------------------------------------------------------------------------
19867 
19868        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
19869        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
19870    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
19871    -- call ADRs
19872    -- Bug 4922099
19873    --
19874    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
19875         (NVL(l_actual_upg_option, 'N') = 'O') OR
19876         (NVL(l_enc_upg_option, 'N') = 'O')
19877       )
19878    THEN
19879    NULL;
19880    --
19881    --
19882    
19883   l_ccid := AcctDerRule_34(
19884            p_application_id           => p_application_id
19885          , p_ae_header_id             => l_ae_header_id 
19886 , p_source_34 => p_source_34
19887          , x_transaction_coa_id       => l_adr_transaction_coa_id
19888          , x_accounting_coa_id        => l_adr_accounting_coa_id
19889          , x_value_type_code          => l_adr_value_type_code
19893    xla_ae_lines_pkg.set_ccid(
19890          , p_side                     => 'CREDIT'
19891    );
19892 
19894     p_code_combination_id          => l_ccid
19895   , p_value_type_code              => l_adr_value_type_code
19896   , p_transaction_coa_id           => l_adr_transaction_coa_id
19897   , p_accounting_coa_id            => l_adr_accounting_coa_id
19898   , p_adr_code                     => 'SYS_GAIN_CCID'
19899   , p_adr_type_code                => 'S'
19900   , p_component_type               => l_component_type
19901   , p_component_code               => l_component_code
19902   , p_component_type_code          => l_component_type_code
19903   , p_component_appl_id            => l_component_appl_id
19904   , p_amb_context_code             => l_amb_context_code
19905   , p_side                         => 'CREDIT'
19906   );
19907 
19908 
19909   l_ccid := AcctDerRule_35(
19910            p_application_id           => p_application_id
19911          , p_ae_header_id             => l_ae_header_id 
19912 , p_source_35 => p_source_35
19913          , x_transaction_coa_id       => l_adr_transaction_coa_id
19914          , x_accounting_coa_id        => l_adr_accounting_coa_id
19915          , x_value_type_code          => l_adr_value_type_code
19916          , p_side                     => 'DEBIT'
19917    );
19918 
19919    xla_ae_lines_pkg.set_ccid(
19920     p_code_combination_id          => l_ccid
19921   , p_value_type_code              => l_adr_value_type_code
19922   , p_transaction_coa_id           => l_adr_transaction_coa_id
19923   , p_accounting_coa_id            => l_adr_accounting_coa_id
19924   , p_adr_code                     => 'SYS_LOSS_CCID'
19925   , p_adr_type_code                => 'S'
19926   , p_component_type               => l_component_type
19927   , p_component_code               => l_component_code
19928   , p_component_type_code          => l_component_type_code
19929   , p_component_appl_id            => l_component_appl_id
19930   , p_amb_context_code             => l_amb_context_code
19931   , p_side                         => 'DEBIT'
19932   );
19933 
19934 
19935    --
19936    --
19937    END IF;
19938 
19939        --
19940        -- Update the line information that should be overwritten
19941        --
19942        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
19943                                          p_header_num   => 1);
19944        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
19945 
19946        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
19947 
19948        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
19949           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
19950        END IF;
19951 
19952       --
19953       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
19954       --
19955       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
19956           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
19957       ELSE
19958           ---------------------------------------------------------------------------------------------------
19959           -- 4262811a Switch Sign
19960           ---------------------------------------------------------------------------------------------------
19961           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
19962           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19963                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19964           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
19965                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19966           -- 5132302
19967           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
19968                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
19969 
19970       END IF;
19971 
19972       -- 4955764
19973       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
19974       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
19975 
19976 
19977       XLA_AE_LINES_PKG.ValidateCurrentLine;
19978       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
19979 
19980       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
19981                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
19982                ,p_balance_type_code => l_balance_type_code);
19983 
19984    END IF;
19985 
19986    -----------------------------------------------------------------------------------------
19987    -- 4262811 Multiperiod Accounting
19988    -----------------------------------------------------------------------------------------
19989      -- No MPA option is assigned.
19990 
19991 
19992 END IF;
19993 --
19994 
19995 --
19996 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
19997    trace
19998       (p_msg      => 'END of AcctLineType_63'
19999       ,p_level    => C_LEVEL_PROCEDURE
20000       ,p_module   => l_log_module);
20001 END IF;
20002 --
20003 EXCEPTION
20004   WHEN xla_exceptions_pkg.application_exception THEN
20005       RAISE;
20009 END AcctLineType_63;
20006   WHEN OTHERS THEN
20007        xla_exceptions_pkg.raise_message
20008            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_63');
20010 --
20011 
20012 ---------------------------------------
20013 --
20014 -- PRIVATE FUNCTION
20015 --         AcctLineType_64
20016 --
20017 ---------------------------------------
20018 PROCEDURE AcctLineType_64 (
20019   p_application_id        IN NUMBER
20020  ,p_event_id              IN NUMBER
20021  ,p_calculate_acctd_flag  IN VARCHAR2
20022  ,p_calculate_g_l_flag    IN VARCHAR2
20023  ,p_actual_flag           IN OUT VARCHAR2
20024  ,p_balance_type_code     OUT VARCHAR2
20025  ,p_gain_or_loss_ref      OUT VARCHAR2
20026  
20027 --Credit Memo Distribution GL Account
20028  , p_source_24            IN NUMBER
20029 --SLA Party Type
20030  , p_source_51            IN VARCHAR2
20031 --Credit Memo Distribution Identifier
20032  , p_source_64            IN NUMBER
20033 --Credit memo distributions type
20034  , p_source_65            IN VARCHAR2
20035 --Credit Memo Currency Code
20036  , p_source_66            IN VARCHAR2
20037 --Credit Memo Exchange Date
20038  , p_source_67            IN DATE
20039 --Credit Memo Exchange Rate
20040  , p_source_68            IN NUMBER
20041 --Credit Memo Exchange Rate Type
20042  , p_source_69            IN VARCHAR2
20043 --Gain Loss Reference
20044  , p_source_70            IN VARCHAR2
20045 --Credit Memo Accounting Amount
20046  , p_source_71            IN NUMBER
20047 --Credit Memo Bill To Customer Account Identifier
20048  , p_source_72            IN NUMBER
20049 --Credit Memo Bill To Customer Site Use Identifier
20050  , p_source_73            IN NUMBER
20051 --Credit Memo Tax Line Identifier
20052  , p_source_74            IN NUMBER
20053 --Credit Memo Distribution Account Class
20054  , p_source_75            IN VARCHAR2
20055 --Credit Memo Distribution Entered Amount
20056  , p_source_76            IN NUMBER
20057 )
20058 IS
20059 
20060 l_component_type              VARCHAR2(80);
20061 l_component_code              VARCHAR2(30);
20062 l_component_type_code         VARCHAR2(1);
20063 l_component_appl_id           INTEGER;
20064 l_amb_context_code            VARCHAR2(30);
20065 l_entity_code                 VARCHAR2(30);
20066 l_event_class_code            VARCHAR2(30);
20067 l_ae_header_id                NUMBER;
20068 l_event_type_code             VARCHAR2(30);
20069 l_line_definition_code        VARCHAR2(30);
20070 l_line_definition_owner_code  VARCHAR2(1);
20071 --
20072 -- adr variables
20073 l_segment                     VARCHAR2(30);
20074 l_ccid                        NUMBER;
20075 l_adr_transaction_coa_id      NUMBER;
20076 l_adr_accounting_coa_id       NUMBER;
20077 l_adr_flexfield_segment_code  VARCHAR2(30);
20078 l_adr_flex_value_set_id       NUMBER;
20079 l_adr_value_type_code         VARCHAR2(30);
20080 l_adr_value_combination_id    NUMBER;
20081 l_adr_value_segment_code      VARCHAR2(30);
20082 
20083 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20084 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20085 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20086 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20087 
20088 -- 4262811 Variables ------------------------------------------------------------------------------------------
20089 l_entered_amt_idx             NUMBER;
20090 l_accted_amt_idx              NUMBER;
20091 l_acc_rev_flag                VARCHAR2(1);
20092 l_accrual_line_num            NUMBER;
20093 l_tmp_amt                     NUMBER;
20094 l_acc_rev_natural_side_code   VARCHAR2(1);
20095 
20096 l_num_entries                 NUMBER;
20097 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20098 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20099 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20100 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20101 l_recog_line_1                NUMBER;
20102 l_recog_line_2                NUMBER;
20103 
20104 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20105 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20106 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20107 
20108 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20109 
20110 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20111 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20112 
20113 ---------------------------------------------------------------------------------------------------------------
20114 
20115 
20116 --
20117 -- bulk performance
20118 --
20119 l_balance_type_code           VARCHAR2(1);
20120 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20121 l_log_module                  VARCHAR2(240);
20122 
20123 --
20124 -- Upgrade strategy
20125 --
20126 l_actual_upg_option           VARCHAR2(1);
20127 l_enc_upg_option           VARCHAR2(1);
20128 
20129 --
20130 BEGIN
20131 --
20132 IF g_log_enabled THEN
20133       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_64';
20134 END IF;
20135 --
20136 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20137 
20138       trace
20139          (p_msg      => 'BEGIN of AcctLineType_64'
20143 END IF;
20140          ,p_level    => C_LEVEL_PROCEDURE
20141          ,p_module   => l_log_module);
20142 
20144 --
20145 l_component_type             := 'AMB_JLT';
20146 l_component_code             := 'CM_ROUND';
20147 l_component_type_code        := 'S';
20148 l_component_appl_id          :=  222;
20149 l_amb_context_code           := 'DEFAULT';
20150 l_entity_code                := 'TRANSACTIONS';
20151 l_event_class_code           := 'CREDIT_MEMO';
20152 l_event_type_code            := 'CREDIT_MEMO_ALL';
20153 l_line_definition_owner_code := 'S';
20154 l_line_definition_code       := 'AR_CM_DEFAULT_ACCRUAL';
20155 --
20156 l_balance_type_code          := 'A';
20157 l_segment                     := NULL;
20158 l_ccid                        := NULL;
20159 l_adr_transaction_coa_id      := NULL;
20160 l_adr_accounting_coa_id       := NULL;
20161 l_adr_flexfield_segment_code  := NULL;
20162 l_adr_flex_value_set_id       := NULL;
20163 l_adr_value_type_code         := NULL;
20164 l_adr_value_combination_id    := NULL;
20165 l_adr_value_segment_code      := NULL;
20166 
20167 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
20168 l_bflow_class_code           := '';    -- 4219869 Business Flow
20169 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
20170 l_budgetary_control_flag     := 'N';
20171 
20172 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20173 l_bflow_applied_to_amt       := NULL; -- 5132302
20174 l_entered_amt_idx            := NULL;          -- 4262811
20175 l_accted_amt_idx             := NULL;          -- 4262811
20176 l_acc_rev_flag               := NULL;          -- 4262811
20177 l_accrual_line_num           := NULL;          -- 4262811
20178 l_tmp_amt                    := NULL;          -- 4262811
20179 --
20180  
20181 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20182     l_balance_type_code <> 'B' THEN
20183 IF NVL(p_source_75,'
20184 ') =  'ROUND'
20185  THEN 
20186 
20187    --
20188    XLA_AE_LINES_PKG.SetNewLine;
20189 
20190    p_balance_type_code          := l_balance_type_code;
20191    -- set the flag so later we will know whether the gain loss line needs to be created
20192    
20193    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20194      p_actual_flag :='A';
20195    END IF;
20196 
20197    --
20198    -- bulk performance
20199    --
20200    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20201                                       p_header_num   => 0); -- 4262811
20202    --
20203    -- set accounting line options
20204    --
20205    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20206            p_natural_side_code          => 'C'
20207          , p_gain_or_loss_flag          => 'N'
20208          , p_gl_transfer_mode_code      => 'S'
20209          , p_acct_entry_type_code       => 'A'
20210          , p_switch_side_flag           => 'Y'
20211          , p_merge_duplicate_code       => 'A'
20212          );
20213    --
20214    l_acc_rev_natural_side_code := 'D';  -- 4262811
20215    -- 
20216    --
20217    -- set accounting line type info
20218    --
20219    xla_ae_lines_pkg.SetAcctLineType
20220       (p_component_type             => l_component_type
20221       ,p_event_type_code            => l_event_type_code
20222       ,p_line_definition_owner_code => l_line_definition_owner_code
20223       ,p_line_definition_code       => l_line_definition_code
20224       ,p_accounting_line_code       => l_component_code
20225       ,p_accounting_line_type_code  => l_component_type_code
20226       ,p_accounting_line_appl_id    => l_component_appl_id
20227       ,p_amb_context_code           => l_amb_context_code
20228       ,p_entity_code                => l_entity_code
20229       ,p_event_class_code           => l_event_class_code);
20230    --
20231    -- set accounting class
20232    --
20233    xla_ae_lines_pkg.SetAcctClass(
20234            p_accounting_class_code  => 'ROUNDING'
20235          , p_ae_header_id           => l_ae_header_id
20236          );
20237 
20238    --
20239    -- set rounding class
20240    --
20241    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20242                       'RECEIVABLE';
20243 
20244    --
20245    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20246    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20247    --
20248    -- bulk performance
20249    --
20250    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20251 
20252    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20253       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20254 
20255    -- 4955764
20256    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20257       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20258 
20259    -- 4458381 Public Sector Enh
20260    
20261    --
20262    -- set accounting attributes for the line type
20263    --
20264    l_entered_amt_idx := 3;
20265    l_accted_amt_idx  := 9;
20266    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20270    l_rec_acct_attrs.array_char_value(2)  := p_source_65;
20267    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
20268    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_64);
20269    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
20271    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
20272    l_rec_acct_attrs.array_num_value(3)  := p_source_76;
20273    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
20274    l_rec_acct_attrs.array_char_value(4)  := p_source_66;
20275    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
20276    l_rec_acct_attrs.array_date_value(5)  := p_source_67;
20277    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
20278    l_rec_acct_attrs.array_num_value(6)  := p_source_68;
20279    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
20280    l_rec_acct_attrs.array_char_value(7)  := p_source_69;
20281    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
20282    l_rec_acct_attrs.array_char_value(8)  := p_source_70;
20283    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
20284    l_rec_acct_attrs.array_num_value(9)  := p_source_71;
20285    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
20286    l_rec_acct_attrs.array_num_value(10)  := p_source_72;
20287    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
20288    l_rec_acct_attrs.array_num_value(11)  := p_source_73;
20289    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
20290    l_rec_acct_attrs.array_char_value(12)  := p_source_51;
20291    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
20292    l_rec_acct_attrs.array_num_value(13)  := p_source_74;
20293 
20294    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20295    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20296 
20297    ---------------------------------------------------------------------------------------------------------------
20298    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20299    ---------------------------------------------------------------------------------------------------------------
20300    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20301 
20302    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20303    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20304 
20305    IF xla_accounting_cache_pkg.GetValueChar
20306          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20307          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20308    AND l_bflow_method_code = 'PRIOR_ENTRY'
20309 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20310    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20311          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20312        )
20313    THEN
20314          xla_ae_lines_pkg.BflowUpgEntry
20315            (p_business_method_code    => l_bflow_method_code
20316            ,p_business_class_code     => l_bflow_class_code
20317            ,p_balance_type            => l_balance_type_code);
20318    ELSE
20319       NULL;
20320 -- No business flow processing for business flow method of NONE.
20321    END IF;
20322 
20323    --
20324    -- call analytical criteria
20325    --
20326    
20327    --
20328    -- call description
20329    --
20330    -- No description or it is inherited.
20331    --
20332    -- call ADRs
20333    -- Bug 4922099
20334    --
20335    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20336         (NVL(l_actual_upg_option, 'N') = 'O') OR
20337         (NVL(l_enc_upg_option, 'N') = 'O')
20338       )
20339    THEN
20340    NULL;
20341    --
20342    --
20343    
20344   l_ccid := AcctDerRule_21(
20345            p_application_id           => p_application_id
20346          , p_ae_header_id             => l_ae_header_id 
20347 , p_source_24 => p_source_24
20348          , x_transaction_coa_id       => l_adr_transaction_coa_id
20349          , x_accounting_coa_id        => l_adr_accounting_coa_id
20350          , x_value_type_code          => l_adr_value_type_code
20351          , p_side                     => 'NA'
20352    );
20353 
20354    xla_ae_lines_pkg.set_ccid(
20355     p_code_combination_id          => l_ccid
20356   , p_value_type_code              => l_adr_value_type_code
20357   , p_transaction_coa_id           => l_adr_transaction_coa_id
20358   , p_accounting_coa_id            => l_adr_accounting_coa_id
20359   , p_adr_code                     => 'CM_DIST_CCID'
20360   , p_adr_type_code                => 'S'
20361   , p_component_type               => l_component_type
20362   , p_component_code               => l_component_code
20363   , p_component_type_code          => l_component_type_code
20364   , p_component_appl_id            => l_component_appl_id
20365   , p_amb_context_code             => l_amb_context_code
20366   , p_side                         => 'NA'
20367   );
20368 
20369 
20370    --
20371    --
20372    END IF;
20373    --
20374    -- Bug 4922099
20375    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20376           (NVL(l_enc_upg_option, 'N') = 'O')
20377         ) AND
20378         (l_bflow_method_code = 'PRIOR_ENTRY')
20379       )
20383       1 = 2
20380    THEN
20381       IF
20382       --
20384       --
20385       THEN
20386       xla_accounting_err_pkg.build_message
20387                                     (p_appli_s_name            => 'XLA'
20388                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20389                                     ,p_token_1                 => 'LINE_NUMBER'
20390                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20391                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20392                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20393                                                                              l_component_type
20394                                                                             ,l_component_code
20395                                                                             ,l_component_type_code
20396                                                                             ,l_component_appl_id
20397                                                                             ,l_amb_context_code
20398                                                                             ,l_entity_code
20399                                                                             ,l_event_class_code
20400                                                                            )
20401                                     ,p_token_3                 => 'OWNER'
20402                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20403                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20404                                                                           ,p_lookup_code    => l_component_type_code
20405                                                                          )
20406                                     ,p_token_4                 => 'PRODUCT_NAME'
20407                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20408                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20409                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20410                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20411                                     ,p_ae_header_id            =>  NULL
20412                                        );
20413 
20414         IF (C_LEVEL_ERROR>= g_log_level) THEN
20415                  trace
20416                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20417                       ,p_level    => C_LEVEL_ERROR
20418                       ,p_module   => l_log_module);
20419         END IF;
20420       END IF;
20421    END IF;
20422    --
20423    --
20424    ------------------------------------------------------------------------------------------------
20425    -- 4219869 Business Flow
20426    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
20427    -- Prior Entry.  Currently, the following code is always generated.
20428    ------------------------------------------------------------------------------------------------
20429    XLA_AE_LINES_PKG.ValidateCurrentLine;
20430 
20431    ------------------------------------------------------------------------------------
20432    -- 4219869 Business Flow
20433    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
20434    ------------------------------------------------------------------------------------
20435    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20436 
20437    ----------------------------------------------------------------------------------
20438    -- 4219869 Business Flow
20439    -- Update journal entry status -- Need to generate this within IF <condition>
20440    ----------------------------------------------------------------------------------
20441    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20442          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
20443          ,p_balance_type_code => l_balance_type_code
20444          );
20445 
20446    -------------------------------------------------------------------------------------------
20447    -- 4262811 - Generate the Accrual Reversal lines
20448    -------------------------------------------------------------------------------------------
20449    BEGIN
20450       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
20451                               (g_array_event(p_event_id).array_value_num('header_index'));
20452       IF l_acc_rev_flag IS NULL THEN
20453          l_acc_rev_flag := 'N';
20454       END IF;
20455    EXCEPTION
20456       WHEN OTHERS THEN
20457          l_acc_rev_flag := 'N';
20458    END;
20459    --
20460    IF (l_acc_rev_flag = 'Y') THEN
20461 
20462        -- 4645092  ------------------------------------------------------------------------------
20463        -- To allow MPA report to determine if it should generate report process
20464        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
20465        ------------------------------------------------------------------------------------------
20466 
20467        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
20468        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
20469    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
20473    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20470    -- call ADRs
20471    -- Bug 4922099
20472    --
20474         (NVL(l_actual_upg_option, 'N') = 'O') OR
20475         (NVL(l_enc_upg_option, 'N') = 'O')
20476       )
20477    THEN
20478    NULL;
20479    --
20480    --
20481    
20482   l_ccid := AcctDerRule_21(
20483            p_application_id           => p_application_id
20484          , p_ae_header_id             => l_ae_header_id 
20485 , p_source_24 => p_source_24
20486          , x_transaction_coa_id       => l_adr_transaction_coa_id
20487          , x_accounting_coa_id        => l_adr_accounting_coa_id
20488          , x_value_type_code          => l_adr_value_type_code
20489          , p_side                     => 'NA'
20490    );
20491 
20492    xla_ae_lines_pkg.set_ccid(
20493     p_code_combination_id          => l_ccid
20494   , p_value_type_code              => l_adr_value_type_code
20495   , p_transaction_coa_id           => l_adr_transaction_coa_id
20496   , p_accounting_coa_id            => l_adr_accounting_coa_id
20497   , p_adr_code                     => 'CM_DIST_CCID'
20498   , p_adr_type_code                => 'S'
20499   , p_component_type               => l_component_type
20500   , p_component_code               => l_component_code
20501   , p_component_type_code          => l_component_type_code
20502   , p_component_appl_id            => l_component_appl_id
20503   , p_amb_context_code             => l_amb_context_code
20504   , p_side                         => 'NA'
20505   );
20506 
20507 
20508    --
20509    --
20510    END IF;
20511 
20512        --
20513        -- Update the line information that should be overwritten
20514        --
20515        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
20516                                          p_header_num   => 1);
20517        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
20518 
20519        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
20520 
20521        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
20522           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
20523        END IF;
20524 
20525       --
20526       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
20527       --
20528       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
20529           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
20530       ELSE
20531           ---------------------------------------------------------------------------------------------------
20532           -- 4262811a Switch Sign
20533           ---------------------------------------------------------------------------------------------------
20534           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
20535           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20536                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20537           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
20538                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20539           -- 5132302
20540           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
20541                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
20542 
20543       END IF;
20544 
20545       -- 4955764
20546       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20547       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
20548 
20549 
20550       XLA_AE_LINES_PKG.ValidateCurrentLine;
20551       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
20552 
20553       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
20554                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
20555                ,p_balance_type_code => l_balance_type_code);
20556 
20557    END IF;
20558 
20559    -----------------------------------------------------------------------------------------
20560    -- 4262811 Multiperiod Accounting
20561    -----------------------------------------------------------------------------------------
20562      -- No MPA option is assigned.
20563 
20564 
20565 END IF;
20566 END IF;
20567 --
20568 
20569 --
20570 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20571    trace
20572       (p_msg      => 'END of AcctLineType_64'
20573       ,p_level    => C_LEVEL_PROCEDURE
20574       ,p_module   => l_log_module);
20575 END IF;
20576 --
20577 EXCEPTION
20578   WHEN xla_exceptions_pkg.application_exception THEN
20579       RAISE;
20580   WHEN OTHERS THEN
20581        xla_exceptions_pkg.raise_message
20582            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_64');
20583 END AcctLineType_64;
20584 --
20585 
20586 ---------------------------------------
20587 --
20588 -- PRIVATE FUNCTION
20589 --         AcctLineType_65
20590 --
20591 ---------------------------------------
20592 PROCEDURE AcctLineType_65 (
20593   p_application_id        IN NUMBER
20597  ,p_actual_flag           IN OUT VARCHAR2
20594  ,p_event_id              IN NUMBER
20595  ,p_calculate_acctd_flag  IN VARCHAR2
20596  ,p_calculate_g_l_flag    IN VARCHAR2
20598  ,p_balance_type_code     OUT VARCHAR2
20599  ,p_gain_or_loss_ref      OUT VARCHAR2
20600  
20601 --Credit Memo Distribution GL Account
20602  , p_source_24            IN NUMBER
20603 --SLA Party Type
20604  , p_source_51            IN VARCHAR2
20605 --Credit Memo Distribution Identifier
20606  , p_source_64            IN NUMBER
20607 --Credit memo distributions type
20608  , p_source_65            IN VARCHAR2
20609 --Credit Memo Currency Code
20610  , p_source_66            IN VARCHAR2
20611 --Credit Memo Exchange Date
20612  , p_source_67            IN DATE
20613 --Credit Memo Exchange Rate
20614  , p_source_68            IN NUMBER
20615 --Credit Memo Exchange Rate Type
20616  , p_source_69            IN VARCHAR2
20617 --Gain Loss Reference
20618  , p_source_70            IN VARCHAR2
20619 --Credit Memo Accounting Amount
20620  , p_source_71            IN NUMBER
20621 --Credit Memo Bill To Customer Account Identifier
20622  , p_source_72            IN NUMBER
20623 --Credit Memo Bill To Customer Site Use Identifier
20624  , p_source_73            IN NUMBER
20625 --Credit Memo Tax Line Identifier
20626  , p_source_74            IN NUMBER
20627 --Credit Memo Distribution Account Class
20628  , p_source_75            IN VARCHAR2
20629 --Credit Memo Distribution Entered Amount
20630  , p_source_76            IN NUMBER
20631 )
20632 IS
20633 
20634 l_component_type              VARCHAR2(80);
20635 l_component_code              VARCHAR2(30);
20636 l_component_type_code         VARCHAR2(1);
20637 l_component_appl_id           INTEGER;
20638 l_amb_context_code            VARCHAR2(30);
20639 l_entity_code                 VARCHAR2(30);
20640 l_event_class_code            VARCHAR2(30);
20641 l_ae_header_id                NUMBER;
20642 l_event_type_code             VARCHAR2(30);
20643 l_line_definition_code        VARCHAR2(30);
20644 l_line_definition_owner_code  VARCHAR2(1);
20645 --
20646 -- adr variables
20647 l_segment                     VARCHAR2(30);
20648 l_ccid                        NUMBER;
20649 l_adr_transaction_coa_id      NUMBER;
20650 l_adr_accounting_coa_id       NUMBER;
20651 l_adr_flexfield_segment_code  VARCHAR2(30);
20652 l_adr_flex_value_set_id       NUMBER;
20653 l_adr_value_type_code         VARCHAR2(30);
20654 l_adr_value_combination_id    NUMBER;
20655 l_adr_value_segment_code      VARCHAR2(30);
20656 
20657 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
20658 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
20659 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
20660 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
20661 
20662 -- 4262811 Variables ------------------------------------------------------------------------------------------
20663 l_entered_amt_idx             NUMBER;
20664 l_accted_amt_idx              NUMBER;
20665 l_acc_rev_flag                VARCHAR2(1);
20666 l_accrual_line_num            NUMBER;
20667 l_tmp_amt                     NUMBER;
20668 l_acc_rev_natural_side_code   VARCHAR2(1);
20669 
20670 l_num_entries                 NUMBER;
20671 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
20672 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
20673 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
20674 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
20675 l_recog_line_1                NUMBER;
20676 l_recog_line_2                NUMBER;
20677 
20678 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
20679 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
20680 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
20681 
20682 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
20683 
20684 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
20685 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
20686 
20687 ---------------------------------------------------------------------------------------------------------------
20688 
20689 
20690 --
20691 -- bulk performance
20692 --
20693 l_balance_type_code           VARCHAR2(1);
20694 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
20695 l_log_module                  VARCHAR2(240);
20696 
20697 --
20698 -- Upgrade strategy
20699 --
20700 l_actual_upg_option           VARCHAR2(1);
20701 l_enc_upg_option           VARCHAR2(1);
20702 
20703 --
20704 BEGIN
20705 --
20706 IF g_log_enabled THEN
20707       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_65';
20708 END IF;
20709 --
20710 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
20711 
20712       trace
20713          (p_msg      => 'BEGIN of AcctLineType_65'
20714          ,p_level    => C_LEVEL_PROCEDURE
20715          ,p_module   => l_log_module);
20716 
20717 END IF;
20718 --
20719 l_component_type             := 'AMB_JLT';
20720 l_component_code             := 'CM_UNBILL';
20721 l_component_type_code        := 'S';
20722 l_component_appl_id          :=  222;
20723 l_amb_context_code           := 'DEFAULT';
20724 l_entity_code                := 'TRANSACTIONS';
20728 l_line_definition_code       := 'AR_CM_DEFAULT_ACCRUAL';
20725 l_event_class_code           := 'CREDIT_MEMO';
20726 l_event_type_code            := 'CREDIT_MEMO_ALL';
20727 l_line_definition_owner_code := 'S';
20729 --
20730 l_balance_type_code          := 'A';
20731 l_segment                     := NULL;
20732 l_ccid                        := NULL;
20733 l_adr_transaction_coa_id      := NULL;
20734 l_adr_accounting_coa_id       := NULL;
20735 l_adr_flexfield_segment_code  := NULL;
20736 l_adr_flex_value_set_id       := NULL;
20737 l_adr_value_type_code         := NULL;
20738 l_adr_value_combination_id    := NULL;
20739 l_adr_value_segment_code      := NULL;
20740 
20741 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
20742 l_bflow_class_code           := '';    -- 4219869 Business Flow
20743 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
20744 l_budgetary_control_flag     := 'N';
20745 
20746 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
20747 l_bflow_applied_to_amt       := NULL; -- 5132302
20748 l_entered_amt_idx            := NULL;          -- 4262811
20749 l_accted_amt_idx             := NULL;          -- 4262811
20750 l_acc_rev_flag               := NULL;          -- 4262811
20751 l_accrual_line_num           := NULL;          -- 4262811
20752 l_tmp_amt                    := NULL;          -- 4262811
20753 --
20754  
20755 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
20756     l_balance_type_code <> 'B' THEN
20757 IF NVL(p_source_75,'
20758 ') =  'UNBILL'
20759  THEN 
20760 
20761    --
20762    XLA_AE_LINES_PKG.SetNewLine;
20763 
20764    p_balance_type_code          := l_balance_type_code;
20765    -- set the flag so later we will know whether the gain loss line needs to be created
20766    
20767    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
20768      p_actual_flag :='A';
20769    END IF;
20770 
20771    --
20772    -- bulk performance
20773    --
20774    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
20775                                       p_header_num   => 0); -- 4262811
20776    --
20777    -- set accounting line options
20778    --
20779    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
20780            p_natural_side_code          => 'C'
20781          , p_gain_or_loss_flag          => 'N'
20782          , p_gl_transfer_mode_code      => 'S'
20783          , p_acct_entry_type_code       => 'A'
20784          , p_switch_side_flag           => 'Y'
20785          , p_merge_duplicate_code       => 'A'
20786          );
20787    --
20788    l_acc_rev_natural_side_code := 'D';  -- 4262811
20789    -- 
20790    --
20791    -- set accounting line type info
20792    --
20793    xla_ae_lines_pkg.SetAcctLineType
20794       (p_component_type             => l_component_type
20795       ,p_event_type_code            => l_event_type_code
20796       ,p_line_definition_owner_code => l_line_definition_owner_code
20797       ,p_line_definition_code       => l_line_definition_code
20798       ,p_accounting_line_code       => l_component_code
20799       ,p_accounting_line_type_code  => l_component_type_code
20800       ,p_accounting_line_appl_id    => l_component_appl_id
20801       ,p_amb_context_code           => l_amb_context_code
20802       ,p_entity_code                => l_entity_code
20803       ,p_event_class_code           => l_event_class_code);
20804    --
20805    -- set accounting class
20806    --
20807    xla_ae_lines_pkg.SetAcctClass(
20808            p_accounting_class_code  => 'UNBILL'
20809          , p_ae_header_id           => l_ae_header_id
20810          );
20811 
20812    --
20813    -- set rounding class
20814    --
20815    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
20816                       'RECEIVABLE';
20817 
20818    --
20819    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
20820    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
20821    --
20822    -- bulk performance
20823    --
20824    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
20825 
20826    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
20827       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
20828 
20829    -- 4955764
20830    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
20831       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
20832 
20833    -- 4458381 Public Sector Enh
20834    
20835    --
20836    -- set accounting attributes for the line type
20837    --
20838    l_entered_amt_idx := 3;
20839    l_accted_amt_idx  := 9;
20840    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
20841    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
20842    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_64);
20843    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
20844    l_rec_acct_attrs.array_char_value(2)  := p_source_65;
20845    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
20846    l_rec_acct_attrs.array_num_value(3)  := p_source_76;
20850    l_rec_acct_attrs.array_date_value(5)  := p_source_67;
20847    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
20848    l_rec_acct_attrs.array_char_value(4)  := p_source_66;
20849    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
20851    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
20852    l_rec_acct_attrs.array_num_value(6)  := p_source_68;
20853    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
20854    l_rec_acct_attrs.array_char_value(7)  := p_source_69;
20855    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
20856    l_rec_acct_attrs.array_char_value(8)  := p_source_70;
20857    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
20858    l_rec_acct_attrs.array_num_value(9)  := p_source_71;
20859    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
20860    l_rec_acct_attrs.array_num_value(10)  := p_source_72;
20861    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
20862    l_rec_acct_attrs.array_num_value(11)  := p_source_73;
20863    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
20864    l_rec_acct_attrs.array_char_value(12)  := p_source_51;
20865    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
20866    l_rec_acct_attrs.array_num_value(13)  := p_source_74;
20867 
20868    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
20869    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
20870 
20871    ---------------------------------------------------------------------------------------------------------------
20872    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
20873    ---------------------------------------------------------------------------------------------------------------
20874    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
20875 
20876    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20877    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
20878 
20879    IF xla_accounting_cache_pkg.GetValueChar
20880          (p_source_code         => 'LEDGER_CATEGORY_CODE'
20881          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
20882    AND l_bflow_method_code = 'PRIOR_ENTRY'
20883 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
20884    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
20885          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
20886        )
20887    THEN
20888          xla_ae_lines_pkg.BflowUpgEntry
20889            (p_business_method_code    => l_bflow_method_code
20890            ,p_business_class_code     => l_bflow_class_code
20891            ,p_balance_type            => l_balance_type_code);
20892    ELSE
20893       NULL;
20894 -- No business flow processing for business flow method of NONE.
20895    END IF;
20896 
20897    --
20898    -- call analytical criteria
20899    --
20900    
20901    --
20902    -- call description
20903    --
20904    -- No description or it is inherited.
20905    --
20906    -- call ADRs
20907    -- Bug 4922099
20908    --
20909    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
20910         (NVL(l_actual_upg_option, 'N') = 'O') OR
20911         (NVL(l_enc_upg_option, 'N') = 'O')
20912       )
20913    THEN
20914    NULL;
20915    --
20916    --
20917    
20918   l_ccid := AcctDerRule_21(
20919            p_application_id           => p_application_id
20920          , p_ae_header_id             => l_ae_header_id 
20921 , p_source_24 => p_source_24
20922          , x_transaction_coa_id       => l_adr_transaction_coa_id
20923          , x_accounting_coa_id        => l_adr_accounting_coa_id
20924          , x_value_type_code          => l_adr_value_type_code
20925          , p_side                     => 'NA'
20926    );
20927 
20928    xla_ae_lines_pkg.set_ccid(
20929     p_code_combination_id          => l_ccid
20930   , p_value_type_code              => l_adr_value_type_code
20931   , p_transaction_coa_id           => l_adr_transaction_coa_id
20932   , p_accounting_coa_id            => l_adr_accounting_coa_id
20933   , p_adr_code                     => 'CM_DIST_CCID'
20934   , p_adr_type_code                => 'S'
20935   , p_component_type               => l_component_type
20936   , p_component_code               => l_component_code
20937   , p_component_type_code          => l_component_type_code
20938   , p_component_appl_id            => l_component_appl_id
20939   , p_amb_context_code             => l_amb_context_code
20940   , p_side                         => 'NA'
20941   );
20942 
20943 
20944    --
20945    --
20946    END IF;
20947    --
20948    -- Bug 4922099
20949    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
20950           (NVL(l_enc_upg_option, 'N') = 'O')
20951         ) AND
20952         (l_bflow_method_code = 'PRIOR_ENTRY')
20953       )
20954    THEN
20955       IF
20956       --
20957       1 = 2
20958       --
20959       THEN
20960       xla_accounting_err_pkg.build_message
20961                                     (p_appli_s_name            => 'XLA'
20962                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20966                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
20963                                     ,p_token_1                 => 'LINE_NUMBER'
20964                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
20965                                     ,p_token_2                 => 'LINE_TYPE_NAME'
20967                                                                              l_component_type
20968                                                                             ,l_component_code
20969                                                                             ,l_component_type_code
20970                                                                             ,l_component_appl_id
20971                                                                             ,l_amb_context_code
20972                                                                             ,l_entity_code
20973                                                                             ,l_event_class_code
20974                                                                            )
20975                                     ,p_token_3                 => 'OWNER'
20976                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
20977                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
20978                                                                           ,p_lookup_code    => l_component_type_code
20979                                                                          )
20980                                     ,p_token_4                 => 'PRODUCT_NAME'
20981                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
20982                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
20983                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
20984                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
20985                                     ,p_ae_header_id            =>  NULL
20986                                        );
20987 
20988         IF (C_LEVEL_ERROR>= g_log_level) THEN
20989                  trace
20990                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
20991                       ,p_level    => C_LEVEL_ERROR
20992                       ,p_module   => l_log_module);
20993         END IF;
20994       END IF;
20995    END IF;
20996    --
20997    --
20998    ------------------------------------------------------------------------------------------------
20999    -- 4219869 Business Flow
21000    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21001    -- Prior Entry.  Currently, the following code is always generated.
21002    ------------------------------------------------------------------------------------------------
21003    XLA_AE_LINES_PKG.ValidateCurrentLine;
21004 
21005    ------------------------------------------------------------------------------------
21006    -- 4219869 Business Flow
21007    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21008    ------------------------------------------------------------------------------------
21009    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21010 
21011    ----------------------------------------------------------------------------------
21012    -- 4219869 Business Flow
21013    -- Update journal entry status -- Need to generate this within IF <condition>
21014    ----------------------------------------------------------------------------------
21015    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21016          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21017          ,p_balance_type_code => l_balance_type_code
21018          );
21019 
21020    -------------------------------------------------------------------------------------------
21021    -- 4262811 - Generate the Accrual Reversal lines
21022    -------------------------------------------------------------------------------------------
21023    BEGIN
21024       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21025                               (g_array_event(p_event_id).array_value_num('header_index'));
21026       IF l_acc_rev_flag IS NULL THEN
21027          l_acc_rev_flag := 'N';
21028       END IF;
21029    EXCEPTION
21030       WHEN OTHERS THEN
21031          l_acc_rev_flag := 'N';
21032    END;
21033    --
21034    IF (l_acc_rev_flag = 'Y') THEN
21035 
21036        -- 4645092  ------------------------------------------------------------------------------
21037        -- To allow MPA report to determine if it should generate report process
21038        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21039        ------------------------------------------------------------------------------------------
21040 
21041        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21042        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21043    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
21044    -- call ADRs
21045    -- Bug 4922099
21046    --
21047    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21048         (NVL(l_actual_upg_option, 'N') = 'O') OR
21049         (NVL(l_enc_upg_option, 'N') = 'O')
21050       )
21051    THEN
21052    NULL;
21053    --
21054    --
21058          , p_ae_header_id             => l_ae_header_id 
21055    
21056   l_ccid := AcctDerRule_21(
21057            p_application_id           => p_application_id
21059 , p_source_24 => p_source_24
21060          , x_transaction_coa_id       => l_adr_transaction_coa_id
21061          , x_accounting_coa_id        => l_adr_accounting_coa_id
21062          , x_value_type_code          => l_adr_value_type_code
21063          , p_side                     => 'NA'
21064    );
21065 
21066    xla_ae_lines_pkg.set_ccid(
21067     p_code_combination_id          => l_ccid
21068   , p_value_type_code              => l_adr_value_type_code
21069   , p_transaction_coa_id           => l_adr_transaction_coa_id
21070   , p_accounting_coa_id            => l_adr_accounting_coa_id
21071   , p_adr_code                     => 'CM_DIST_CCID'
21072   , p_adr_type_code                => 'S'
21073   , p_component_type               => l_component_type
21074   , p_component_code               => l_component_code
21075   , p_component_type_code          => l_component_type_code
21076   , p_component_appl_id            => l_component_appl_id
21077   , p_amb_context_code             => l_amb_context_code
21078   , p_side                         => 'NA'
21079   );
21080 
21081 
21082    --
21083    --
21084    END IF;
21085 
21086        --
21087        -- Update the line information that should be overwritten
21088        --
21089        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21090                                          p_header_num   => 1);
21091        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21092 
21093        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21094 
21095        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21096           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21097        END IF;
21098 
21099       --
21100       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21101       --
21102       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21103           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21104       ELSE
21105           ---------------------------------------------------------------------------------------------------
21106           -- 4262811a Switch Sign
21107           ---------------------------------------------------------------------------------------------------
21108           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21109           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21110                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21111           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21112                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21113           -- 5132302
21114           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21115                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21116 
21117       END IF;
21118 
21119       -- 4955764
21120       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21121       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21122 
21123 
21124       XLA_AE_LINES_PKG.ValidateCurrentLine;
21125       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21126 
21127       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21128                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21129                ,p_balance_type_code => l_balance_type_code);
21130 
21131    END IF;
21132 
21133    -----------------------------------------------------------------------------------------
21134    -- 4262811 Multiperiod Accounting
21135    -----------------------------------------------------------------------------------------
21136      -- No MPA option is assigned.
21137 
21138 
21139 END IF;
21140 END IF;
21141 --
21142 
21143 --
21144 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21145    trace
21146       (p_msg      => 'END of AcctLineType_65'
21147       ,p_level    => C_LEVEL_PROCEDURE
21148       ,p_module   => l_log_module);
21149 END IF;
21150 --
21151 EXCEPTION
21152   WHEN xla_exceptions_pkg.application_exception THEN
21153       RAISE;
21154   WHEN OTHERS THEN
21155        xla_exceptions_pkg.raise_message
21156            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_65');
21157 END AcctLineType_65;
21158 --
21159 
21160 ---------------------------------------
21161 --
21162 -- PRIVATE FUNCTION
21163 --         AcctLineType_66
21164 --
21165 ---------------------------------------
21166 PROCEDURE AcctLineType_66 (
21167   p_application_id        IN NUMBER
21168  ,p_event_id              IN NUMBER
21169  ,p_calculate_acctd_flag  IN VARCHAR2
21170  ,p_calculate_g_l_flag    IN VARCHAR2
21171  ,p_actual_flag           IN OUT VARCHAR2
21172  ,p_balance_type_code     OUT VARCHAR2
21173  ,p_gain_or_loss_ref      OUT VARCHAR2
21174  
21175 --Credit Memo Distribution GL Account
21176  , p_source_24            IN NUMBER
21177 --SLA Party Type
21181 --Credit memo distributions type
21178  , p_source_51            IN VARCHAR2
21179 --Credit Memo Distribution Identifier
21180  , p_source_64            IN NUMBER
21182  , p_source_65            IN VARCHAR2
21183 --Credit Memo Currency Code
21184  , p_source_66            IN VARCHAR2
21185 --Credit Memo Exchange Date
21186  , p_source_67            IN DATE
21187 --Credit Memo Exchange Rate
21188  , p_source_68            IN NUMBER
21189 --Credit Memo Exchange Rate Type
21190  , p_source_69            IN VARCHAR2
21191 --Gain Loss Reference
21192  , p_source_70            IN VARCHAR2
21193 --Credit Memo Accounting Amount
21194  , p_source_71            IN NUMBER
21195 --Credit Memo Bill To Customer Account Identifier
21196  , p_source_72            IN NUMBER
21197 --Credit Memo Bill To Customer Site Use Identifier
21198  , p_source_73            IN NUMBER
21199 --Credit Memo Tax Line Identifier
21200  , p_source_74            IN NUMBER
21201 --Credit Memo Distribution Account Class
21202  , p_source_75            IN VARCHAR2
21203 --Credit Memo Distribution Entered Amount
21204  , p_source_76            IN NUMBER
21205 )
21206 IS
21207 
21208 l_component_type              VARCHAR2(80);
21209 l_component_code              VARCHAR2(30);
21210 l_component_type_code         VARCHAR2(1);
21211 l_component_appl_id           INTEGER;
21212 l_amb_context_code            VARCHAR2(30);
21213 l_entity_code                 VARCHAR2(30);
21214 l_event_class_code            VARCHAR2(30);
21215 l_ae_header_id                NUMBER;
21216 l_event_type_code             VARCHAR2(30);
21217 l_line_definition_code        VARCHAR2(30);
21218 l_line_definition_owner_code  VARCHAR2(1);
21219 --
21220 -- adr variables
21221 l_segment                     VARCHAR2(30);
21222 l_ccid                        NUMBER;
21223 l_adr_transaction_coa_id      NUMBER;
21224 l_adr_accounting_coa_id       NUMBER;
21225 l_adr_flexfield_segment_code  VARCHAR2(30);
21226 l_adr_flex_value_set_id       NUMBER;
21227 l_adr_value_type_code         VARCHAR2(30);
21228 l_adr_value_combination_id    NUMBER;
21229 l_adr_value_segment_code      VARCHAR2(30);
21230 
21231 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21232 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21233 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21234 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21235 
21236 -- 4262811 Variables ------------------------------------------------------------------------------------------
21237 l_entered_amt_idx             NUMBER;
21238 l_accted_amt_idx              NUMBER;
21239 l_acc_rev_flag                VARCHAR2(1);
21240 l_accrual_line_num            NUMBER;
21241 l_tmp_amt                     NUMBER;
21242 l_acc_rev_natural_side_code   VARCHAR2(1);
21243 
21244 l_num_entries                 NUMBER;
21245 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21246 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21247 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21248 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21249 l_recog_line_1                NUMBER;
21250 l_recog_line_2                NUMBER;
21251 
21252 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21253 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21254 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21255 
21256 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21257 
21258 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21259 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21260 
21261 ---------------------------------------------------------------------------------------------------------------
21262 
21263 
21264 --
21265 -- bulk performance
21266 --
21267 l_balance_type_code           VARCHAR2(1);
21268 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21269 l_log_module                  VARCHAR2(240);
21270 
21271 --
21272 -- Upgrade strategy
21273 --
21274 l_actual_upg_option           VARCHAR2(1);
21275 l_enc_upg_option           VARCHAR2(1);
21276 
21277 --
21278 BEGIN
21279 --
21280 IF g_log_enabled THEN
21281       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_66';
21282 END IF;
21283 --
21284 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21285 
21286       trace
21287          (p_msg      => 'BEGIN of AcctLineType_66'
21288          ,p_level    => C_LEVEL_PROCEDURE
21289          ,p_module   => l_log_module);
21290 
21291 END IF;
21292 --
21293 l_component_type             := 'AMB_JLT';
21294 l_component_code             := 'CM_UNEARN';
21295 l_component_type_code        := 'S';
21296 l_component_appl_id          :=  222;
21297 l_amb_context_code           := 'DEFAULT';
21298 l_entity_code                := 'TRANSACTIONS';
21299 l_event_class_code           := 'CREDIT_MEMO';
21300 l_event_type_code            := 'CREDIT_MEMO_ALL';
21301 l_line_definition_owner_code := 'S';
21302 l_line_definition_code       := 'AR_CM_DEFAULT_ACCRUAL';
21303 --
21304 l_balance_type_code          := 'A';
21305 l_segment                     := NULL;
21306 l_ccid                        := NULL;
21307 l_adr_transaction_coa_id      := NULL;
21308 l_adr_accounting_coa_id       := NULL;
21312 l_adr_value_combination_id    := NULL;
21309 l_adr_flexfield_segment_code  := NULL;
21310 l_adr_flex_value_set_id       := NULL;
21311 l_adr_value_type_code         := NULL;
21313 l_adr_value_segment_code      := NULL;
21314 
21315 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21316 l_bflow_class_code           := '';    -- 4219869 Business Flow
21317 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21318 l_budgetary_control_flag     := 'N';
21319 
21320 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21321 l_bflow_applied_to_amt       := NULL; -- 5132302
21322 l_entered_amt_idx            := NULL;          -- 4262811
21323 l_accted_amt_idx             := NULL;          -- 4262811
21324 l_acc_rev_flag               := NULL;          -- 4262811
21325 l_accrual_line_num           := NULL;          -- 4262811
21326 l_tmp_amt                    := NULL;          -- 4262811
21327 --
21328  
21329 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21330     l_balance_type_code <> 'B' THEN
21331 IF NVL(p_source_75,'
21332 ') =  'UNEARN'
21333  THEN 
21334 
21335    --
21336    XLA_AE_LINES_PKG.SetNewLine;
21337 
21338    p_balance_type_code          := l_balance_type_code;
21339    -- set the flag so later we will know whether the gain loss line needs to be created
21340    
21341    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21342      p_actual_flag :='A';
21343    END IF;
21344 
21345    --
21346    -- bulk performance
21347    --
21348    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21349                                       p_header_num   => 0); -- 4262811
21350    --
21351    -- set accounting line options
21352    --
21353    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21354            p_natural_side_code          => 'C'
21355          , p_gain_or_loss_flag          => 'N'
21356          , p_gl_transfer_mode_code      => 'S'
21357          , p_acct_entry_type_code       => 'A'
21358          , p_switch_side_flag           => 'Y'
21359          , p_merge_duplicate_code       => 'A'
21360          );
21361    --
21362    l_acc_rev_natural_side_code := 'D';  -- 4262811
21363    -- 
21364    --
21365    -- set accounting line type info
21366    --
21367    xla_ae_lines_pkg.SetAcctLineType
21368       (p_component_type             => l_component_type
21369       ,p_event_type_code            => l_event_type_code
21370       ,p_line_definition_owner_code => l_line_definition_owner_code
21371       ,p_line_definition_code       => l_line_definition_code
21372       ,p_accounting_line_code       => l_component_code
21373       ,p_accounting_line_type_code  => l_component_type_code
21374       ,p_accounting_line_appl_id    => l_component_appl_id
21375       ,p_amb_context_code           => l_amb_context_code
21376       ,p_entity_code                => l_entity_code
21377       ,p_event_class_code           => l_event_class_code);
21378    --
21379    -- set accounting class
21380    --
21381    xla_ae_lines_pkg.SetAcctClass(
21382            p_accounting_class_code  => 'UNEARNED_REVENUE'
21383          , p_ae_header_id           => l_ae_header_id
21384          );
21385 
21386    --
21387    -- set rounding class
21388    --
21389    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21390                       'RECEIVABLE';
21391 
21392    --
21393    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21394    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21395    --
21396    -- bulk performance
21397    --
21398    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21399 
21400    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
21401       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
21402 
21403    -- 4955764
21404    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21405       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
21406 
21407    -- 4458381 Public Sector Enh
21408    
21409    --
21410    -- set accounting attributes for the line type
21411    --
21412    l_entered_amt_idx := 3;
21413    l_accted_amt_idx  := 9;
21414    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
21415    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
21416    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_64);
21417    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
21418    l_rec_acct_attrs.array_char_value(2)  := p_source_65;
21419    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
21420    l_rec_acct_attrs.array_num_value(3)  := p_source_76;
21421    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
21422    l_rec_acct_attrs.array_char_value(4)  := p_source_66;
21423    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
21424    l_rec_acct_attrs.array_date_value(5)  := p_source_67;
21425    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
21426    l_rec_acct_attrs.array_num_value(6)  := p_source_68;
21427    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
21428    l_rec_acct_attrs.array_char_value(7)  := p_source_69;
21432    l_rec_acct_attrs.array_num_value(9)  := p_source_71;
21429    l_rec_acct_attrs.array_acct_attr_code(8) := 'GAIN_LOSS_REFERENCE';
21430    l_rec_acct_attrs.array_char_value(8)  := p_source_70;
21431    l_rec_acct_attrs.array_acct_attr_code(9) := 'LEDGER_AMOUNT';
21433    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_ID';
21434    l_rec_acct_attrs.array_num_value(10)  := p_source_72;
21435    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_SITE_ID';
21436    l_rec_acct_attrs.array_num_value(11)  := p_source_73;
21437    l_rec_acct_attrs.array_acct_attr_code(12) := 'PARTY_TYPE';
21438    l_rec_acct_attrs.array_char_value(12)  := p_source_51;
21439    l_rec_acct_attrs.array_acct_attr_code(13) := 'TAX_LINE_REF_ID';
21440    l_rec_acct_attrs.array_num_value(13)  := p_source_74;
21441 
21442    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
21443    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
21444 
21445    ---------------------------------------------------------------------------------------------------------------
21446    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
21447    ---------------------------------------------------------------------------------------------------------------
21448    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
21449 
21450    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21451    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
21452 
21453    IF xla_accounting_cache_pkg.GetValueChar
21454          (p_source_code         => 'LEDGER_CATEGORY_CODE'
21455          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
21456    AND l_bflow_method_code = 'PRIOR_ENTRY'
21457 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
21458    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
21459          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
21460        )
21461    THEN
21462          xla_ae_lines_pkg.BflowUpgEntry
21463            (p_business_method_code    => l_bflow_method_code
21464            ,p_business_class_code     => l_bflow_class_code
21465            ,p_balance_type            => l_balance_type_code);
21466    ELSE
21467       NULL;
21468 -- No business flow processing for business flow method of NONE.
21469    END IF;
21470 
21471    --
21472    -- call analytical criteria
21473    --
21474    
21475    --
21476    -- call description
21477    --
21478    -- No description or it is inherited.
21479    --
21480    -- call ADRs
21481    -- Bug 4922099
21482    --
21483    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21484         (NVL(l_actual_upg_option, 'N') = 'O') OR
21485         (NVL(l_enc_upg_option, 'N') = 'O')
21486       )
21487    THEN
21488    NULL;
21489    --
21490    --
21491    
21492   l_ccid := AcctDerRule_21(
21493            p_application_id           => p_application_id
21494          , p_ae_header_id             => l_ae_header_id 
21495 , p_source_24 => p_source_24
21496          , x_transaction_coa_id       => l_adr_transaction_coa_id
21497          , x_accounting_coa_id        => l_adr_accounting_coa_id
21498          , x_value_type_code          => l_adr_value_type_code
21499          , p_side                     => 'NA'
21500    );
21501 
21502    xla_ae_lines_pkg.set_ccid(
21503     p_code_combination_id          => l_ccid
21504   , p_value_type_code              => l_adr_value_type_code
21505   , p_transaction_coa_id           => l_adr_transaction_coa_id
21506   , p_accounting_coa_id            => l_adr_accounting_coa_id
21507   , p_adr_code                     => 'CM_DIST_CCID'
21508   , p_adr_type_code                => 'S'
21509   , p_component_type               => l_component_type
21510   , p_component_code               => l_component_code
21511   , p_component_type_code          => l_component_type_code
21512   , p_component_appl_id            => l_component_appl_id
21513   , p_amb_context_code             => l_amb_context_code
21514   , p_side                         => 'NA'
21515   );
21516 
21517 
21518    --
21519    --
21520    END IF;
21521    --
21522    -- Bug 4922099
21523    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
21524           (NVL(l_enc_upg_option, 'N') = 'O')
21525         ) AND
21526         (l_bflow_method_code = 'PRIOR_ENTRY')
21527       )
21528    THEN
21529       IF
21530       --
21531       1 = 2
21532       --
21533       THEN
21534       xla_accounting_err_pkg.build_message
21535                                     (p_appli_s_name            => 'XLA'
21536                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21537                                     ,p_token_1                 => 'LINE_NUMBER'
21538                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
21539                                     ,p_token_2                 => 'LINE_TYPE_NAME'
21540                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
21541                                                                              l_component_type
21542                                                                             ,l_component_code
21546                                                                             ,l_entity_code
21543                                                                             ,l_component_type_code
21544                                                                             ,l_component_appl_id
21545                                                                             ,l_amb_context_code
21547                                                                             ,l_event_class_code
21548                                                                            )
21549                                     ,p_token_3                 => 'OWNER'
21550                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
21551                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
21552                                                                           ,p_lookup_code    => l_component_type_code
21553                                                                          )
21554                                     ,p_token_4                 => 'PRODUCT_NAME'
21555                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
21556                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
21557                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
21558                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
21559                                     ,p_ae_header_id            =>  NULL
21560                                        );
21561 
21562         IF (C_LEVEL_ERROR>= g_log_level) THEN
21563                  trace
21564                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
21565                       ,p_level    => C_LEVEL_ERROR
21566                       ,p_module   => l_log_module);
21567         END IF;
21568       END IF;
21569    END IF;
21570    --
21571    --
21572    ------------------------------------------------------------------------------------------------
21573    -- 4219869 Business Flow
21574    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
21575    -- Prior Entry.  Currently, the following code is always generated.
21576    ------------------------------------------------------------------------------------------------
21577    XLA_AE_LINES_PKG.ValidateCurrentLine;
21578 
21579    ------------------------------------------------------------------------------------
21580    -- 4219869 Business Flow
21581    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
21582    ------------------------------------------------------------------------------------
21583    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21584 
21585    ----------------------------------------------------------------------------------
21586    -- 4219869 Business Flow
21587    -- Update journal entry status -- Need to generate this within IF <condition>
21588    ----------------------------------------------------------------------------------
21589    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21590          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
21591          ,p_balance_type_code => l_balance_type_code
21592          );
21593 
21594    -------------------------------------------------------------------------------------------
21595    -- 4262811 - Generate the Accrual Reversal lines
21596    -------------------------------------------------------------------------------------------
21597    BEGIN
21598       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
21599                               (g_array_event(p_event_id).array_value_num('header_index'));
21600       IF l_acc_rev_flag IS NULL THEN
21601          l_acc_rev_flag := 'N';
21602       END IF;
21603    EXCEPTION
21604       WHEN OTHERS THEN
21605          l_acc_rev_flag := 'N';
21606    END;
21607    --
21608    IF (l_acc_rev_flag = 'Y') THEN
21609 
21610        -- 4645092  ------------------------------------------------------------------------------
21611        -- To allow MPA report to determine if it should generate report process
21612        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
21613        ------------------------------------------------------------------------------------------
21614 
21615        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
21616        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
21617    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
21618    -- call ADRs
21619    -- Bug 4922099
21620    --
21621    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
21622         (NVL(l_actual_upg_option, 'N') = 'O') OR
21623         (NVL(l_enc_upg_option, 'N') = 'O')
21624       )
21625    THEN
21626    NULL;
21627    --
21628    --
21629    
21630   l_ccid := AcctDerRule_21(
21631            p_application_id           => p_application_id
21632          , p_ae_header_id             => l_ae_header_id 
21633 , p_source_24 => p_source_24
21634          , x_transaction_coa_id       => l_adr_transaction_coa_id
21635          , x_accounting_coa_id        => l_adr_accounting_coa_id
21636          , x_value_type_code          => l_adr_value_type_code
21637          , p_side                     => 'NA'
21638    );
21639 
21640    xla_ae_lines_pkg.set_ccid(
21641     p_code_combination_id          => l_ccid
21645   , p_adr_code                     => 'CM_DIST_CCID'
21642   , p_value_type_code              => l_adr_value_type_code
21643   , p_transaction_coa_id           => l_adr_transaction_coa_id
21644   , p_accounting_coa_id            => l_adr_accounting_coa_id
21646   , p_adr_type_code                => 'S'
21647   , p_component_type               => l_component_type
21648   , p_component_code               => l_component_code
21649   , p_component_type_code          => l_component_type_code
21650   , p_component_appl_id            => l_component_appl_id
21651   , p_amb_context_code             => l_amb_context_code
21652   , p_side                         => 'NA'
21653   );
21654 
21655 
21656    --
21657    --
21658    END IF;
21659 
21660        --
21661        -- Update the line information that should be overwritten
21662        --
21663        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
21664                                          p_header_num   => 1);
21665        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
21666 
21667        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
21668 
21669        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
21670           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
21671        END IF;
21672 
21673       --
21674       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
21675       --
21676       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
21677           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
21678       ELSE
21679           ---------------------------------------------------------------------------------------------------
21680           -- 4262811a Switch Sign
21681           ---------------------------------------------------------------------------------------------------
21682           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
21683           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21684                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21685           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
21686                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21687           -- 5132302
21688           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
21689                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
21690 
21691       END IF;
21692 
21693       -- 4955764
21694       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
21695       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
21696 
21697 
21698       XLA_AE_LINES_PKG.ValidateCurrentLine;
21699       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
21700 
21701       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
21702                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
21703                ,p_balance_type_code => l_balance_type_code);
21704 
21705    END IF;
21706 
21707    -----------------------------------------------------------------------------------------
21708    -- 4262811 Multiperiod Accounting
21709    -----------------------------------------------------------------------------------------
21710      -- No MPA option is assigned.
21711 
21712 
21713 END IF;
21714 END IF;
21715 --
21716 
21717 --
21718 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21719    trace
21720       (p_msg      => 'END of AcctLineType_66'
21721       ,p_level    => C_LEVEL_PROCEDURE
21722       ,p_module   => l_log_module);
21723 END IF;
21724 --
21725 EXCEPTION
21726   WHEN xla_exceptions_pkg.application_exception THEN
21727       RAISE;
21728   WHEN OTHERS THEN
21729        xla_exceptions_pkg.raise_message
21730            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_66');
21731 END AcctLineType_66;
21732 --
21733 
21734 ---------------------------------------
21735 --
21736 -- PRIVATE FUNCTION
21737 --         AcctLineType_67
21738 --
21739 ---------------------------------------
21740 PROCEDURE AcctLineType_67 (
21741   p_application_id        IN NUMBER
21742  ,p_event_id              IN NUMBER
21743  ,p_calculate_acctd_flag  IN VARCHAR2
21744  ,p_calculate_g_l_flag    IN VARCHAR2
21745  ,p_actual_flag           IN OUT VARCHAR2
21746  ,p_balance_type_code     OUT VARCHAR2
21747  ,p_gain_or_loss_ref      OUT VARCHAR2
21748  
21749 --Collection Document Bank Occurrence
21750  , p_source_10            IN VARCHAR2
21751 --Collection Document Number
21752  , p_source_11            IN NUMBER
21753 --Collection Document Trade Note Number
21754  , p_source_12            IN VARCHAR2
21755 --Bordero Type
21756  , p_source_13            IN VARCHAR2
21757  , p_source_13_meaning    IN VARCHAR2
21758 --Collection Document Bank Charges Account
21759  , p_source_25            IN NUMBER
21760 --Bill To Customer Account Identifier
21761  , p_source_49            IN NUMBER
21762 --Bill To Customer Site Use Identifier
21763  , p_source_50            IN NUMBER
21764 --SLA Party Type
21768  , p_source_77_meaning    IN VARCHAR2
21765  , p_source_51            IN VARCHAR2
21766 --Collection Document Distribution Line Type
21767  , p_source_77            IN VARCHAR2
21769 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
21770  , p_source_78            IN VARCHAR2
21771  , p_source_78_meaning    IN VARCHAR2
21772 --Applied To Distribution Link Type
21773  , p_source_80            IN VARCHAR2
21774 --Applied To Distribution Identifier
21775  , p_source_82            IN NUMBER
21776 --Applied To Distribution Document Identifier
21777  , p_source_83            IN NUMBER
21778 --Applied To Distribution Occurrence Identifier
21779  , p_source_84            IN NUMBER
21780 --Collection Document Distribution Identifier
21781  , p_source_85            IN NUMBER
21782 --Collection Document Distribution Link Type
21783  , p_source_86            IN VARCHAR2
21784 --Collection Document Distribution Entered Amount
21785  , p_source_87            IN NUMBER
21786 --Collection Document Distribution Entered Currency Code
21787  , p_source_88            IN VARCHAR2
21788 --Collection Document Distribution Conversion Date
21789  , p_source_89            IN DATE
21790 --Collection Document Distribution Conversion Rate
21791  , p_source_90            IN NUMBER
21792 --Collection Document Distribution Conversion Rate Type
21793  , p_source_91            IN VARCHAR2
21794 --Collection Document Distribution Accounted Amount
21795  , p_source_92            IN NUMBER
21796 --Collection Document Occurrence Identifier
21797  , p_source_93            IN NUMBER
21798 --Reversed Collection Document Distribution Identifier
21799  , p_source_94            IN NUMBER
21800 --Reversed Collection Document Distribution Link Type
21801  , p_source_95            IN VARCHAR2
21802 )
21803 IS
21804 
21805 l_component_type              VARCHAR2(80);
21806 l_component_code              VARCHAR2(30);
21807 l_component_type_code         VARCHAR2(1);
21808 l_component_appl_id           INTEGER;
21809 l_amb_context_code            VARCHAR2(30);
21810 l_entity_code                 VARCHAR2(30);
21811 l_event_class_code            VARCHAR2(30);
21812 l_ae_header_id                NUMBER;
21813 l_event_type_code             VARCHAR2(30);
21814 l_line_definition_code        VARCHAR2(30);
21815 l_line_definition_owner_code  VARCHAR2(1);
21816 --
21817 -- adr variables
21818 l_segment                     VARCHAR2(30);
21819 l_ccid                        NUMBER;
21820 l_adr_transaction_coa_id      NUMBER;
21821 l_adr_accounting_coa_id       NUMBER;
21822 l_adr_flexfield_segment_code  VARCHAR2(30);
21823 l_adr_flex_value_set_id       NUMBER;
21824 l_adr_value_type_code         VARCHAR2(30);
21825 l_adr_value_combination_id    NUMBER;
21826 l_adr_value_segment_code      VARCHAR2(30);
21827 
21828 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
21829 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
21830 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
21831 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
21832 
21833 -- 4262811 Variables ------------------------------------------------------------------------------------------
21834 l_entered_amt_idx             NUMBER;
21835 l_accted_amt_idx              NUMBER;
21836 l_acc_rev_flag                VARCHAR2(1);
21837 l_accrual_line_num            NUMBER;
21838 l_tmp_amt                     NUMBER;
21839 l_acc_rev_natural_side_code   VARCHAR2(1);
21840 
21841 l_num_entries                 NUMBER;
21842 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
21843 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
21844 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
21845 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
21846 l_recog_line_1                NUMBER;
21847 l_recog_line_2                NUMBER;
21848 
21849 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
21850 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
21851 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
21852 
21853 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
21854 
21855 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
21856 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
21857 
21858 ---------------------------------------------------------------------------------------------------------------
21859 
21860 
21861 --
21862 -- bulk performance
21863 --
21864 l_balance_type_code           VARCHAR2(1);
21865 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
21866 l_log_module                  VARCHAR2(240);
21867 
21868 --
21869 -- Upgrade strategy
21870 --
21871 l_actual_upg_option           VARCHAR2(1);
21872 l_enc_upg_option           VARCHAR2(1);
21873 
21874 --
21875 BEGIN
21876 --
21877 IF g_log_enabled THEN
21878       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_67';
21879 END IF;
21880 --
21881 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
21882 
21883       trace
21884          (p_msg      => 'BEGIN of AcctLineType_67'
21885          ,p_level    => C_LEVEL_PROCEDURE
21886          ,p_module   => l_log_module);
21887 
21888 END IF;
21889 --
21890 l_component_type             := 'AMB_JLT';
21891 l_component_code             := 'COLL_DOC_BANK_CHARGES';
21895 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
21892 l_component_type_code        := 'S';
21893 l_component_appl_id          :=  222;
21894 l_amb_context_code           := 'DEFAULT';
21896 l_event_class_code           := 'COLLECTION_OCC_DOCUMENT';
21897 l_event_type_code            := 'COLLECTION_OCC_DOCUMENT_ALL';
21898 l_line_definition_owner_code := 'S';
21899 l_line_definition_code       := 'JLBR_AR_BANK_COLL_DOC_ACCRUAL';
21900 --
21901 l_balance_type_code          := 'A';
21902 l_segment                     := NULL;
21903 l_ccid                        := NULL;
21904 l_adr_transaction_coa_id      := NULL;
21905 l_adr_accounting_coa_id       := NULL;
21906 l_adr_flexfield_segment_code  := NULL;
21907 l_adr_flex_value_set_id       := NULL;
21908 l_adr_value_type_code         := NULL;
21909 l_adr_value_combination_id    := NULL;
21910 l_adr_value_segment_code      := NULL;
21911 
21912 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
21913 l_bflow_class_code           := '';    -- 4219869 Business Flow
21914 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
21915 l_budgetary_control_flag     := 'N';
21916 
21917 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
21918 l_bflow_applied_to_amt       := NULL; -- 5132302
21919 l_entered_amt_idx            := NULL;          -- 4262811
21920 l_accted_amt_idx             := NULL;          -- 4262811
21921 l_acc_rev_flag               := NULL;          -- 4262811
21922 l_accrual_line_num           := NULL;          -- 4262811
21923 l_tmp_amt                    := NULL;          -- 4262811
21924 --
21925  
21926 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
21927     l_balance_type_code <> 'B' THEN
21928 IF NVL(p_source_77,'
21929 ') =  'JLBR_AR_BANK_CHARGES' AND 
21930 NVL(p_source_13,'
21931 ') =  'COLLECTION'
21932  THEN 
21933 
21934    --
21935    XLA_AE_LINES_PKG.SetNewLine;
21936 
21937    p_balance_type_code          := l_balance_type_code;
21938    -- set the flag so later we will know whether the gain loss line needs to be created
21939    
21940    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
21941      p_actual_flag :='A';
21942    END IF;
21943 
21944    --
21945    -- bulk performance
21946    --
21947    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
21948                                       p_header_num   => 0); -- 4262811
21949    --
21950    -- set accounting line options
21951    --
21952    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
21953            p_natural_side_code          => 'D'
21954          , p_gain_or_loss_flag          => 'N'
21955          , p_gl_transfer_mode_code      => 'S'
21956          , p_acct_entry_type_code       => 'A'
21957          , p_switch_side_flag           => 'Y'
21958          , p_merge_duplicate_code       => 'W'
21959          );
21960    --
21961    l_acc_rev_natural_side_code := 'C';  -- 4262811
21962    -- 
21963    --
21964    -- set accounting line type info
21965    --
21966    xla_ae_lines_pkg.SetAcctLineType
21967       (p_component_type             => l_component_type
21968       ,p_event_type_code            => l_event_type_code
21969       ,p_line_definition_owner_code => l_line_definition_owner_code
21970       ,p_line_definition_code       => l_line_definition_code
21971       ,p_accounting_line_code       => l_component_code
21972       ,p_accounting_line_type_code  => l_component_type_code
21973       ,p_accounting_line_appl_id    => l_component_appl_id
21974       ,p_amb_context_code           => l_amb_context_code
21975       ,p_entity_code                => l_entity_code
21976       ,p_event_class_code           => l_event_class_code);
21977    --
21978    -- set accounting class
21979    --
21980    xla_ae_lines_pkg.SetAcctClass(
21981            p_accounting_class_code  => 'BANK_CHG'
21982          , p_ae_header_id           => l_ae_header_id
21983          );
21984 
21985    --
21986    -- set rounding class
21987    --
21988    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
21989                       'BANK_CHG';
21990 
21991    --
21992    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
21993    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
21994    --
21995    -- bulk performance
21996    --
21997    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
21998 
21999    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22000       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22001 
22002    -- 4955764
22003    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22004       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22005 
22006    -- 4458381 Public Sector Enh
22007    
22008    --
22009    -- set accounting attributes for the line type
22010    --
22011    l_entered_amt_idx := 10;
22012    l_accted_amt_idx  := 15;
22013    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22014    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
22015    l_rec_acct_attrs.array_char_value(1)  := p_source_78;
22019    p_source_code           => 'XLA_EVENT_APPL_ID'
22016    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
22017    l_rec_acct_attrs.array_num_value(2)  := 
22018 xla_ae_sources_pkg.GetSystemSourceNum(
22020  , p_source_type_code      => 'Y'
22021  , p_source_application_id =>  602
22022 );
22023    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
22024    l_rec_acct_attrs.array_char_value(3)  := p_source_80;
22025    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
22026    l_rec_acct_attrs.array_char_value(4)  := 
22027 xla_ae_sources_pkg.GetSystemSourceChar(
22028    p_source_code           => 'XLA_ENTITY_CODE'
22029  , p_source_type_code      => 'Y'
22030  , p_source_application_id =>  602
22031 );
22032    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
22033    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_82);
22034    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
22035    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_83);
22036    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
22037    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_84);
22038    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
22039    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_85);
22040    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
22041    l_rec_acct_attrs.array_char_value(9)  := p_source_86;
22042    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
22043    l_rec_acct_attrs.array_num_value(10)  := p_source_87;
22044    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
22045    l_rec_acct_attrs.array_char_value(11)  := p_source_88;
22046    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
22047    l_rec_acct_attrs.array_date_value(12)  := p_source_89;
22048    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
22049    l_rec_acct_attrs.array_num_value(13)  := p_source_90;
22050    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
22051    l_rec_acct_attrs.array_char_value(14)  := p_source_91;
22052    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
22053    l_rec_acct_attrs.array_num_value(15)  := p_source_92;
22054    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
22055    l_rec_acct_attrs.array_num_value(16)  := p_source_49;
22056    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
22057    l_rec_acct_attrs.array_num_value(17)  := p_source_50;
22058    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
22059    l_rec_acct_attrs.array_char_value(18)  := p_source_51;
22060    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
22061    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_93);
22062    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
22063    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_94);
22064    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
22065    l_rec_acct_attrs.array_char_value(21)  := p_source_95;
22066    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
22067    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_93);
22068 
22069    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22070    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22071 
22072    ---------------------------------------------------------------------------------------------------------------
22073    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22074    ---------------------------------------------------------------------------------------------------------------
22075    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22076 
22077    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22078    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22079 
22080    IF xla_accounting_cache_pkg.GetValueChar
22081          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22082          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22083    AND l_bflow_method_code = 'PRIOR_ENTRY'
22084 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22085    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22086          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22087        )
22088    THEN
22089          xla_ae_lines_pkg.BflowUpgEntry
22090            (p_business_method_code    => l_bflow_method_code
22091            ,p_business_class_code     => l_bflow_class_code
22092            ,p_balance_type            => l_balance_type_code);
22093    ELSE
22094       NULL;
22095 -- No business flow processing for business flow method of NONE.
22096    END IF;
22097 
22098    --
22099    -- call analytical criteria
22100    --
22101    
22102    --
22103    -- call description
22104    --
22105    
22106 xla_ae_lines_pkg.SetLineDescription(
22107    p_ae_header_id => l_ae_header_id
22108   ,p_description  => Description_10 (
22109      p_application_id         => p_application_id
22110    , p_ae_header_id           => l_ae_header_id 
22111 , p_source_10 => p_source_10
22112 , p_source_11 => p_source_11
22113 , p_source_12 => p_source_12
22114 , p_source_13 => p_source_13
22118 
22115 , p_source_13_meaning => p_source_13_meaning
22116    )
22117 );
22119 
22120    --
22121    -- call ADRs
22122    -- Bug 4922099
22123    --
22124    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22125         (NVL(l_actual_upg_option, 'N') = 'O') OR
22126         (NVL(l_enc_upg_option, 'N') = 'O')
22127       )
22128    THEN
22129    NULL;
22130    --
22131    --
22132    
22133   l_ccid := AcctDerRule_22(
22134            p_application_id           => p_application_id
22135          , p_ae_header_id             => l_ae_header_id 
22136 , p_source_25 => p_source_25
22137          , x_transaction_coa_id       => l_adr_transaction_coa_id
22138          , x_accounting_coa_id        => l_adr_accounting_coa_id
22139          , x_value_type_code          => l_adr_value_type_code
22140          , p_side                     => 'NA'
22141    );
22142 
22143    xla_ae_lines_pkg.set_ccid(
22144     p_code_combination_id          => l_ccid
22145   , p_value_type_code              => l_adr_value_type_code
22146   , p_transaction_coa_id           => l_adr_transaction_coa_id
22147   , p_accounting_coa_id            => l_adr_accounting_coa_id
22148   , p_adr_code                     => 'COLL_DOC_BANK_CHARGES'
22149   , p_adr_type_code                => 'S'
22150   , p_component_type               => l_component_type
22151   , p_component_code               => l_component_code
22152   , p_component_type_code          => l_component_type_code
22153   , p_component_appl_id            => l_component_appl_id
22154   , p_amb_context_code             => l_amb_context_code
22155   , p_side                         => 'NA'
22156   );
22157 
22158 
22159    --
22160    --
22161    END IF;
22162    --
22163    -- Bug 4922099
22164    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22165           (NVL(l_enc_upg_option, 'N') = 'O')
22166         ) AND
22167         (l_bflow_method_code = 'PRIOR_ENTRY')
22168       )
22169    THEN
22170       IF
22171       --
22172       1 = 2
22173       --
22174       THEN
22175       xla_accounting_err_pkg.build_message
22176                                     (p_appli_s_name            => 'XLA'
22177                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22178                                     ,p_token_1                 => 'LINE_NUMBER'
22179                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22180                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22181                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22182                                                                              l_component_type
22183                                                                             ,l_component_code
22184                                                                             ,l_component_type_code
22185                                                                             ,l_component_appl_id
22186                                                                             ,l_amb_context_code
22187                                                                             ,l_entity_code
22188                                                                             ,l_event_class_code
22189                                                                            )
22190                                     ,p_token_3                 => 'OWNER'
22191                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22192                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22193                                                                           ,p_lookup_code    => l_component_type_code
22194                                                                          )
22195                                     ,p_token_4                 => 'PRODUCT_NAME'
22196                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22197                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22198                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22199                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22200                                     ,p_ae_header_id            =>  NULL
22201                                        );
22202 
22203         IF (C_LEVEL_ERROR>= g_log_level) THEN
22204                  trace
22205                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22206                       ,p_level    => C_LEVEL_ERROR
22207                       ,p_module   => l_log_module);
22208         END IF;
22209       END IF;
22210    END IF;
22211    --
22212    --
22213    ------------------------------------------------------------------------------------------------
22214    -- 4219869 Business Flow
22215    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22216    -- Prior Entry.  Currently, the following code is always generated.
22217    ------------------------------------------------------------------------------------------------
22218    XLA_AE_LINES_PKG.ValidateCurrentLine;
22219 
22220    ------------------------------------------------------------------------------------
22221    -- 4219869 Business Flow
22222    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22226    ----------------------------------------------------------------------------------
22223    ------------------------------------------------------------------------------------
22224    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22225 
22227    -- 4219869 Business Flow
22228    -- Update journal entry status -- Need to generate this within IF <condition>
22229    ----------------------------------------------------------------------------------
22230    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22231          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22232          ,p_balance_type_code => l_balance_type_code
22233          );
22234 
22235    -------------------------------------------------------------------------------------------
22236    -- 4262811 - Generate the Accrual Reversal lines
22237    -------------------------------------------------------------------------------------------
22238    BEGIN
22239       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22240                               (g_array_event(p_event_id).array_value_num('header_index'));
22241       IF l_acc_rev_flag IS NULL THEN
22242          l_acc_rev_flag := 'N';
22243       END IF;
22244    EXCEPTION
22245       WHEN OTHERS THEN
22246          l_acc_rev_flag := 'N';
22247    END;
22248    --
22249    IF (l_acc_rev_flag = 'Y') THEN
22250 
22251        -- 4645092  ------------------------------------------------------------------------------
22252        -- To allow MPA report to determine if it should generate report process
22253        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22254        ------------------------------------------------------------------------------------------
22255 
22256        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22257        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22258    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
22259    -- call ADRs
22260    -- Bug 4922099
22261    --
22262    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22263         (NVL(l_actual_upg_option, 'N') = 'O') OR
22264         (NVL(l_enc_upg_option, 'N') = 'O')
22265       )
22266    THEN
22267    NULL;
22268    --
22269    --
22270    
22271   l_ccid := AcctDerRule_22(
22272            p_application_id           => p_application_id
22273          , p_ae_header_id             => l_ae_header_id 
22274 , p_source_25 => p_source_25
22275          , x_transaction_coa_id       => l_adr_transaction_coa_id
22276          , x_accounting_coa_id        => l_adr_accounting_coa_id
22277          , x_value_type_code          => l_adr_value_type_code
22278          , p_side                     => 'NA'
22279    );
22280 
22281    xla_ae_lines_pkg.set_ccid(
22282     p_code_combination_id          => l_ccid
22283   , p_value_type_code              => l_adr_value_type_code
22284   , p_transaction_coa_id           => l_adr_transaction_coa_id
22285   , p_accounting_coa_id            => l_adr_accounting_coa_id
22286   , p_adr_code                     => 'COLL_DOC_BANK_CHARGES'
22287   , p_adr_type_code                => 'S'
22288   , p_component_type               => l_component_type
22289   , p_component_code               => l_component_code
22290   , p_component_type_code          => l_component_type_code
22291   , p_component_appl_id            => l_component_appl_id
22292   , p_amb_context_code             => l_amb_context_code
22293   , p_side                         => 'NA'
22294   );
22295 
22296 
22297    --
22298    --
22299    END IF;
22300 
22301        --
22302        -- Update the line information that should be overwritten
22303        --
22304        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22305                                          p_header_num   => 1);
22306        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22307 
22308        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22309 
22310        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22311           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22312        END IF;
22313 
22314       --
22315       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22316       --
22317       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22318           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22319       ELSE
22320           ---------------------------------------------------------------------------------------------------
22321           -- 4262811a Switch Sign
22322           ---------------------------------------------------------------------------------------------------
22323           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22324           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22325                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22326           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22327                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22328           -- 5132302
22329           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22333 
22330                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22331 
22332       END IF;
22334       -- 4955764
22335       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22336       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22337 
22338 
22339       XLA_AE_LINES_PKG.ValidateCurrentLine;
22340       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22341 
22342       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22343                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22344                ,p_balance_type_code => l_balance_type_code);
22345 
22346    END IF;
22347 
22348    -----------------------------------------------------------------------------------------
22349    -- 4262811 Multiperiod Accounting
22350    -----------------------------------------------------------------------------------------
22351      -- No MPA option is assigned.
22352 
22353 
22354 END IF;
22355 END IF;
22356 --
22357 
22358 --
22359 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22360    trace
22361       (p_msg      => 'END of AcctLineType_67'
22362       ,p_level    => C_LEVEL_PROCEDURE
22363       ,p_module   => l_log_module);
22364 END IF;
22365 --
22366 EXCEPTION
22367   WHEN xla_exceptions_pkg.application_exception THEN
22368       RAISE;
22369   WHEN OTHERS THEN
22370        xla_exceptions_pkg.raise_message
22371            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_67');
22372 END AcctLineType_67;
22373 --
22374 
22375 ---------------------------------------
22376 --
22377 -- PRIVATE FUNCTION
22378 --         AcctLineType_68
22379 --
22380 ---------------------------------------
22381 PROCEDURE AcctLineType_68 (
22382   p_application_id        IN NUMBER
22383  ,p_event_id              IN NUMBER
22384  ,p_calculate_acctd_flag  IN VARCHAR2
22385  ,p_calculate_g_l_flag    IN VARCHAR2
22386  ,p_actual_flag           IN OUT VARCHAR2
22387  ,p_balance_type_code     OUT VARCHAR2
22388  ,p_gain_or_loss_ref      OUT VARCHAR2
22389  
22390 --Bordero Type
22391  , p_source_13            IN VARCHAR2
22392  , p_source_13_meaning    IN VARCHAR2
22393 --SLA Party Type
22394  , p_source_51            IN VARCHAR2
22395 --Collection Document Distribution Line Type
22396  , p_source_77            IN VARCHAR2
22397  , p_source_77_meaning    IN VARCHAR2
22398 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
22399  , p_source_78            IN VARCHAR2
22400  , p_source_78_meaning    IN VARCHAR2
22401 --Applied To Distribution Link Type
22402  , p_source_80            IN VARCHAR2
22403 --Applied To Distribution Identifier
22404  , p_source_82            IN NUMBER
22405 --Applied To Distribution Document Identifier
22406  , p_source_83            IN NUMBER
22407 --Applied To Distribution Occurrence Identifier
22408  , p_source_84            IN NUMBER
22409 --Collection Document Distribution Identifier
22410  , p_source_85            IN NUMBER
22411 --Collection Document Distribution Link Type
22412  , p_source_86            IN VARCHAR2
22413 --Collection Document Distribution Entered Amount
22414  , p_source_87            IN NUMBER
22415 --Collection Document Distribution Entered Currency Code
22416  , p_source_88            IN VARCHAR2
22417 --Collection Document Distribution Accounted Amount
22418  , p_source_92            IN NUMBER
22419 --Collection Document Occurrence Identifier
22420  , p_source_93            IN NUMBER
22421 --Reversed Collection Document Distribution Identifier
22422  , p_source_94            IN NUMBER
22423 --Reversed Collection Document Distribution Link Type
22424  , p_source_95            IN VARCHAR2
22425 --Collection Document Occurrence Type
22426  , p_source_96            IN VARCHAR2
22427  , p_source_96_meaning    IN VARCHAR2
22428 )
22429 IS
22430 
22431 l_component_type              VARCHAR2(80);
22432 l_component_code              VARCHAR2(30);
22433 l_component_type_code         VARCHAR2(1);
22434 l_component_appl_id           INTEGER;
22435 l_amb_context_code            VARCHAR2(30);
22436 l_entity_code                 VARCHAR2(30);
22437 l_event_class_code            VARCHAR2(30);
22438 l_ae_header_id                NUMBER;
22439 l_event_type_code             VARCHAR2(30);
22440 l_line_definition_code        VARCHAR2(30);
22441 l_line_definition_owner_code  VARCHAR2(1);
22442 --
22443 -- adr variables
22444 l_segment                     VARCHAR2(30);
22445 l_ccid                        NUMBER;
22446 l_adr_transaction_coa_id      NUMBER;
22447 l_adr_accounting_coa_id       NUMBER;
22448 l_adr_flexfield_segment_code  VARCHAR2(30);
22449 l_adr_flex_value_set_id       NUMBER;
22450 l_adr_value_type_code         VARCHAR2(30);
22451 l_adr_value_combination_id    NUMBER;
22452 l_adr_value_segment_code      VARCHAR2(30);
22453 
22454 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
22455 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
22456 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
22457 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
22458 
22459 -- 4262811 Variables ------------------------------------------------------------------------------------------
22460 l_entered_amt_idx             NUMBER;
22461 l_accted_amt_idx              NUMBER;
22465 l_acc_rev_natural_side_code   VARCHAR2(1);
22462 l_acc_rev_flag                VARCHAR2(1);
22463 l_accrual_line_num            NUMBER;
22464 l_tmp_amt                     NUMBER;
22466 
22467 l_num_entries                 NUMBER;
22468 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
22469 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
22470 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
22471 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
22472 l_recog_line_1                NUMBER;
22473 l_recog_line_2                NUMBER;
22474 
22475 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
22476 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
22477 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
22478 
22479 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
22480 
22481 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
22482 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
22483 
22484 ---------------------------------------------------------------------------------------------------------------
22485 
22486 
22487 --
22488 -- bulk performance
22489 --
22490 l_balance_type_code           VARCHAR2(1);
22491 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
22492 l_log_module                  VARCHAR2(240);
22493 
22494 --
22495 -- Upgrade strategy
22496 --
22497 l_actual_upg_option           VARCHAR2(1);
22498 l_enc_upg_option           VARCHAR2(1);
22499 
22500 --
22501 BEGIN
22502 --
22503 IF g_log_enabled THEN
22504       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_68';
22505 END IF;
22506 --
22507 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22508 
22509       trace
22510          (p_msg      => 'BEGIN of AcctLineType_68'
22511          ,p_level    => C_LEVEL_PROCEDURE
22512          ,p_module   => l_log_module);
22513 
22514 END IF;
22515 --
22516 l_component_type             := 'AMB_JLT';
22517 l_component_code             := 'COLL_DOC_BILLS_UNDER_COLL_CR';
22518 l_component_type_code        := 'S';
22519 l_component_appl_id          :=  222;
22520 l_amb_context_code           := 'DEFAULT';
22521 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
22522 l_event_class_code           := 'COLLECTION_OCC_DOCUMENT';
22523 l_event_type_code            := 'COLLECTION_OCC_DOCUMENT_ALL';
22524 l_line_definition_owner_code := 'S';
22525 l_line_definition_code       := 'JLBR_AR_BANK_COLL_DOC_ACCRUAL';
22526 --
22527 l_balance_type_code          := 'A';
22528 l_segment                     := NULL;
22529 l_ccid                        := NULL;
22530 l_adr_transaction_coa_id      := NULL;
22531 l_adr_accounting_coa_id       := NULL;
22532 l_adr_flexfield_segment_code  := NULL;
22533 l_adr_flex_value_set_id       := NULL;
22534 l_adr_value_type_code         := NULL;
22535 l_adr_value_combination_id    := NULL;
22536 l_adr_value_segment_code      := NULL;
22537 
22538 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
22539 l_bflow_class_code           := 'JLBR_AR_BILLS_UNDER_COLLECTION';    -- 4219869 Business Flow
22540 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
22541 l_budgetary_control_flag     := 'N';
22542 
22543 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
22544 l_bflow_applied_to_amt       := NULL; -- 5132302
22545 l_entered_amt_idx            := NULL;          -- 4262811
22546 l_accted_amt_idx             := NULL;          -- 4262811
22547 l_acc_rev_flag               := NULL;          -- 4262811
22548 l_accrual_line_num           := NULL;          -- 4262811
22549 l_tmp_amt                    := NULL;          -- 4262811
22550 --
22551  
22552 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
22553     l_balance_type_code <> 'B' THEN
22554 IF NVL(p_source_77,'
22555 ') =  'JLBR_AR_ENDORSEMENT' AND 
22556 NVL(p_source_13,'
22557 ') =  'COLLECTION' AND 
22558 NVL(p_source_96,'
22559 ') =  'RETURN_OCCURRENCE'
22560  THEN 
22561 
22562    --
22563    XLA_AE_LINES_PKG.SetNewLine;
22564 
22565    p_balance_type_code          := l_balance_type_code;
22566    -- set the flag so later we will know whether the gain loss line needs to be created
22567    
22568    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
22569      p_actual_flag :='A';
22570    END IF;
22571 
22572    --
22573    -- bulk performance
22574    --
22575    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
22576                                       p_header_num   => 0); -- 4262811
22577    --
22578    -- set accounting line options
22579    --
22580    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
22581            p_natural_side_code          => 'C'
22582          , p_gain_or_loss_flag          => 'N'
22583          , p_gl_transfer_mode_code      => 'S'
22584          , p_acct_entry_type_code       => 'A'
22585          , p_switch_side_flag           => 'Y'
22586          , p_merge_duplicate_code       => 'A'
22587          );
22588    --
22589    l_acc_rev_natural_side_code := 'D';  -- 4262811
22590    -- 
22591    --
22592    -- set accounting line type info
22593    --
22597       ,p_line_definition_owner_code => l_line_definition_owner_code
22594    xla_ae_lines_pkg.SetAcctLineType
22595       (p_component_type             => l_component_type
22596       ,p_event_type_code            => l_event_type_code
22598       ,p_line_definition_code       => l_line_definition_code
22599       ,p_accounting_line_code       => l_component_code
22600       ,p_accounting_line_type_code  => l_component_type_code
22601       ,p_accounting_line_appl_id    => l_component_appl_id
22602       ,p_amb_context_code           => l_amb_context_code
22603       ,p_entity_code                => l_entity_code
22604       ,p_event_class_code           => l_event_class_code);
22605    --
22606    -- set accounting class
22607    --
22608    xla_ae_lines_pkg.SetAcctClass(
22609            p_accounting_class_code  => 'REMITTANCE'
22610          , p_ae_header_id           => l_ae_header_id
22611          );
22612 
22613    --
22614    -- set rounding class
22615    --
22616    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
22617                       'REMITTANCE';
22618 
22619    --
22620    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
22621    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
22622    --
22623    -- bulk performance
22624    --
22625    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
22626 
22627    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
22628       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
22629 
22630    -- 4955764
22631    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22632       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
22633 
22634    -- 4458381 Public Sector Enh
22635    
22636    --
22637    -- set accounting attributes for the line type
22638    --
22639    l_entered_amt_idx := 10;
22640    l_accted_amt_idx  := 12;
22641    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
22642    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
22643    l_rec_acct_attrs.array_char_value(1)  := p_source_78;
22644    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
22645    l_rec_acct_attrs.array_num_value(2)  := 
22646 xla_ae_sources_pkg.GetSystemSourceNum(
22647    p_source_code           => 'XLA_EVENT_APPL_ID'
22648  , p_source_type_code      => 'Y'
22649  , p_source_application_id =>  602
22650 );
22651    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
22652    l_rec_acct_attrs.array_char_value(3)  := p_source_80;
22653    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
22654    l_rec_acct_attrs.array_char_value(4)  := 
22655 xla_ae_sources_pkg.GetSystemSourceChar(
22656    p_source_code           => 'XLA_ENTITY_CODE'
22657  , p_source_type_code      => 'Y'
22658  , p_source_application_id =>  602
22659 );
22660    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
22661    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_82);
22662    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
22663    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_83);
22664    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
22665    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_84);
22666    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
22667    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_85);
22668    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
22669    l_rec_acct_attrs.array_char_value(9)  := p_source_86;
22670    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
22671    l_rec_acct_attrs.array_num_value(10)  := p_source_87;
22672    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
22673    l_rec_acct_attrs.array_char_value(11)  := p_source_88;
22674    l_rec_acct_attrs.array_acct_attr_code(12) := 'LEDGER_AMOUNT';
22675    l_rec_acct_attrs.array_num_value(12)  := p_source_92;
22676    l_rec_acct_attrs.array_acct_attr_code(13) := 'PARTY_TYPE';
22677    l_rec_acct_attrs.array_char_value(13)  := p_source_51;
22678    l_rec_acct_attrs.array_acct_attr_code(14) := 'RECON_REF';
22679    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_93);
22680    l_rec_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_ID1';
22681    l_rec_acct_attrs.array_num_value(15)  :=  to_char(p_source_94);
22682    l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_TYPE';
22683    l_rec_acct_attrs.array_char_value(16)  := p_source_95;
22684    l_rec_acct_attrs.array_acct_attr_code(17) := 'TRX_ROUNDING_REF';
22685    l_rec_acct_attrs.array_num_value(17)  :=  to_char(p_source_93);
22686 
22687    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
22688    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
22689 
22690    ---------------------------------------------------------------------------------------------------------------
22691    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
22692    ---------------------------------------------------------------------------------------------------------------
22696    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22693    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
22694 
22695    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
22697 
22698    IF xla_accounting_cache_pkg.GetValueChar
22699          (p_source_code         => 'LEDGER_CATEGORY_CODE'
22700          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
22701    AND l_bflow_method_code = 'PRIOR_ENTRY'
22702 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
22703    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
22704          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
22705        )
22706    THEN
22707          xla_ae_lines_pkg.BflowUpgEntry
22708            (p_business_method_code    => l_bflow_method_code
22709            ,p_business_class_code     => l_bflow_class_code
22710            ,p_balance_type            => l_balance_type_code);
22711    ELSE
22712       NULL;
22713 XLA_AE_LINES_PKG.business_flow_validation(
22714                                 p_business_method_code     => l_bflow_method_code
22715                                ,p_business_class_code      => l_bflow_class_code
22716                                ,p_inherit_description_flag => l_inherit_desc_flag);
22717    END IF;
22718 
22719    --
22720    -- call analytical criteria
22721    --
22722    -- Inherited Analytical Criteria for business flow method of Prior Entry.
22723    --
22724    -- call description
22725    --
22726    -- No description or it is inherited.
22727    --
22728    -- call ADRs
22729    -- Bug 4922099
22730    --
22731    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22732         (NVL(l_actual_upg_option, 'N') = 'O') OR
22733         (NVL(l_enc_upg_option, 'N') = 'O')
22734       )
22735    THEN
22736    NULL;
22737    --
22738    --
22739    
22740    --
22741    --
22742    END IF;
22743    --
22744    -- Bug 4922099
22745    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
22746           (NVL(l_enc_upg_option, 'N') = 'O')
22747         ) AND
22748         (l_bflow_method_code = 'PRIOR_ENTRY')
22749       )
22750    THEN
22751       IF
22752       --
22753       1 = 1
22754       --
22755       THEN
22756       xla_accounting_err_pkg.build_message
22757                                     (p_appli_s_name            => 'XLA'
22758                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22759                                     ,p_token_1                 => 'LINE_NUMBER'
22760                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
22761                                     ,p_token_2                 => 'LINE_TYPE_NAME'
22762                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
22763                                                                              l_component_type
22764                                                                             ,l_component_code
22765                                                                             ,l_component_type_code
22766                                                                             ,l_component_appl_id
22767                                                                             ,l_amb_context_code
22768                                                                             ,l_entity_code
22769                                                                             ,l_event_class_code
22770                                                                            )
22771                                     ,p_token_3                 => 'OWNER'
22772                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
22773                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
22774                                                                           ,p_lookup_code    => l_component_type_code
22775                                                                          )
22776                                     ,p_token_4                 => 'PRODUCT_NAME'
22777                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
22778                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
22779                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
22780                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
22781                                     ,p_ae_header_id            =>  NULL
22782                                        );
22783 
22784         IF (C_LEVEL_ERROR>= g_log_level) THEN
22785                  trace
22786                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
22787                       ,p_level    => C_LEVEL_ERROR
22788                       ,p_module   => l_log_module);
22789         END IF;
22790       END IF;
22791    END IF;
22792    --
22793    --
22794    ------------------------------------------------------------------------------------------------
22795    -- 4219869 Business Flow
22796    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
22797    -- Prior Entry.  Currently, the following code is always generated.
22801    ------------------------------------------------------------------------------------
22798    ------------------------------------------------------------------------------------------------
22799    -- No ValidateCurrentLine for business flow method of Prior Entry
22800 
22802    -- 4219869 Business Flow
22803    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
22804    ------------------------------------------------------------------------------------
22805    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22806 
22807    ----------------------------------------------------------------------------------
22808    -- 4219869 Business Flow
22809    -- Update journal entry status -- Need to generate this within IF <condition>
22810    ----------------------------------------------------------------------------------
22811    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22812          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
22813          ,p_balance_type_code => l_balance_type_code
22814          );
22815 
22816    -------------------------------------------------------------------------------------------
22817    -- 4262811 - Generate the Accrual Reversal lines
22818    -------------------------------------------------------------------------------------------
22819    BEGIN
22820       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
22821                               (g_array_event(p_event_id).array_value_num('header_index'));
22822       IF l_acc_rev_flag IS NULL THEN
22823          l_acc_rev_flag := 'N';
22824       END IF;
22825    EXCEPTION
22826       WHEN OTHERS THEN
22827          l_acc_rev_flag := 'N';
22828    END;
22829    --
22830    IF (l_acc_rev_flag = 'Y') THEN
22831 
22832        -- 4645092  ------------------------------------------------------------------------------
22833        -- To allow MPA report to determine if it should generate report process
22834        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
22835        ------------------------------------------------------------------------------------------
22836 
22837        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
22838        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
22839    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
22840    -- call ADRs
22841    -- Bug 4922099
22842    --
22843    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
22844         (NVL(l_actual_upg_option, 'N') = 'O') OR
22845         (NVL(l_enc_upg_option, 'N') = 'O')
22846       )
22847    THEN
22848    NULL;
22849    --
22850    --
22851    
22852    --
22853    --
22854    END IF;
22855 
22856        --
22857        -- Update the line information that should be overwritten
22858        --
22859        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
22860                                          p_header_num   => 1);
22861        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
22862 
22863        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
22864 
22865        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
22866           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
22867        END IF;
22868 
22869       --
22870       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
22871       --
22872       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
22873           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
22874       ELSE
22875           ---------------------------------------------------------------------------------------------------
22876           -- 4262811a Switch Sign
22877           ---------------------------------------------------------------------------------------------------
22878           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
22879           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22880                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22881           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
22882                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22883           -- 5132302
22884           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
22885                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
22886 
22887       END IF;
22888 
22889       -- 4955764
22890       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
22891       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
22892 
22893 
22894       XLA_AE_LINES_PKG.ValidateCurrentLine;
22895       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
22896 
22897       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
22898                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
22899                ,p_balance_type_code => l_balance_type_code);
22900 
22901    END IF;
22902 
22903    -----------------------------------------------------------------------------------------
22907 
22904    -- 4262811 Multiperiod Accounting
22905    -----------------------------------------------------------------------------------------
22906      -- No MPA option is assigned.
22908 
22909 END IF;
22910 END IF;
22911 --
22912 
22913 --
22914 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
22915    trace
22916       (p_msg      => 'END of AcctLineType_68'
22917       ,p_level    => C_LEVEL_PROCEDURE
22918       ,p_module   => l_log_module);
22919 END IF;
22920 --
22921 EXCEPTION
22922   WHEN xla_exceptions_pkg.application_exception THEN
22923       RAISE;
22924   WHEN OTHERS THEN
22925        xla_exceptions_pkg.raise_message
22926            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_68');
22927 END AcctLineType_68;
22928 --
22929 
22930 ---------------------------------------
22931 --
22932 -- PRIVATE FUNCTION
22933 --         AcctLineType_69
22934 --
22935 ---------------------------------------
22936 PROCEDURE AcctLineType_69 (
22937   p_application_id        IN NUMBER
22938  ,p_event_id              IN NUMBER
22939  ,p_calculate_acctd_flag  IN VARCHAR2
22940  ,p_calculate_g_l_flag    IN VARCHAR2
22941  ,p_actual_flag           IN OUT VARCHAR2
22942  ,p_balance_type_code     OUT VARCHAR2
22943  ,p_gain_or_loss_ref      OUT VARCHAR2
22944  
22945 --Collection Document Bank Occurrence
22946  , p_source_10            IN VARCHAR2
22947 --Collection Document Number
22948  , p_source_11            IN NUMBER
22949 --Collection Document Trade Note Number
22950  , p_source_12            IN VARCHAR2
22951 --Bordero Type
22952  , p_source_13            IN VARCHAR2
22953  , p_source_13_meaning    IN VARCHAR2
22954 --Collection Document Bills Under Collection Account
22955  , p_source_26            IN NUMBER
22956 --Bill To Customer Account Identifier
22957  , p_source_49            IN NUMBER
22958 --Bill To Customer Site Use Identifier
22959  , p_source_50            IN NUMBER
22960 --SLA Party Type
22961  , p_source_51            IN VARCHAR2
22962 --Collection Document Distribution Line Type
22963  , p_source_77            IN VARCHAR2
22964  , p_source_77_meaning    IN VARCHAR2
22965 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
22966  , p_source_78            IN VARCHAR2
22967  , p_source_78_meaning    IN VARCHAR2
22968 --Applied To Distribution Link Type
22969  , p_source_80            IN VARCHAR2
22970 --Applied To Distribution Identifier
22971  , p_source_82            IN NUMBER
22972 --Applied To Distribution Document Identifier
22973  , p_source_83            IN NUMBER
22974 --Applied To Distribution Occurrence Identifier
22975  , p_source_84            IN NUMBER
22976 --Collection Document Distribution Identifier
22977  , p_source_85            IN NUMBER
22978 --Collection Document Distribution Link Type
22979  , p_source_86            IN VARCHAR2
22980 --Collection Document Distribution Entered Amount
22981  , p_source_87            IN NUMBER
22982 --Collection Document Distribution Entered Currency Code
22983  , p_source_88            IN VARCHAR2
22984 --Collection Document Distribution Conversion Date
22985  , p_source_89            IN DATE
22986 --Collection Document Distribution Conversion Rate
22987  , p_source_90            IN NUMBER
22988 --Collection Document Distribution Conversion Rate Type
22989  , p_source_91            IN VARCHAR2
22990 --Collection Document Distribution Accounted Amount
22991  , p_source_92            IN NUMBER
22992 --Collection Document Occurrence Identifier
22993  , p_source_93            IN NUMBER
22994 --Reversed Collection Document Distribution Identifier
22995  , p_source_94            IN NUMBER
22996 --Reversed Collection Document Distribution Link Type
22997  , p_source_95            IN VARCHAR2
22998 --Collection Document Occurrence Type
22999  , p_source_96            IN VARCHAR2
23000  , p_source_96_meaning    IN VARCHAR2
23001 )
23002 IS
23003 
23004 l_component_type              VARCHAR2(80);
23005 l_component_code              VARCHAR2(30);
23006 l_component_type_code         VARCHAR2(1);
23007 l_component_appl_id           INTEGER;
23008 l_amb_context_code            VARCHAR2(30);
23009 l_entity_code                 VARCHAR2(30);
23010 l_event_class_code            VARCHAR2(30);
23011 l_ae_header_id                NUMBER;
23012 l_event_type_code             VARCHAR2(30);
23013 l_line_definition_code        VARCHAR2(30);
23014 l_line_definition_owner_code  VARCHAR2(1);
23015 --
23016 -- adr variables
23017 l_segment                     VARCHAR2(30);
23018 l_ccid                        NUMBER;
23019 l_adr_transaction_coa_id      NUMBER;
23020 l_adr_accounting_coa_id       NUMBER;
23021 l_adr_flexfield_segment_code  VARCHAR2(30);
23022 l_adr_flex_value_set_id       NUMBER;
23023 l_adr_value_type_code         VARCHAR2(30);
23024 l_adr_value_combination_id    NUMBER;
23025 l_adr_value_segment_code      VARCHAR2(30);
23026 
23027 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23028 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23029 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23030 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23031 
23032 -- 4262811 Variables ------------------------------------------------------------------------------------------
23033 l_entered_amt_idx             NUMBER;
23034 l_accted_amt_idx              NUMBER;
23038 l_acc_rev_natural_side_code   VARCHAR2(1);
23035 l_acc_rev_flag                VARCHAR2(1);
23036 l_accrual_line_num            NUMBER;
23037 l_tmp_amt                     NUMBER;
23039 
23040 l_num_entries                 NUMBER;
23041 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23042 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23043 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23044 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23045 l_recog_line_1                NUMBER;
23046 l_recog_line_2                NUMBER;
23047 
23048 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23049 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23050 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23051 
23052 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23053 
23054 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23055 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23056 
23057 ---------------------------------------------------------------------------------------------------------------
23058 
23059 
23060 --
23061 -- bulk performance
23062 --
23063 l_balance_type_code           VARCHAR2(1);
23064 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23065 l_log_module                  VARCHAR2(240);
23066 
23067 --
23068 -- Upgrade strategy
23069 --
23070 l_actual_upg_option           VARCHAR2(1);
23071 l_enc_upg_option           VARCHAR2(1);
23072 
23073 --
23074 BEGIN
23075 --
23076 IF g_log_enabled THEN
23077       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_69';
23078 END IF;
23079 --
23080 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23081 
23082       trace
23083          (p_msg      => 'BEGIN of AcctLineType_69'
23084          ,p_level    => C_LEVEL_PROCEDURE
23085          ,p_module   => l_log_module);
23086 
23087 END IF;
23088 --
23089 l_component_type             := 'AMB_JLT';
23090 l_component_code             := 'COLL_DOC_BILLS_UNDER_COLL_DR';
23091 l_component_type_code        := 'S';
23092 l_component_appl_id          :=  222;
23093 l_amb_context_code           := 'DEFAULT';
23094 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
23095 l_event_class_code           := 'COLLECTION_OCC_DOCUMENT';
23096 l_event_type_code            := 'COLLECTION_OCC_DOCUMENT_ALL';
23097 l_line_definition_owner_code := 'S';
23098 l_line_definition_code       := 'JLBR_AR_BANK_COLL_DOC_ACCRUAL';
23099 --
23100 l_balance_type_code          := 'A';
23101 l_segment                     := NULL;
23102 l_ccid                        := NULL;
23103 l_adr_transaction_coa_id      := NULL;
23104 l_adr_accounting_coa_id       := NULL;
23105 l_adr_flexfield_segment_code  := NULL;
23106 l_adr_flex_value_set_id       := NULL;
23107 l_adr_value_type_code         := NULL;
23108 l_adr_value_combination_id    := NULL;
23109 l_adr_value_segment_code      := NULL;
23110 
23111 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23112 l_bflow_class_code           := 'JLBR_AR_BILLS_UNDER_COLLECTION';    -- 4219869 Business Flow
23113 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23114 l_budgetary_control_flag     := 'N';
23115 
23116 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23117 l_bflow_applied_to_amt       := NULL; -- 5132302
23118 l_entered_amt_idx            := NULL;          -- 4262811
23119 l_accted_amt_idx             := NULL;          -- 4262811
23120 l_acc_rev_flag               := NULL;          -- 4262811
23121 l_accrual_line_num           := NULL;          -- 4262811
23122 l_tmp_amt                    := NULL;          -- 4262811
23123 --
23124  
23125 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23126     l_balance_type_code <> 'B' THEN
23127 IF NVL(p_source_77,'
23128 ') =  'JLBR_AR_ENDORSEMENT' AND 
23129 NVL(p_source_13,'
23130 ') =  'COLLECTION' AND 
23131 NVL(p_source_96,'
23132 ') =  'REMITTANCE_OCCURRENCE'
23133  THEN 
23134 
23135    --
23136    XLA_AE_LINES_PKG.SetNewLine;
23137 
23138    p_balance_type_code          := l_balance_type_code;
23139    -- set the flag so later we will know whether the gain loss line needs to be created
23140    
23141    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23142      p_actual_flag :='A';
23143    END IF;
23144 
23145    --
23146    -- bulk performance
23147    --
23148    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23149                                       p_header_num   => 0); -- 4262811
23150    --
23151    -- set accounting line options
23152    --
23153    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23154            p_natural_side_code          => 'D'
23155          , p_gain_or_loss_flag          => 'N'
23156          , p_gl_transfer_mode_code      => 'S'
23157          , p_acct_entry_type_code       => 'A'
23158          , p_switch_side_flag           => 'Y'
23159          , p_merge_duplicate_code       => 'A'
23160          );
23161    --
23162    l_acc_rev_natural_side_code := 'C';  -- 4262811
23163    -- 
23164    --
23165    -- set accounting line type info
23166    --
23167    xla_ae_lines_pkg.SetAcctLineType
23171       ,p_line_definition_code       => l_line_definition_code
23168       (p_component_type             => l_component_type
23169       ,p_event_type_code            => l_event_type_code
23170       ,p_line_definition_owner_code => l_line_definition_owner_code
23172       ,p_accounting_line_code       => l_component_code
23173       ,p_accounting_line_type_code  => l_component_type_code
23174       ,p_accounting_line_appl_id    => l_component_appl_id
23175       ,p_amb_context_code           => l_amb_context_code
23176       ,p_entity_code                => l_entity_code
23177       ,p_event_class_code           => l_event_class_code);
23178    --
23179    -- set accounting class
23180    --
23181    xla_ae_lines_pkg.SetAcctClass(
23182            p_accounting_class_code  => 'REMITTANCE'
23183          , p_ae_header_id           => l_ae_header_id
23184          );
23185 
23186    --
23187    -- set rounding class
23188    --
23189    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23190                       'REMITTANCE';
23191 
23192    --
23193    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23194    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23195    --
23196    -- bulk performance
23197    --
23198    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23199 
23200    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23201       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23202 
23203    -- 4955764
23204    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23205       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23206 
23207    -- 4458381 Public Sector Enh
23208    
23209    --
23210    -- set accounting attributes for the line type
23211    --
23212    l_entered_amt_idx := 10;
23213    l_accted_amt_idx  := 15;
23214    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23215    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
23216    l_rec_acct_attrs.array_char_value(1)  := p_source_78;
23217    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
23218    l_rec_acct_attrs.array_num_value(2)  := 
23219 xla_ae_sources_pkg.GetSystemSourceNum(
23220    p_source_code           => 'XLA_EVENT_APPL_ID'
23221  , p_source_type_code      => 'Y'
23222  , p_source_application_id =>  602
23223 );
23224    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
23225    l_rec_acct_attrs.array_char_value(3)  := p_source_80;
23226    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
23227    l_rec_acct_attrs.array_char_value(4)  := 
23228 xla_ae_sources_pkg.GetSystemSourceChar(
23229    p_source_code           => 'XLA_ENTITY_CODE'
23230  , p_source_type_code      => 'Y'
23231  , p_source_application_id =>  602
23232 );
23233    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
23234    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_82);
23235    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
23236    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_83);
23237    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
23238    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_84);
23239    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
23240    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_85);
23241    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
23242    l_rec_acct_attrs.array_char_value(9)  := p_source_86;
23243    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
23244    l_rec_acct_attrs.array_num_value(10)  := p_source_87;
23245    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
23246    l_rec_acct_attrs.array_char_value(11)  := p_source_88;
23247    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
23248    l_rec_acct_attrs.array_date_value(12)  := p_source_89;
23249    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
23250    l_rec_acct_attrs.array_num_value(13)  := p_source_90;
23251    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
23252    l_rec_acct_attrs.array_char_value(14)  := p_source_91;
23253    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
23254    l_rec_acct_attrs.array_num_value(15)  := p_source_92;
23255    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
23256    l_rec_acct_attrs.array_num_value(16)  := p_source_49;
23257    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
23258    l_rec_acct_attrs.array_num_value(17)  := p_source_50;
23259    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
23260    l_rec_acct_attrs.array_char_value(18)  := p_source_51;
23261    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
23262    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_93);
23263    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
23264    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_94);
23265    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
23266    l_rec_acct_attrs.array_char_value(21)  := p_source_95;
23267    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
23268    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_93);
23269 
23273    ---------------------------------------------------------------------------------------------------------------
23270    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23271    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23272 
23274    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23275    ---------------------------------------------------------------------------------------------------------------
23276    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23277 
23278    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23279    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23280 
23281    IF xla_accounting_cache_pkg.GetValueChar
23282          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23283          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23284    AND l_bflow_method_code = 'PRIOR_ENTRY'
23285 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23286    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23287          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23288        )
23289    THEN
23290          xla_ae_lines_pkg.BflowUpgEntry
23291            (p_business_method_code    => l_bflow_method_code
23292            ,p_business_class_code     => l_bflow_class_code
23293            ,p_balance_type            => l_balance_type_code);
23294    ELSE
23295       NULL;
23296 -- No business flow processing for business flow method of NONE.
23297    END IF;
23298 
23299    --
23300    -- call analytical criteria
23301    --
23302    
23303    --
23304    -- call description
23305    --
23306    
23307 xla_ae_lines_pkg.SetLineDescription(
23308    p_ae_header_id => l_ae_header_id
23309   ,p_description  => Description_11 (
23310      p_application_id         => p_application_id
23311    , p_ae_header_id           => l_ae_header_id 
23312 , p_source_10 => p_source_10
23313 , p_source_11 => p_source_11
23314 , p_source_12 => p_source_12
23315    )
23316 );
23317 
23318 
23319    --
23320    -- call ADRs
23321    -- Bug 4922099
23322    --
23323    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23324         (NVL(l_actual_upg_option, 'N') = 'O') OR
23325         (NVL(l_enc_upg_option, 'N') = 'O')
23326       )
23327    THEN
23328    NULL;
23329    --
23330    --
23331    
23332   l_ccid := AcctDerRule_23(
23333            p_application_id           => p_application_id
23334          , p_ae_header_id             => l_ae_header_id 
23335 , p_source_26 => p_source_26
23336          , x_transaction_coa_id       => l_adr_transaction_coa_id
23337          , x_accounting_coa_id        => l_adr_accounting_coa_id
23338          , x_value_type_code          => l_adr_value_type_code
23339          , p_side                     => 'NA'
23340    );
23341 
23342    xla_ae_lines_pkg.set_ccid(
23343     p_code_combination_id          => l_ccid
23344   , p_value_type_code              => l_adr_value_type_code
23345   , p_transaction_coa_id           => l_adr_transaction_coa_id
23346   , p_accounting_coa_id            => l_adr_accounting_coa_id
23347   , p_adr_code                     => 'COLL_DOC_BILLS_UNDER_COLL'
23348   , p_adr_type_code                => 'S'
23349   , p_component_type               => l_component_type
23350   , p_component_code               => l_component_code
23351   , p_component_type_code          => l_component_type_code
23352   , p_component_appl_id            => l_component_appl_id
23353   , p_amb_context_code             => l_amb_context_code
23354   , p_side                         => 'NA'
23355   );
23356 
23357 
23358    --
23359    --
23360    END IF;
23361    --
23362    -- Bug 4922099
23363    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
23364           (NVL(l_enc_upg_option, 'N') = 'O')
23365         ) AND
23366         (l_bflow_method_code = 'PRIOR_ENTRY')
23367       )
23368    THEN
23369       IF
23370       --
23371       1 = 2
23372       --
23373       THEN
23374       xla_accounting_err_pkg.build_message
23375                                     (p_appli_s_name            => 'XLA'
23376                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23377                                     ,p_token_1                 => 'LINE_NUMBER'
23378                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
23379                                     ,p_token_2                 => 'LINE_TYPE_NAME'
23380                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
23381                                                                              l_component_type
23382                                                                             ,l_component_code
23383                                                                             ,l_component_type_code
23384                                                                             ,l_component_appl_id
23385                                                                             ,l_amb_context_code
23386                                                                             ,l_entity_code
23387                                                                             ,l_event_class_code
23388                                                                            )
23392                                                                           ,p_lookup_code    => l_component_type_code
23389                                     ,p_token_3                 => 'OWNER'
23390                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
23391                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
23393                                                                          )
23394                                     ,p_token_4                 => 'PRODUCT_NAME'
23395                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
23396                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
23397                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
23398                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
23399                                     ,p_ae_header_id            =>  NULL
23400                                        );
23401 
23402         IF (C_LEVEL_ERROR>= g_log_level) THEN
23403                  trace
23404                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
23405                       ,p_level    => C_LEVEL_ERROR
23406                       ,p_module   => l_log_module);
23407         END IF;
23408       END IF;
23409    END IF;
23410    --
23411    --
23412    ------------------------------------------------------------------------------------------------
23413    -- 4219869 Business Flow
23414    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
23415    -- Prior Entry.  Currently, the following code is always generated.
23416    ------------------------------------------------------------------------------------------------
23417    XLA_AE_LINES_PKG.ValidateCurrentLine;
23418 
23419    ------------------------------------------------------------------------------------
23420    -- 4219869 Business Flow
23421    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
23422    ------------------------------------------------------------------------------------
23423    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23424 
23425    ----------------------------------------------------------------------------------
23426    -- 4219869 Business Flow
23427    -- Update journal entry status -- Need to generate this within IF <condition>
23428    ----------------------------------------------------------------------------------
23429    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23430          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
23431          ,p_balance_type_code => l_balance_type_code
23432          );
23433 
23434    -------------------------------------------------------------------------------------------
23435    -- 4262811 - Generate the Accrual Reversal lines
23436    -------------------------------------------------------------------------------------------
23437    BEGIN
23438       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
23439                               (g_array_event(p_event_id).array_value_num('header_index'));
23440       IF l_acc_rev_flag IS NULL THEN
23441          l_acc_rev_flag := 'N';
23442       END IF;
23443    EXCEPTION
23444       WHEN OTHERS THEN
23445          l_acc_rev_flag := 'N';
23446    END;
23447    --
23448    IF (l_acc_rev_flag = 'Y') THEN
23449 
23450        -- 4645092  ------------------------------------------------------------------------------
23451        -- To allow MPA report to determine if it should generate report process
23452        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
23453        ------------------------------------------------------------------------------------------
23454 
23455        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
23456        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
23457    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
23458    -- call ADRs
23459    -- Bug 4922099
23460    --
23461    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23462         (NVL(l_actual_upg_option, 'N') = 'O') OR
23463         (NVL(l_enc_upg_option, 'N') = 'O')
23464       )
23465    THEN
23466    NULL;
23467    --
23468    --
23469    
23470   l_ccid := AcctDerRule_23(
23471            p_application_id           => p_application_id
23472          , p_ae_header_id             => l_ae_header_id 
23473 , p_source_26 => p_source_26
23474          , x_transaction_coa_id       => l_adr_transaction_coa_id
23475          , x_accounting_coa_id        => l_adr_accounting_coa_id
23476          , x_value_type_code          => l_adr_value_type_code
23477          , p_side                     => 'NA'
23478    );
23479 
23480    xla_ae_lines_pkg.set_ccid(
23481     p_code_combination_id          => l_ccid
23482   , p_value_type_code              => l_adr_value_type_code
23483   , p_transaction_coa_id           => l_adr_transaction_coa_id
23484   , p_accounting_coa_id            => l_adr_accounting_coa_id
23485   , p_adr_code                     => 'COLL_DOC_BILLS_UNDER_COLL'
23486   , p_adr_type_code                => 'S'
23487   , p_component_type               => l_component_type
23488   , p_component_code               => l_component_code
23489   , p_component_type_code          => l_component_type_code
23490   , p_component_appl_id            => l_component_appl_id
23494 
23491   , p_amb_context_code             => l_amb_context_code
23492   , p_side                         => 'NA'
23493   );
23495 
23496    --
23497    --
23498    END IF;
23499 
23500        --
23501        -- Update the line information that should be overwritten
23502        --
23503        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
23504                                          p_header_num   => 1);
23505        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
23506 
23507        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
23508 
23509        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
23510           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
23511        END IF;
23512 
23513       --
23514       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
23515       --
23516       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
23517           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
23518       ELSE
23519           ---------------------------------------------------------------------------------------------------
23520           -- 4262811a Switch Sign
23521           ---------------------------------------------------------------------------------------------------
23522           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
23523           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23524                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23525           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
23526                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23527           -- 5132302
23528           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
23529                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
23530 
23531       END IF;
23532 
23533       -- 4955764
23534       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23535       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
23536 
23537 
23538       XLA_AE_LINES_PKG.ValidateCurrentLine;
23539       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
23540 
23541       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
23542                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
23543                ,p_balance_type_code => l_balance_type_code);
23544 
23545    END IF;
23546 
23547    -----------------------------------------------------------------------------------------
23548    -- 4262811 Multiperiod Accounting
23549    -----------------------------------------------------------------------------------------
23550      -- No MPA option is assigned.
23551 
23552 
23553 END IF;
23554 END IF;
23555 --
23556 
23557 --
23558 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23559    trace
23560       (p_msg      => 'END of AcctLineType_69'
23561       ,p_level    => C_LEVEL_PROCEDURE
23562       ,p_module   => l_log_module);
23563 END IF;
23564 --
23565 EXCEPTION
23566   WHEN xla_exceptions_pkg.application_exception THEN
23567       RAISE;
23568   WHEN OTHERS THEN
23569        xla_exceptions_pkg.raise_message
23570            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_69');
23571 END AcctLineType_69;
23572 --
23573 
23574 ---------------------------------------
23575 --
23576 -- PRIVATE FUNCTION
23577 --         AcctLineType_70
23578 --
23579 ---------------------------------------
23580 PROCEDURE AcctLineType_70 (
23581   p_application_id        IN NUMBER
23582  ,p_event_id              IN NUMBER
23583  ,p_calculate_acctd_flag  IN VARCHAR2
23584  ,p_calculate_g_l_flag    IN VARCHAR2
23585  ,p_actual_flag           IN OUT VARCHAR2
23586  ,p_balance_type_code     OUT VARCHAR2
23587  ,p_gain_or_loss_ref      OUT VARCHAR2
23588  
23589 --Collection Document Bank Occurrence
23590  , p_source_10            IN VARCHAR2
23591 --Collection Document Number
23592  , p_source_11            IN NUMBER
23593 --Collection Document Trade Note Number
23594  , p_source_12            IN VARCHAR2
23595 --Bordero Type
23596  , p_source_13            IN VARCHAR2
23597  , p_source_13_meaning    IN VARCHAR2
23598 --Collection Document Cash Account
23599  , p_source_28            IN NUMBER
23600 --Bill To Customer Account Identifier
23601  , p_source_49            IN NUMBER
23602 --Bill To Customer Site Use Identifier
23603  , p_source_50            IN NUMBER
23604 --SLA Party Type
23605  , p_source_51            IN VARCHAR2
23606 --Collection Document Distribution Line Type
23607  , p_source_77            IN VARCHAR2
23608  , p_source_77_meaning    IN VARCHAR2
23609 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
23610  , p_source_78            IN VARCHAR2
23611  , p_source_78_meaning    IN VARCHAR2
23612 --Applied To Distribution Link Type
23613  , p_source_80            IN VARCHAR2
23617  , p_source_83            IN NUMBER
23614 --Applied To Distribution Identifier
23615  , p_source_82            IN NUMBER
23616 --Applied To Distribution Document Identifier
23618 --Applied To Distribution Occurrence Identifier
23619  , p_source_84            IN NUMBER
23620 --Collection Document Distribution Identifier
23621  , p_source_85            IN NUMBER
23622 --Collection Document Distribution Link Type
23623  , p_source_86            IN VARCHAR2
23624 --Collection Document Distribution Entered Amount
23625  , p_source_87            IN NUMBER
23626 --Collection Document Distribution Entered Currency Code
23627  , p_source_88            IN VARCHAR2
23628 --Collection Document Distribution Conversion Date
23629  , p_source_89            IN DATE
23630 --Collection Document Distribution Conversion Rate
23631  , p_source_90            IN NUMBER
23632 --Collection Document Distribution Conversion Rate Type
23633  , p_source_91            IN VARCHAR2
23634 --Collection Document Distribution Accounted Amount
23635  , p_source_92            IN NUMBER
23636 --Collection Document Occurrence Identifier
23637  , p_source_93            IN NUMBER
23638 --Reversed Collection Document Distribution Identifier
23639  , p_source_94            IN NUMBER
23640 --Reversed Collection Document Distribution Link Type
23641  , p_source_95            IN VARCHAR2
23642 )
23643 IS
23644 
23645 l_component_type              VARCHAR2(80);
23646 l_component_code              VARCHAR2(30);
23647 l_component_type_code         VARCHAR2(1);
23648 l_component_appl_id           INTEGER;
23649 l_amb_context_code            VARCHAR2(30);
23650 l_entity_code                 VARCHAR2(30);
23651 l_event_class_code            VARCHAR2(30);
23652 l_ae_header_id                NUMBER;
23653 l_event_type_code             VARCHAR2(30);
23654 l_line_definition_code        VARCHAR2(30);
23655 l_line_definition_owner_code  VARCHAR2(1);
23656 --
23657 -- adr variables
23658 l_segment                     VARCHAR2(30);
23659 l_ccid                        NUMBER;
23660 l_adr_transaction_coa_id      NUMBER;
23661 l_adr_accounting_coa_id       NUMBER;
23662 l_adr_flexfield_segment_code  VARCHAR2(30);
23663 l_adr_flex_value_set_id       NUMBER;
23664 l_adr_value_type_code         VARCHAR2(30);
23665 l_adr_value_combination_id    NUMBER;
23666 l_adr_value_segment_code      VARCHAR2(30);
23667 
23668 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
23669 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
23670 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
23671 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
23672 
23673 -- 4262811 Variables ------------------------------------------------------------------------------------------
23674 l_entered_amt_idx             NUMBER;
23675 l_accted_amt_idx              NUMBER;
23676 l_acc_rev_flag                VARCHAR2(1);
23677 l_accrual_line_num            NUMBER;
23678 l_tmp_amt                     NUMBER;
23679 l_acc_rev_natural_side_code   VARCHAR2(1);
23680 
23681 l_num_entries                 NUMBER;
23682 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
23683 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
23684 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
23685 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
23686 l_recog_line_1                NUMBER;
23687 l_recog_line_2                NUMBER;
23688 
23689 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
23690 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
23691 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
23692 
23693 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
23694 
23695 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
23696 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
23697 
23698 ---------------------------------------------------------------------------------------------------------------
23699 
23700 
23701 --
23702 -- bulk performance
23703 --
23704 l_balance_type_code           VARCHAR2(1);
23705 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
23706 l_log_module                  VARCHAR2(240);
23707 
23708 --
23709 -- Upgrade strategy
23710 --
23711 l_actual_upg_option           VARCHAR2(1);
23712 l_enc_upg_option           VARCHAR2(1);
23713 
23714 --
23715 BEGIN
23716 --
23717 IF g_log_enabled THEN
23718       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_70';
23719 END IF;
23720 --
23721 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
23722 
23723       trace
23724          (p_msg      => 'BEGIN of AcctLineType_70'
23725          ,p_level    => C_LEVEL_PROCEDURE
23726          ,p_module   => l_log_module);
23727 
23728 END IF;
23729 --
23730 l_component_type             := 'AMB_JLT';
23731 l_component_code             := 'COLL_DOC_CASH';
23732 l_component_type_code        := 'S';
23733 l_component_appl_id          :=  222;
23734 l_amb_context_code           := 'DEFAULT';
23735 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
23736 l_event_class_code           := 'COLLECTION_OCC_DOCUMENT';
23737 l_event_type_code            := 'COLLECTION_OCC_DOCUMENT_ALL';
23741 l_balance_type_code          := 'A';
23738 l_line_definition_owner_code := 'S';
23739 l_line_definition_code       := 'JLBR_AR_BANK_COLL_DOC_ACCRUAL';
23740 --
23742 l_segment                     := NULL;
23743 l_ccid                        := NULL;
23744 l_adr_transaction_coa_id      := NULL;
23745 l_adr_accounting_coa_id       := NULL;
23746 l_adr_flexfield_segment_code  := NULL;
23747 l_adr_flex_value_set_id       := NULL;
23748 l_adr_value_type_code         := NULL;
23749 l_adr_value_combination_id    := NULL;
23750 l_adr_value_segment_code      := NULL;
23751 
23752 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
23753 l_bflow_class_code           := '';    -- 4219869 Business Flow
23754 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
23755 l_budgetary_control_flag     := 'N';
23756 
23757 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
23758 l_bflow_applied_to_amt       := NULL; -- 5132302
23759 l_entered_amt_idx            := NULL;          -- 4262811
23760 l_accted_amt_idx             := NULL;          -- 4262811
23761 l_acc_rev_flag               := NULL;          -- 4262811
23762 l_accrual_line_num           := NULL;          -- 4262811
23763 l_tmp_amt                    := NULL;          -- 4262811
23764 --
23765  
23766 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
23767     l_balance_type_code <> 'B' THEN
23768 IF NVL(p_source_77,'
23769 ') =  'JLBR_AR_BANK_CHARGES' AND 
23770 NVL(p_source_13,'
23771 ') =  'COLLECTION'
23772  THEN 
23773 
23774    --
23775    XLA_AE_LINES_PKG.SetNewLine;
23776 
23777    p_balance_type_code          := l_balance_type_code;
23778    -- set the flag so later we will know whether the gain loss line needs to be created
23779    
23780    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
23781      p_actual_flag :='A';
23782    END IF;
23783 
23784    --
23785    -- bulk performance
23786    --
23787    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
23788                                       p_header_num   => 0); -- 4262811
23789    --
23790    -- set accounting line options
23791    --
23792    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
23793            p_natural_side_code          => 'C'
23794          , p_gain_or_loss_flag          => 'N'
23795          , p_gl_transfer_mode_code      => 'S'
23796          , p_acct_entry_type_code       => 'A'
23797          , p_switch_side_flag           => 'Y'
23798          , p_merge_duplicate_code       => 'W'
23799          );
23800    --
23801    l_acc_rev_natural_side_code := 'D';  -- 4262811
23802    -- 
23803    --
23804    -- set accounting line type info
23805    --
23806    xla_ae_lines_pkg.SetAcctLineType
23807       (p_component_type             => l_component_type
23808       ,p_event_type_code            => l_event_type_code
23809       ,p_line_definition_owner_code => l_line_definition_owner_code
23810       ,p_line_definition_code       => l_line_definition_code
23811       ,p_accounting_line_code       => l_component_code
23812       ,p_accounting_line_type_code  => l_component_type_code
23813       ,p_accounting_line_appl_id    => l_component_appl_id
23814       ,p_amb_context_code           => l_amb_context_code
23815       ,p_entity_code                => l_entity_code
23816       ,p_event_class_code           => l_event_class_code);
23817    --
23818    -- set accounting class
23819    --
23820    xla_ae_lines_pkg.SetAcctClass(
23821            p_accounting_class_code  => 'CASH'
23822          , p_ae_header_id           => l_ae_header_id
23823          );
23824 
23825    --
23826    -- set rounding class
23827    --
23828    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
23829                       'CASH';
23830 
23831    --
23832    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
23833    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
23834    --
23835    -- bulk performance
23836    --
23837    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
23838 
23839    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
23840       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
23841 
23842    -- 4955764
23843    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
23844       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
23845 
23846    -- 4458381 Public Sector Enh
23847    
23848    --
23849    -- set accounting attributes for the line type
23850    --
23851    l_entered_amt_idx := 10;
23852    l_accted_amt_idx  := 15;
23853    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
23854    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
23855    l_rec_acct_attrs.array_char_value(1)  := p_source_78;
23856    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
23857    l_rec_acct_attrs.array_num_value(2)  := 
23858 xla_ae_sources_pkg.GetSystemSourceNum(
23859    p_source_code           => 'XLA_EVENT_APPL_ID'
23860  , p_source_type_code      => 'Y'
23861  , p_source_application_id =>  602
23862 );
23863    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
23867 xla_ae_sources_pkg.GetSystemSourceChar(
23864    l_rec_acct_attrs.array_char_value(3)  := p_source_80;
23865    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
23866    l_rec_acct_attrs.array_char_value(4)  := 
23868    p_source_code           => 'XLA_ENTITY_CODE'
23869  , p_source_type_code      => 'Y'
23870  , p_source_application_id =>  602
23871 );
23872    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
23873    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_82);
23874    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
23875    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_83);
23876    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
23877    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_84);
23878    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
23879    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_85);
23880    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
23881    l_rec_acct_attrs.array_char_value(9)  := p_source_86;
23882    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
23883    l_rec_acct_attrs.array_num_value(10)  := p_source_87;
23884    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
23885    l_rec_acct_attrs.array_char_value(11)  := p_source_88;
23886    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
23887    l_rec_acct_attrs.array_date_value(12)  := p_source_89;
23888    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
23889    l_rec_acct_attrs.array_num_value(13)  := p_source_90;
23890    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
23891    l_rec_acct_attrs.array_char_value(14)  := p_source_91;
23892    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
23893    l_rec_acct_attrs.array_num_value(15)  := p_source_92;
23894    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
23895    l_rec_acct_attrs.array_num_value(16)  := p_source_49;
23896    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
23897    l_rec_acct_attrs.array_num_value(17)  := p_source_50;
23898    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
23899    l_rec_acct_attrs.array_char_value(18)  := p_source_51;
23900    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
23901    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_93);
23902    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
23903    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_94);
23904    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
23905    l_rec_acct_attrs.array_char_value(21)  := p_source_95;
23906    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
23907    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_93);
23908 
23909    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
23910    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
23911 
23912    ---------------------------------------------------------------------------------------------------------------
23913    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
23914    ---------------------------------------------------------------------------------------------------------------
23915    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
23916 
23917    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23918    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
23919 
23920    IF xla_accounting_cache_pkg.GetValueChar
23921          (p_source_code         => 'LEDGER_CATEGORY_CODE'
23922          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
23923    AND l_bflow_method_code = 'PRIOR_ENTRY'
23924 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
23925    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
23926          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
23927        )
23928    THEN
23929          xla_ae_lines_pkg.BflowUpgEntry
23930            (p_business_method_code    => l_bflow_method_code
23931            ,p_business_class_code     => l_bflow_class_code
23932            ,p_balance_type            => l_balance_type_code);
23933    ELSE
23934       NULL;
23935 -- No business flow processing for business flow method of NONE.
23936    END IF;
23937 
23938    --
23939    -- call analytical criteria
23940    --
23941    
23942    --
23943    -- call description
23944    --
23945    
23946 xla_ae_lines_pkg.SetLineDescription(
23947    p_ae_header_id => l_ae_header_id
23948   ,p_description  => Description_13 (
23949      p_application_id         => p_application_id
23950    , p_ae_header_id           => l_ae_header_id 
23951 , p_source_10 => p_source_10
23952 , p_source_11 => p_source_11
23953 , p_source_12 => p_source_12
23954 , p_source_13 => p_source_13
23955 , p_source_13_meaning => p_source_13_meaning
23956    )
23957 );
23958 
23959 
23960    --
23961    -- call ADRs
23962    -- Bug 4922099
23963    --
23964    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
23965         (NVL(l_actual_upg_option, 'N') = 'O') OR
23966         (NVL(l_enc_upg_option, 'N') = 'O')
23967       )
23968    THEN
23969    NULL;
23970    --
23971    --
23972    
23973   l_ccid := AcctDerRule_25(
23977          , x_transaction_coa_id       => l_adr_transaction_coa_id
23974            p_application_id           => p_application_id
23975          , p_ae_header_id             => l_ae_header_id 
23976 , p_source_28 => p_source_28
23978          , x_accounting_coa_id        => l_adr_accounting_coa_id
23979          , x_value_type_code          => l_adr_value_type_code
23980          , p_side                     => 'NA'
23981    );
23982 
23983    xla_ae_lines_pkg.set_ccid(
23984     p_code_combination_id          => l_ccid
23985   , p_value_type_code              => l_adr_value_type_code
23986   , p_transaction_coa_id           => l_adr_transaction_coa_id
23987   , p_accounting_coa_id            => l_adr_accounting_coa_id
23988   , p_adr_code                     => 'COLL_DOC_CASH'
23989   , p_adr_type_code                => 'S'
23990   , p_component_type               => l_component_type
23991   , p_component_code               => l_component_code
23992   , p_component_type_code          => l_component_type_code
23993   , p_component_appl_id            => l_component_appl_id
23994   , p_amb_context_code             => l_amb_context_code
23995   , p_side                         => 'NA'
23996   );
23997 
23998 
23999    --
24000    --
24001    END IF;
24002    --
24003    -- Bug 4922099
24004    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24005           (NVL(l_enc_upg_option, 'N') = 'O')
24006         ) AND
24007         (l_bflow_method_code = 'PRIOR_ENTRY')
24008       )
24009    THEN
24010       IF
24011       --
24012       1 = 2
24013       --
24014       THEN
24015       xla_accounting_err_pkg.build_message
24016                                     (p_appli_s_name            => 'XLA'
24017                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24018                                     ,p_token_1                 => 'LINE_NUMBER'
24019                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24020                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24021                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24022                                                                              l_component_type
24023                                                                             ,l_component_code
24024                                                                             ,l_component_type_code
24025                                                                             ,l_component_appl_id
24026                                                                             ,l_amb_context_code
24027                                                                             ,l_entity_code
24028                                                                             ,l_event_class_code
24029                                                                            )
24030                                     ,p_token_3                 => 'OWNER'
24031                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24032                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24033                                                                           ,p_lookup_code    => l_component_type_code
24034                                                                          )
24035                                     ,p_token_4                 => 'PRODUCT_NAME'
24036                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24037                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24038                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24039                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24040                                     ,p_ae_header_id            =>  NULL
24041                                        );
24042 
24043         IF (C_LEVEL_ERROR>= g_log_level) THEN
24044                  trace
24045                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24046                       ,p_level    => C_LEVEL_ERROR
24047                       ,p_module   => l_log_module);
24048         END IF;
24049       END IF;
24050    END IF;
24051    --
24052    --
24053    ------------------------------------------------------------------------------------------------
24054    -- 4219869 Business Flow
24055    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24056    -- Prior Entry.  Currently, the following code is always generated.
24057    ------------------------------------------------------------------------------------------------
24058    XLA_AE_LINES_PKG.ValidateCurrentLine;
24059 
24060    ------------------------------------------------------------------------------------
24061    -- 4219869 Business Flow
24062    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24063    ------------------------------------------------------------------------------------
24064    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24065 
24066    ----------------------------------------------------------------------------------
24067    -- 4219869 Business Flow
24068    -- Update journal entry status -- Need to generate this within IF <condition>
24069    ----------------------------------------------------------------------------------
24070    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24074 
24071          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24072          ,p_balance_type_code => l_balance_type_code
24073          );
24075    -------------------------------------------------------------------------------------------
24076    -- 4262811 - Generate the Accrual Reversal lines
24077    -------------------------------------------------------------------------------------------
24078    BEGIN
24079       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24080                               (g_array_event(p_event_id).array_value_num('header_index'));
24081       IF l_acc_rev_flag IS NULL THEN
24082          l_acc_rev_flag := 'N';
24083       END IF;
24084    EXCEPTION
24085       WHEN OTHERS THEN
24086          l_acc_rev_flag := 'N';
24087    END;
24088    --
24089    IF (l_acc_rev_flag = 'Y') THEN
24090 
24091        -- 4645092  ------------------------------------------------------------------------------
24092        -- To allow MPA report to determine if it should generate report process
24093        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24094        ------------------------------------------------------------------------------------------
24095 
24096        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24097        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24098    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
24099    -- call ADRs
24100    -- Bug 4922099
24101    --
24102    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24103         (NVL(l_actual_upg_option, 'N') = 'O') OR
24104         (NVL(l_enc_upg_option, 'N') = 'O')
24105       )
24106    THEN
24107    NULL;
24108    --
24109    --
24110    
24111   l_ccid := AcctDerRule_25(
24112            p_application_id           => p_application_id
24113          , p_ae_header_id             => l_ae_header_id 
24114 , p_source_28 => p_source_28
24115          , x_transaction_coa_id       => l_adr_transaction_coa_id
24116          , x_accounting_coa_id        => l_adr_accounting_coa_id
24117          , x_value_type_code          => l_adr_value_type_code
24118          , p_side                     => 'NA'
24119    );
24120 
24121    xla_ae_lines_pkg.set_ccid(
24122     p_code_combination_id          => l_ccid
24123   , p_value_type_code              => l_adr_value_type_code
24124   , p_transaction_coa_id           => l_adr_transaction_coa_id
24125   , p_accounting_coa_id            => l_adr_accounting_coa_id
24126   , p_adr_code                     => 'COLL_DOC_CASH'
24127   , p_adr_type_code                => 'S'
24128   , p_component_type               => l_component_type
24129   , p_component_code               => l_component_code
24130   , p_component_type_code          => l_component_type_code
24131   , p_component_appl_id            => l_component_appl_id
24132   , p_amb_context_code             => l_amb_context_code
24133   , p_side                         => 'NA'
24134   );
24135 
24136 
24137    --
24138    --
24139    END IF;
24140 
24141        --
24142        -- Update the line information that should be overwritten
24143        --
24144        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24145                                          p_header_num   => 1);
24146        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24147 
24148        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24149 
24150        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24151           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24152        END IF;
24153 
24154       --
24155       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24156       --
24157       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24158           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24159       ELSE
24160           ---------------------------------------------------------------------------------------------------
24161           -- 4262811a Switch Sign
24162           ---------------------------------------------------------------------------------------------------
24163           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24164           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24165                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24166           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24167                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24168           -- 5132302
24169           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24170                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24171 
24172       END IF;
24173 
24174       -- 4955764
24175       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24176       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24177 
24178 
24179       XLA_AE_LINES_PKG.ValidateCurrentLine;
24183                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24180       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24181 
24182       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24184                ,p_balance_type_code => l_balance_type_code);
24185 
24186    END IF;
24187 
24188    -----------------------------------------------------------------------------------------
24189    -- 4262811 Multiperiod Accounting
24190    -----------------------------------------------------------------------------------------
24191      -- No MPA option is assigned.
24192 
24193 
24194 END IF;
24195 END IF;
24196 --
24197 
24198 --
24199 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24200    trace
24201       (p_msg      => 'END of AcctLineType_70'
24202       ,p_level    => C_LEVEL_PROCEDURE
24203       ,p_module   => l_log_module);
24204 END IF;
24205 --
24206 EXCEPTION
24207   WHEN xla_exceptions_pkg.application_exception THEN
24208       RAISE;
24209   WHEN OTHERS THEN
24210        xla_exceptions_pkg.raise_message
24211            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_70');
24212 END AcctLineType_70;
24213 --
24214 
24215 ---------------------------------------
24216 --
24217 -- PRIVATE FUNCTION
24218 --         AcctLineType_71
24219 --
24220 ---------------------------------------
24221 PROCEDURE AcctLineType_71 (
24222   p_application_id        IN NUMBER
24223  ,p_event_id              IN NUMBER
24224  ,p_calculate_acctd_flag  IN VARCHAR2
24225  ,p_calculate_g_l_flag    IN VARCHAR2
24226  ,p_actual_flag           IN OUT VARCHAR2
24227  ,p_balance_type_code     OUT VARCHAR2
24228  ,p_gain_or_loss_ref      OUT VARCHAR2
24229  
24230 --Collection Document Bank Occurrence
24231  , p_source_10            IN VARCHAR2
24232 --Collection Document Number
24233  , p_source_11            IN NUMBER
24234 --Collection Document Trade Note Number
24235  , p_source_12            IN VARCHAR2
24236 --Bordero Type
24237  , p_source_13            IN VARCHAR2
24238  , p_source_13_meaning    IN VARCHAR2
24239 --Collection Document Collection Endorsement Account
24240  , p_source_29            IN NUMBER
24241 --Bill To Customer Account Identifier
24242  , p_source_49            IN NUMBER
24243 --Bill To Customer Site Use Identifier
24244  , p_source_50            IN NUMBER
24245 --SLA Party Type
24246  , p_source_51            IN VARCHAR2
24247 --Collection Document Distribution Line Type
24248  , p_source_77            IN VARCHAR2
24249  , p_source_77_meaning    IN VARCHAR2
24250 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
24251  , p_source_78            IN VARCHAR2
24252  , p_source_78_meaning    IN VARCHAR2
24253 --Applied To Distribution Link Type
24254  , p_source_80            IN VARCHAR2
24255 --Applied To Distribution Identifier
24256  , p_source_82            IN NUMBER
24257 --Applied To Distribution Document Identifier
24258  , p_source_83            IN NUMBER
24259 --Applied To Distribution Occurrence Identifier
24260  , p_source_84            IN NUMBER
24261 --Collection Document Distribution Identifier
24262  , p_source_85            IN NUMBER
24263 --Collection Document Distribution Link Type
24264  , p_source_86            IN VARCHAR2
24265 --Collection Document Distribution Entered Amount
24266  , p_source_87            IN NUMBER
24267 --Collection Document Distribution Entered Currency Code
24268  , p_source_88            IN VARCHAR2
24269 --Collection Document Distribution Conversion Date
24270  , p_source_89            IN DATE
24271 --Collection Document Distribution Conversion Rate
24272  , p_source_90            IN NUMBER
24273 --Collection Document Distribution Conversion Rate Type
24274  , p_source_91            IN VARCHAR2
24275 --Collection Document Distribution Accounted Amount
24276  , p_source_92            IN NUMBER
24277 --Collection Document Occurrence Identifier
24278  , p_source_93            IN NUMBER
24279 --Reversed Collection Document Distribution Identifier
24280  , p_source_94            IN NUMBER
24281 --Reversed Collection Document Distribution Link Type
24282  , p_source_95            IN VARCHAR2
24283 --Collection Document Occurrence Type
24284  , p_source_96            IN VARCHAR2
24285  , p_source_96_meaning    IN VARCHAR2
24286 )
24287 IS
24288 
24289 l_component_type              VARCHAR2(80);
24290 l_component_code              VARCHAR2(30);
24291 l_component_type_code         VARCHAR2(1);
24292 l_component_appl_id           INTEGER;
24293 l_amb_context_code            VARCHAR2(30);
24294 l_entity_code                 VARCHAR2(30);
24295 l_event_class_code            VARCHAR2(30);
24296 l_ae_header_id                NUMBER;
24297 l_event_type_code             VARCHAR2(30);
24298 l_line_definition_code        VARCHAR2(30);
24299 l_line_definition_owner_code  VARCHAR2(1);
24300 --
24301 -- adr variables
24302 l_segment                     VARCHAR2(30);
24303 l_ccid                        NUMBER;
24304 l_adr_transaction_coa_id      NUMBER;
24305 l_adr_accounting_coa_id       NUMBER;
24306 l_adr_flexfield_segment_code  VARCHAR2(30);
24307 l_adr_flex_value_set_id       NUMBER;
24308 l_adr_value_type_code         VARCHAR2(30);
24309 l_adr_value_combination_id    NUMBER;
24310 l_adr_value_segment_code      VARCHAR2(30);
24311 
24312 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24316 
24313 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24314 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24315 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24317 -- 4262811 Variables ------------------------------------------------------------------------------------------
24318 l_entered_amt_idx             NUMBER;
24319 l_accted_amt_idx              NUMBER;
24320 l_acc_rev_flag                VARCHAR2(1);
24321 l_accrual_line_num            NUMBER;
24322 l_tmp_amt                     NUMBER;
24323 l_acc_rev_natural_side_code   VARCHAR2(1);
24324 
24325 l_num_entries                 NUMBER;
24326 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24327 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24328 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24329 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24330 l_recog_line_1                NUMBER;
24331 l_recog_line_2                NUMBER;
24332 
24333 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24334 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24335 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24336 
24337 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24338 
24339 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24340 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24341 
24342 ---------------------------------------------------------------------------------------------------------------
24343 
24344 
24345 --
24346 -- bulk performance
24347 --
24348 l_balance_type_code           VARCHAR2(1);
24349 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24350 l_log_module                  VARCHAR2(240);
24351 
24352 --
24353 -- Upgrade strategy
24354 --
24355 l_actual_upg_option           VARCHAR2(1);
24356 l_enc_upg_option           VARCHAR2(1);
24357 
24358 --
24359 BEGIN
24360 --
24361 IF g_log_enabled THEN
24362       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_71';
24363 END IF;
24364 --
24365 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24366 
24367       trace
24368          (p_msg      => 'BEGIN of AcctLineType_71'
24369          ,p_level    => C_LEVEL_PROCEDURE
24370          ,p_module   => l_log_module);
24371 
24372 END IF;
24373 --
24374 l_component_type             := 'AMB_JLT';
24375 l_component_code             := 'COLL_DOC_COLL_ENDRSMNT_CR';
24376 l_component_type_code        := 'S';
24377 l_component_appl_id          :=  222;
24378 l_amb_context_code           := 'DEFAULT';
24379 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
24380 l_event_class_code           := 'COLLECTION_OCC_DOCUMENT';
24381 l_event_type_code            := 'COLLECTION_OCC_DOCUMENT_ALL';
24382 l_line_definition_owner_code := 'S';
24383 l_line_definition_code       := 'JLBR_AR_BANK_COLL_DOC_ACCRUAL';
24384 --
24385 l_balance_type_code          := 'A';
24386 l_segment                     := NULL;
24387 l_ccid                        := NULL;
24388 l_adr_transaction_coa_id      := NULL;
24389 l_adr_accounting_coa_id       := NULL;
24390 l_adr_flexfield_segment_code  := NULL;
24391 l_adr_flex_value_set_id       := NULL;
24392 l_adr_value_type_code         := NULL;
24393 l_adr_value_combination_id    := NULL;
24394 l_adr_value_segment_code      := NULL;
24395 
24396 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
24397 l_bflow_class_code           := 'JLBR_AR_COLLECTION_ENDORSEMENT';    -- 4219869 Business Flow
24398 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
24399 l_budgetary_control_flag     := 'N';
24400 
24401 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
24402 l_bflow_applied_to_amt       := NULL; -- 5132302
24403 l_entered_amt_idx            := NULL;          -- 4262811
24404 l_accted_amt_idx             := NULL;          -- 4262811
24405 l_acc_rev_flag               := NULL;          -- 4262811
24406 l_accrual_line_num           := NULL;          -- 4262811
24407 l_tmp_amt                    := NULL;          -- 4262811
24408 --
24409  
24410 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
24411     l_balance_type_code <> 'B' THEN
24412 IF NVL(p_source_77,'
24413 ') =  'JLBR_AR_ENDORSEMENT' AND 
24414 NVL(p_source_13,'
24415 ') =  'COLLECTION' AND 
24416 NVL(p_source_96,'
24417 ') =  'REMITTANCE_OCCURRENCE'
24418  THEN 
24419 
24420    --
24421    XLA_AE_LINES_PKG.SetNewLine;
24422 
24423    p_balance_type_code          := l_balance_type_code;
24424    -- set the flag so later we will know whether the gain loss line needs to be created
24425    
24426    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
24427      p_actual_flag :='A';
24428    END IF;
24429 
24430    --
24431    -- bulk performance
24432    --
24433    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
24434                                       p_header_num   => 0); -- 4262811
24435    --
24436    -- set accounting line options
24437    --
24438    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
24439            p_natural_side_code          => 'C'
24440          , p_gain_or_loss_flag          => 'N'
24441          , p_gl_transfer_mode_code      => 'S'
24442          , p_acct_entry_type_code       => 'A'
24446    --
24443          , p_switch_side_flag           => 'Y'
24444          , p_merge_duplicate_code       => 'A'
24445          );
24447    l_acc_rev_natural_side_code := 'D';  -- 4262811
24448    -- 
24449    --
24450    -- set accounting line type info
24451    --
24452    xla_ae_lines_pkg.SetAcctLineType
24453       (p_component_type             => l_component_type
24454       ,p_event_type_code            => l_event_type_code
24455       ,p_line_definition_owner_code => l_line_definition_owner_code
24456       ,p_line_definition_code       => l_line_definition_code
24457       ,p_accounting_line_code       => l_component_code
24458       ,p_accounting_line_type_code  => l_component_type_code
24459       ,p_accounting_line_appl_id    => l_component_appl_id
24460       ,p_amb_context_code           => l_amb_context_code
24461       ,p_entity_code                => l_entity_code
24462       ,p_event_class_code           => l_event_class_code);
24463    --
24464    -- set accounting class
24465    --
24466    xla_ae_lines_pkg.SetAcctClass(
24467            p_accounting_class_code  => 'REMITTANCE'
24468          , p_ae_header_id           => l_ae_header_id
24469          );
24470 
24471    --
24472    -- set rounding class
24473    --
24474    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
24475                       'REMITTANCE';
24476 
24477    --
24478    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
24479    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
24480    --
24481    -- bulk performance
24482    --
24483    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
24484 
24485    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
24486       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
24487 
24488    -- 4955764
24489    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24490       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
24491 
24492    -- 4458381 Public Sector Enh
24493    
24494    --
24495    -- set accounting attributes for the line type
24496    --
24497    l_entered_amt_idx := 10;
24498    l_accted_amt_idx  := 15;
24499    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
24500    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
24501    l_rec_acct_attrs.array_char_value(1)  := p_source_78;
24502    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
24503    l_rec_acct_attrs.array_num_value(2)  := 
24504 xla_ae_sources_pkg.GetSystemSourceNum(
24505    p_source_code           => 'XLA_EVENT_APPL_ID'
24506  , p_source_type_code      => 'Y'
24507  , p_source_application_id =>  602
24508 );
24509    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
24510    l_rec_acct_attrs.array_char_value(3)  := p_source_80;
24511    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
24512    l_rec_acct_attrs.array_char_value(4)  := 
24513 xla_ae_sources_pkg.GetSystemSourceChar(
24514    p_source_code           => 'XLA_ENTITY_CODE'
24515  , p_source_type_code      => 'Y'
24516  , p_source_application_id =>  602
24517 );
24518    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
24519    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_82);
24520    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
24521    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_83);
24522    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
24523    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_84);
24524    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
24525    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_85);
24526    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
24527    l_rec_acct_attrs.array_char_value(9)  := p_source_86;
24528    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
24529    l_rec_acct_attrs.array_num_value(10)  := p_source_87;
24530    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
24531    l_rec_acct_attrs.array_char_value(11)  := p_source_88;
24532    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
24533    l_rec_acct_attrs.array_date_value(12)  := p_source_89;
24534    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
24535    l_rec_acct_attrs.array_num_value(13)  := p_source_90;
24536    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
24537    l_rec_acct_attrs.array_char_value(14)  := p_source_91;
24538    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
24539    l_rec_acct_attrs.array_num_value(15)  := p_source_92;
24540    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
24541    l_rec_acct_attrs.array_num_value(16)  := p_source_49;
24542    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
24543    l_rec_acct_attrs.array_num_value(17)  := p_source_50;
24544    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
24545    l_rec_acct_attrs.array_char_value(18)  := p_source_51;
24546    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
24547    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_93);
24548    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
24549    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_94);
24553    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_93);
24550    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
24551    l_rec_acct_attrs.array_char_value(21)  := p_source_95;
24552    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
24554 
24555    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
24556    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
24557 
24558    ---------------------------------------------------------------------------------------------------------------
24559    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
24560    ---------------------------------------------------------------------------------------------------------------
24561    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
24562 
24563    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24564    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
24565 
24566    IF xla_accounting_cache_pkg.GetValueChar
24567          (p_source_code         => 'LEDGER_CATEGORY_CODE'
24568          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
24569    AND l_bflow_method_code = 'PRIOR_ENTRY'
24570 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
24571    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
24572          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
24573        )
24574    THEN
24575          xla_ae_lines_pkg.BflowUpgEntry
24576            (p_business_method_code    => l_bflow_method_code
24577            ,p_business_class_code     => l_bflow_class_code
24578            ,p_balance_type            => l_balance_type_code);
24579    ELSE
24580       NULL;
24581 -- No business flow processing for business flow method of NONE.
24582    END IF;
24583 
24584    --
24585    -- call analytical criteria
24586    --
24587    
24588    --
24589    -- call description
24590    --
24591    
24592 xla_ae_lines_pkg.SetLineDescription(
24593    p_ae_header_id => l_ae_header_id
24594   ,p_description  => Description_14 (
24595      p_application_id         => p_application_id
24596    , p_ae_header_id           => l_ae_header_id 
24597 , p_source_10 => p_source_10
24598 , p_source_11 => p_source_11
24599 , p_source_12 => p_source_12
24600    )
24601 );
24602 
24603 
24604    --
24605    -- call ADRs
24606    -- Bug 4922099
24607    --
24608    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24609         (NVL(l_actual_upg_option, 'N') = 'O') OR
24610         (NVL(l_enc_upg_option, 'N') = 'O')
24611       )
24612    THEN
24613    NULL;
24614    --
24615    --
24616    
24617   l_ccid := AcctDerRule_26(
24618            p_application_id           => p_application_id
24619          , p_ae_header_id             => l_ae_header_id 
24620 , p_source_29 => p_source_29
24621          , x_transaction_coa_id       => l_adr_transaction_coa_id
24622          , x_accounting_coa_id        => l_adr_accounting_coa_id
24623          , x_value_type_code          => l_adr_value_type_code
24624          , p_side                     => 'NA'
24625    );
24626 
24627    xla_ae_lines_pkg.set_ccid(
24628     p_code_combination_id          => l_ccid
24629   , p_value_type_code              => l_adr_value_type_code
24630   , p_transaction_coa_id           => l_adr_transaction_coa_id
24631   , p_accounting_coa_id            => l_adr_accounting_coa_id
24632   , p_adr_code                     => 'COLL_DOC_COLL_ENDRSMNT'
24633   , p_adr_type_code                => 'S'
24634   , p_component_type               => l_component_type
24635   , p_component_code               => l_component_code
24636   , p_component_type_code          => l_component_type_code
24637   , p_component_appl_id            => l_component_appl_id
24638   , p_amb_context_code             => l_amb_context_code
24639   , p_side                         => 'NA'
24640   );
24641 
24642 
24643    --
24644    --
24645    END IF;
24646    --
24647    -- Bug 4922099
24648    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
24649           (NVL(l_enc_upg_option, 'N') = 'O')
24650         ) AND
24651         (l_bflow_method_code = 'PRIOR_ENTRY')
24652       )
24653    THEN
24654       IF
24655       --
24656       1 = 2
24657       --
24658       THEN
24659       xla_accounting_err_pkg.build_message
24660                                     (p_appli_s_name            => 'XLA'
24661                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24662                                     ,p_token_1                 => 'LINE_NUMBER'
24663                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
24664                                     ,p_token_2                 => 'LINE_TYPE_NAME'
24665                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
24666                                                                              l_component_type
24667                                                                             ,l_component_code
24668                                                                             ,l_component_type_code
24669                                                                             ,l_component_appl_id
24673                                                                            )
24670                                                                             ,l_amb_context_code
24671                                                                             ,l_entity_code
24672                                                                             ,l_event_class_code
24674                                     ,p_token_3                 => 'OWNER'
24675                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
24676                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
24677                                                                           ,p_lookup_code    => l_component_type_code
24678                                                                          )
24679                                     ,p_token_4                 => 'PRODUCT_NAME'
24680                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
24681                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
24682                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
24683                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
24684                                     ,p_ae_header_id            =>  NULL
24685                                        );
24686 
24687         IF (C_LEVEL_ERROR>= g_log_level) THEN
24688                  trace
24689                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
24690                       ,p_level    => C_LEVEL_ERROR
24691                       ,p_module   => l_log_module);
24692         END IF;
24693       END IF;
24694    END IF;
24695    --
24696    --
24697    ------------------------------------------------------------------------------------------------
24698    -- 4219869 Business Flow
24699    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
24700    -- Prior Entry.  Currently, the following code is always generated.
24701    ------------------------------------------------------------------------------------------------
24702    XLA_AE_LINES_PKG.ValidateCurrentLine;
24703 
24704    ------------------------------------------------------------------------------------
24705    -- 4219869 Business Flow
24706    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
24707    ------------------------------------------------------------------------------------
24708    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24709 
24710    ----------------------------------------------------------------------------------
24711    -- 4219869 Business Flow
24712    -- Update journal entry status -- Need to generate this within IF <condition>
24713    ----------------------------------------------------------------------------------
24714    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24715          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
24716          ,p_balance_type_code => l_balance_type_code
24717          );
24718 
24719    -------------------------------------------------------------------------------------------
24720    -- 4262811 - Generate the Accrual Reversal lines
24721    -------------------------------------------------------------------------------------------
24722    BEGIN
24723       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
24724                               (g_array_event(p_event_id).array_value_num('header_index'));
24725       IF l_acc_rev_flag IS NULL THEN
24726          l_acc_rev_flag := 'N';
24727       END IF;
24728    EXCEPTION
24729       WHEN OTHERS THEN
24730          l_acc_rev_flag := 'N';
24731    END;
24732    --
24733    IF (l_acc_rev_flag = 'Y') THEN
24734 
24735        -- 4645092  ------------------------------------------------------------------------------
24736        -- To allow MPA report to determine if it should generate report process
24737        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
24738        ------------------------------------------------------------------------------------------
24739 
24740        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
24741        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
24742    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
24743    -- call ADRs
24744    -- Bug 4922099
24745    --
24746    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
24747         (NVL(l_actual_upg_option, 'N') = 'O') OR
24748         (NVL(l_enc_upg_option, 'N') = 'O')
24749       )
24750    THEN
24751    NULL;
24752    --
24753    --
24754    
24755   l_ccid := AcctDerRule_26(
24756            p_application_id           => p_application_id
24757          , p_ae_header_id             => l_ae_header_id 
24758 , p_source_29 => p_source_29
24759          , x_transaction_coa_id       => l_adr_transaction_coa_id
24760          , x_accounting_coa_id        => l_adr_accounting_coa_id
24761          , x_value_type_code          => l_adr_value_type_code
24762          , p_side                     => 'NA'
24763    );
24764 
24765    xla_ae_lines_pkg.set_ccid(
24766     p_code_combination_id          => l_ccid
24767   , p_value_type_code              => l_adr_value_type_code
24768   , p_transaction_coa_id           => l_adr_transaction_coa_id
24772   , p_component_type               => l_component_type
24769   , p_accounting_coa_id            => l_adr_accounting_coa_id
24770   , p_adr_code                     => 'COLL_DOC_COLL_ENDRSMNT'
24771   , p_adr_type_code                => 'S'
24773   , p_component_code               => l_component_code
24774   , p_component_type_code          => l_component_type_code
24775   , p_component_appl_id            => l_component_appl_id
24776   , p_amb_context_code             => l_amb_context_code
24777   , p_side                         => 'NA'
24778   );
24779 
24780 
24781    --
24782    --
24783    END IF;
24784 
24785        --
24786        -- Update the line information that should be overwritten
24787        --
24788        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
24789                                          p_header_num   => 1);
24790        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
24791 
24792        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
24793 
24794        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
24795           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
24796        END IF;
24797 
24798       --
24799       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
24800       --
24801       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
24802           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
24803       ELSE
24804           ---------------------------------------------------------------------------------------------------
24805           -- 4262811a Switch Sign
24806           ---------------------------------------------------------------------------------------------------
24807           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
24808           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24809                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24810           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
24811                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24812           -- 5132302
24813           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
24814                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
24815 
24816       END IF;
24817 
24818       -- 4955764
24819       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
24820       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
24821 
24822 
24823       XLA_AE_LINES_PKG.ValidateCurrentLine;
24824       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
24825 
24826       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
24827                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
24828                ,p_balance_type_code => l_balance_type_code);
24829 
24830    END IF;
24831 
24832    -----------------------------------------------------------------------------------------
24833    -- 4262811 Multiperiod Accounting
24834    -----------------------------------------------------------------------------------------
24835      -- No MPA option is assigned.
24836 
24837 
24838 END IF;
24839 END IF;
24840 --
24841 
24842 --
24843 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24844    trace
24845       (p_msg      => 'END of AcctLineType_71'
24846       ,p_level    => C_LEVEL_PROCEDURE
24847       ,p_module   => l_log_module);
24848 END IF;
24849 --
24850 EXCEPTION
24851   WHEN xla_exceptions_pkg.application_exception THEN
24852       RAISE;
24853   WHEN OTHERS THEN
24854        xla_exceptions_pkg.raise_message
24855            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_71');
24856 END AcctLineType_71;
24857 --
24858 
24859 ---------------------------------------
24860 --
24861 -- PRIVATE FUNCTION
24862 --         AcctLineType_72
24863 --
24864 ---------------------------------------
24865 PROCEDURE AcctLineType_72 (
24866   p_application_id        IN NUMBER
24867  ,p_event_id              IN NUMBER
24868  ,p_calculate_acctd_flag  IN VARCHAR2
24869  ,p_calculate_g_l_flag    IN VARCHAR2
24870  ,p_actual_flag           IN OUT VARCHAR2
24871  ,p_balance_type_code     OUT VARCHAR2
24872  ,p_gain_or_loss_ref      OUT VARCHAR2
24873  
24874 --Bordero Type
24875  , p_source_13            IN VARCHAR2
24876  , p_source_13_meaning    IN VARCHAR2
24877 --SLA Party Type
24878  , p_source_51            IN VARCHAR2
24879 --Collection Document Distribution Line Type
24880  , p_source_77            IN VARCHAR2
24881  , p_source_77_meaning    IN VARCHAR2
24882 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
24883  , p_source_78            IN VARCHAR2
24884  , p_source_78_meaning    IN VARCHAR2
24885 --Applied To Distribution Link Type
24886  , p_source_80            IN VARCHAR2
24887 --Applied To Distribution Identifier
24888  , p_source_82            IN NUMBER
24889 --Applied To Distribution Document Identifier
24893 --Collection Document Distribution Identifier
24890  , p_source_83            IN NUMBER
24891 --Applied To Distribution Occurrence Identifier
24892  , p_source_84            IN NUMBER
24894  , p_source_85            IN NUMBER
24895 --Collection Document Distribution Link Type
24896  , p_source_86            IN VARCHAR2
24897 --Collection Document Distribution Entered Amount
24898  , p_source_87            IN NUMBER
24899 --Collection Document Distribution Entered Currency Code
24900  , p_source_88            IN VARCHAR2
24901 --Collection Document Distribution Accounted Amount
24902  , p_source_92            IN NUMBER
24903 --Collection Document Occurrence Identifier
24904  , p_source_93            IN NUMBER
24905 --Reversed Collection Document Distribution Identifier
24906  , p_source_94            IN NUMBER
24907 --Reversed Collection Document Distribution Link Type
24908  , p_source_95            IN VARCHAR2
24909 --Collection Document Occurrence Type
24910  , p_source_96            IN VARCHAR2
24911  , p_source_96_meaning    IN VARCHAR2
24912 )
24913 IS
24914 
24915 l_component_type              VARCHAR2(80);
24916 l_component_code              VARCHAR2(30);
24917 l_component_type_code         VARCHAR2(1);
24918 l_component_appl_id           INTEGER;
24919 l_amb_context_code            VARCHAR2(30);
24920 l_entity_code                 VARCHAR2(30);
24921 l_event_class_code            VARCHAR2(30);
24922 l_ae_header_id                NUMBER;
24923 l_event_type_code             VARCHAR2(30);
24924 l_line_definition_code        VARCHAR2(30);
24925 l_line_definition_owner_code  VARCHAR2(1);
24926 --
24927 -- adr variables
24928 l_segment                     VARCHAR2(30);
24929 l_ccid                        NUMBER;
24930 l_adr_transaction_coa_id      NUMBER;
24931 l_adr_accounting_coa_id       NUMBER;
24932 l_adr_flexfield_segment_code  VARCHAR2(30);
24933 l_adr_flex_value_set_id       NUMBER;
24934 l_adr_value_type_code         VARCHAR2(30);
24935 l_adr_value_combination_id    NUMBER;
24936 l_adr_value_segment_code      VARCHAR2(30);
24937 
24938 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
24939 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
24940 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
24941 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
24942 
24943 -- 4262811 Variables ------------------------------------------------------------------------------------------
24944 l_entered_amt_idx             NUMBER;
24945 l_accted_amt_idx              NUMBER;
24946 l_acc_rev_flag                VARCHAR2(1);
24947 l_accrual_line_num            NUMBER;
24948 l_tmp_amt                     NUMBER;
24949 l_acc_rev_natural_side_code   VARCHAR2(1);
24950 
24951 l_num_entries                 NUMBER;
24952 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
24953 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
24954 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
24955 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
24956 l_recog_line_1                NUMBER;
24957 l_recog_line_2                NUMBER;
24958 
24959 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
24960 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
24961 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
24962 
24963 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
24964 
24965 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
24966 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
24967 
24968 ---------------------------------------------------------------------------------------------------------------
24969 
24970 
24971 --
24972 -- bulk performance
24973 --
24974 l_balance_type_code           VARCHAR2(1);
24975 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
24976 l_log_module                  VARCHAR2(240);
24977 
24978 --
24979 -- Upgrade strategy
24980 --
24981 l_actual_upg_option           VARCHAR2(1);
24982 l_enc_upg_option           VARCHAR2(1);
24983 
24984 --
24985 BEGIN
24986 --
24987 IF g_log_enabled THEN
24988       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_72';
24989 END IF;
24990 --
24991 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
24992 
24993       trace
24994          (p_msg      => 'BEGIN of AcctLineType_72'
24995          ,p_level    => C_LEVEL_PROCEDURE
24996          ,p_module   => l_log_module);
24997 
24998 END IF;
24999 --
25000 l_component_type             := 'AMB_JLT';
25001 l_component_code             := 'COLL_DOC_COLL_ENDRSMNT_DR';
25002 l_component_type_code        := 'S';
25003 l_component_appl_id          :=  222;
25004 l_amb_context_code           := 'DEFAULT';
25005 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
25006 l_event_class_code           := 'COLLECTION_OCC_DOCUMENT';
25007 l_event_type_code            := 'COLLECTION_OCC_DOCUMENT_ALL';
25008 l_line_definition_owner_code := 'S';
25009 l_line_definition_code       := 'JLBR_AR_BANK_COLL_DOC_ACCRUAL';
25010 --
25011 l_balance_type_code          := 'A';
25012 l_segment                     := NULL;
25013 l_ccid                        := NULL;
25014 l_adr_transaction_coa_id      := NULL;
25015 l_adr_accounting_coa_id       := NULL;
25016 l_adr_flexfield_segment_code  := NULL;
25017 l_adr_flex_value_set_id       := NULL;
25021 
25018 l_adr_value_type_code         := NULL;
25019 l_adr_value_combination_id    := NULL;
25020 l_adr_value_segment_code      := NULL;
25022 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
25023 l_bflow_class_code           := 'JLBR_AR_COLLECTION_ENDORSEMENT';    -- 4219869 Business Flow
25024 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
25025 l_budgetary_control_flag     := 'N';
25026 
25027 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25028 l_bflow_applied_to_amt       := NULL; -- 5132302
25029 l_entered_amt_idx            := NULL;          -- 4262811
25030 l_accted_amt_idx             := NULL;          -- 4262811
25031 l_acc_rev_flag               := NULL;          -- 4262811
25032 l_accrual_line_num           := NULL;          -- 4262811
25033 l_tmp_amt                    := NULL;          -- 4262811
25034 --
25035  
25036 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25037     l_balance_type_code <> 'B' THEN
25038 IF NVL(p_source_77,'
25039 ') =  'JLBR_AR_ENDORSEMENT' AND 
25040 NVL(p_source_13,'
25041 ') =  'COLLECTION' AND 
25042 NVL(p_source_96,'
25043 ') =  'RETURN_OCCURRENCE'
25044  THEN 
25045 
25046    --
25047    XLA_AE_LINES_PKG.SetNewLine;
25048 
25049    p_balance_type_code          := l_balance_type_code;
25050    -- set the flag so later we will know whether the gain loss line needs to be created
25051    
25052    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25053      p_actual_flag :='A';
25054    END IF;
25055 
25056    --
25057    -- bulk performance
25058    --
25059    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25060                                       p_header_num   => 0); -- 4262811
25061    --
25062    -- set accounting line options
25063    --
25064    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25065            p_natural_side_code          => 'D'
25066          , p_gain_or_loss_flag          => 'N'
25067          , p_gl_transfer_mode_code      => 'S'
25068          , p_acct_entry_type_code       => 'A'
25069          , p_switch_side_flag           => 'Y'
25070          , p_merge_duplicate_code       => 'A'
25071          );
25072    --
25073    l_acc_rev_natural_side_code := 'C';  -- 4262811
25074    -- 
25075    --
25076    -- set accounting line type info
25077    --
25078    xla_ae_lines_pkg.SetAcctLineType
25079       (p_component_type             => l_component_type
25080       ,p_event_type_code            => l_event_type_code
25081       ,p_line_definition_owner_code => l_line_definition_owner_code
25082       ,p_line_definition_code       => l_line_definition_code
25083       ,p_accounting_line_code       => l_component_code
25084       ,p_accounting_line_type_code  => l_component_type_code
25085       ,p_accounting_line_appl_id    => l_component_appl_id
25086       ,p_amb_context_code           => l_amb_context_code
25087       ,p_entity_code                => l_entity_code
25088       ,p_event_class_code           => l_event_class_code);
25089    --
25090    -- set accounting class
25091    --
25092    xla_ae_lines_pkg.SetAcctClass(
25093            p_accounting_class_code  => 'REMITTANCE'
25094          , p_ae_header_id           => l_ae_header_id
25095          );
25096 
25097    --
25098    -- set rounding class
25099    --
25100    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25101                       'REMITTANCE';
25102 
25103    --
25104    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25105    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25106    --
25107    -- bulk performance
25108    --
25109    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25110 
25111    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25112       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25113 
25114    -- 4955764
25115    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25116       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25117 
25118    -- 4458381 Public Sector Enh
25119    
25120    --
25121    -- set accounting attributes for the line type
25122    --
25123    l_entered_amt_idx := 10;
25124    l_accted_amt_idx  := 12;
25125    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25126    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
25127    l_rec_acct_attrs.array_char_value(1)  := p_source_78;
25128    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
25129    l_rec_acct_attrs.array_num_value(2)  := 
25130 xla_ae_sources_pkg.GetSystemSourceNum(
25131    p_source_code           => 'XLA_EVENT_APPL_ID'
25132  , p_source_type_code      => 'Y'
25133  , p_source_application_id =>  602
25134 );
25135    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
25136    l_rec_acct_attrs.array_char_value(3)  := p_source_80;
25137    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
25138    l_rec_acct_attrs.array_char_value(4)  := 
25139 xla_ae_sources_pkg.GetSystemSourceChar(
25140    p_source_code           => 'XLA_ENTITY_CODE'
25141  , p_source_type_code      => 'Y'
25142  , p_source_application_id =>  602
25146    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
25143 );
25144    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
25145    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_82);
25147    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_83);
25148    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
25149    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_84);
25150    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
25151    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_85);
25152    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
25153    l_rec_acct_attrs.array_char_value(9)  := p_source_86;
25154    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
25155    l_rec_acct_attrs.array_num_value(10)  := p_source_87;
25156    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
25157    l_rec_acct_attrs.array_char_value(11)  := p_source_88;
25158    l_rec_acct_attrs.array_acct_attr_code(12) := 'LEDGER_AMOUNT';
25159    l_rec_acct_attrs.array_num_value(12)  := p_source_92;
25160    l_rec_acct_attrs.array_acct_attr_code(13) := 'PARTY_TYPE';
25161    l_rec_acct_attrs.array_char_value(13)  := p_source_51;
25162    l_rec_acct_attrs.array_acct_attr_code(14) := 'RECON_REF';
25163    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_93);
25164    l_rec_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_ID1';
25165    l_rec_acct_attrs.array_num_value(15)  :=  to_char(p_source_94);
25166    l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_TYPE';
25167    l_rec_acct_attrs.array_char_value(16)  := p_source_95;
25168    l_rec_acct_attrs.array_acct_attr_code(17) := 'TRX_ROUNDING_REF';
25169    l_rec_acct_attrs.array_num_value(17)  :=  to_char(p_source_93);
25170 
25171    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25172    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25173 
25174    ---------------------------------------------------------------------------------------------------------------
25175    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25176    ---------------------------------------------------------------------------------------------------------------
25177    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25178 
25179    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25180    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25181 
25182    IF xla_accounting_cache_pkg.GetValueChar
25183          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25184          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25185    AND l_bflow_method_code = 'PRIOR_ENTRY'
25186 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25187    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25188          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25189        )
25190    THEN
25191          xla_ae_lines_pkg.BflowUpgEntry
25192            (p_business_method_code    => l_bflow_method_code
25193            ,p_business_class_code     => l_bflow_class_code
25194            ,p_balance_type            => l_balance_type_code);
25195    ELSE
25196       NULL;
25197 XLA_AE_LINES_PKG.business_flow_validation(
25198                                 p_business_method_code     => l_bflow_method_code
25199                                ,p_business_class_code      => l_bflow_class_code
25200                                ,p_inherit_description_flag => l_inherit_desc_flag);
25201    END IF;
25202 
25203    --
25204    -- call analytical criteria
25205    --
25206    -- Inherited Analytical Criteria for business flow method of Prior Entry.
25207    --
25208    -- call description
25209    --
25210    -- No description or it is inherited.
25211    --
25212    -- call ADRs
25213    -- Bug 4922099
25214    --
25215    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25216         (NVL(l_actual_upg_option, 'N') = 'O') OR
25217         (NVL(l_enc_upg_option, 'N') = 'O')
25218       )
25219    THEN
25220    NULL;
25221    --
25222    --
25223    
25224    --
25225    --
25226    END IF;
25227    --
25228    -- Bug 4922099
25229    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25230           (NVL(l_enc_upg_option, 'N') = 'O')
25231         ) AND
25232         (l_bflow_method_code = 'PRIOR_ENTRY')
25233       )
25234    THEN
25235       IF
25236       --
25237       1 = 1
25238       --
25239       THEN
25240       xla_accounting_err_pkg.build_message
25241                                     (p_appli_s_name            => 'XLA'
25242                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25243                                     ,p_token_1                 => 'LINE_NUMBER'
25244                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25245                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25246                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25247                                                                              l_component_type
25248                                                                             ,l_component_code
25252                                                                             ,l_entity_code
25249                                                                             ,l_component_type_code
25250                                                                             ,l_component_appl_id
25251                                                                             ,l_amb_context_code
25253                                                                             ,l_event_class_code
25254                                                                            )
25255                                     ,p_token_3                 => 'OWNER'
25256                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25257                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25258                                                                           ,p_lookup_code    => l_component_type_code
25259                                                                          )
25260                                     ,p_token_4                 => 'PRODUCT_NAME'
25261                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25262                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25263                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25264                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25265                                     ,p_ae_header_id            =>  NULL
25266                                        );
25267 
25268         IF (C_LEVEL_ERROR>= g_log_level) THEN
25269                  trace
25270                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25271                       ,p_level    => C_LEVEL_ERROR
25272                       ,p_module   => l_log_module);
25273         END IF;
25274       END IF;
25275    END IF;
25276    --
25277    --
25278    ------------------------------------------------------------------------------------------------
25279    -- 4219869 Business Flow
25280    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25281    -- Prior Entry.  Currently, the following code is always generated.
25282    ------------------------------------------------------------------------------------------------
25283    -- No ValidateCurrentLine for business flow method of Prior Entry
25284 
25285    ------------------------------------------------------------------------------------
25286    -- 4219869 Business Flow
25287    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25288    ------------------------------------------------------------------------------------
25289    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25290 
25291    ----------------------------------------------------------------------------------
25292    -- 4219869 Business Flow
25293    -- Update journal entry status -- Need to generate this within IF <condition>
25294    ----------------------------------------------------------------------------------
25295    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25296          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25297          ,p_balance_type_code => l_balance_type_code
25298          );
25299 
25300    -------------------------------------------------------------------------------------------
25301    -- 4262811 - Generate the Accrual Reversal lines
25302    -------------------------------------------------------------------------------------------
25303    BEGIN
25304       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25305                               (g_array_event(p_event_id).array_value_num('header_index'));
25306       IF l_acc_rev_flag IS NULL THEN
25307          l_acc_rev_flag := 'N';
25308       END IF;
25309    EXCEPTION
25310       WHEN OTHERS THEN
25311          l_acc_rev_flag := 'N';
25312    END;
25313    --
25314    IF (l_acc_rev_flag = 'Y') THEN
25315 
25316        -- 4645092  ------------------------------------------------------------------------------
25317        -- To allow MPA report to determine if it should generate report process
25318        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25319        ------------------------------------------------------------------------------------------
25320 
25321        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25322        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25323    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
25324    -- call ADRs
25325    -- Bug 4922099
25326    --
25327    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25328         (NVL(l_actual_upg_option, 'N') = 'O') OR
25329         (NVL(l_enc_upg_option, 'N') = 'O')
25330       )
25331    THEN
25332    NULL;
25333    --
25334    --
25335    
25336    --
25337    --
25338    END IF;
25339 
25340        --
25341        -- Update the line information that should be overwritten
25342        --
25343        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25344                                          p_header_num   => 1);
25345        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25346 
25347        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25348 
25352 
25349        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25350           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25351        END IF;
25353       --
25354       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25355       --
25356       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25357           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25358       ELSE
25359           ---------------------------------------------------------------------------------------------------
25360           -- 4262811a Switch Sign
25361           ---------------------------------------------------------------------------------------------------
25362           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25363           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25364                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25365           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25366                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25367           -- 5132302
25368           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25369                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25370 
25371       END IF;
25372 
25373       -- 4955764
25374       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25375       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25376 
25377 
25378       XLA_AE_LINES_PKG.ValidateCurrentLine;
25379       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25380 
25381       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25382                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25383                ,p_balance_type_code => l_balance_type_code);
25384 
25385    END IF;
25386 
25387    -----------------------------------------------------------------------------------------
25388    -- 4262811 Multiperiod Accounting
25389    -----------------------------------------------------------------------------------------
25390      -- No MPA option is assigned.
25391 
25392 
25393 END IF;
25394 END IF;
25395 --
25396 
25397 --
25398 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25399    trace
25400       (p_msg      => 'END of AcctLineType_72'
25401       ,p_level    => C_LEVEL_PROCEDURE
25402       ,p_module   => l_log_module);
25403 END IF;
25404 --
25405 EXCEPTION
25406   WHEN xla_exceptions_pkg.application_exception THEN
25407       RAISE;
25408   WHEN OTHERS THEN
25409        xla_exceptions_pkg.raise_message
25410            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_72');
25411 END AcctLineType_72;
25412 --
25413 
25414 ---------------------------------------
25415 --
25416 -- PRIVATE FUNCTION
25417 --         AcctLineType_73
25418 --
25419 ---------------------------------------
25420 PROCEDURE AcctLineType_73 (
25421   p_application_id        IN NUMBER
25422  ,p_event_id              IN NUMBER
25423  ,p_calculate_acctd_flag  IN VARCHAR2
25424  ,p_calculate_g_l_flag    IN VARCHAR2
25425  ,p_actual_flag           IN OUT VARCHAR2
25426  ,p_balance_type_code     OUT VARCHAR2
25427  ,p_gain_or_loss_ref      OUT VARCHAR2
25428  
25429 --Transaction Distribution GL Account
25430  , p_source_38            IN NUMBER
25431 --Bill To Customer Account Identifier
25432  , p_source_49            IN NUMBER
25433 --Bill To Customer Site Use Identifier
25434  , p_source_50            IN NUMBER
25435 --SLA Party Type
25436  , p_source_51            IN VARCHAR2
25437 --Transaction Distribution Account Class
25438  , p_source_55            IN VARCHAR2
25439 --Transaction Distribution Identifier
25440  , p_source_56            IN NUMBER
25441 --Transaction Distribution Type
25442  , p_source_57            IN VARCHAR2
25443 --Transaction Distribution Entered Amount
25444  , p_source_58            IN NUMBER
25445 --Transaction Currency Code
25446  , p_source_59            IN VARCHAR2
25447 --Transaction Exchange Date
25448  , p_source_60            IN DATE
25449 --Transaction Exchange Rate
25450  , p_source_61            IN NUMBER
25451 --Transaction Exchange Rate Type
25452  , p_source_62            IN VARCHAR2
25453 --Transaction Accounting Amount
25454  , p_source_63            IN NUMBER
25455 )
25456 IS
25457 
25458 l_component_type              VARCHAR2(80);
25459 l_component_code              VARCHAR2(30);
25460 l_component_type_code         VARCHAR2(1);
25461 l_component_appl_id           INTEGER;
25462 l_amb_context_code            VARCHAR2(30);
25463 l_entity_code                 VARCHAR2(30);
25464 l_event_class_code            VARCHAR2(30);
25465 l_ae_header_id                NUMBER;
25466 l_event_type_code             VARCHAR2(30);
25467 l_line_definition_code        VARCHAR2(30);
25468 l_line_definition_owner_code  VARCHAR2(1);
25469 --
25470 -- adr variables
25471 l_segment                     VARCHAR2(30);
25472 l_ccid                        NUMBER;
25476 l_adr_flex_value_set_id       NUMBER;
25473 l_adr_transaction_coa_id      NUMBER;
25474 l_adr_accounting_coa_id       NUMBER;
25475 l_adr_flexfield_segment_code  VARCHAR2(30);
25477 l_adr_value_type_code         VARCHAR2(30);
25478 l_adr_value_combination_id    NUMBER;
25479 l_adr_value_segment_code      VARCHAR2(30);
25480 
25481 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
25482 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
25483 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
25484 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
25485 
25486 -- 4262811 Variables ------------------------------------------------------------------------------------------
25487 l_entered_amt_idx             NUMBER;
25488 l_accted_amt_idx              NUMBER;
25489 l_acc_rev_flag                VARCHAR2(1);
25490 l_accrual_line_num            NUMBER;
25491 l_tmp_amt                     NUMBER;
25492 l_acc_rev_natural_side_code   VARCHAR2(1);
25493 
25494 l_num_entries                 NUMBER;
25495 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
25496 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
25497 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
25498 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
25499 l_recog_line_1                NUMBER;
25500 l_recog_line_2                NUMBER;
25501 
25502 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
25503 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
25504 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
25505 
25506 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
25507 
25508 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
25509 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
25510 
25511 ---------------------------------------------------------------------------------------------------------------
25512 
25513 
25514 --
25515 -- bulk performance
25516 --
25517 l_balance_type_code           VARCHAR2(1);
25518 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
25519 l_log_module                  VARCHAR2(240);
25520 
25521 --
25522 -- Upgrade strategy
25523 --
25524 l_actual_upg_option           VARCHAR2(1);
25525 l_enc_upg_option           VARCHAR2(1);
25526 
25527 --
25528 BEGIN
25529 --
25530 IF g_log_enabled THEN
25531       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_73';
25532 END IF;
25533 --
25534 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25535 
25536       trace
25537          (p_msg      => 'BEGIN of AcctLineType_73'
25538          ,p_level    => C_LEVEL_PROCEDURE
25539          ,p_module   => l_log_module);
25540 
25541 END IF;
25542 --
25543 l_component_type             := 'AMB_JLT';
25544 l_component_code             := 'DEP_DEFAULT_REC';
25545 l_component_type_code        := 'S';
25546 l_component_appl_id          :=  222;
25547 l_amb_context_code           := 'DEFAULT';
25548 l_entity_code                := 'TRANSACTIONS';
25549 l_event_class_code           := 'DEPOSIT';
25550 l_event_type_code            := 'DEPOSIT_ALL';
25551 l_line_definition_owner_code := 'S';
25552 l_line_definition_code       := 'AR_DEP_DEFAULT_ACCRUAL';
25553 --
25554 l_balance_type_code          := 'A';
25555 l_segment                     := NULL;
25556 l_ccid                        := NULL;
25557 l_adr_transaction_coa_id      := NULL;
25558 l_adr_accounting_coa_id       := NULL;
25559 l_adr_flexfield_segment_code  := NULL;
25560 l_adr_flex_value_set_id       := NULL;
25561 l_adr_value_type_code         := NULL;
25562 l_adr_value_combination_id    := NULL;
25563 l_adr_value_segment_code      := NULL;
25564 
25565 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
25566 l_bflow_class_code           := '';    -- 4219869 Business Flow
25567 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
25568 l_budgetary_control_flag     := 'N';
25569 
25570 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
25571 l_bflow_applied_to_amt       := NULL; -- 5132302
25572 l_entered_amt_idx            := NULL;          -- 4262811
25573 l_accted_amt_idx             := NULL;          -- 4262811
25574 l_acc_rev_flag               := NULL;          -- 4262811
25575 l_accrual_line_num           := NULL;          -- 4262811
25576 l_tmp_amt                    := NULL;          -- 4262811
25577 --
25578  
25579 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
25580     l_balance_type_code <> 'B' THEN
25581 IF NVL(p_source_55,'
25582 ') =  'REC'
25583  THEN 
25584 
25585    --
25586    XLA_AE_LINES_PKG.SetNewLine;
25587 
25588    p_balance_type_code          := l_balance_type_code;
25589    -- set the flag so later we will know whether the gain loss line needs to be created
25590    
25591    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
25592      p_actual_flag :='A';
25593    END IF;
25594 
25595    --
25596    -- bulk performance
25597    --
25598    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
25599                                       p_header_num   => 0); -- 4262811
25600    --
25601    -- set accounting line options
25602    --
25603    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
25607          , p_acct_entry_type_code       => 'A'
25604            p_natural_side_code          => 'D'
25605          , p_gain_or_loss_flag          => 'N'
25606          , p_gl_transfer_mode_code      => 'S'
25608          , p_switch_side_flag           => 'Y'
25609          , p_merge_duplicate_code       => 'A'
25610          );
25611    --
25612    l_acc_rev_natural_side_code := 'C';  -- 4262811
25613    -- 
25614    --
25615    -- set accounting line type info
25616    --
25617    xla_ae_lines_pkg.SetAcctLineType
25618       (p_component_type             => l_component_type
25619       ,p_event_type_code            => l_event_type_code
25620       ,p_line_definition_owner_code => l_line_definition_owner_code
25621       ,p_line_definition_code       => l_line_definition_code
25622       ,p_accounting_line_code       => l_component_code
25623       ,p_accounting_line_type_code  => l_component_type_code
25624       ,p_accounting_line_appl_id    => l_component_appl_id
25625       ,p_amb_context_code           => l_amb_context_code
25626       ,p_entity_code                => l_entity_code
25627       ,p_event_class_code           => l_event_class_code);
25628    --
25629    -- set accounting class
25630    --
25631    xla_ae_lines_pkg.SetAcctClass(
25632            p_accounting_class_code  => 'RECEIVABLE'
25633          , p_ae_header_id           => l_ae_header_id
25634          );
25635 
25636    --
25637    -- set rounding class
25638    --
25639    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
25640                       'RECEIVABLE';
25641 
25642    --
25643    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
25644    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
25645    --
25646    -- bulk performance
25647    --
25648    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
25649 
25650    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
25651       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
25652 
25653    -- 4955764
25654    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25655       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
25656 
25657    -- 4458381 Public Sector Enh
25658    
25659    --
25660    -- set accounting attributes for the line type
25661    --
25662    l_entered_amt_idx := 3;
25663    l_accted_amt_idx  := 8;
25664    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
25665    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
25666    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
25667    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
25668    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
25669    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
25670    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
25671    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
25672    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
25673    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
25674    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
25675    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
25676    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
25677    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
25678    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
25679    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
25680    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
25681    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
25682    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
25683    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
25684    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
25685    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
25686    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
25687 
25688    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
25689    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
25690 
25691    ---------------------------------------------------------------------------------------------------------------
25692    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
25693    ---------------------------------------------------------------------------------------------------------------
25694    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
25695 
25696    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25697    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
25698 
25699    IF xla_accounting_cache_pkg.GetValueChar
25700          (p_source_code         => 'LEDGER_CATEGORY_CODE'
25701          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
25702    AND l_bflow_method_code = 'PRIOR_ENTRY'
25703 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
25704    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
25705          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
25706        )
25707    THEN
25708          xla_ae_lines_pkg.BflowUpgEntry
25709            (p_business_method_code    => l_bflow_method_code
25713       NULL;
25710            ,p_business_class_code     => l_bflow_class_code
25711            ,p_balance_type            => l_balance_type_code);
25712    ELSE
25714 -- No business flow processing for business flow method of NONE.
25715    END IF;
25716 
25717    --
25718    -- call analytical criteria
25719    --
25720    
25721    --
25722    -- call description
25723    --
25724    -- No description or it is inherited.
25725    --
25726    -- call ADRs
25727    -- Bug 4922099
25728    --
25729    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25730         (NVL(l_actual_upg_option, 'N') = 'O') OR
25731         (NVL(l_enc_upg_option, 'N') = 'O')
25732       )
25733    THEN
25734    NULL;
25735    --
25736    --
25737    
25738   l_ccid := AcctDerRule_36(
25739            p_application_id           => p_application_id
25740          , p_ae_header_id             => l_ae_header_id 
25741 , p_source_38 => p_source_38
25742          , x_transaction_coa_id       => l_adr_transaction_coa_id
25743          , x_accounting_coa_id        => l_adr_accounting_coa_id
25744          , x_value_type_code          => l_adr_value_type_code
25745          , p_side                     => 'NA'
25746    );
25747 
25748    xla_ae_lines_pkg.set_ccid(
25749     p_code_combination_id          => l_ccid
25750   , p_value_type_code              => l_adr_value_type_code
25751   , p_transaction_coa_id           => l_adr_transaction_coa_id
25752   , p_accounting_coa_id            => l_adr_accounting_coa_id
25753   , p_adr_code                     => 'TRX_DIST_CCID'
25754   , p_adr_type_code                => 'S'
25755   , p_component_type               => l_component_type
25756   , p_component_code               => l_component_code
25757   , p_component_type_code          => l_component_type_code
25758   , p_component_appl_id            => l_component_appl_id
25759   , p_amb_context_code             => l_amb_context_code
25760   , p_side                         => 'NA'
25761   );
25762 
25763 
25764    --
25765    --
25766    END IF;
25767    --
25768    -- Bug 4922099
25769    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
25770           (NVL(l_enc_upg_option, 'N') = 'O')
25771         ) AND
25772         (l_bflow_method_code = 'PRIOR_ENTRY')
25773       )
25774    THEN
25775       IF
25776       --
25777       1 = 2
25778       --
25779       THEN
25780       xla_accounting_err_pkg.build_message
25781                                     (p_appli_s_name            => 'XLA'
25782                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25783                                     ,p_token_1                 => 'LINE_NUMBER'
25784                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
25785                                     ,p_token_2                 => 'LINE_TYPE_NAME'
25786                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
25787                                                                              l_component_type
25788                                                                             ,l_component_code
25789                                                                             ,l_component_type_code
25790                                                                             ,l_component_appl_id
25791                                                                             ,l_amb_context_code
25792                                                                             ,l_entity_code
25793                                                                             ,l_event_class_code
25794                                                                            )
25795                                     ,p_token_3                 => 'OWNER'
25796                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
25797                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
25798                                                                           ,p_lookup_code    => l_component_type_code
25799                                                                          )
25800                                     ,p_token_4                 => 'PRODUCT_NAME'
25801                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
25802                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
25803                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
25804                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
25805                                     ,p_ae_header_id            =>  NULL
25806                                        );
25807 
25808         IF (C_LEVEL_ERROR>= g_log_level) THEN
25809                  trace
25810                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
25811                       ,p_level    => C_LEVEL_ERROR
25812                       ,p_module   => l_log_module);
25813         END IF;
25814       END IF;
25815    END IF;
25816    --
25817    --
25818    ------------------------------------------------------------------------------------------------
25819    -- 4219869 Business Flow
25820    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
25824 
25821    -- Prior Entry.  Currently, the following code is always generated.
25822    ------------------------------------------------------------------------------------------------
25823    XLA_AE_LINES_PKG.ValidateCurrentLine;
25825    ------------------------------------------------------------------------------------
25826    -- 4219869 Business Flow
25827    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
25828    ------------------------------------------------------------------------------------
25829    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25830 
25831    ----------------------------------------------------------------------------------
25832    -- 4219869 Business Flow
25833    -- Update journal entry status -- Need to generate this within IF <condition>
25834    ----------------------------------------------------------------------------------
25835    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25836          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
25837          ,p_balance_type_code => l_balance_type_code
25838          );
25839 
25840    -------------------------------------------------------------------------------------------
25841    -- 4262811 - Generate the Accrual Reversal lines
25842    -------------------------------------------------------------------------------------------
25843    BEGIN
25844       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
25845                               (g_array_event(p_event_id).array_value_num('header_index'));
25846       IF l_acc_rev_flag IS NULL THEN
25847          l_acc_rev_flag := 'N';
25848       END IF;
25849    EXCEPTION
25850       WHEN OTHERS THEN
25851          l_acc_rev_flag := 'N';
25852    END;
25853    --
25854    IF (l_acc_rev_flag = 'Y') THEN
25855 
25856        -- 4645092  ------------------------------------------------------------------------------
25857        -- To allow MPA report to determine if it should generate report process
25858        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
25859        ------------------------------------------------------------------------------------------
25860 
25861        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
25862        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
25863    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
25864    -- call ADRs
25865    -- Bug 4922099
25866    --
25867    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
25868         (NVL(l_actual_upg_option, 'N') = 'O') OR
25869         (NVL(l_enc_upg_option, 'N') = 'O')
25870       )
25871    THEN
25872    NULL;
25873    --
25874    --
25875    
25876   l_ccid := AcctDerRule_36(
25877            p_application_id           => p_application_id
25878          , p_ae_header_id             => l_ae_header_id 
25879 , p_source_38 => p_source_38
25880          , x_transaction_coa_id       => l_adr_transaction_coa_id
25881          , x_accounting_coa_id        => l_adr_accounting_coa_id
25882          , x_value_type_code          => l_adr_value_type_code
25883          , p_side                     => 'NA'
25884    );
25885 
25886    xla_ae_lines_pkg.set_ccid(
25887     p_code_combination_id          => l_ccid
25888   , p_value_type_code              => l_adr_value_type_code
25889   , p_transaction_coa_id           => l_adr_transaction_coa_id
25890   , p_accounting_coa_id            => l_adr_accounting_coa_id
25891   , p_adr_code                     => 'TRX_DIST_CCID'
25892   , p_adr_type_code                => 'S'
25893   , p_component_type               => l_component_type
25894   , p_component_code               => l_component_code
25895   , p_component_type_code          => l_component_type_code
25896   , p_component_appl_id            => l_component_appl_id
25897   , p_amb_context_code             => l_amb_context_code
25898   , p_side                         => 'NA'
25899   );
25900 
25901 
25902    --
25903    --
25904    END IF;
25905 
25906        --
25907        -- Update the line information that should be overwritten
25908        --
25909        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
25910                                          p_header_num   => 1);
25911        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
25912 
25913        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
25914 
25915        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
25916           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
25917        END IF;
25918 
25919       --
25920       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
25921       --
25922       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
25923           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
25924       ELSE
25925           ---------------------------------------------------------------------------------------------------
25926           -- 4262811a Switch Sign
25927           ---------------------------------------------------------------------------------------------------
25928           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
25932                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25929           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25930                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25931           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
25933           -- 5132302
25934           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
25935                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
25936 
25937       END IF;
25938 
25939       -- 4955764
25940       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
25941       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
25942 
25943 
25944       XLA_AE_LINES_PKG.ValidateCurrentLine;
25945       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
25946 
25947       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
25948                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
25949                ,p_balance_type_code => l_balance_type_code);
25950 
25951    END IF;
25952 
25953    -----------------------------------------------------------------------------------------
25954    -- 4262811 Multiperiod Accounting
25955    -----------------------------------------------------------------------------------------
25956      -- No MPA option is assigned.
25957 
25958 
25959 END IF;
25960 END IF;
25961 --
25962 
25963 --
25964 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
25965    trace
25966       (p_msg      => 'END of AcctLineType_73'
25967       ,p_level    => C_LEVEL_PROCEDURE
25968       ,p_module   => l_log_module);
25969 END IF;
25970 --
25971 EXCEPTION
25972   WHEN xla_exceptions_pkg.application_exception THEN
25973       RAISE;
25974   WHEN OTHERS THEN
25975        xla_exceptions_pkg.raise_message
25976            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_73');
25977 END AcctLineType_73;
25978 --
25979 
25980 ---------------------------------------
25981 --
25982 -- PRIVATE FUNCTION
25983 --         AcctLineType_74
25984 --
25985 ---------------------------------------
25986 PROCEDURE AcctLineType_74 (
25987   p_application_id        IN NUMBER
25988  ,p_event_id              IN NUMBER
25989  ,p_calculate_acctd_flag  IN VARCHAR2
25990  ,p_calculate_g_l_flag    IN VARCHAR2
25991  ,p_actual_flag           IN OUT VARCHAR2
25992  ,p_balance_type_code     OUT VARCHAR2
25993  ,p_gain_or_loss_ref      OUT VARCHAR2
25994  
25995 --Transaction Distribution GL Account
25996  , p_source_38            IN NUMBER
25997 --Bill To Customer Account Identifier
25998  , p_source_49            IN NUMBER
25999 --Bill To Customer Site Use Identifier
26000  , p_source_50            IN NUMBER
26001 --SLA Party Type
26002  , p_source_51            IN VARCHAR2
26003 --Transaction Distribution Account Class
26004  , p_source_55            IN VARCHAR2
26005 --Transaction Distribution Identifier
26006  , p_source_56            IN NUMBER
26007 --Transaction Distribution Type
26008  , p_source_57            IN VARCHAR2
26009 --Transaction Distribution Entered Amount
26010  , p_source_58            IN NUMBER
26011 --Transaction Currency Code
26012  , p_source_59            IN VARCHAR2
26013 --Transaction Exchange Date
26014  , p_source_60            IN DATE
26015 --Transaction Exchange Rate
26016  , p_source_61            IN NUMBER
26017 --Transaction Exchange Rate Type
26018  , p_source_62            IN VARCHAR2
26019 --Transaction Accounting Amount
26020  , p_source_63            IN NUMBER
26021 )
26022 IS
26023 
26024 l_component_type              VARCHAR2(80);
26025 l_component_code              VARCHAR2(30);
26026 l_component_type_code         VARCHAR2(1);
26027 l_component_appl_id           INTEGER;
26028 l_amb_context_code            VARCHAR2(30);
26029 l_entity_code                 VARCHAR2(30);
26030 l_event_class_code            VARCHAR2(30);
26031 l_ae_header_id                NUMBER;
26032 l_event_type_code             VARCHAR2(30);
26033 l_line_definition_code        VARCHAR2(30);
26034 l_line_definition_owner_code  VARCHAR2(1);
26035 --
26036 -- adr variables
26037 l_segment                     VARCHAR2(30);
26038 l_ccid                        NUMBER;
26039 l_adr_transaction_coa_id      NUMBER;
26040 l_adr_accounting_coa_id       NUMBER;
26041 l_adr_flexfield_segment_code  VARCHAR2(30);
26042 l_adr_flex_value_set_id       NUMBER;
26043 l_adr_value_type_code         VARCHAR2(30);
26044 l_adr_value_combination_id    NUMBER;
26045 l_adr_value_segment_code      VARCHAR2(30);
26046 
26047 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26048 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26049 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26050 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26051 
26052 -- 4262811 Variables ------------------------------------------------------------------------------------------
26053 l_entered_amt_idx             NUMBER;
26054 l_accted_amt_idx              NUMBER;
26055 l_acc_rev_flag                VARCHAR2(1);
26056 l_accrual_line_num            NUMBER;
26057 l_tmp_amt                     NUMBER;
26058 l_acc_rev_natural_side_code   VARCHAR2(1);
26059 
26063 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26060 l_num_entries                 NUMBER;
26061 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26062 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26064 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26065 l_recog_line_1                NUMBER;
26066 l_recog_line_2                NUMBER;
26067 
26068 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26069 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26070 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26071 
26072 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26073 
26074 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26075 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26076 
26077 ---------------------------------------------------------------------------------------------------------------
26078 
26079 
26080 --
26081 -- bulk performance
26082 --
26083 l_balance_type_code           VARCHAR2(1);
26084 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26085 l_log_module                  VARCHAR2(240);
26086 
26087 --
26088 -- Upgrade strategy
26089 --
26090 l_actual_upg_option           VARCHAR2(1);
26091 l_enc_upg_option           VARCHAR2(1);
26092 
26093 --
26094 BEGIN
26095 --
26096 IF g_log_enabled THEN
26097       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_74';
26098 END IF;
26099 --
26100 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26101 
26102       trace
26103          (p_msg      => 'BEGIN of AcctLineType_74'
26104          ,p_level    => C_LEVEL_PROCEDURE
26105          ,p_module   => l_log_module);
26106 
26107 END IF;
26108 --
26109 l_component_type             := 'AMB_JLT';
26110 l_component_code             := 'DEP_OFFSET';
26111 l_component_type_code        := 'S';
26112 l_component_appl_id          :=  222;
26113 l_amb_context_code           := 'DEFAULT';
26114 l_entity_code                := 'TRANSACTIONS';
26115 l_event_class_code           := 'DEPOSIT';
26116 l_event_type_code            := 'DEPOSIT_ALL';
26117 l_line_definition_owner_code := 'S';
26118 l_line_definition_code       := 'AR_DEP_DEFAULT_ACCRUAL';
26119 --
26120 l_balance_type_code          := 'A';
26121 l_segment                     := NULL;
26122 l_ccid                        := NULL;
26123 l_adr_transaction_coa_id      := NULL;
26124 l_adr_accounting_coa_id       := NULL;
26125 l_adr_flexfield_segment_code  := NULL;
26126 l_adr_flex_value_set_id       := NULL;
26127 l_adr_value_type_code         := NULL;
26128 l_adr_value_combination_id    := NULL;
26129 l_adr_value_segment_code      := NULL;
26130 
26131 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26132 l_bflow_class_code           := '';    -- 4219869 Business Flow
26133 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26134 l_budgetary_control_flag     := 'N';
26135 
26136 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26137 l_bflow_applied_to_amt       := NULL; -- 5132302
26138 l_entered_amt_idx            := NULL;          -- 4262811
26139 l_accted_amt_idx             := NULL;          -- 4262811
26140 l_acc_rev_flag               := NULL;          -- 4262811
26141 l_accrual_line_num           := NULL;          -- 4262811
26142 l_tmp_amt                    := NULL;          -- 4262811
26143 --
26144  
26145 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26146     l_balance_type_code <> 'B' THEN
26147 IF NVL(p_source_55,'
26148 ') =  'REV'
26149  THEN 
26150 
26151    --
26152    XLA_AE_LINES_PKG.SetNewLine;
26153 
26154    p_balance_type_code          := l_balance_type_code;
26155    -- set the flag so later we will know whether the gain loss line needs to be created
26156    
26157    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26158      p_actual_flag :='A';
26159    END IF;
26160 
26161    --
26162    -- bulk performance
26163    --
26164    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26165                                       p_header_num   => 0); -- 4262811
26166    --
26167    -- set accounting line options
26168    --
26169    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26170            p_natural_side_code          => 'C'
26171          , p_gain_or_loss_flag          => 'N'
26172          , p_gl_transfer_mode_code      => 'S'
26173          , p_acct_entry_type_code       => 'A'
26174          , p_switch_side_flag           => 'Y'
26175          , p_merge_duplicate_code       => 'A'
26176          );
26177    --
26178    l_acc_rev_natural_side_code := 'D';  -- 4262811
26179    -- 
26180    --
26181    -- set accounting line type info
26182    --
26183    xla_ae_lines_pkg.SetAcctLineType
26184       (p_component_type             => l_component_type
26185       ,p_event_type_code            => l_event_type_code
26186       ,p_line_definition_owner_code => l_line_definition_owner_code
26187       ,p_line_definition_code       => l_line_definition_code
26188       ,p_accounting_line_code       => l_component_code
26189       ,p_accounting_line_type_code  => l_component_type_code
26190       ,p_accounting_line_appl_id    => l_component_appl_id
26194    --
26191       ,p_amb_context_code           => l_amb_context_code
26192       ,p_entity_code                => l_entity_code
26193       ,p_event_class_code           => l_event_class_code);
26195    -- set accounting class
26196    --
26197    xla_ae_lines_pkg.SetAcctClass(
26198            p_accounting_class_code  => 'ACCRUAL'
26199          , p_ae_header_id           => l_ae_header_id
26200          );
26201 
26202    --
26203    -- set rounding class
26204    --
26205    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26206                       'RECEIVABLE';
26207 
26208    --
26209    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26210    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26211    --
26212    -- bulk performance
26213    --
26214    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26215 
26216    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26217       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26218 
26219    -- 4955764
26220    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26221       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26222 
26223    -- 4458381 Public Sector Enh
26224    
26225    --
26226    -- set accounting attributes for the line type
26227    --
26228    l_entered_amt_idx := 3;
26229    l_accted_amt_idx  := 8;
26230    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26231    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26232    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
26233    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26234    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
26235    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26236    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
26237    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26238    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
26239    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26240    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
26241    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26242    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
26243    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26244    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
26245    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26246    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
26247    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
26248    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
26249    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
26250    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
26251    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
26252    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
26253 
26254    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26255    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26256 
26257    ---------------------------------------------------------------------------------------------------------------
26258    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26259    ---------------------------------------------------------------------------------------------------------------
26260    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26261 
26262    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26263    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26264 
26265    IF xla_accounting_cache_pkg.GetValueChar
26266          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26267          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26268    AND l_bflow_method_code = 'PRIOR_ENTRY'
26269 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26270    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26271          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26272        )
26273    THEN
26274          xla_ae_lines_pkg.BflowUpgEntry
26275            (p_business_method_code    => l_bflow_method_code
26276            ,p_business_class_code     => l_bflow_class_code
26277            ,p_balance_type            => l_balance_type_code);
26278    ELSE
26279       NULL;
26280 -- No business flow processing for business flow method of NONE.
26281    END IF;
26282 
26283    --
26284    -- call analytical criteria
26285    --
26286    
26287    --
26288    -- call description
26289    --
26290    -- No description or it is inherited.
26291    --
26292    -- call ADRs
26293    -- Bug 4922099
26294    --
26295    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26296         (NVL(l_actual_upg_option, 'N') = 'O') OR
26297         (NVL(l_enc_upg_option, 'N') = 'O')
26298       )
26299    THEN
26300    NULL;
26301    --
26302    --
26303    
26304   l_ccid := AcctDerRule_36(
26305            p_application_id           => p_application_id
26306          , p_ae_header_id             => l_ae_header_id 
26310          , x_value_type_code          => l_adr_value_type_code
26307 , p_source_38 => p_source_38
26308          , x_transaction_coa_id       => l_adr_transaction_coa_id
26309          , x_accounting_coa_id        => l_adr_accounting_coa_id
26311          , p_side                     => 'NA'
26312    );
26313 
26314    xla_ae_lines_pkg.set_ccid(
26315     p_code_combination_id          => l_ccid
26316   , p_value_type_code              => l_adr_value_type_code
26317   , p_transaction_coa_id           => l_adr_transaction_coa_id
26318   , p_accounting_coa_id            => l_adr_accounting_coa_id
26319   , p_adr_code                     => 'TRX_DIST_CCID'
26320   , p_adr_type_code                => 'S'
26321   , p_component_type               => l_component_type
26322   , p_component_code               => l_component_code
26323   , p_component_type_code          => l_component_type_code
26324   , p_component_appl_id            => l_component_appl_id
26325   , p_amb_context_code             => l_amb_context_code
26326   , p_side                         => 'NA'
26327   );
26328 
26329 
26330    --
26331    --
26332    END IF;
26333    --
26334    -- Bug 4922099
26335    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26336           (NVL(l_enc_upg_option, 'N') = 'O')
26337         ) AND
26338         (l_bflow_method_code = 'PRIOR_ENTRY')
26339       )
26340    THEN
26341       IF
26342       --
26343       1 = 2
26344       --
26345       THEN
26346       xla_accounting_err_pkg.build_message
26347                                     (p_appli_s_name            => 'XLA'
26348                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26349                                     ,p_token_1                 => 'LINE_NUMBER'
26350                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26351                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26352                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26353                                                                              l_component_type
26354                                                                             ,l_component_code
26355                                                                             ,l_component_type_code
26356                                                                             ,l_component_appl_id
26357                                                                             ,l_amb_context_code
26358                                                                             ,l_entity_code
26359                                                                             ,l_event_class_code
26360                                                                            )
26361                                     ,p_token_3                 => 'OWNER'
26362                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26363                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26364                                                                           ,p_lookup_code    => l_component_type_code
26365                                                                          )
26366                                     ,p_token_4                 => 'PRODUCT_NAME'
26367                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26368                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26369                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26370                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26371                                     ,p_ae_header_id            =>  NULL
26372                                        );
26373 
26374         IF (C_LEVEL_ERROR>= g_log_level) THEN
26375                  trace
26376                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26377                       ,p_level    => C_LEVEL_ERROR
26378                       ,p_module   => l_log_module);
26379         END IF;
26380       END IF;
26381    END IF;
26382    --
26383    --
26384    ------------------------------------------------------------------------------------------------
26385    -- 4219869 Business Flow
26386    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26387    -- Prior Entry.  Currently, the following code is always generated.
26388    ------------------------------------------------------------------------------------------------
26389    XLA_AE_LINES_PKG.ValidateCurrentLine;
26390 
26391    ------------------------------------------------------------------------------------
26392    -- 4219869 Business Flow
26393    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26394    ------------------------------------------------------------------------------------
26395    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26396 
26397    ----------------------------------------------------------------------------------
26398    -- 4219869 Business Flow
26399    -- Update journal entry status -- Need to generate this within IF <condition>
26400    ----------------------------------------------------------------------------------
26401    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26402          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26406    -------------------------------------------------------------------------------------------
26403          ,p_balance_type_code => l_balance_type_code
26404          );
26405 
26407    -- 4262811 - Generate the Accrual Reversal lines
26408    -------------------------------------------------------------------------------------------
26409    BEGIN
26410       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26411                               (g_array_event(p_event_id).array_value_num('header_index'));
26412       IF l_acc_rev_flag IS NULL THEN
26413          l_acc_rev_flag := 'N';
26414       END IF;
26415    EXCEPTION
26416       WHEN OTHERS THEN
26417          l_acc_rev_flag := 'N';
26418    END;
26419    --
26420    IF (l_acc_rev_flag = 'Y') THEN
26421 
26422        -- 4645092  ------------------------------------------------------------------------------
26423        -- To allow MPA report to determine if it should generate report process
26424        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26425        ------------------------------------------------------------------------------------------
26426 
26427        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26428        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26429    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
26430    -- call ADRs
26431    -- Bug 4922099
26432    --
26433    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26434         (NVL(l_actual_upg_option, 'N') = 'O') OR
26435         (NVL(l_enc_upg_option, 'N') = 'O')
26436       )
26437    THEN
26438    NULL;
26439    --
26440    --
26441    
26442   l_ccid := AcctDerRule_36(
26443            p_application_id           => p_application_id
26444          , p_ae_header_id             => l_ae_header_id 
26445 , p_source_38 => p_source_38
26446          , x_transaction_coa_id       => l_adr_transaction_coa_id
26447          , x_accounting_coa_id        => l_adr_accounting_coa_id
26448          , x_value_type_code          => l_adr_value_type_code
26449          , p_side                     => 'NA'
26450    );
26451 
26452    xla_ae_lines_pkg.set_ccid(
26453     p_code_combination_id          => l_ccid
26454   , p_value_type_code              => l_adr_value_type_code
26455   , p_transaction_coa_id           => l_adr_transaction_coa_id
26456   , p_accounting_coa_id            => l_adr_accounting_coa_id
26457   , p_adr_code                     => 'TRX_DIST_CCID'
26458   , p_adr_type_code                => 'S'
26459   , p_component_type               => l_component_type
26460   , p_component_code               => l_component_code
26461   , p_component_type_code          => l_component_type_code
26462   , p_component_appl_id            => l_component_appl_id
26463   , p_amb_context_code             => l_amb_context_code
26464   , p_side                         => 'NA'
26465   );
26466 
26467 
26468    --
26469    --
26470    END IF;
26471 
26472        --
26473        -- Update the line information that should be overwritten
26474        --
26475        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
26476                                          p_header_num   => 1);
26477        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
26478 
26479        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
26480 
26481        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
26482           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
26483        END IF;
26484 
26485       --
26486       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
26487       --
26488       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
26489           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
26490       ELSE
26491           ---------------------------------------------------------------------------------------------------
26492           -- 4262811a Switch Sign
26493           ---------------------------------------------------------------------------------------------------
26494           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
26495           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26496                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26497           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
26498                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26499           -- 5132302
26500           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
26501                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
26502 
26503       END IF;
26504 
26505       -- 4955764
26506       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26507       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
26508 
26509 
26510       XLA_AE_LINES_PKG.ValidateCurrentLine;
26511       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26512 
26516 
26513       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26514                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
26515                ,p_balance_type_code => l_balance_type_code);
26517    END IF;
26518 
26519    -----------------------------------------------------------------------------------------
26520    -- 4262811 Multiperiod Accounting
26521    -----------------------------------------------------------------------------------------
26522      -- No MPA option is assigned.
26523 
26524 
26525 END IF;
26526 END IF;
26527 --
26528 
26529 --
26530 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26531    trace
26532       (p_msg      => 'END of AcctLineType_74'
26533       ,p_level    => C_LEVEL_PROCEDURE
26534       ,p_module   => l_log_module);
26535 END IF;
26536 --
26537 EXCEPTION
26538   WHEN xla_exceptions_pkg.application_exception THEN
26539       RAISE;
26540   WHEN OTHERS THEN
26541        xla_exceptions_pkg.raise_message
26542            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_74');
26543 END AcctLineType_74;
26544 --
26545 
26546 ---------------------------------------
26547 --
26548 -- PRIVATE FUNCTION
26549 --         AcctLineType_75
26550 --
26551 ---------------------------------------
26552 PROCEDURE AcctLineType_75 (
26553   p_application_id        IN NUMBER
26554  ,p_event_id              IN NUMBER
26555  ,p_calculate_acctd_flag  IN VARCHAR2
26556  ,p_calculate_g_l_flag    IN VARCHAR2
26557  ,p_actual_flag           IN OUT VARCHAR2
26558  ,p_balance_type_code     OUT VARCHAR2
26559  ,p_gain_or_loss_ref      OUT VARCHAR2
26560  
26561 --Transaction Distribution GL Account
26562  , p_source_38            IN NUMBER
26563 --Bill To Customer Account Identifier
26564  , p_source_49            IN NUMBER
26565 --Bill To Customer Site Use Identifier
26566  , p_source_50            IN NUMBER
26567 --SLA Party Type
26568  , p_source_51            IN VARCHAR2
26569 --Transaction Distribution Account Class
26570  , p_source_55            IN VARCHAR2
26571 --Transaction Distribution Identifier
26572  , p_source_56            IN NUMBER
26573 --Transaction Distribution Type
26574  , p_source_57            IN VARCHAR2
26575 --Transaction Distribution Entered Amount
26576  , p_source_58            IN NUMBER
26577 --Transaction Currency Code
26578  , p_source_59            IN VARCHAR2
26579 --Transaction Exchange Date
26580  , p_source_60            IN DATE
26581 --Transaction Exchange Rate
26582  , p_source_61            IN NUMBER
26583 --Transaction Exchange Rate Type
26584  , p_source_62            IN VARCHAR2
26585 --Transaction Accounting Amount
26586  , p_source_63            IN NUMBER
26587 --Transaction Tax Line Identifier
26588  , p_source_97            IN NUMBER
26589 )
26590 IS
26591 
26592 l_component_type              VARCHAR2(80);
26593 l_component_code              VARCHAR2(30);
26594 l_component_type_code         VARCHAR2(1);
26595 l_component_appl_id           INTEGER;
26596 l_amb_context_code            VARCHAR2(30);
26597 l_entity_code                 VARCHAR2(30);
26598 l_event_class_code            VARCHAR2(30);
26599 l_ae_header_id                NUMBER;
26600 l_event_type_code             VARCHAR2(30);
26601 l_line_definition_code        VARCHAR2(30);
26602 l_line_definition_owner_code  VARCHAR2(1);
26603 --
26604 -- adr variables
26605 l_segment                     VARCHAR2(30);
26606 l_ccid                        NUMBER;
26607 l_adr_transaction_coa_id      NUMBER;
26608 l_adr_accounting_coa_id       NUMBER;
26609 l_adr_flexfield_segment_code  VARCHAR2(30);
26610 l_adr_flex_value_set_id       NUMBER;
26611 l_adr_value_type_code         VARCHAR2(30);
26612 l_adr_value_combination_id    NUMBER;
26613 l_adr_value_segment_code      VARCHAR2(30);
26614 
26615 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
26616 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
26617 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
26618 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
26619 
26620 -- 4262811 Variables ------------------------------------------------------------------------------------------
26621 l_entered_amt_idx             NUMBER;
26622 l_accted_amt_idx              NUMBER;
26623 l_acc_rev_flag                VARCHAR2(1);
26624 l_accrual_line_num            NUMBER;
26625 l_tmp_amt                     NUMBER;
26626 l_acc_rev_natural_side_code   VARCHAR2(1);
26627 
26628 l_num_entries                 NUMBER;
26629 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
26630 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
26631 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
26632 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
26633 l_recog_line_1                NUMBER;
26634 l_recog_line_2                NUMBER;
26635 
26636 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
26637 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
26638 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
26639 
26640 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
26641 
26642 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
26643 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
26644 
26648 --
26645 ---------------------------------------------------------------------------------------------------------------
26646 
26647 
26649 -- bulk performance
26650 --
26651 l_balance_type_code           VARCHAR2(1);
26652 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
26653 l_log_module                  VARCHAR2(240);
26654 
26655 --
26656 -- Upgrade strategy
26657 --
26658 l_actual_upg_option           VARCHAR2(1);
26659 l_enc_upg_option           VARCHAR2(1);
26660 
26661 --
26662 BEGIN
26663 --
26664 IF g_log_enabled THEN
26665       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_75';
26666 END IF;
26667 --
26668 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
26669 
26670       trace
26671          (p_msg      => 'BEGIN of AcctLineType_75'
26672          ,p_level    => C_LEVEL_PROCEDURE
26673          ,p_module   => l_log_module);
26674 
26675 END IF;
26676 --
26677 l_component_type             := 'AMB_JLT';
26678 l_component_code             := 'DM_CHARGES';
26679 l_component_type_code        := 'S';
26680 l_component_appl_id          :=  222;
26681 l_amb_context_code           := 'DEFAULT';
26682 l_entity_code                := 'TRANSACTIONS';
26683 l_event_class_code           := 'DEBIT_MEMO';
26684 l_event_type_code            := 'DEBIT_MEMO_ALL';
26685 l_line_definition_owner_code := 'S';
26686 l_line_definition_code       := 'AR_DM_DEFAULT_ACCRUAL';
26687 --
26688 l_balance_type_code          := 'A';
26689 l_segment                     := NULL;
26690 l_ccid                        := NULL;
26691 l_adr_transaction_coa_id      := NULL;
26692 l_adr_accounting_coa_id       := NULL;
26693 l_adr_flexfield_segment_code  := NULL;
26694 l_adr_flex_value_set_id       := NULL;
26695 l_adr_value_type_code         := NULL;
26696 l_adr_value_combination_id    := NULL;
26697 l_adr_value_segment_code      := NULL;
26698 
26699 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
26700 l_bflow_class_code           := '';    -- 4219869 Business Flow
26701 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
26702 l_budgetary_control_flag     := 'N';
26703 
26704 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
26705 l_bflow_applied_to_amt       := NULL; -- 5132302
26706 l_entered_amt_idx            := NULL;          -- 4262811
26707 l_accted_amt_idx             := NULL;          -- 4262811
26708 l_acc_rev_flag               := NULL;          -- 4262811
26709 l_accrual_line_num           := NULL;          -- 4262811
26710 l_tmp_amt                    := NULL;          -- 4262811
26711 --
26712  
26713 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
26714     l_balance_type_code <> 'B' THEN
26715 IF NVL(p_source_55,'
26716 ') =  'CHARGES'
26717  THEN 
26718 
26719    --
26720    XLA_AE_LINES_PKG.SetNewLine;
26721 
26722    p_balance_type_code          := l_balance_type_code;
26723    -- set the flag so later we will know whether the gain loss line needs to be created
26724    
26725    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
26726      p_actual_flag :='A';
26727    END IF;
26728 
26729    --
26730    -- bulk performance
26731    --
26732    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
26733                                       p_header_num   => 0); -- 4262811
26734    --
26735    -- set accounting line options
26736    --
26737    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
26738            p_natural_side_code          => 'C'
26739          , p_gain_or_loss_flag          => 'N'
26740          , p_gl_transfer_mode_code      => 'S'
26741          , p_acct_entry_type_code       => 'A'
26742          , p_switch_side_flag           => 'Y'
26743          , p_merge_duplicate_code       => 'A'
26744          );
26745    --
26746    l_acc_rev_natural_side_code := 'D';  -- 4262811
26747    -- 
26748    --
26749    -- set accounting line type info
26750    --
26751    xla_ae_lines_pkg.SetAcctLineType
26752       (p_component_type             => l_component_type
26753       ,p_event_type_code            => l_event_type_code
26754       ,p_line_definition_owner_code => l_line_definition_owner_code
26755       ,p_line_definition_code       => l_line_definition_code
26756       ,p_accounting_line_code       => l_component_code
26757       ,p_accounting_line_type_code  => l_component_type_code
26758       ,p_accounting_line_appl_id    => l_component_appl_id
26759       ,p_amb_context_code           => l_amb_context_code
26760       ,p_entity_code                => l_entity_code
26761       ,p_event_class_code           => l_event_class_code);
26762    --
26763    -- set accounting class
26764    --
26765    xla_ae_lines_pkg.SetAcctClass(
26766            p_accounting_class_code  => 'CHARGES'
26767          , p_ae_header_id           => l_ae_header_id
26768          );
26769 
26770    --
26771    -- set rounding class
26772    --
26773    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
26774                       'RECEIVABLE';
26775 
26776    --
26777    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
26778    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
26779    --
26780    -- bulk performance
26781    --
26785       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
26782    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
26783 
26784    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
26786 
26787    -- 4955764
26788    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
26789       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
26790 
26791    -- 4458381 Public Sector Enh
26792    
26793    --
26794    -- set accounting attributes for the line type
26795    --
26796    l_entered_amt_idx := 3;
26797    l_accted_amt_idx  := 8;
26798    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
26799    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
26800    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
26801    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
26802    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
26803    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
26804    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
26805    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
26806    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
26807    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
26808    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
26809    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
26810    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
26811    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
26812    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
26813    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
26814    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
26815    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
26816    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
26817    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
26818    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
26819    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
26820    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
26821    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
26822    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
26823 
26824    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
26825    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
26826 
26827    ---------------------------------------------------------------------------------------------------------------
26828    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
26829    ---------------------------------------------------------------------------------------------------------------
26830    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
26831 
26832    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26833    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
26834 
26835    IF xla_accounting_cache_pkg.GetValueChar
26836          (p_source_code         => 'LEDGER_CATEGORY_CODE'
26837          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
26838    AND l_bflow_method_code = 'PRIOR_ENTRY'
26839 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
26840    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
26841          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
26842        )
26843    THEN
26844          xla_ae_lines_pkg.BflowUpgEntry
26845            (p_business_method_code    => l_bflow_method_code
26846            ,p_business_class_code     => l_bflow_class_code
26847            ,p_balance_type            => l_balance_type_code);
26848    ELSE
26849       NULL;
26850 -- No business flow processing for business flow method of NONE.
26851    END IF;
26852 
26853    --
26854    -- call analytical criteria
26855    --
26856    
26857    --
26858    -- call description
26859    --
26860    -- No description or it is inherited.
26861    --
26862    -- call ADRs
26863    -- Bug 4922099
26864    --
26865    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
26866         (NVL(l_actual_upg_option, 'N') = 'O') OR
26867         (NVL(l_enc_upg_option, 'N') = 'O')
26868       )
26869    THEN
26870    NULL;
26871    --
26872    --
26873    
26874   l_ccid := AcctDerRule_36(
26875            p_application_id           => p_application_id
26876          , p_ae_header_id             => l_ae_header_id 
26877 , p_source_38 => p_source_38
26878          , x_transaction_coa_id       => l_adr_transaction_coa_id
26879          , x_accounting_coa_id        => l_adr_accounting_coa_id
26880          , x_value_type_code          => l_adr_value_type_code
26881          , p_side                     => 'NA'
26882    );
26883 
26884    xla_ae_lines_pkg.set_ccid(
26885     p_code_combination_id          => l_ccid
26886   , p_value_type_code              => l_adr_value_type_code
26887   , p_transaction_coa_id           => l_adr_transaction_coa_id
26888   , p_accounting_coa_id            => l_adr_accounting_coa_id
26889   , p_adr_code                     => 'TRX_DIST_CCID'
26890   , p_adr_type_code                => 'S'
26894   , p_component_appl_id            => l_component_appl_id
26891   , p_component_type               => l_component_type
26892   , p_component_code               => l_component_code
26893   , p_component_type_code          => l_component_type_code
26895   , p_amb_context_code             => l_amb_context_code
26896   , p_side                         => 'NA'
26897   );
26898 
26899 
26900    --
26901    --
26902    END IF;
26903    --
26904    -- Bug 4922099
26905    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
26906           (NVL(l_enc_upg_option, 'N') = 'O')
26907         ) AND
26908         (l_bflow_method_code = 'PRIOR_ENTRY')
26909       )
26910    THEN
26911       IF
26912       --
26913       1 = 2
26914       --
26915       THEN
26916       xla_accounting_err_pkg.build_message
26917                                     (p_appli_s_name            => 'XLA'
26918                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26919                                     ,p_token_1                 => 'LINE_NUMBER'
26920                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
26921                                     ,p_token_2                 => 'LINE_TYPE_NAME'
26922                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
26923                                                                              l_component_type
26924                                                                             ,l_component_code
26925                                                                             ,l_component_type_code
26926                                                                             ,l_component_appl_id
26927                                                                             ,l_amb_context_code
26928                                                                             ,l_entity_code
26929                                                                             ,l_event_class_code
26930                                                                            )
26931                                     ,p_token_3                 => 'OWNER'
26932                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
26933                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
26934                                                                           ,p_lookup_code    => l_component_type_code
26935                                                                          )
26936                                     ,p_token_4                 => 'PRODUCT_NAME'
26937                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
26938                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
26939                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
26940                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
26941                                     ,p_ae_header_id            =>  NULL
26942                                        );
26943 
26944         IF (C_LEVEL_ERROR>= g_log_level) THEN
26945                  trace
26946                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
26947                       ,p_level    => C_LEVEL_ERROR
26948                       ,p_module   => l_log_module);
26949         END IF;
26950       END IF;
26951    END IF;
26952    --
26953    --
26954    ------------------------------------------------------------------------------------------------
26955    -- 4219869 Business Flow
26956    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
26957    -- Prior Entry.  Currently, the following code is always generated.
26958    ------------------------------------------------------------------------------------------------
26959    XLA_AE_LINES_PKG.ValidateCurrentLine;
26960 
26961    ------------------------------------------------------------------------------------
26962    -- 4219869 Business Flow
26963    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
26964    ------------------------------------------------------------------------------------
26965    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
26966 
26967    ----------------------------------------------------------------------------------
26968    -- 4219869 Business Flow
26969    -- Update journal entry status -- Need to generate this within IF <condition>
26970    ----------------------------------------------------------------------------------
26971    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
26972          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
26973          ,p_balance_type_code => l_balance_type_code
26974          );
26975 
26976    -------------------------------------------------------------------------------------------
26977    -- 4262811 - Generate the Accrual Reversal lines
26978    -------------------------------------------------------------------------------------------
26979    BEGIN
26980       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
26984       END IF;
26981                               (g_array_event(p_event_id).array_value_num('header_index'));
26982       IF l_acc_rev_flag IS NULL THEN
26983          l_acc_rev_flag := 'N';
26985    EXCEPTION
26986       WHEN OTHERS THEN
26987          l_acc_rev_flag := 'N';
26988    END;
26989    --
26990    IF (l_acc_rev_flag = 'Y') THEN
26991 
26992        -- 4645092  ------------------------------------------------------------------------------
26993        -- To allow MPA report to determine if it should generate report process
26994        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
26995        ------------------------------------------------------------------------------------------
26996 
26997        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
26998        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
26999    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
27000    -- call ADRs
27001    -- Bug 4922099
27002    --
27003    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27004         (NVL(l_actual_upg_option, 'N') = 'O') OR
27005         (NVL(l_enc_upg_option, 'N') = 'O')
27006       )
27007    THEN
27008    NULL;
27009    --
27010    --
27011    
27012   l_ccid := AcctDerRule_36(
27013            p_application_id           => p_application_id
27014          , p_ae_header_id             => l_ae_header_id 
27015 , p_source_38 => p_source_38
27016          , x_transaction_coa_id       => l_adr_transaction_coa_id
27017          , x_accounting_coa_id        => l_adr_accounting_coa_id
27018          , x_value_type_code          => l_adr_value_type_code
27019          , p_side                     => 'NA'
27020    );
27021 
27022    xla_ae_lines_pkg.set_ccid(
27023     p_code_combination_id          => l_ccid
27024   , p_value_type_code              => l_adr_value_type_code
27025   , p_transaction_coa_id           => l_adr_transaction_coa_id
27026   , p_accounting_coa_id            => l_adr_accounting_coa_id
27027   , p_adr_code                     => 'TRX_DIST_CCID'
27028   , p_adr_type_code                => 'S'
27029   , p_component_type               => l_component_type
27030   , p_component_code               => l_component_code
27031   , p_component_type_code          => l_component_type_code
27032   , p_component_appl_id            => l_component_appl_id
27033   , p_amb_context_code             => l_amb_context_code
27034   , p_side                         => 'NA'
27035   );
27036 
27037 
27038    --
27039    --
27040    END IF;
27041 
27042        --
27043        -- Update the line information that should be overwritten
27044        --
27045        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27046                                          p_header_num   => 1);
27047        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27048 
27049        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27050 
27051        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27052           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27053        END IF;
27054 
27055       --
27056       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27057       --
27058       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27059           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27060       ELSE
27061           ---------------------------------------------------------------------------------------------------
27062           -- 4262811a Switch Sign
27063           ---------------------------------------------------------------------------------------------------
27064           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27065           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27066                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27067           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27068                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27069           -- 5132302
27070           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27071                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27072 
27073       END IF;
27074 
27075       -- 4955764
27076       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27077       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27078 
27079 
27080       XLA_AE_LINES_PKG.ValidateCurrentLine;
27081       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27082 
27083       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27084                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27085                ,p_balance_type_code => l_balance_type_code);
27086 
27087    END IF;
27088 
27089    -----------------------------------------------------------------------------------------
27090    -- 4262811 Multiperiod Accounting
27091    -----------------------------------------------------------------------------------------
27095 END IF;
27092      -- No MPA option is assigned.
27093 
27094 
27096 END IF;
27097 --
27098 
27099 --
27100 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27101    trace
27102       (p_msg      => 'END of AcctLineType_75'
27103       ,p_level    => C_LEVEL_PROCEDURE
27104       ,p_module   => l_log_module);
27105 END IF;
27106 --
27107 EXCEPTION
27108   WHEN xla_exceptions_pkg.application_exception THEN
27109       RAISE;
27110   WHEN OTHERS THEN
27111        xla_exceptions_pkg.raise_message
27112            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_75');
27113 END AcctLineType_75;
27114 --
27115 
27116 ---------------------------------------
27117 --
27118 -- PRIVATE FUNCTION
27119 --         AcctLineType_76
27120 --
27121 ---------------------------------------
27122 PROCEDURE AcctLineType_76 (
27123   p_application_id        IN NUMBER
27124  ,p_event_id              IN NUMBER
27125  ,p_calculate_acctd_flag  IN VARCHAR2
27126  ,p_calculate_g_l_flag    IN VARCHAR2
27127  ,p_actual_flag           IN OUT VARCHAR2
27128  ,p_balance_type_code     OUT VARCHAR2
27129  ,p_gain_or_loss_ref      OUT VARCHAR2
27130  
27131 --Transaction Distribution GL Account
27132  , p_source_38            IN NUMBER
27133 --Bill To Customer Account Identifier
27134  , p_source_49            IN NUMBER
27135 --Bill To Customer Site Use Identifier
27136  , p_source_50            IN NUMBER
27137 --SLA Party Type
27138  , p_source_51            IN VARCHAR2
27139 --Transaction Distribution Account Class
27140  , p_source_55            IN VARCHAR2
27141 --Transaction Distribution Identifier
27142  , p_source_56            IN NUMBER
27143 --Transaction Distribution Type
27144  , p_source_57            IN VARCHAR2
27145 --Transaction Distribution Entered Amount
27146  , p_source_58            IN NUMBER
27147 --Transaction Currency Code
27148  , p_source_59            IN VARCHAR2
27149 --Transaction Exchange Date
27150  , p_source_60            IN DATE
27151 --Transaction Exchange Rate
27152  , p_source_61            IN NUMBER
27153 --Transaction Exchange Rate Type
27154  , p_source_62            IN VARCHAR2
27155 --Transaction Accounting Amount
27156  , p_source_63            IN NUMBER
27157 --Transaction Tax Line Identifier
27158  , p_source_97            IN NUMBER
27159 )
27160 IS
27161 
27162 l_component_type              VARCHAR2(80);
27163 l_component_code              VARCHAR2(30);
27164 l_component_type_code         VARCHAR2(1);
27165 l_component_appl_id           INTEGER;
27166 l_amb_context_code            VARCHAR2(30);
27167 l_entity_code                 VARCHAR2(30);
27168 l_event_class_code            VARCHAR2(30);
27169 l_ae_header_id                NUMBER;
27170 l_event_type_code             VARCHAR2(30);
27171 l_line_definition_code        VARCHAR2(30);
27172 l_line_definition_owner_code  VARCHAR2(1);
27173 --
27174 -- adr variables
27175 l_segment                     VARCHAR2(30);
27176 l_ccid                        NUMBER;
27177 l_adr_transaction_coa_id      NUMBER;
27178 l_adr_accounting_coa_id       NUMBER;
27179 l_adr_flexfield_segment_code  VARCHAR2(30);
27180 l_adr_flex_value_set_id       NUMBER;
27181 l_adr_value_type_code         VARCHAR2(30);
27182 l_adr_value_combination_id    NUMBER;
27183 l_adr_value_segment_code      VARCHAR2(30);
27184 
27185 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27186 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27187 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27188 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27189 
27190 -- 4262811 Variables ------------------------------------------------------------------------------------------
27191 l_entered_amt_idx             NUMBER;
27192 l_accted_amt_idx              NUMBER;
27193 l_acc_rev_flag                VARCHAR2(1);
27194 l_accrual_line_num            NUMBER;
27195 l_tmp_amt                     NUMBER;
27196 l_acc_rev_natural_side_code   VARCHAR2(1);
27197 
27198 l_num_entries                 NUMBER;
27199 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27200 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27201 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27202 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27203 l_recog_line_1                NUMBER;
27204 l_recog_line_2                NUMBER;
27205 
27206 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27207 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27208 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27209 
27210 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27211 
27212 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27213 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27214 
27215 ---------------------------------------------------------------------------------------------------------------
27216 
27217 
27218 --
27219 -- bulk performance
27220 --
27221 l_balance_type_code           VARCHAR2(1);
27222 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27223 l_log_module                  VARCHAR2(240);
27224 
27225 --
27226 -- Upgrade strategy
27227 --
27228 l_actual_upg_option           VARCHAR2(1);
27229 l_enc_upg_option           VARCHAR2(1);
27233 --
27230 
27231 --
27232 BEGIN
27234 IF g_log_enabled THEN
27235       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_76';
27236 END IF;
27237 --
27238 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27239 
27240       trace
27241          (p_msg      => 'BEGIN of AcctLineType_76'
27242          ,p_level    => C_LEVEL_PROCEDURE
27243          ,p_module   => l_log_module);
27244 
27245 END IF;
27246 --
27247 l_component_type             := 'AMB_JLT';
27248 l_component_code             := 'DM_DEFAULT_REC';
27249 l_component_type_code        := 'S';
27250 l_component_appl_id          :=  222;
27251 l_amb_context_code           := 'DEFAULT';
27252 l_entity_code                := 'TRANSACTIONS';
27253 l_event_class_code           := 'DEBIT_MEMO';
27254 l_event_type_code            := 'DEBIT_MEMO_ALL';
27255 l_line_definition_owner_code := 'S';
27256 l_line_definition_code       := 'AR_DM_DEFAULT_ACCRUAL';
27257 --
27258 l_balance_type_code          := 'A';
27259 l_segment                     := NULL;
27260 l_ccid                        := NULL;
27261 l_adr_transaction_coa_id      := NULL;
27262 l_adr_accounting_coa_id       := NULL;
27263 l_adr_flexfield_segment_code  := NULL;
27264 l_adr_flex_value_set_id       := NULL;
27265 l_adr_value_type_code         := NULL;
27266 l_adr_value_combination_id    := NULL;
27267 l_adr_value_segment_code      := NULL;
27268 
27269 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27270 l_bflow_class_code           := '';    -- 4219869 Business Flow
27271 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27272 l_budgetary_control_flag     := 'N';
27273 
27274 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27275 l_bflow_applied_to_amt       := NULL; -- 5132302
27276 l_entered_amt_idx            := NULL;          -- 4262811
27277 l_accted_amt_idx             := NULL;          -- 4262811
27278 l_acc_rev_flag               := NULL;          -- 4262811
27279 l_accrual_line_num           := NULL;          -- 4262811
27280 l_tmp_amt                    := NULL;          -- 4262811
27281 --
27282  
27283 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27284     l_balance_type_code <> 'B' THEN
27285 IF NVL(p_source_55,'
27286 ') =  'REC'
27287  THEN 
27288 
27289    --
27290    XLA_AE_LINES_PKG.SetNewLine;
27291 
27292    p_balance_type_code          := l_balance_type_code;
27293    -- set the flag so later we will know whether the gain loss line needs to be created
27294    
27295    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27296      p_actual_flag :='A';
27297    END IF;
27298 
27299    --
27300    -- bulk performance
27301    --
27302    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27303                                       p_header_num   => 0); -- 4262811
27304    --
27305    -- set accounting line options
27306    --
27307    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27308            p_natural_side_code          => 'D'
27309          , p_gain_or_loss_flag          => 'N'
27310          , p_gl_transfer_mode_code      => 'S'
27311          , p_acct_entry_type_code       => 'A'
27312          , p_switch_side_flag           => 'Y'
27313          , p_merge_duplicate_code       => 'A'
27314          );
27315    --
27316    l_acc_rev_natural_side_code := 'C';  -- 4262811
27317    -- 
27318    --
27319    -- set accounting line type info
27320    --
27321    xla_ae_lines_pkg.SetAcctLineType
27322       (p_component_type             => l_component_type
27323       ,p_event_type_code            => l_event_type_code
27324       ,p_line_definition_owner_code => l_line_definition_owner_code
27325       ,p_line_definition_code       => l_line_definition_code
27326       ,p_accounting_line_code       => l_component_code
27327       ,p_accounting_line_type_code  => l_component_type_code
27328       ,p_accounting_line_appl_id    => l_component_appl_id
27329       ,p_amb_context_code           => l_amb_context_code
27330       ,p_entity_code                => l_entity_code
27331       ,p_event_class_code           => l_event_class_code);
27332    --
27333    -- set accounting class
27334    --
27335    xla_ae_lines_pkg.SetAcctClass(
27336            p_accounting_class_code  => 'RECEIVABLE'
27337          , p_ae_header_id           => l_ae_header_id
27338          );
27339 
27340    --
27341    -- set rounding class
27342    --
27343    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27344                       'RECEIVABLE';
27345 
27346    --
27347    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27348    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27349    --
27350    -- bulk performance
27351    --
27352    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27353 
27354    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27355       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27356 
27357    -- 4955764
27358    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27359       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27360 
27364    -- set accounting attributes for the line type
27361    -- 4458381 Public Sector Enh
27362    
27363    --
27365    --
27366    l_entered_amt_idx := 3;
27367    l_accted_amt_idx  := 8;
27368    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27369    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27370    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
27371    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27372    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
27373    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27374    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
27375    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27376    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
27377    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27378    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
27379    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27380    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
27381    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27382    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
27383    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27384    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
27385    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
27386    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
27387    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
27388    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
27389    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
27390    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
27391    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
27392    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
27393 
27394    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27395    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27396 
27397    ---------------------------------------------------------------------------------------------------------------
27398    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27399    ---------------------------------------------------------------------------------------------------------------
27400    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27401 
27402    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27403    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27404 
27405    IF xla_accounting_cache_pkg.GetValueChar
27406          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27407          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27408    AND l_bflow_method_code = 'PRIOR_ENTRY'
27409 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27410    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27411          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27412        )
27413    THEN
27414          xla_ae_lines_pkg.BflowUpgEntry
27415            (p_business_method_code    => l_bflow_method_code
27416            ,p_business_class_code     => l_bflow_class_code
27417            ,p_balance_type            => l_balance_type_code);
27418    ELSE
27419       NULL;
27420 -- No business flow processing for business flow method of NONE.
27421    END IF;
27422 
27423    --
27424    -- call analytical criteria
27425    --
27426    
27427    --
27428    -- call description
27429    --
27430    -- No description or it is inherited.
27431    --
27432    -- call ADRs
27433    -- Bug 4922099
27434    --
27435    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27436         (NVL(l_actual_upg_option, 'N') = 'O') OR
27437         (NVL(l_enc_upg_option, 'N') = 'O')
27438       )
27439    THEN
27440    NULL;
27441    --
27442    --
27443    
27444   l_ccid := AcctDerRule_36(
27445            p_application_id           => p_application_id
27446          , p_ae_header_id             => l_ae_header_id 
27447 , p_source_38 => p_source_38
27448          , x_transaction_coa_id       => l_adr_transaction_coa_id
27449          , x_accounting_coa_id        => l_adr_accounting_coa_id
27450          , x_value_type_code          => l_adr_value_type_code
27451          , p_side                     => 'NA'
27452    );
27453 
27454    xla_ae_lines_pkg.set_ccid(
27455     p_code_combination_id          => l_ccid
27456   , p_value_type_code              => l_adr_value_type_code
27457   , p_transaction_coa_id           => l_adr_transaction_coa_id
27458   , p_accounting_coa_id            => l_adr_accounting_coa_id
27459   , p_adr_code                     => 'TRX_DIST_CCID'
27460   , p_adr_type_code                => 'S'
27461   , p_component_type               => l_component_type
27462   , p_component_code               => l_component_code
27463   , p_component_type_code          => l_component_type_code
27464   , p_component_appl_id            => l_component_appl_id
27465   , p_amb_context_code             => l_amb_context_code
27466   , p_side                         => 'NA'
27467   );
27468 
27469 
27470    --
27471    --
27472    END IF;
27473    --
27474    -- Bug 4922099
27475    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
27479       )
27476           (NVL(l_enc_upg_option, 'N') = 'O')
27477         ) AND
27478         (l_bflow_method_code = 'PRIOR_ENTRY')
27480    THEN
27481       IF
27482       --
27483       1 = 2
27484       --
27485       THEN
27486       xla_accounting_err_pkg.build_message
27487                                     (p_appli_s_name            => 'XLA'
27488                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27489                                     ,p_token_1                 => 'LINE_NUMBER'
27490                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
27491                                     ,p_token_2                 => 'LINE_TYPE_NAME'
27492                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
27493                                                                              l_component_type
27494                                                                             ,l_component_code
27495                                                                             ,l_component_type_code
27496                                                                             ,l_component_appl_id
27497                                                                             ,l_amb_context_code
27498                                                                             ,l_entity_code
27499                                                                             ,l_event_class_code
27500                                                                            )
27501                                     ,p_token_3                 => 'OWNER'
27502                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
27503                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
27504                                                                           ,p_lookup_code    => l_component_type_code
27505                                                                          )
27506                                     ,p_token_4                 => 'PRODUCT_NAME'
27507                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
27508                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
27509                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
27510                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
27511                                     ,p_ae_header_id            =>  NULL
27512                                        );
27513 
27514         IF (C_LEVEL_ERROR>= g_log_level) THEN
27515                  trace
27516                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
27517                       ,p_level    => C_LEVEL_ERROR
27518                       ,p_module   => l_log_module);
27519         END IF;
27520       END IF;
27521    END IF;
27522    --
27523    --
27524    ------------------------------------------------------------------------------------------------
27525    -- 4219869 Business Flow
27526    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
27527    -- Prior Entry.  Currently, the following code is always generated.
27528    ------------------------------------------------------------------------------------------------
27529    XLA_AE_LINES_PKG.ValidateCurrentLine;
27530 
27531    ------------------------------------------------------------------------------------
27532    -- 4219869 Business Flow
27533    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
27534    ------------------------------------------------------------------------------------
27535    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27536 
27537    ----------------------------------------------------------------------------------
27538    -- 4219869 Business Flow
27539    -- Update journal entry status -- Need to generate this within IF <condition>
27540    ----------------------------------------------------------------------------------
27541    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27542          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
27543          ,p_balance_type_code => l_balance_type_code
27544          );
27545 
27546    -------------------------------------------------------------------------------------------
27547    -- 4262811 - Generate the Accrual Reversal lines
27548    -------------------------------------------------------------------------------------------
27549    BEGIN
27550       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
27551                               (g_array_event(p_event_id).array_value_num('header_index'));
27552       IF l_acc_rev_flag IS NULL THEN
27553          l_acc_rev_flag := 'N';
27554       END IF;
27555    EXCEPTION
27556       WHEN OTHERS THEN
27557          l_acc_rev_flag := 'N';
27558    END;
27559    --
27560    IF (l_acc_rev_flag = 'Y') THEN
27561 
27562        -- 4645092  ------------------------------------------------------------------------------
27563        -- To allow MPA report to determine if it should generate report process
27564        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
27565        ------------------------------------------------------------------------------------------
27566 
27567        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
27571    -- Bug 4922099
27568        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
27569    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
27570    -- call ADRs
27572    --
27573    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
27574         (NVL(l_actual_upg_option, 'N') = 'O') OR
27575         (NVL(l_enc_upg_option, 'N') = 'O')
27576       )
27577    THEN
27578    NULL;
27579    --
27580    --
27581    
27582   l_ccid := AcctDerRule_36(
27583            p_application_id           => p_application_id
27584          , p_ae_header_id             => l_ae_header_id 
27585 , p_source_38 => p_source_38
27586          , x_transaction_coa_id       => l_adr_transaction_coa_id
27587          , x_accounting_coa_id        => l_adr_accounting_coa_id
27588          , x_value_type_code          => l_adr_value_type_code
27589          , p_side                     => 'NA'
27590    );
27591 
27592    xla_ae_lines_pkg.set_ccid(
27593     p_code_combination_id          => l_ccid
27594   , p_value_type_code              => l_adr_value_type_code
27595   , p_transaction_coa_id           => l_adr_transaction_coa_id
27596   , p_accounting_coa_id            => l_adr_accounting_coa_id
27597   , p_adr_code                     => 'TRX_DIST_CCID'
27598   , p_adr_type_code                => 'S'
27599   , p_component_type               => l_component_type
27600   , p_component_code               => l_component_code
27601   , p_component_type_code          => l_component_type_code
27602   , p_component_appl_id            => l_component_appl_id
27603   , p_amb_context_code             => l_amb_context_code
27604   , p_side                         => 'NA'
27605   );
27606 
27607 
27608    --
27609    --
27610    END IF;
27611 
27612        --
27613        -- Update the line information that should be overwritten
27614        --
27615        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
27616                                          p_header_num   => 1);
27617        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
27618 
27619        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
27620 
27621        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
27622           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
27623        END IF;
27624 
27625       --
27626       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
27627       --
27628       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
27629           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
27630       ELSE
27631           ---------------------------------------------------------------------------------------------------
27632           -- 4262811a Switch Sign
27633           ---------------------------------------------------------------------------------------------------
27634           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
27635           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27636                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27637           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
27638                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27639           -- 5132302
27640           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
27641                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
27642 
27643       END IF;
27644 
27645       -- 4955764
27646       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27647       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
27648 
27649 
27650       XLA_AE_LINES_PKG.ValidateCurrentLine;
27651       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
27652 
27653       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
27654                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
27655                ,p_balance_type_code => l_balance_type_code);
27656 
27657    END IF;
27658 
27659    -----------------------------------------------------------------------------------------
27660    -- 4262811 Multiperiod Accounting
27661    -----------------------------------------------------------------------------------------
27662      -- No MPA option is assigned.
27663 
27664 
27665 END IF;
27666 END IF;
27667 --
27668 
27669 --
27670 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27671    trace
27672       (p_msg      => 'END of AcctLineType_76'
27673       ,p_level    => C_LEVEL_PROCEDURE
27674       ,p_module   => l_log_module);
27675 END IF;
27676 --
27677 EXCEPTION
27678   WHEN xla_exceptions_pkg.application_exception THEN
27679       RAISE;
27680   WHEN OTHERS THEN
27681        xla_exceptions_pkg.raise_message
27682            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_76');
27683 END AcctLineType_76;
27684 --
27685 
27686 ---------------------------------------
27687 --
27688 -- PRIVATE FUNCTION
27689 --         AcctLineType_77
27693   p_application_id        IN NUMBER
27690 --
27691 ---------------------------------------
27692 PROCEDURE AcctLineType_77 (
27694  ,p_event_id              IN NUMBER
27695  ,p_calculate_acctd_flag  IN VARCHAR2
27696  ,p_calculate_g_l_flag    IN VARCHAR2
27697  ,p_actual_flag           IN OUT VARCHAR2
27698  ,p_balance_type_code     OUT VARCHAR2
27699  ,p_gain_or_loss_ref      OUT VARCHAR2
27700  
27701 --Transaction Distribution GL Account
27702  , p_source_38            IN NUMBER
27703 --Bill To Customer Account Identifier
27704  , p_source_49            IN NUMBER
27705 --Bill To Customer Site Use Identifier
27706  , p_source_50            IN NUMBER
27707 --SLA Party Type
27708  , p_source_51            IN VARCHAR2
27709 --Transaction Distribution Account Class
27710  , p_source_55            IN VARCHAR2
27711 --Transaction Distribution Identifier
27712  , p_source_56            IN NUMBER
27713 --Transaction Distribution Type
27714  , p_source_57            IN VARCHAR2
27715 --Transaction Distribution Entered Amount
27716  , p_source_58            IN NUMBER
27717 --Transaction Currency Code
27718  , p_source_59            IN VARCHAR2
27719 --Transaction Exchange Date
27720  , p_source_60            IN DATE
27721 --Transaction Exchange Rate
27722  , p_source_61            IN NUMBER
27723 --Transaction Exchange Rate Type
27724  , p_source_62            IN VARCHAR2
27725 --Transaction Accounting Amount
27726  , p_source_63            IN NUMBER
27727 --Transaction Tax Line Identifier
27728  , p_source_97            IN NUMBER
27729 )
27730 IS
27731 
27732 l_component_type              VARCHAR2(80);
27733 l_component_code              VARCHAR2(30);
27734 l_component_type_code         VARCHAR2(1);
27735 l_component_appl_id           INTEGER;
27736 l_amb_context_code            VARCHAR2(30);
27737 l_entity_code                 VARCHAR2(30);
27738 l_event_class_code            VARCHAR2(30);
27739 l_ae_header_id                NUMBER;
27740 l_event_type_code             VARCHAR2(30);
27741 l_line_definition_code        VARCHAR2(30);
27742 l_line_definition_owner_code  VARCHAR2(1);
27743 --
27744 -- adr variables
27745 l_segment                     VARCHAR2(30);
27746 l_ccid                        NUMBER;
27747 l_adr_transaction_coa_id      NUMBER;
27748 l_adr_accounting_coa_id       NUMBER;
27749 l_adr_flexfield_segment_code  VARCHAR2(30);
27750 l_adr_flex_value_set_id       NUMBER;
27751 l_adr_value_type_code         VARCHAR2(30);
27752 l_adr_value_combination_id    NUMBER;
27753 l_adr_value_segment_code      VARCHAR2(30);
27754 
27755 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
27756 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
27757 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
27758 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
27759 
27760 -- 4262811 Variables ------------------------------------------------------------------------------------------
27761 l_entered_amt_idx             NUMBER;
27762 l_accted_amt_idx              NUMBER;
27763 l_acc_rev_flag                VARCHAR2(1);
27764 l_accrual_line_num            NUMBER;
27765 l_tmp_amt                     NUMBER;
27766 l_acc_rev_natural_side_code   VARCHAR2(1);
27767 
27768 l_num_entries                 NUMBER;
27769 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
27770 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
27771 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
27772 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
27773 l_recog_line_1                NUMBER;
27774 l_recog_line_2                NUMBER;
27775 
27776 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
27777 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
27778 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
27779 
27780 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
27781 
27782 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
27783 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
27784 
27785 ---------------------------------------------------------------------------------------------------------------
27786 
27787 
27788 --
27789 -- bulk performance
27790 --
27791 l_balance_type_code           VARCHAR2(1);
27792 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
27793 l_log_module                  VARCHAR2(240);
27794 
27795 --
27796 -- Upgrade strategy
27797 --
27798 l_actual_upg_option           VARCHAR2(1);
27799 l_enc_upg_option           VARCHAR2(1);
27800 
27801 --
27802 BEGIN
27803 --
27804 IF g_log_enabled THEN
27805       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_77';
27806 END IF;
27807 --
27808 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
27809 
27810       trace
27811          (p_msg      => 'BEGIN of AcctLineType_77'
27812          ,p_level    => C_LEVEL_PROCEDURE
27813          ,p_module   => l_log_module);
27814 
27815 END IF;
27816 --
27817 l_component_type             := 'AMB_JLT';
27818 l_component_code             := 'DM_FREIGHT';
27819 l_component_type_code        := 'S';
27820 l_component_appl_id          :=  222;
27821 l_amb_context_code           := 'DEFAULT';
27822 l_entity_code                := 'TRANSACTIONS';
27823 l_event_class_code           := 'DEBIT_MEMO';
27827 --
27824 l_event_type_code            := 'DEBIT_MEMO_ALL';
27825 l_line_definition_owner_code := 'S';
27826 l_line_definition_code       := 'AR_DM_DEFAULT_ACCRUAL';
27828 l_balance_type_code          := 'A';
27829 l_segment                     := NULL;
27830 l_ccid                        := NULL;
27831 l_adr_transaction_coa_id      := NULL;
27832 l_adr_accounting_coa_id       := NULL;
27833 l_adr_flexfield_segment_code  := NULL;
27834 l_adr_flex_value_set_id       := NULL;
27835 l_adr_value_type_code         := NULL;
27836 l_adr_value_combination_id    := NULL;
27837 l_adr_value_segment_code      := NULL;
27838 
27839 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
27840 l_bflow_class_code           := '';    -- 4219869 Business Flow
27841 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
27842 l_budgetary_control_flag     := 'N';
27843 
27844 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
27845 l_bflow_applied_to_amt       := NULL; -- 5132302
27846 l_entered_amt_idx            := NULL;          -- 4262811
27847 l_accted_amt_idx             := NULL;          -- 4262811
27848 l_acc_rev_flag               := NULL;          -- 4262811
27849 l_accrual_line_num           := NULL;          -- 4262811
27850 l_tmp_amt                    := NULL;          -- 4262811
27851 --
27852  
27853 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
27854     l_balance_type_code <> 'B' THEN
27855 IF NVL(p_source_55,'
27856 ') =  'FREIGHT'
27857  THEN 
27858 
27859    --
27860    XLA_AE_LINES_PKG.SetNewLine;
27861 
27862    p_balance_type_code          := l_balance_type_code;
27863    -- set the flag so later we will know whether the gain loss line needs to be created
27864    
27865    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
27866      p_actual_flag :='A';
27867    END IF;
27868 
27869    --
27870    -- bulk performance
27871    --
27872    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
27873                                       p_header_num   => 0); -- 4262811
27874    --
27875    -- set accounting line options
27876    --
27877    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
27878            p_natural_side_code          => 'C'
27879          , p_gain_or_loss_flag          => 'N'
27880          , p_gl_transfer_mode_code      => 'S'
27881          , p_acct_entry_type_code       => 'A'
27882          , p_switch_side_flag           => 'Y'
27883          , p_merge_duplicate_code       => 'A'
27884          );
27885    --
27886    l_acc_rev_natural_side_code := 'D';  -- 4262811
27887    -- 
27888    --
27889    -- set accounting line type info
27890    --
27891    xla_ae_lines_pkg.SetAcctLineType
27892       (p_component_type             => l_component_type
27893       ,p_event_type_code            => l_event_type_code
27894       ,p_line_definition_owner_code => l_line_definition_owner_code
27895       ,p_line_definition_code       => l_line_definition_code
27896       ,p_accounting_line_code       => l_component_code
27897       ,p_accounting_line_type_code  => l_component_type_code
27898       ,p_accounting_line_appl_id    => l_component_appl_id
27899       ,p_amb_context_code           => l_amb_context_code
27900       ,p_entity_code                => l_entity_code
27901       ,p_event_class_code           => l_event_class_code);
27902    --
27903    -- set accounting class
27904    --
27905    xla_ae_lines_pkg.SetAcctClass(
27906            p_accounting_class_code  => 'FREIGHT'
27907          , p_ae_header_id           => l_ae_header_id
27908          );
27909 
27910    --
27911    -- set rounding class
27912    --
27913    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
27914                       'RECEIVABLE';
27915 
27916    --
27917    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
27918    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
27919    --
27920    -- bulk performance
27921    --
27922    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
27923 
27924    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
27925       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
27926 
27927    -- 4955764
27928    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
27929       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
27930 
27931    -- 4458381 Public Sector Enh
27932    
27933    --
27934    -- set accounting attributes for the line type
27935    --
27936    l_entered_amt_idx := 3;
27937    l_accted_amt_idx  := 8;
27938    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
27939    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
27940    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
27941    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
27942    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
27943    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
27944    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
27945    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
27946    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
27950    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
27947    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
27948    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
27949    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
27951    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
27952    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
27953    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
27954    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
27955    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
27956    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
27957    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
27958    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
27959    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
27960    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
27961    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
27962    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
27963 
27964    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
27965    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
27966 
27967    ---------------------------------------------------------------------------------------------------------------
27968    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
27969    ---------------------------------------------------------------------------------------------------------------
27970    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
27971 
27972    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27973    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
27974 
27975    IF xla_accounting_cache_pkg.GetValueChar
27976          (p_source_code         => 'LEDGER_CATEGORY_CODE'
27977          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
27978    AND l_bflow_method_code = 'PRIOR_ENTRY'
27979 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
27980    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
27981          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
27982        )
27983    THEN
27984          xla_ae_lines_pkg.BflowUpgEntry
27985            (p_business_method_code    => l_bflow_method_code
27986            ,p_business_class_code     => l_bflow_class_code
27987            ,p_balance_type            => l_balance_type_code);
27988    ELSE
27989       NULL;
27990 -- No business flow processing for business flow method of NONE.
27991    END IF;
27992 
27993    --
27994    -- call analytical criteria
27995    --
27996    
27997    --
27998    -- call description
27999    --
28000    -- No description or it is inherited.
28001    --
28002    -- call ADRs
28003    -- Bug 4922099
28004    --
28005    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28006         (NVL(l_actual_upg_option, 'N') = 'O') OR
28007         (NVL(l_enc_upg_option, 'N') = 'O')
28008       )
28009    THEN
28010    NULL;
28011    --
28012    --
28013    
28014   l_ccid := AcctDerRule_36(
28015            p_application_id           => p_application_id
28016          , p_ae_header_id             => l_ae_header_id 
28017 , p_source_38 => p_source_38
28018          , x_transaction_coa_id       => l_adr_transaction_coa_id
28019          , x_accounting_coa_id        => l_adr_accounting_coa_id
28020          , x_value_type_code          => l_adr_value_type_code
28021          , p_side                     => 'NA'
28022    );
28023 
28024    xla_ae_lines_pkg.set_ccid(
28025     p_code_combination_id          => l_ccid
28026   , p_value_type_code              => l_adr_value_type_code
28027   , p_transaction_coa_id           => l_adr_transaction_coa_id
28028   , p_accounting_coa_id            => l_adr_accounting_coa_id
28029   , p_adr_code                     => 'TRX_DIST_CCID'
28030   , p_adr_type_code                => 'S'
28031   , p_component_type               => l_component_type
28032   , p_component_code               => l_component_code
28033   , p_component_type_code          => l_component_type_code
28034   , p_component_appl_id            => l_component_appl_id
28035   , p_amb_context_code             => l_amb_context_code
28036   , p_side                         => 'NA'
28037   );
28038 
28039 
28040    --
28041    --
28042    END IF;
28043    --
28044    -- Bug 4922099
28045    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28046           (NVL(l_enc_upg_option, 'N') = 'O')
28047         ) AND
28048         (l_bflow_method_code = 'PRIOR_ENTRY')
28049       )
28050    THEN
28051       IF
28052       --
28053       1 = 2
28054       --
28055       THEN
28056       xla_accounting_err_pkg.build_message
28057                                     (p_appli_s_name            => 'XLA'
28058                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28059                                     ,p_token_1                 => 'LINE_NUMBER'
28060                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28061                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28062                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28066                                                                             ,l_component_appl_id
28063                                                                              l_component_type
28064                                                                             ,l_component_code
28065                                                                             ,l_component_type_code
28067                                                                             ,l_amb_context_code
28068                                                                             ,l_entity_code
28069                                                                             ,l_event_class_code
28070                                                                            )
28071                                     ,p_token_3                 => 'OWNER'
28072                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28073                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28074                                                                           ,p_lookup_code    => l_component_type_code
28075                                                                          )
28076                                     ,p_token_4                 => 'PRODUCT_NAME'
28077                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28078                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28079                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28080                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28081                                     ,p_ae_header_id            =>  NULL
28082                                        );
28083 
28084         IF (C_LEVEL_ERROR>= g_log_level) THEN
28085                  trace
28086                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28087                       ,p_level    => C_LEVEL_ERROR
28088                       ,p_module   => l_log_module);
28089         END IF;
28090       END IF;
28091    END IF;
28092    --
28093    --
28094    ------------------------------------------------------------------------------------------------
28095    -- 4219869 Business Flow
28096    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28097    -- Prior Entry.  Currently, the following code is always generated.
28098    ------------------------------------------------------------------------------------------------
28099    XLA_AE_LINES_PKG.ValidateCurrentLine;
28100 
28101    ------------------------------------------------------------------------------------
28102    -- 4219869 Business Flow
28103    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28104    ------------------------------------------------------------------------------------
28105    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28106 
28107    ----------------------------------------------------------------------------------
28108    -- 4219869 Business Flow
28109    -- Update journal entry status -- Need to generate this within IF <condition>
28110    ----------------------------------------------------------------------------------
28111    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28112          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28113          ,p_balance_type_code => l_balance_type_code
28114          );
28115 
28116    -------------------------------------------------------------------------------------------
28117    -- 4262811 - Generate the Accrual Reversal lines
28118    -------------------------------------------------------------------------------------------
28119    BEGIN
28120       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28121                               (g_array_event(p_event_id).array_value_num('header_index'));
28122       IF l_acc_rev_flag IS NULL THEN
28123          l_acc_rev_flag := 'N';
28124       END IF;
28125    EXCEPTION
28126       WHEN OTHERS THEN
28127          l_acc_rev_flag := 'N';
28128    END;
28129    --
28130    IF (l_acc_rev_flag = 'Y') THEN
28131 
28132        -- 4645092  ------------------------------------------------------------------------------
28133        -- To allow MPA report to determine if it should generate report process
28134        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28135        ------------------------------------------------------------------------------------------
28136 
28137        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28138        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28139    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
28140    -- call ADRs
28141    -- Bug 4922099
28142    --
28143    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28144         (NVL(l_actual_upg_option, 'N') = 'O') OR
28145         (NVL(l_enc_upg_option, 'N') = 'O')
28146       )
28147    THEN
28148    NULL;
28149    --
28150    --
28151    
28152   l_ccid := AcctDerRule_36(
28153            p_application_id           => p_application_id
28154          , p_ae_header_id             => l_ae_header_id 
28155 , p_source_38 => p_source_38
28156          , x_transaction_coa_id       => l_adr_transaction_coa_id
28157          , x_accounting_coa_id        => l_adr_accounting_coa_id
28161 
28158          , x_value_type_code          => l_adr_value_type_code
28159          , p_side                     => 'NA'
28160    );
28162    xla_ae_lines_pkg.set_ccid(
28163     p_code_combination_id          => l_ccid
28164   , p_value_type_code              => l_adr_value_type_code
28165   , p_transaction_coa_id           => l_adr_transaction_coa_id
28166   , p_accounting_coa_id            => l_adr_accounting_coa_id
28167   , p_adr_code                     => 'TRX_DIST_CCID'
28168   , p_adr_type_code                => 'S'
28169   , p_component_type               => l_component_type
28170   , p_component_code               => l_component_code
28171   , p_component_type_code          => l_component_type_code
28172   , p_component_appl_id            => l_component_appl_id
28173   , p_amb_context_code             => l_amb_context_code
28174   , p_side                         => 'NA'
28175   );
28176 
28177 
28178    --
28179    --
28180    END IF;
28181 
28182        --
28183        -- Update the line information that should be overwritten
28184        --
28185        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28186                                          p_header_num   => 1);
28187        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28188 
28189        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28190 
28191        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28192           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28193        END IF;
28194 
28195       --
28196       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28197       --
28198       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28199           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28200       ELSE
28201           ---------------------------------------------------------------------------------------------------
28202           -- 4262811a Switch Sign
28203           ---------------------------------------------------------------------------------------------------
28204           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28205           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28206                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28207           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28208                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28209           -- 5132302
28210           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28211                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28212 
28213       END IF;
28214 
28215       -- 4955764
28216       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28217       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28218 
28219 
28220       XLA_AE_LINES_PKG.ValidateCurrentLine;
28221       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28222 
28223       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28224                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28225                ,p_balance_type_code => l_balance_type_code);
28226 
28227    END IF;
28228 
28229    -----------------------------------------------------------------------------------------
28230    -- 4262811 Multiperiod Accounting
28231    -----------------------------------------------------------------------------------------
28232      -- No MPA option is assigned.
28233 
28234 
28235 END IF;
28236 END IF;
28237 --
28238 
28239 --
28240 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28241    trace
28242       (p_msg      => 'END of AcctLineType_77'
28243       ,p_level    => C_LEVEL_PROCEDURE
28244       ,p_module   => l_log_module);
28245 END IF;
28246 --
28247 EXCEPTION
28248   WHEN xla_exceptions_pkg.application_exception THEN
28249       RAISE;
28250   WHEN OTHERS THEN
28251        xla_exceptions_pkg.raise_message
28252            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_77');
28253 END AcctLineType_77;
28254 --
28255 
28256 ---------------------------------------
28257 --
28258 -- PRIVATE FUNCTION
28259 --         AcctLineType_78
28260 --
28261 ---------------------------------------
28262 PROCEDURE AcctLineType_78 (
28263   p_application_id        IN NUMBER
28264  ,p_event_id              IN NUMBER
28265  ,p_calculate_acctd_flag  IN VARCHAR2
28266  ,p_calculate_g_l_flag    IN VARCHAR2
28267  ,p_actual_flag           IN OUT VARCHAR2
28268  ,p_balance_type_code     OUT VARCHAR2
28269  ,p_gain_or_loss_ref      OUT VARCHAR2
28270  
28271 --Transaction Distribution GL Account
28272  , p_source_38            IN NUMBER
28273 --Bill To Customer Account Identifier
28274  , p_source_49            IN NUMBER
28275 --Bill To Customer Site Use Identifier
28276  , p_source_50            IN NUMBER
28277 --SLA Party Type
28278  , p_source_51            IN VARCHAR2
28279 --Transaction Distribution Account Class
28283 --Transaction Distribution Type
28280  , p_source_55            IN VARCHAR2
28281 --Transaction Distribution Identifier
28282  , p_source_56            IN NUMBER
28284  , p_source_57            IN VARCHAR2
28285 --Transaction Distribution Entered Amount
28286  , p_source_58            IN NUMBER
28287 --Transaction Currency Code
28288  , p_source_59            IN VARCHAR2
28289 --Transaction Exchange Date
28290  , p_source_60            IN DATE
28291 --Transaction Exchange Rate
28292  , p_source_61            IN NUMBER
28293 --Transaction Exchange Rate Type
28294  , p_source_62            IN VARCHAR2
28295 --Transaction Accounting Amount
28296  , p_source_63            IN NUMBER
28297 --Transaction Tax Line Identifier
28298  , p_source_97            IN NUMBER
28299 )
28300 IS
28301 
28302 l_component_type              VARCHAR2(80);
28303 l_component_code              VARCHAR2(30);
28304 l_component_type_code         VARCHAR2(1);
28305 l_component_appl_id           INTEGER;
28306 l_amb_context_code            VARCHAR2(30);
28307 l_entity_code                 VARCHAR2(30);
28308 l_event_class_code            VARCHAR2(30);
28309 l_ae_header_id                NUMBER;
28310 l_event_type_code             VARCHAR2(30);
28311 l_line_definition_code        VARCHAR2(30);
28312 l_line_definition_owner_code  VARCHAR2(1);
28313 --
28314 -- adr variables
28315 l_segment                     VARCHAR2(30);
28316 l_ccid                        NUMBER;
28317 l_adr_transaction_coa_id      NUMBER;
28318 l_adr_accounting_coa_id       NUMBER;
28319 l_adr_flexfield_segment_code  VARCHAR2(30);
28320 l_adr_flex_value_set_id       NUMBER;
28321 l_adr_value_type_code         VARCHAR2(30);
28322 l_adr_value_combination_id    NUMBER;
28323 l_adr_value_segment_code      VARCHAR2(30);
28324 
28325 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28326 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28327 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28328 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28329 
28330 -- 4262811 Variables ------------------------------------------------------------------------------------------
28331 l_entered_amt_idx             NUMBER;
28332 l_accted_amt_idx              NUMBER;
28333 l_acc_rev_flag                VARCHAR2(1);
28334 l_accrual_line_num            NUMBER;
28335 l_tmp_amt                     NUMBER;
28336 l_acc_rev_natural_side_code   VARCHAR2(1);
28337 
28338 l_num_entries                 NUMBER;
28339 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28340 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28341 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28342 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28343 l_recog_line_1                NUMBER;
28344 l_recog_line_2                NUMBER;
28345 
28346 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28347 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28348 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28349 
28350 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28351 
28352 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28353 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28354 
28355 ---------------------------------------------------------------------------------------------------------------
28356 
28357 
28358 --
28359 -- bulk performance
28360 --
28361 l_balance_type_code           VARCHAR2(1);
28362 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28363 l_log_module                  VARCHAR2(240);
28364 
28365 --
28366 -- Upgrade strategy
28367 --
28368 l_actual_upg_option           VARCHAR2(1);
28369 l_enc_upg_option           VARCHAR2(1);
28370 
28371 --
28372 BEGIN
28373 --
28374 IF g_log_enabled THEN
28375       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_78';
28376 END IF;
28377 --
28378 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28379 
28380       trace
28381          (p_msg      => 'BEGIN of AcctLineType_78'
28382          ,p_level    => C_LEVEL_PROCEDURE
28383          ,p_module   => l_log_module);
28384 
28385 END IF;
28386 --
28387 l_component_type             := 'AMB_JLT';
28388 l_component_code             := 'DM_REV';
28389 l_component_type_code        := 'S';
28390 l_component_appl_id          :=  222;
28391 l_amb_context_code           := 'DEFAULT';
28392 l_entity_code                := 'TRANSACTIONS';
28393 l_event_class_code           := 'DEBIT_MEMO';
28394 l_event_type_code            := 'DEBIT_MEMO_ALL';
28395 l_line_definition_owner_code := 'S';
28396 l_line_definition_code       := 'AR_DM_DEFAULT_ACCRUAL';
28397 --
28398 l_balance_type_code          := 'A';
28399 l_segment                     := NULL;
28400 l_ccid                        := NULL;
28401 l_adr_transaction_coa_id      := NULL;
28402 l_adr_accounting_coa_id       := NULL;
28403 l_adr_flexfield_segment_code  := NULL;
28404 l_adr_flex_value_set_id       := NULL;
28405 l_adr_value_type_code         := NULL;
28406 l_adr_value_combination_id    := NULL;
28407 l_adr_value_segment_code      := NULL;
28408 
28409 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28410 l_bflow_class_code           := '';    -- 4219869 Business Flow
28414 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28411 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28412 l_budgetary_control_flag     := 'N';
28413 
28415 l_bflow_applied_to_amt       := NULL; -- 5132302
28416 l_entered_amt_idx            := NULL;          -- 4262811
28417 l_accted_amt_idx             := NULL;          -- 4262811
28418 l_acc_rev_flag               := NULL;          -- 4262811
28419 l_accrual_line_num           := NULL;          -- 4262811
28420 l_tmp_amt                    := NULL;          -- 4262811
28421 --
28422  
28423 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28424     l_balance_type_code <> 'B' THEN
28425 IF NVL(p_source_55,'
28426 ') =  'REV'
28427  THEN 
28428 
28429    --
28430    XLA_AE_LINES_PKG.SetNewLine;
28431 
28432    p_balance_type_code          := l_balance_type_code;
28433    -- set the flag so later we will know whether the gain loss line needs to be created
28434    
28435    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
28436      p_actual_flag :='A';
28437    END IF;
28438 
28439    --
28440    -- bulk performance
28441    --
28442    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
28443                                       p_header_num   => 0); -- 4262811
28444    --
28445    -- set accounting line options
28446    --
28447    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
28448            p_natural_side_code          => 'C'
28449          , p_gain_or_loss_flag          => 'N'
28450          , p_gl_transfer_mode_code      => 'S'
28451          , p_acct_entry_type_code       => 'A'
28452          , p_switch_side_flag           => 'Y'
28453          , p_merge_duplicate_code       => 'A'
28454          );
28455    --
28456    l_acc_rev_natural_side_code := 'D';  -- 4262811
28457    -- 
28458    --
28459    -- set accounting line type info
28460    --
28461    xla_ae_lines_pkg.SetAcctLineType
28462       (p_component_type             => l_component_type
28463       ,p_event_type_code            => l_event_type_code
28464       ,p_line_definition_owner_code => l_line_definition_owner_code
28465       ,p_line_definition_code       => l_line_definition_code
28466       ,p_accounting_line_code       => l_component_code
28467       ,p_accounting_line_type_code  => l_component_type_code
28468       ,p_accounting_line_appl_id    => l_component_appl_id
28469       ,p_amb_context_code           => l_amb_context_code
28470       ,p_entity_code                => l_entity_code
28471       ,p_event_class_code           => l_event_class_code);
28472    --
28473    -- set accounting class
28474    --
28475    xla_ae_lines_pkg.SetAcctClass(
28476            p_accounting_class_code  => 'REVENUE'
28477          , p_ae_header_id           => l_ae_header_id
28478          );
28479 
28480    --
28481    -- set rounding class
28482    --
28483    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
28484                       'RECEIVABLE';
28485 
28486    --
28487    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
28488    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
28489    --
28490    -- bulk performance
28491    --
28492    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
28493 
28494    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
28495       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
28496 
28497    -- 4955764
28498    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28499       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
28500 
28501    -- 4458381 Public Sector Enh
28502    
28503    --
28504    -- set accounting attributes for the line type
28505    --
28506    l_entered_amt_idx := 3;
28507    l_accted_amt_idx  := 8;
28508    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
28509    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
28510    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
28511    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
28512    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
28513    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
28514    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
28515    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
28516    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
28517    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
28518    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
28519    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
28520    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
28521    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
28522    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
28523    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
28524    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
28525    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
28526    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
28527    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
28528    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
28529    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
28533 
28530    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
28531    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
28532    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
28534    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
28535    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
28536 
28537    ---------------------------------------------------------------------------------------------------------------
28538    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
28539    ---------------------------------------------------------------------------------------------------------------
28540    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
28541 
28542    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28543    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
28544 
28545    IF xla_accounting_cache_pkg.GetValueChar
28546          (p_source_code         => 'LEDGER_CATEGORY_CODE'
28547          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
28548    AND l_bflow_method_code = 'PRIOR_ENTRY'
28549 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
28550    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
28551          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
28552        )
28553    THEN
28554          xla_ae_lines_pkg.BflowUpgEntry
28555            (p_business_method_code    => l_bflow_method_code
28556            ,p_business_class_code     => l_bflow_class_code
28557            ,p_balance_type            => l_balance_type_code);
28558    ELSE
28559       NULL;
28560 -- No business flow processing for business flow method of NONE.
28561    END IF;
28562 
28563    --
28564    -- call analytical criteria
28565    --
28566    
28567    --
28568    -- call description
28569    --
28570    -- No description or it is inherited.
28571    --
28572    -- call ADRs
28573    -- Bug 4922099
28574    --
28575    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28576         (NVL(l_actual_upg_option, 'N') = 'O') OR
28577         (NVL(l_enc_upg_option, 'N') = 'O')
28578       )
28579    THEN
28580    NULL;
28581    --
28582    --
28583    
28584   l_ccid := AcctDerRule_36(
28585            p_application_id           => p_application_id
28586          , p_ae_header_id             => l_ae_header_id 
28587 , p_source_38 => p_source_38
28588          , x_transaction_coa_id       => l_adr_transaction_coa_id
28589          , x_accounting_coa_id        => l_adr_accounting_coa_id
28590          , x_value_type_code          => l_adr_value_type_code
28591          , p_side                     => 'NA'
28592    );
28593 
28594    xla_ae_lines_pkg.set_ccid(
28595     p_code_combination_id          => l_ccid
28596   , p_value_type_code              => l_adr_value_type_code
28597   , p_transaction_coa_id           => l_adr_transaction_coa_id
28598   , p_accounting_coa_id            => l_adr_accounting_coa_id
28599   , p_adr_code                     => 'TRX_DIST_CCID'
28600   , p_adr_type_code                => 'S'
28601   , p_component_type               => l_component_type
28602   , p_component_code               => l_component_code
28603   , p_component_type_code          => l_component_type_code
28604   , p_component_appl_id            => l_component_appl_id
28605   , p_amb_context_code             => l_amb_context_code
28606   , p_side                         => 'NA'
28607   );
28608 
28609 
28610    --
28611    --
28612    END IF;
28613    --
28614    -- Bug 4922099
28615    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
28616           (NVL(l_enc_upg_option, 'N') = 'O')
28617         ) AND
28618         (l_bflow_method_code = 'PRIOR_ENTRY')
28619       )
28620    THEN
28621       IF
28622       --
28623       1 = 2
28624       --
28625       THEN
28626       xla_accounting_err_pkg.build_message
28627                                     (p_appli_s_name            => 'XLA'
28628                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28629                                     ,p_token_1                 => 'LINE_NUMBER'
28630                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
28631                                     ,p_token_2                 => 'LINE_TYPE_NAME'
28632                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
28633                                                                              l_component_type
28634                                                                             ,l_component_code
28635                                                                             ,l_component_type_code
28636                                                                             ,l_component_appl_id
28637                                                                             ,l_amb_context_code
28638                                                                             ,l_entity_code
28639                                                                             ,l_event_class_code
28640                                                                            )
28641                                     ,p_token_3                 => 'OWNER'
28645                                                                          )
28642                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
28643                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
28644                                                                           ,p_lookup_code    => l_component_type_code
28646                                     ,p_token_4                 => 'PRODUCT_NAME'
28647                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
28648                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
28649                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
28650                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
28651                                     ,p_ae_header_id            =>  NULL
28652                                        );
28653 
28654         IF (C_LEVEL_ERROR>= g_log_level) THEN
28655                  trace
28656                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
28657                       ,p_level    => C_LEVEL_ERROR
28658                       ,p_module   => l_log_module);
28659         END IF;
28660       END IF;
28661    END IF;
28662    --
28663    --
28664    ------------------------------------------------------------------------------------------------
28665    -- 4219869 Business Flow
28666    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
28667    -- Prior Entry.  Currently, the following code is always generated.
28668    ------------------------------------------------------------------------------------------------
28669    XLA_AE_LINES_PKG.ValidateCurrentLine;
28670 
28671    ------------------------------------------------------------------------------------
28672    -- 4219869 Business Flow
28673    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
28674    ------------------------------------------------------------------------------------
28675    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28676 
28677    ----------------------------------------------------------------------------------
28678    -- 4219869 Business Flow
28679    -- Update journal entry status -- Need to generate this within IF <condition>
28680    ----------------------------------------------------------------------------------
28681    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28682          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
28683          ,p_balance_type_code => l_balance_type_code
28684          );
28685 
28686    -------------------------------------------------------------------------------------------
28687    -- 4262811 - Generate the Accrual Reversal lines
28688    -------------------------------------------------------------------------------------------
28689    BEGIN
28690       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
28691                               (g_array_event(p_event_id).array_value_num('header_index'));
28692       IF l_acc_rev_flag IS NULL THEN
28693          l_acc_rev_flag := 'N';
28694       END IF;
28695    EXCEPTION
28696       WHEN OTHERS THEN
28697          l_acc_rev_flag := 'N';
28698    END;
28699    --
28700    IF (l_acc_rev_flag = 'Y') THEN
28701 
28702        -- 4645092  ------------------------------------------------------------------------------
28703        -- To allow MPA report to determine if it should generate report process
28704        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
28705        ------------------------------------------------------------------------------------------
28706 
28707        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
28708        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
28709    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
28710    -- call ADRs
28711    -- Bug 4922099
28712    --
28713    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
28714         (NVL(l_actual_upg_option, 'N') = 'O') OR
28715         (NVL(l_enc_upg_option, 'N') = 'O')
28716       )
28717    THEN
28718    NULL;
28719    --
28720    --
28721    
28722   l_ccid := AcctDerRule_36(
28723            p_application_id           => p_application_id
28724          , p_ae_header_id             => l_ae_header_id 
28725 , p_source_38 => p_source_38
28726          , x_transaction_coa_id       => l_adr_transaction_coa_id
28727          , x_accounting_coa_id        => l_adr_accounting_coa_id
28728          , x_value_type_code          => l_adr_value_type_code
28729          , p_side                     => 'NA'
28730    );
28731 
28732    xla_ae_lines_pkg.set_ccid(
28733     p_code_combination_id          => l_ccid
28734   , p_value_type_code              => l_adr_value_type_code
28735   , p_transaction_coa_id           => l_adr_transaction_coa_id
28736   , p_accounting_coa_id            => l_adr_accounting_coa_id
28737   , p_adr_code                     => 'TRX_DIST_CCID'
28738   , p_adr_type_code                => 'S'
28739   , p_component_type               => l_component_type
28740   , p_component_code               => l_component_code
28741   , p_component_type_code          => l_component_type_code
28742   , p_component_appl_id            => l_component_appl_id
28746 
28743   , p_amb_context_code             => l_amb_context_code
28744   , p_side                         => 'NA'
28745   );
28747 
28748    --
28749    --
28750    END IF;
28751 
28752        --
28753        -- Update the line information that should be overwritten
28754        --
28755        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
28756                                          p_header_num   => 1);
28757        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
28758 
28759        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
28760 
28761        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
28762           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
28763        END IF;
28764 
28765       --
28766       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
28767       --
28768       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
28769           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
28770       ELSE
28771           ---------------------------------------------------------------------------------------------------
28772           -- 4262811a Switch Sign
28773           ---------------------------------------------------------------------------------------------------
28774           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
28775           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28776                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28777           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
28778                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28779           -- 5132302
28780           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
28781                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
28782 
28783       END IF;
28784 
28785       -- 4955764
28786       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
28787       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
28788 
28789 
28790       XLA_AE_LINES_PKG.ValidateCurrentLine;
28791       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
28792 
28793       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
28794                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
28795                ,p_balance_type_code => l_balance_type_code);
28796 
28797    END IF;
28798 
28799    -----------------------------------------------------------------------------------------
28800    -- 4262811 Multiperiod Accounting
28801    -----------------------------------------------------------------------------------------
28802      -- No MPA option is assigned.
28803 
28804 
28805 END IF;
28806 END IF;
28807 --
28808 
28809 --
28810 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28811    trace
28812       (p_msg      => 'END of AcctLineType_78'
28813       ,p_level    => C_LEVEL_PROCEDURE
28814       ,p_module   => l_log_module);
28815 END IF;
28816 --
28817 EXCEPTION
28818   WHEN xla_exceptions_pkg.application_exception THEN
28819       RAISE;
28820   WHEN OTHERS THEN
28821        xla_exceptions_pkg.raise_message
28822            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_78');
28823 END AcctLineType_78;
28824 --
28825 
28826 ---------------------------------------
28827 --
28828 -- PRIVATE FUNCTION
28829 --         AcctLineType_79
28830 --
28831 ---------------------------------------
28832 PROCEDURE AcctLineType_79 (
28833   p_application_id        IN NUMBER
28834  ,p_event_id              IN NUMBER
28835  ,p_calculate_acctd_flag  IN VARCHAR2
28836  ,p_calculate_g_l_flag    IN VARCHAR2
28837  ,p_actual_flag           IN OUT VARCHAR2
28838  ,p_balance_type_code     OUT VARCHAR2
28839  ,p_gain_or_loss_ref      OUT VARCHAR2
28840  
28841 --Transaction Distribution GL Account
28842  , p_source_38            IN NUMBER
28843 --Bill To Customer Account Identifier
28844  , p_source_49            IN NUMBER
28845 --Bill To Customer Site Use Identifier
28846  , p_source_50            IN NUMBER
28847 --SLA Party Type
28848  , p_source_51            IN VARCHAR2
28849 --Transaction Distribution Account Class
28850  , p_source_55            IN VARCHAR2
28851 --Transaction Distribution Identifier
28852  , p_source_56            IN NUMBER
28853 --Transaction Distribution Type
28854  , p_source_57            IN VARCHAR2
28855 --Transaction Distribution Entered Amount
28856  , p_source_58            IN NUMBER
28857 --Transaction Currency Code
28858  , p_source_59            IN VARCHAR2
28859 --Transaction Exchange Date
28860  , p_source_60            IN DATE
28861 --Transaction Exchange Rate
28862  , p_source_61            IN NUMBER
28863 --Transaction Exchange Rate Type
28864  , p_source_62            IN VARCHAR2
28865 --Transaction Accounting Amount
28866  , p_source_63            IN NUMBER
28867 --Transaction Tax Line Identifier
28868  , p_source_97            IN NUMBER
28869 )
28870 IS
28871 
28875 l_component_appl_id           INTEGER;
28872 l_component_type              VARCHAR2(80);
28873 l_component_code              VARCHAR2(30);
28874 l_component_type_code         VARCHAR2(1);
28876 l_amb_context_code            VARCHAR2(30);
28877 l_entity_code                 VARCHAR2(30);
28878 l_event_class_code            VARCHAR2(30);
28879 l_ae_header_id                NUMBER;
28880 l_event_type_code             VARCHAR2(30);
28881 l_line_definition_code        VARCHAR2(30);
28882 l_line_definition_owner_code  VARCHAR2(1);
28883 --
28884 -- adr variables
28885 l_segment                     VARCHAR2(30);
28886 l_ccid                        NUMBER;
28887 l_adr_transaction_coa_id      NUMBER;
28888 l_adr_accounting_coa_id       NUMBER;
28889 l_adr_flexfield_segment_code  VARCHAR2(30);
28890 l_adr_flex_value_set_id       NUMBER;
28891 l_adr_value_type_code         VARCHAR2(30);
28892 l_adr_value_combination_id    NUMBER;
28893 l_adr_value_segment_code      VARCHAR2(30);
28894 
28895 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
28896 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
28897 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
28898 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
28899 
28900 -- 4262811 Variables ------------------------------------------------------------------------------------------
28901 l_entered_amt_idx             NUMBER;
28902 l_accted_amt_idx              NUMBER;
28903 l_acc_rev_flag                VARCHAR2(1);
28904 l_accrual_line_num            NUMBER;
28905 l_tmp_amt                     NUMBER;
28906 l_acc_rev_natural_side_code   VARCHAR2(1);
28907 
28908 l_num_entries                 NUMBER;
28909 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
28910 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
28911 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
28912 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
28913 l_recog_line_1                NUMBER;
28914 l_recog_line_2                NUMBER;
28915 
28916 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
28917 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
28918 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
28919 
28920 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
28921 
28922 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
28923 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
28924 
28925 ---------------------------------------------------------------------------------------------------------------
28926 
28927 
28928 --
28929 -- bulk performance
28930 --
28931 l_balance_type_code           VARCHAR2(1);
28932 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
28933 l_log_module                  VARCHAR2(240);
28934 
28935 --
28936 -- Upgrade strategy
28937 --
28938 l_actual_upg_option           VARCHAR2(1);
28939 l_enc_upg_option           VARCHAR2(1);
28940 
28941 --
28942 BEGIN
28943 --
28944 IF g_log_enabled THEN
28945       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_79';
28946 END IF;
28947 --
28948 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
28949 
28950       trace
28951          (p_msg      => 'BEGIN of AcctLineType_79'
28952          ,p_level    => C_LEVEL_PROCEDURE
28953          ,p_module   => l_log_module);
28954 
28955 END IF;
28956 --
28957 l_component_type             := 'AMB_JLT';
28958 l_component_code             := 'DM_ROUND';
28959 l_component_type_code        := 'S';
28960 l_component_appl_id          :=  222;
28961 l_amb_context_code           := 'DEFAULT';
28962 l_entity_code                := 'TRANSACTIONS';
28963 l_event_class_code           := 'DEBIT_MEMO';
28964 l_event_type_code            := 'DEBIT_MEMO_ALL';
28965 l_line_definition_owner_code := 'S';
28966 l_line_definition_code       := 'AR_DM_DEFAULT_ACCRUAL';
28967 --
28968 l_balance_type_code          := 'A';
28969 l_segment                     := NULL;
28970 l_ccid                        := NULL;
28971 l_adr_transaction_coa_id      := NULL;
28972 l_adr_accounting_coa_id       := NULL;
28973 l_adr_flexfield_segment_code  := NULL;
28974 l_adr_flex_value_set_id       := NULL;
28975 l_adr_value_type_code         := NULL;
28976 l_adr_value_combination_id    := NULL;
28977 l_adr_value_segment_code      := NULL;
28978 
28979 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
28980 l_bflow_class_code           := '';    -- 4219869 Business Flow
28981 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
28982 l_budgetary_control_flag     := 'N';
28983 
28984 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
28985 l_bflow_applied_to_amt       := NULL; -- 5132302
28986 l_entered_amt_idx            := NULL;          -- 4262811
28987 l_accted_amt_idx             := NULL;          -- 4262811
28988 l_acc_rev_flag               := NULL;          -- 4262811
28989 l_accrual_line_num           := NULL;          -- 4262811
28990 l_tmp_amt                    := NULL;          -- 4262811
28991 --
28992  
28993 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
28994     l_balance_type_code <> 'B' THEN
28995 IF NVL(p_source_55,'
28996 ') =  'ROUND'
28997  THEN 
28998 
28999    --
29003    -- set the flag so later we will know whether the gain loss line needs to be created
29000    XLA_AE_LINES_PKG.SetNewLine;
29001 
29002    p_balance_type_code          := l_balance_type_code;
29004    
29005    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29006      p_actual_flag :='A';
29007    END IF;
29008 
29009    --
29010    -- bulk performance
29011    --
29012    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29013                                       p_header_num   => 0); -- 4262811
29014    --
29015    -- set accounting line options
29016    --
29017    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29018            p_natural_side_code          => 'C'
29019          , p_gain_or_loss_flag          => 'N'
29020          , p_gl_transfer_mode_code      => 'S'
29021          , p_acct_entry_type_code       => 'A'
29022          , p_switch_side_flag           => 'Y'
29023          , p_merge_duplicate_code       => 'A'
29024          );
29025    --
29026    l_acc_rev_natural_side_code := 'D';  -- 4262811
29027    -- 
29028    --
29029    -- set accounting line type info
29030    --
29031    xla_ae_lines_pkg.SetAcctLineType
29032       (p_component_type             => l_component_type
29033       ,p_event_type_code            => l_event_type_code
29034       ,p_line_definition_owner_code => l_line_definition_owner_code
29035       ,p_line_definition_code       => l_line_definition_code
29036       ,p_accounting_line_code       => l_component_code
29037       ,p_accounting_line_type_code  => l_component_type_code
29038       ,p_accounting_line_appl_id    => l_component_appl_id
29039       ,p_amb_context_code           => l_amb_context_code
29040       ,p_entity_code                => l_entity_code
29041       ,p_event_class_code           => l_event_class_code);
29042    --
29043    -- set accounting class
29044    --
29045    xla_ae_lines_pkg.SetAcctClass(
29046            p_accounting_class_code  => 'ROUNDING'
29047          , p_ae_header_id           => l_ae_header_id
29048          );
29049 
29050    --
29051    -- set rounding class
29052    --
29053    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29054                       'RECEIVABLE';
29055 
29056    --
29057    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29058    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29059    --
29060    -- bulk performance
29061    --
29062    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29063 
29064    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29065       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29066 
29067    -- 4955764
29068    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29069       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29070 
29071    -- 4458381 Public Sector Enh
29072    
29073    --
29074    -- set accounting attributes for the line type
29075    --
29076    l_entered_amt_idx := 3;
29077    l_accted_amt_idx  := 8;
29078    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29079    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29080    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
29081    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
29082    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
29083    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
29084    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
29085    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
29086    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
29087    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
29088    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
29089    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
29090    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
29091    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
29092    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
29093    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
29094    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
29095    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
29096    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
29097    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
29098    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
29099    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
29100    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
29101    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
29102    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
29103 
29104    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29105    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29106 
29107    ---------------------------------------------------------------------------------------------------------------
29108    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29109    ---------------------------------------------------------------------------------------------------------------
29110    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29111 
29115    IF xla_accounting_cache_pkg.GetValueChar
29112    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29113    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29114 
29116          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29117          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29118    AND l_bflow_method_code = 'PRIOR_ENTRY'
29119 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29120    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29121          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29122        )
29123    THEN
29124          xla_ae_lines_pkg.BflowUpgEntry
29125            (p_business_method_code    => l_bflow_method_code
29126            ,p_business_class_code     => l_bflow_class_code
29127            ,p_balance_type            => l_balance_type_code);
29128    ELSE
29129       NULL;
29130 -- No business flow processing for business flow method of NONE.
29131    END IF;
29132 
29133    --
29134    -- call analytical criteria
29135    --
29136    
29137    --
29138    -- call description
29139    --
29140    -- No description or it is inherited.
29141    --
29142    -- call ADRs
29143    -- Bug 4922099
29144    --
29145    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29146         (NVL(l_actual_upg_option, 'N') = 'O') OR
29147         (NVL(l_enc_upg_option, 'N') = 'O')
29148       )
29149    THEN
29150    NULL;
29151    --
29152    --
29153    
29154   l_ccid := AcctDerRule_36(
29155            p_application_id           => p_application_id
29156          , p_ae_header_id             => l_ae_header_id 
29157 , p_source_38 => p_source_38
29158          , x_transaction_coa_id       => l_adr_transaction_coa_id
29159          , x_accounting_coa_id        => l_adr_accounting_coa_id
29160          , x_value_type_code          => l_adr_value_type_code
29161          , p_side                     => 'NA'
29162    );
29163 
29164    xla_ae_lines_pkg.set_ccid(
29165     p_code_combination_id          => l_ccid
29166   , p_value_type_code              => l_adr_value_type_code
29167   , p_transaction_coa_id           => l_adr_transaction_coa_id
29168   , p_accounting_coa_id            => l_adr_accounting_coa_id
29169   , p_adr_code                     => 'TRX_DIST_CCID'
29170   , p_adr_type_code                => 'S'
29171   , p_component_type               => l_component_type
29172   , p_component_code               => l_component_code
29173   , p_component_type_code          => l_component_type_code
29174   , p_component_appl_id            => l_component_appl_id
29175   , p_amb_context_code             => l_amb_context_code
29176   , p_side                         => 'NA'
29177   );
29178 
29179 
29180    --
29181    --
29182    END IF;
29183    --
29184    -- Bug 4922099
29185    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29186           (NVL(l_enc_upg_option, 'N') = 'O')
29187         ) AND
29188         (l_bflow_method_code = 'PRIOR_ENTRY')
29189       )
29190    THEN
29191       IF
29192       --
29193       1 = 2
29194       --
29195       THEN
29196       xla_accounting_err_pkg.build_message
29197                                     (p_appli_s_name            => 'XLA'
29198                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29199                                     ,p_token_1                 => 'LINE_NUMBER'
29200                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29201                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29202                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29203                                                                              l_component_type
29204                                                                             ,l_component_code
29205                                                                             ,l_component_type_code
29206                                                                             ,l_component_appl_id
29207                                                                             ,l_amb_context_code
29208                                                                             ,l_entity_code
29209                                                                             ,l_event_class_code
29210                                                                            )
29211                                     ,p_token_3                 => 'OWNER'
29212                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29213                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29214                                                                           ,p_lookup_code    => l_component_type_code
29215                                                                          )
29216                                     ,p_token_4                 => 'PRODUCT_NAME'
29217                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29218                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29219                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29223 
29220                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29221                                     ,p_ae_header_id            =>  NULL
29222                                        );
29224         IF (C_LEVEL_ERROR>= g_log_level) THEN
29225                  trace
29226                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29227                       ,p_level    => C_LEVEL_ERROR
29228                       ,p_module   => l_log_module);
29229         END IF;
29230       END IF;
29231    END IF;
29232    --
29233    --
29234    ------------------------------------------------------------------------------------------------
29235    -- 4219869 Business Flow
29236    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29237    -- Prior Entry.  Currently, the following code is always generated.
29238    ------------------------------------------------------------------------------------------------
29239    XLA_AE_LINES_PKG.ValidateCurrentLine;
29240 
29241    ------------------------------------------------------------------------------------
29242    -- 4219869 Business Flow
29243    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29244    ------------------------------------------------------------------------------------
29245    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29246 
29247    ----------------------------------------------------------------------------------
29248    -- 4219869 Business Flow
29249    -- Update journal entry status -- Need to generate this within IF <condition>
29250    ----------------------------------------------------------------------------------
29251    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29252          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29253          ,p_balance_type_code => l_balance_type_code
29254          );
29255 
29256    -------------------------------------------------------------------------------------------
29257    -- 4262811 - Generate the Accrual Reversal lines
29258    -------------------------------------------------------------------------------------------
29259    BEGIN
29260       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29261                               (g_array_event(p_event_id).array_value_num('header_index'));
29262       IF l_acc_rev_flag IS NULL THEN
29263          l_acc_rev_flag := 'N';
29264       END IF;
29265    EXCEPTION
29266       WHEN OTHERS THEN
29267          l_acc_rev_flag := 'N';
29268    END;
29269    --
29270    IF (l_acc_rev_flag = 'Y') THEN
29271 
29272        -- 4645092  ------------------------------------------------------------------------------
29273        -- To allow MPA report to determine if it should generate report process
29274        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29275        ------------------------------------------------------------------------------------------
29276 
29277        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29278        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29279    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
29280    -- call ADRs
29281    -- Bug 4922099
29282    --
29283    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29284         (NVL(l_actual_upg_option, 'N') = 'O') OR
29285         (NVL(l_enc_upg_option, 'N') = 'O')
29286       )
29287    THEN
29288    NULL;
29289    --
29290    --
29291    
29292   l_ccid := AcctDerRule_36(
29293            p_application_id           => p_application_id
29294          , p_ae_header_id             => l_ae_header_id 
29295 , p_source_38 => p_source_38
29296          , x_transaction_coa_id       => l_adr_transaction_coa_id
29297          , x_accounting_coa_id        => l_adr_accounting_coa_id
29298          , x_value_type_code          => l_adr_value_type_code
29299          , p_side                     => 'NA'
29300    );
29301 
29302    xla_ae_lines_pkg.set_ccid(
29303     p_code_combination_id          => l_ccid
29304   , p_value_type_code              => l_adr_value_type_code
29305   , p_transaction_coa_id           => l_adr_transaction_coa_id
29306   , p_accounting_coa_id            => l_adr_accounting_coa_id
29307   , p_adr_code                     => 'TRX_DIST_CCID'
29308   , p_adr_type_code                => 'S'
29309   , p_component_type               => l_component_type
29310   , p_component_code               => l_component_code
29311   , p_component_type_code          => l_component_type_code
29312   , p_component_appl_id            => l_component_appl_id
29313   , p_amb_context_code             => l_amb_context_code
29314   , p_side                         => 'NA'
29315   );
29316 
29317 
29318    --
29319    --
29320    END IF;
29321 
29322        --
29323        -- Update the line information that should be overwritten
29324        --
29325        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29326                                          p_header_num   => 1);
29327        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29328 
29329        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29330 
29331        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29335       --
29332           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29333        END IF;
29334 
29336       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29337       --
29338       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29339           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29340       ELSE
29341           ---------------------------------------------------------------------------------------------------
29342           -- 4262811a Switch Sign
29343           ---------------------------------------------------------------------------------------------------
29344           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29345           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29346                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29347           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29348                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29349           -- 5132302
29350           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29351                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29352 
29353       END IF;
29354 
29355       -- 4955764
29356       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29357       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29358 
29359 
29360       XLA_AE_LINES_PKG.ValidateCurrentLine;
29361       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29362 
29363       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29364                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29365                ,p_balance_type_code => l_balance_type_code);
29366 
29367    END IF;
29368 
29369    -----------------------------------------------------------------------------------------
29370    -- 4262811 Multiperiod Accounting
29371    -----------------------------------------------------------------------------------------
29372      -- No MPA option is assigned.
29373 
29374 
29375 END IF;
29376 END IF;
29377 --
29378 
29379 --
29380 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29381    trace
29382       (p_msg      => 'END of AcctLineType_79'
29383       ,p_level    => C_LEVEL_PROCEDURE
29384       ,p_module   => l_log_module);
29385 END IF;
29386 --
29387 EXCEPTION
29388   WHEN xla_exceptions_pkg.application_exception THEN
29389       RAISE;
29390   WHEN OTHERS THEN
29391        xla_exceptions_pkg.raise_message
29392            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_79');
29393 END AcctLineType_79;
29394 --
29395 
29396 ---------------------------------------
29397 --
29398 -- PRIVATE FUNCTION
29399 --         AcctLineType_80
29400 --
29401 ---------------------------------------
29402 PROCEDURE AcctLineType_80 (
29403   p_application_id        IN NUMBER
29404  ,p_event_id              IN NUMBER
29405  ,p_calculate_acctd_flag  IN VARCHAR2
29406  ,p_calculate_g_l_flag    IN VARCHAR2
29407  ,p_actual_flag           IN OUT VARCHAR2
29408  ,p_balance_type_code     OUT VARCHAR2
29409  ,p_gain_or_loss_ref      OUT VARCHAR2
29410  
29411 --Transaction Distribution GL Account
29412  , p_source_38            IN NUMBER
29413 --Bill To Customer Account Identifier
29417 --SLA Party Type
29414  , p_source_49            IN NUMBER
29415 --Bill To Customer Site Use Identifier
29416  , p_source_50            IN NUMBER
29418  , p_source_51            IN VARCHAR2
29419 --Transaction Distribution Account Class
29420  , p_source_55            IN VARCHAR2
29421 --Transaction Distribution Identifier
29422  , p_source_56            IN NUMBER
29423 --Transaction Distribution Type
29424  , p_source_57            IN VARCHAR2
29425 --Transaction Distribution Entered Amount
29426  , p_source_58            IN NUMBER
29427 --Transaction Currency Code
29428  , p_source_59            IN VARCHAR2
29429 --Transaction Exchange Date
29430  , p_source_60            IN DATE
29431 --Transaction Exchange Rate
29432  , p_source_61            IN NUMBER
29433 --Transaction Exchange Rate Type
29434  , p_source_62            IN VARCHAR2
29435 --Transaction Accounting Amount
29436  , p_source_63            IN NUMBER
29437 --Transaction Tax Line Identifier
29438  , p_source_97            IN NUMBER
29439 )
29440 IS
29441 
29442 l_component_type              VARCHAR2(80);
29443 l_component_code              VARCHAR2(30);
29444 l_component_type_code         VARCHAR2(1);
29445 l_component_appl_id           INTEGER;
29446 l_amb_context_code            VARCHAR2(30);
29447 l_entity_code                 VARCHAR2(30);
29448 l_event_class_code            VARCHAR2(30);
29449 l_ae_header_id                NUMBER;
29450 l_event_type_code             VARCHAR2(30);
29451 l_line_definition_code        VARCHAR2(30);
29452 l_line_definition_owner_code  VARCHAR2(1);
29453 --
29454 -- adr variables
29455 l_segment                     VARCHAR2(30);
29456 l_ccid                        NUMBER;
29457 l_adr_transaction_coa_id      NUMBER;
29458 l_adr_accounting_coa_id       NUMBER;
29459 l_adr_flexfield_segment_code  VARCHAR2(30);
29460 l_adr_flex_value_set_id       NUMBER;
29461 l_adr_value_type_code         VARCHAR2(30);
29462 l_adr_value_combination_id    NUMBER;
29463 l_adr_value_segment_code      VARCHAR2(30);
29464 
29465 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
29466 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
29467 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
29468 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
29469 
29470 -- 4262811 Variables ------------------------------------------------------------------------------------------
29471 l_entered_amt_idx             NUMBER;
29472 l_accted_amt_idx              NUMBER;
29473 l_acc_rev_flag                VARCHAR2(1);
29474 l_accrual_line_num            NUMBER;
29475 l_tmp_amt                     NUMBER;
29476 l_acc_rev_natural_side_code   VARCHAR2(1);
29477 
29478 l_num_entries                 NUMBER;
29479 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
29480 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
29481 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
29482 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
29483 l_recog_line_1                NUMBER;
29484 l_recog_line_2                NUMBER;
29485 
29486 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
29487 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
29488 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
29489 
29490 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
29491 
29492 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
29493 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
29494 
29495 ---------------------------------------------------------------------------------------------------------------
29496 
29497 
29498 --
29499 -- bulk performance
29500 --
29501 l_balance_type_code           VARCHAR2(1);
29502 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
29503 l_log_module                  VARCHAR2(240);
29504 
29505 --
29506 -- Upgrade strategy
29507 --
29508 l_actual_upg_option           VARCHAR2(1);
29509 l_enc_upg_option           VARCHAR2(1);
29510 
29511 --
29512 BEGIN
29513 --
29514 IF g_log_enabled THEN
29515       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_80';
29516 END IF;
29517 --
29518 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29519 
29520       trace
29521          (p_msg      => 'BEGIN of AcctLineType_80'
29522          ,p_level    => C_LEVEL_PROCEDURE
29523          ,p_module   => l_log_module);
29524 
29525 END IF;
29526 --
29527 l_component_type             := 'AMB_JLT';
29528 l_component_code             := 'DM_SUSPENSE';
29529 l_component_type_code        := 'S';
29530 l_component_appl_id          :=  222;
29531 l_amb_context_code           := 'DEFAULT';
29532 l_entity_code                := 'TRANSACTIONS';
29533 l_event_class_code           := 'DEBIT_MEMO';
29534 l_event_type_code            := 'DEBIT_MEMO_ALL';
29535 l_line_definition_owner_code := 'S';
29536 l_line_definition_code       := 'AR_DM_DEFAULT_ACCRUAL';
29537 --
29538 l_balance_type_code          := 'A';
29539 l_segment                     := NULL;
29540 l_ccid                        := NULL;
29541 l_adr_transaction_coa_id      := NULL;
29542 l_adr_accounting_coa_id       := NULL;
29543 l_adr_flexfield_segment_code  := NULL;
29544 l_adr_flex_value_set_id       := NULL;
29548 
29545 l_adr_value_type_code         := NULL;
29546 l_adr_value_combination_id    := NULL;
29547 l_adr_value_segment_code      := NULL;
29549 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
29550 l_bflow_class_code           := '';    -- 4219869 Business Flow
29551 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
29552 l_budgetary_control_flag     := 'N';
29553 
29554 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
29555 l_bflow_applied_to_amt       := NULL; -- 5132302
29556 l_entered_amt_idx            := NULL;          -- 4262811
29557 l_accted_amt_idx             := NULL;          -- 4262811
29558 l_acc_rev_flag               := NULL;          -- 4262811
29559 l_accrual_line_num           := NULL;          -- 4262811
29560 l_tmp_amt                    := NULL;          -- 4262811
29561 --
29562  
29563 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
29564     l_balance_type_code <> 'B' THEN
29565 IF NVL(p_source_55,'
29566 ') =  'SUSPENSE'
29567  THEN 
29568 
29569    --
29570    XLA_AE_LINES_PKG.SetNewLine;
29571 
29572    p_balance_type_code          := l_balance_type_code;
29573    -- set the flag so later we will know whether the gain loss line needs to be created
29574    
29575    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
29576      p_actual_flag :='A';
29577    END IF;
29578 
29579    --
29580    -- bulk performance
29581    --
29582    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
29583                                       p_header_num   => 0); -- 4262811
29584    --
29585    -- set accounting line options
29586    --
29587    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
29588            p_natural_side_code          => 'C'
29589          , p_gain_or_loss_flag          => 'N'
29590          , p_gl_transfer_mode_code      => 'S'
29591          , p_acct_entry_type_code       => 'A'
29592          , p_switch_side_flag           => 'Y'
29593          , p_merge_duplicate_code       => 'A'
29594          );
29595    --
29596    l_acc_rev_natural_side_code := 'D';  -- 4262811
29597    -- 
29598    --
29599    -- set accounting line type info
29600    --
29601    xla_ae_lines_pkg.SetAcctLineType
29602       (p_component_type             => l_component_type
29603       ,p_event_type_code            => l_event_type_code
29604       ,p_line_definition_owner_code => l_line_definition_owner_code
29605       ,p_line_definition_code       => l_line_definition_code
29606       ,p_accounting_line_code       => l_component_code
29607       ,p_accounting_line_type_code  => l_component_type_code
29608       ,p_accounting_line_appl_id    => l_component_appl_id
29609       ,p_amb_context_code           => l_amb_context_code
29610       ,p_entity_code                => l_entity_code
29611       ,p_event_class_code           => l_event_class_code);
29612    --
29613    -- set accounting class
29614    --
29615    xla_ae_lines_pkg.SetAcctClass(
29616            p_accounting_class_code  => 'SUSPENSE'
29617          , p_ae_header_id           => l_ae_header_id
29618          );
29619 
29620    --
29621    -- set rounding class
29622    --
29623    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
29624                       'RECEIVABLE';
29625 
29626    --
29627    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
29628    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
29629    --
29630    -- bulk performance
29631    --
29632    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
29633 
29634    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
29635       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
29636 
29637    -- 4955764
29638    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29639       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
29640 
29641    -- 4458381 Public Sector Enh
29642    
29643    --
29644    -- set accounting attributes for the line type
29645    --
29646    l_entered_amt_idx := 3;
29647    l_accted_amt_idx  := 8;
29648    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
29649    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
29650    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
29651    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
29652    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
29653    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
29654    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
29655    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
29656    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
29657    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
29658    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
29659    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
29660    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
29661    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
29662    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
29663    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
29664    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
29665    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
29669    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
29666    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
29667    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
29668    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
29670    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
29671    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
29672    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
29673 
29674    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
29675    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
29676 
29677    ---------------------------------------------------------------------------------------------------------------
29678    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
29679    ---------------------------------------------------------------------------------------------------------------
29680    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
29681 
29682    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29683    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
29684 
29685    IF xla_accounting_cache_pkg.GetValueChar
29686          (p_source_code         => 'LEDGER_CATEGORY_CODE'
29687          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
29688    AND l_bflow_method_code = 'PRIOR_ENTRY'
29689 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
29690    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
29691          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
29692        )
29693    THEN
29694          xla_ae_lines_pkg.BflowUpgEntry
29695            (p_business_method_code    => l_bflow_method_code
29696            ,p_business_class_code     => l_bflow_class_code
29697            ,p_balance_type            => l_balance_type_code);
29698    ELSE
29699       NULL;
29700 -- No business flow processing for business flow method of NONE.
29701    END IF;
29702 
29703    --
29704    -- call analytical criteria
29705    --
29706    
29707    --
29708    -- call description
29709    --
29710    -- No description or it is inherited.
29711    --
29712    -- call ADRs
29713    -- Bug 4922099
29714    --
29715    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29716         (NVL(l_actual_upg_option, 'N') = 'O') OR
29717         (NVL(l_enc_upg_option, 'N') = 'O')
29718       )
29719    THEN
29720    NULL;
29721    --
29722    --
29723    
29724   l_ccid := AcctDerRule_36(
29725            p_application_id           => p_application_id
29726          , p_ae_header_id             => l_ae_header_id 
29727 , p_source_38 => p_source_38
29728          , x_transaction_coa_id       => l_adr_transaction_coa_id
29729          , x_accounting_coa_id        => l_adr_accounting_coa_id
29730          , x_value_type_code          => l_adr_value_type_code
29731          , p_side                     => 'NA'
29732    );
29733 
29734    xla_ae_lines_pkg.set_ccid(
29735     p_code_combination_id          => l_ccid
29736   , p_value_type_code              => l_adr_value_type_code
29737   , p_transaction_coa_id           => l_adr_transaction_coa_id
29738   , p_accounting_coa_id            => l_adr_accounting_coa_id
29739   , p_adr_code                     => 'TRX_DIST_CCID'
29740   , p_adr_type_code                => 'S'
29741   , p_component_type               => l_component_type
29742   , p_component_code               => l_component_code
29743   , p_component_type_code          => l_component_type_code
29744   , p_component_appl_id            => l_component_appl_id
29745   , p_amb_context_code             => l_amb_context_code
29746   , p_side                         => 'NA'
29747   );
29748 
29749 
29750    --
29751    --
29752    END IF;
29753    --
29754    -- Bug 4922099
29755    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
29756           (NVL(l_enc_upg_option, 'N') = 'O')
29757         ) AND
29758         (l_bflow_method_code = 'PRIOR_ENTRY')
29759       )
29760    THEN
29761       IF
29762       --
29763       1 = 2
29764       --
29765       THEN
29766       xla_accounting_err_pkg.build_message
29767                                     (p_appli_s_name            => 'XLA'
29768                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29769                                     ,p_token_1                 => 'LINE_NUMBER'
29770                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
29771                                     ,p_token_2                 => 'LINE_TYPE_NAME'
29772                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
29773                                                                              l_component_type
29774                                                                             ,l_component_code
29775                                                                             ,l_component_type_code
29776                                                                             ,l_component_appl_id
29777                                                                             ,l_amb_context_code
29778                                                                             ,l_entity_code
29782                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
29779                                                                             ,l_event_class_code
29780                                                                            )
29781                                     ,p_token_3                 => 'OWNER'
29783                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
29784                                                                           ,p_lookup_code    => l_component_type_code
29785                                                                          )
29786                                     ,p_token_4                 => 'PRODUCT_NAME'
29787                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
29788                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
29789                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
29790                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
29791                                     ,p_ae_header_id            =>  NULL
29792                                        );
29793 
29794         IF (C_LEVEL_ERROR>= g_log_level) THEN
29795                  trace
29796                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
29797                       ,p_level    => C_LEVEL_ERROR
29798                       ,p_module   => l_log_module);
29799         END IF;
29800       END IF;
29801    END IF;
29802    --
29803    --
29804    ------------------------------------------------------------------------------------------------
29805    -- 4219869 Business Flow
29806    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
29807    -- Prior Entry.  Currently, the following code is always generated.
29808    ------------------------------------------------------------------------------------------------
29809    XLA_AE_LINES_PKG.ValidateCurrentLine;
29810 
29811    ------------------------------------------------------------------------------------
29812    -- 4219869 Business Flow
29813    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
29814    ------------------------------------------------------------------------------------
29815    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29816 
29817    ----------------------------------------------------------------------------------
29818    -- 4219869 Business Flow
29819    -- Update journal entry status -- Need to generate this within IF <condition>
29820    ----------------------------------------------------------------------------------
29821    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29822          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
29823          ,p_balance_type_code => l_balance_type_code
29824          );
29825 
29826    -------------------------------------------------------------------------------------------
29827    -- 4262811 - Generate the Accrual Reversal lines
29828    -------------------------------------------------------------------------------------------
29829    BEGIN
29830       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
29831                               (g_array_event(p_event_id).array_value_num('header_index'));
29832       IF l_acc_rev_flag IS NULL THEN
29833          l_acc_rev_flag := 'N';
29834       END IF;
29835    EXCEPTION
29836       WHEN OTHERS THEN
29837          l_acc_rev_flag := 'N';
29838    END;
29839    --
29840    IF (l_acc_rev_flag = 'Y') THEN
29841 
29842        -- 4645092  ------------------------------------------------------------------------------
29843        -- To allow MPA report to determine if it should generate report process
29844        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
29845        ------------------------------------------------------------------------------------------
29846 
29847        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
29848        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
29849    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
29850    -- call ADRs
29851    -- Bug 4922099
29852    --
29853    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
29854         (NVL(l_actual_upg_option, 'N') = 'O') OR
29855         (NVL(l_enc_upg_option, 'N') = 'O')
29856       )
29857    THEN
29858    NULL;
29859    --
29860    --
29861    
29862   l_ccid := AcctDerRule_36(
29863            p_application_id           => p_application_id
29864          , p_ae_header_id             => l_ae_header_id 
29865 , p_source_38 => p_source_38
29866          , x_transaction_coa_id       => l_adr_transaction_coa_id
29867          , x_accounting_coa_id        => l_adr_accounting_coa_id
29868          , x_value_type_code          => l_adr_value_type_code
29869          , p_side                     => 'NA'
29870    );
29871 
29872    xla_ae_lines_pkg.set_ccid(
29873     p_code_combination_id          => l_ccid
29874   , p_value_type_code              => l_adr_value_type_code
29875   , p_transaction_coa_id           => l_adr_transaction_coa_id
29876   , p_accounting_coa_id            => l_adr_accounting_coa_id
29877   , p_adr_code                     => 'TRX_DIST_CCID'
29878   , p_adr_type_code                => 'S'
29882   , p_component_appl_id            => l_component_appl_id
29879   , p_component_type               => l_component_type
29880   , p_component_code               => l_component_code
29881   , p_component_type_code          => l_component_type_code
29883   , p_amb_context_code             => l_amb_context_code
29884   , p_side                         => 'NA'
29885   );
29886 
29887 
29888    --
29889    --
29890    END IF;
29891 
29892        --
29893        -- Update the line information that should be overwritten
29894        --
29895        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
29896                                          p_header_num   => 1);
29897        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
29898 
29899        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
29900 
29901        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
29902           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
29903        END IF;
29904 
29905       --
29906       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
29907       --
29908       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
29909           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
29910       ELSE
29911           ---------------------------------------------------------------------------------------------------
29912           -- 4262811a Switch Sign
29913           ---------------------------------------------------------------------------------------------------
29914           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
29915           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29916                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29917           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
29918                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29919           -- 5132302
29920           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
29921                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
29922 
29923       END IF;
29924 
29925       -- 4955764
29926       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
29927       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
29928 
29929 
29930       XLA_AE_LINES_PKG.ValidateCurrentLine;
29931       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
29932 
29933       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
29934                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
29935                ,p_balance_type_code => l_balance_type_code);
29936 
29937    END IF;
29938 
29939    -----------------------------------------------------------------------------------------
29940    -- 4262811 Multiperiod Accounting
29941    -----------------------------------------------------------------------------------------
29942      -- No MPA option is assigned.
29943 
29944 
29945 END IF;
29946 END IF;
29947 --
29948 
29949 --
29950 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
29951    trace
29952       (p_msg      => 'END of AcctLineType_80'
29953       ,p_level    => C_LEVEL_PROCEDURE
29954       ,p_module   => l_log_module);
29955 END IF;
29956 --
29957 EXCEPTION
29958   WHEN xla_exceptions_pkg.application_exception THEN
29959       RAISE;
29960   WHEN OTHERS THEN
29961        xla_exceptions_pkg.raise_message
29962            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_80');
29963 END AcctLineType_80;
29964 --
29965 
29966 ---------------------------------------
29967 --
29968 -- PRIVATE FUNCTION
29969 --         AcctLineType_81
29970 --
29971 ---------------------------------------
29972 PROCEDURE AcctLineType_81 (
29973   p_application_id        IN NUMBER
29974  ,p_event_id              IN NUMBER
29975  ,p_calculate_acctd_flag  IN VARCHAR2
29976  ,p_calculate_g_l_flag    IN VARCHAR2
29977  ,p_actual_flag           IN OUT VARCHAR2
29978  ,p_balance_type_code     OUT VARCHAR2
29979  ,p_gain_or_loss_ref      OUT VARCHAR2
29980  
29981 --Transaction Distribution GL Account
29982  , p_source_38            IN NUMBER
29983 --Bill To Customer Account Identifier
29984  , p_source_49            IN NUMBER
29985 --Bill To Customer Site Use Identifier
29986  , p_source_50            IN NUMBER
29987 --SLA Party Type
29988  , p_source_51            IN VARCHAR2
29989 --Transaction Distribution Account Class
29990  , p_source_55            IN VARCHAR2
29991 --Transaction Distribution Identifier
29992  , p_source_56            IN NUMBER
29993 --Transaction Distribution Type
29994  , p_source_57            IN VARCHAR2
29995 --Transaction Distribution Entered Amount
29996  , p_source_58            IN NUMBER
29997 --Transaction Currency Code
29998  , p_source_59            IN VARCHAR2
29999 --Transaction Exchange Date
30000  , p_source_60            IN DATE
30001 --Transaction Exchange Rate
30002  , p_source_61            IN NUMBER
30003 --Transaction Exchange Rate Type
30004  , p_source_62            IN VARCHAR2
30008  , p_source_97            IN NUMBER
30005 --Transaction Accounting Amount
30006  , p_source_63            IN NUMBER
30007 --Transaction Tax Line Identifier
30009 )
30010 IS
30011 
30012 l_component_type              VARCHAR2(80);
30013 l_component_code              VARCHAR2(30);
30014 l_component_type_code         VARCHAR2(1);
30015 l_component_appl_id           INTEGER;
30016 l_amb_context_code            VARCHAR2(30);
30017 l_entity_code                 VARCHAR2(30);
30018 l_event_class_code            VARCHAR2(30);
30019 l_ae_header_id                NUMBER;
30020 l_event_type_code             VARCHAR2(30);
30021 l_line_definition_code        VARCHAR2(30);
30022 l_line_definition_owner_code  VARCHAR2(1);
30023 --
30024 -- adr variables
30025 l_segment                     VARCHAR2(30);
30026 l_ccid                        NUMBER;
30027 l_adr_transaction_coa_id      NUMBER;
30028 l_adr_accounting_coa_id       NUMBER;
30029 l_adr_flexfield_segment_code  VARCHAR2(30);
30030 l_adr_flex_value_set_id       NUMBER;
30031 l_adr_value_type_code         VARCHAR2(30);
30032 l_adr_value_combination_id    NUMBER;
30033 l_adr_value_segment_code      VARCHAR2(30);
30034 
30035 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30036 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30037 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30038 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30039 
30040 -- 4262811 Variables ------------------------------------------------------------------------------------------
30041 l_entered_amt_idx             NUMBER;
30042 l_accted_amt_idx              NUMBER;
30043 l_acc_rev_flag                VARCHAR2(1);
30044 l_accrual_line_num            NUMBER;
30045 l_tmp_amt                     NUMBER;
30046 l_acc_rev_natural_side_code   VARCHAR2(1);
30047 
30048 l_num_entries                 NUMBER;
30049 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30050 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30051 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30052 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30053 l_recog_line_1                NUMBER;
30054 l_recog_line_2                NUMBER;
30055 
30056 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30057 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30058 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30059 
30060 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30061 
30062 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30063 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30064 
30065 ---------------------------------------------------------------------------------------------------------------
30066 
30067 
30068 --
30069 -- bulk performance
30070 --
30071 l_balance_type_code           VARCHAR2(1);
30072 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30073 l_log_module                  VARCHAR2(240);
30074 
30075 --
30076 -- Upgrade strategy
30077 --
30078 l_actual_upg_option           VARCHAR2(1);
30079 l_enc_upg_option           VARCHAR2(1);
30080 
30081 --
30082 BEGIN
30083 --
30084 IF g_log_enabled THEN
30085       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_81';
30086 END IF;
30087 --
30088 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30089 
30090       trace
30091          (p_msg      => 'BEGIN of AcctLineType_81'
30092          ,p_level    => C_LEVEL_PROCEDURE
30093          ,p_module   => l_log_module);
30094 
30095 END IF;
30096 --
30097 l_component_type             := 'AMB_JLT';
30098 l_component_code             := 'DM_TAX';
30099 l_component_type_code        := 'S';
30100 l_component_appl_id          :=  222;
30101 l_amb_context_code           := 'DEFAULT';
30102 l_entity_code                := 'TRANSACTIONS';
30103 l_event_class_code           := 'DEBIT_MEMO';
30104 l_event_type_code            := 'DEBIT_MEMO_ALL';
30105 l_line_definition_owner_code := 'S';
30106 l_line_definition_code       := 'AR_DM_DEFAULT_ACCRUAL';
30107 --
30108 l_balance_type_code          := 'A';
30109 l_segment                     := NULL;
30110 l_ccid                        := NULL;
30111 l_adr_transaction_coa_id      := NULL;
30112 l_adr_accounting_coa_id       := NULL;
30113 l_adr_flexfield_segment_code  := NULL;
30114 l_adr_flex_value_set_id       := NULL;
30115 l_adr_value_type_code         := NULL;
30116 l_adr_value_combination_id    := NULL;
30117 l_adr_value_segment_code      := NULL;
30118 
30119 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30120 l_bflow_class_code           := '';    -- 4219869 Business Flow
30121 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30122 l_budgetary_control_flag     := 'N';
30123 
30124 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30125 l_bflow_applied_to_amt       := NULL; -- 5132302
30126 l_entered_amt_idx            := NULL;          -- 4262811
30127 l_accted_amt_idx             := NULL;          -- 4262811
30128 l_acc_rev_flag               := NULL;          -- 4262811
30129 l_accrual_line_num           := NULL;          -- 4262811
30130 l_tmp_amt                    := NULL;          -- 4262811
30131 --
30132  
30136 ') =  'TAX'
30133 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30134     l_balance_type_code <> 'B' THEN
30135 IF NVL(p_source_55,'
30137  THEN 
30138 
30139    --
30140    XLA_AE_LINES_PKG.SetNewLine;
30141 
30142    p_balance_type_code          := l_balance_type_code;
30143    -- set the flag so later we will know whether the gain loss line needs to be created
30144    
30145    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30146      p_actual_flag :='A';
30147    END IF;
30148 
30149    --
30150    -- bulk performance
30151    --
30152    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30153                                       p_header_num   => 0); -- 4262811
30154    --
30155    -- set accounting line options
30156    --
30157    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30158            p_natural_side_code          => 'C'
30159          , p_gain_or_loss_flag          => 'N'
30160          , p_gl_transfer_mode_code      => 'S'
30161          , p_acct_entry_type_code       => 'A'
30162          , p_switch_side_flag           => 'Y'
30163          , p_merge_duplicate_code       => 'A'
30164          );
30165    --
30166    l_acc_rev_natural_side_code := 'D';  -- 4262811
30167    -- 
30168    --
30169    -- set accounting line type info
30170    --
30171    xla_ae_lines_pkg.SetAcctLineType
30172       (p_component_type             => l_component_type
30173       ,p_event_type_code            => l_event_type_code
30174       ,p_line_definition_owner_code => l_line_definition_owner_code
30175       ,p_line_definition_code       => l_line_definition_code
30176       ,p_accounting_line_code       => l_component_code
30177       ,p_accounting_line_type_code  => l_component_type_code
30178       ,p_accounting_line_appl_id    => l_component_appl_id
30179       ,p_amb_context_code           => l_amb_context_code
30180       ,p_entity_code                => l_entity_code
30181       ,p_event_class_code           => l_event_class_code);
30182    --
30183    -- set accounting class
30184    --
30185    xla_ae_lines_pkg.SetAcctClass(
30186            p_accounting_class_code  => 'TAX'
30187          , p_ae_header_id           => l_ae_header_id
30188          );
30189 
30190    --
30191    -- set rounding class
30192    --
30193    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30194                       'RECEIVABLE';
30195 
30196    --
30197    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30198    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30199    --
30200    -- bulk performance
30201    --
30202    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30203 
30204    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30205       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30206 
30207    -- 4955764
30208    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30209       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30210 
30211    -- 4458381 Public Sector Enh
30212    
30213    --
30214    -- set accounting attributes for the line type
30215    --
30216    l_entered_amt_idx := 3;
30217    l_accted_amt_idx  := 8;
30218    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30219    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30220    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
30221    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30222    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
30223    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30224    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
30225    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30226    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
30227    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30228    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
30229    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30230    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
30231    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30232    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
30233    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30234    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
30235    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
30236    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
30237    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
30238    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
30239    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
30240    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
30241    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
30242    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
30243 
30244    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30245    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30246 
30247    ---------------------------------------------------------------------------------------------------------------
30251 
30248    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30249    ---------------------------------------------------------------------------------------------------------------
30250    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30252    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30253    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30254 
30255    IF xla_accounting_cache_pkg.GetValueChar
30256          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30257          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30258    AND l_bflow_method_code = 'PRIOR_ENTRY'
30259 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30260    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30261          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30262        )
30263    THEN
30264          xla_ae_lines_pkg.BflowUpgEntry
30265            (p_business_method_code    => l_bflow_method_code
30266            ,p_business_class_code     => l_bflow_class_code
30267            ,p_balance_type            => l_balance_type_code);
30268    ELSE
30269       NULL;
30270 -- No business flow processing for business flow method of NONE.
30271    END IF;
30272 
30273    --
30274    -- call analytical criteria
30275    --
30276    
30277    --
30278    -- call description
30279    --
30280    -- No description or it is inherited.
30281    --
30282    -- call ADRs
30283    -- Bug 4922099
30284    --
30285    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30286         (NVL(l_actual_upg_option, 'N') = 'O') OR
30287         (NVL(l_enc_upg_option, 'N') = 'O')
30288       )
30289    THEN
30290    NULL;
30291    --
30292    --
30293    
30294   l_ccid := AcctDerRule_36(
30295            p_application_id           => p_application_id
30296          , p_ae_header_id             => l_ae_header_id 
30297 , p_source_38 => p_source_38
30298          , x_transaction_coa_id       => l_adr_transaction_coa_id
30299          , x_accounting_coa_id        => l_adr_accounting_coa_id
30300          , x_value_type_code          => l_adr_value_type_code
30301          , p_side                     => 'NA'
30302    );
30303 
30304    xla_ae_lines_pkg.set_ccid(
30305     p_code_combination_id          => l_ccid
30306   , p_value_type_code              => l_adr_value_type_code
30307   , p_transaction_coa_id           => l_adr_transaction_coa_id
30308   , p_accounting_coa_id            => l_adr_accounting_coa_id
30309   , p_adr_code                     => 'TRX_DIST_CCID'
30310   , p_adr_type_code                => 'S'
30311   , p_component_type               => l_component_type
30312   , p_component_code               => l_component_code
30313   , p_component_type_code          => l_component_type_code
30314   , p_component_appl_id            => l_component_appl_id
30315   , p_amb_context_code             => l_amb_context_code
30316   , p_side                         => 'NA'
30317   );
30318 
30319 
30320    --
30321    --
30322    END IF;
30323    --
30324    -- Bug 4922099
30325    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30326           (NVL(l_enc_upg_option, 'N') = 'O')
30327         ) AND
30328         (l_bflow_method_code = 'PRIOR_ENTRY')
30329       )
30330    THEN
30331       IF
30332       --
30333       1 = 2
30334       --
30335       THEN
30336       xla_accounting_err_pkg.build_message
30337                                     (p_appli_s_name            => 'XLA'
30338                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30339                                     ,p_token_1                 => 'LINE_NUMBER'
30340                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30341                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30342                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30343                                                                              l_component_type
30344                                                                             ,l_component_code
30345                                                                             ,l_component_type_code
30346                                                                             ,l_component_appl_id
30347                                                                             ,l_amb_context_code
30348                                                                             ,l_entity_code
30349                                                                             ,l_event_class_code
30350                                                                            )
30351                                     ,p_token_3                 => 'OWNER'
30352                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30353                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30354                                                                           ,p_lookup_code    => l_component_type_code
30355                                                                          )
30359                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30356                                     ,p_token_4                 => 'PRODUCT_NAME'
30357                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30358                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30360                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30361                                     ,p_ae_header_id            =>  NULL
30362                                        );
30363 
30364         IF (C_LEVEL_ERROR>= g_log_level) THEN
30365                  trace
30366                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30367                       ,p_level    => C_LEVEL_ERROR
30368                       ,p_module   => l_log_module);
30369         END IF;
30370       END IF;
30371    END IF;
30372    --
30373    --
30374    ------------------------------------------------------------------------------------------------
30375    -- 4219869 Business Flow
30376    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30377    -- Prior Entry.  Currently, the following code is always generated.
30378    ------------------------------------------------------------------------------------------------
30379    XLA_AE_LINES_PKG.ValidateCurrentLine;
30380 
30381    ------------------------------------------------------------------------------------
30382    -- 4219869 Business Flow
30383    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30384    ------------------------------------------------------------------------------------
30385    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30386 
30387    ----------------------------------------------------------------------------------
30388    -- 4219869 Business Flow
30389    -- Update journal entry status -- Need to generate this within IF <condition>
30390    ----------------------------------------------------------------------------------
30391    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30392          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30393          ,p_balance_type_code => l_balance_type_code
30394          );
30395 
30396    -------------------------------------------------------------------------------------------
30397    -- 4262811 - Generate the Accrual Reversal lines
30398    -------------------------------------------------------------------------------------------
30399    BEGIN
30400       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30401                               (g_array_event(p_event_id).array_value_num('header_index'));
30402       IF l_acc_rev_flag IS NULL THEN
30403          l_acc_rev_flag := 'N';
30404       END IF;
30405    EXCEPTION
30406       WHEN OTHERS THEN
30407          l_acc_rev_flag := 'N';
30408    END;
30409    --
30410    IF (l_acc_rev_flag = 'Y') THEN
30411 
30412        -- 4645092  ------------------------------------------------------------------------------
30413        -- To allow MPA report to determine if it should generate report process
30414        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30415        ------------------------------------------------------------------------------------------
30416 
30417        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30418        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30419    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
30420    -- call ADRs
30421    -- Bug 4922099
30422    --
30423    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30424         (NVL(l_actual_upg_option, 'N') = 'O') OR
30425         (NVL(l_enc_upg_option, 'N') = 'O')
30426       )
30427    THEN
30428    NULL;
30429    --
30430    --
30431    
30432   l_ccid := AcctDerRule_36(
30433            p_application_id           => p_application_id
30434          , p_ae_header_id             => l_ae_header_id 
30435 , p_source_38 => p_source_38
30436          , x_transaction_coa_id       => l_adr_transaction_coa_id
30437          , x_accounting_coa_id        => l_adr_accounting_coa_id
30438          , x_value_type_code          => l_adr_value_type_code
30439          , p_side                     => 'NA'
30440    );
30441 
30442    xla_ae_lines_pkg.set_ccid(
30443     p_code_combination_id          => l_ccid
30444   , p_value_type_code              => l_adr_value_type_code
30445   , p_transaction_coa_id           => l_adr_transaction_coa_id
30446   , p_accounting_coa_id            => l_adr_accounting_coa_id
30447   , p_adr_code                     => 'TRX_DIST_CCID'
30448   , p_adr_type_code                => 'S'
30449   , p_component_type               => l_component_type
30450   , p_component_code               => l_component_code
30451   , p_component_type_code          => l_component_type_code
30452   , p_component_appl_id            => l_component_appl_id
30453   , p_amb_context_code             => l_amb_context_code
30454   , p_side                         => 'NA'
30455   );
30456 
30457 
30458    --
30459    --
30460    END IF;
30461 
30462        --
30463        -- Update the line information that should be overwritten
30464        --
30465        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
30469        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
30466                                          p_header_num   => 1);
30467        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
30468 
30470 
30471        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
30472           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
30473        END IF;
30474 
30475       --
30476       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
30477       --
30478       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
30479           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
30480       ELSE
30481           ---------------------------------------------------------------------------------------------------
30482           -- 4262811a Switch Sign
30483           ---------------------------------------------------------------------------------------------------
30484           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
30485           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30486                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30487           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
30488                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30489           -- 5132302
30490           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
30491                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
30492 
30493       END IF;
30494 
30495       -- 4955764
30496       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30497       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
30498 
30499 
30500       XLA_AE_LINES_PKG.ValidateCurrentLine;
30501       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30502 
30503       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30504                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
30505                ,p_balance_type_code => l_balance_type_code);
30506 
30507    END IF;
30508 
30509    -----------------------------------------------------------------------------------------
30510    -- 4262811 Multiperiod Accounting
30511    -----------------------------------------------------------------------------------------
30512      -- No MPA option is assigned.
30513 
30514 
30515 END IF;
30516 END IF;
30517 --
30518 
30519 --
30520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30521    trace
30522       (p_msg      => 'END of AcctLineType_81'
30523       ,p_level    => C_LEVEL_PROCEDURE
30524       ,p_module   => l_log_module);
30525 END IF;
30526 --
30527 EXCEPTION
30528   WHEN xla_exceptions_pkg.application_exception THEN
30529       RAISE;
30530   WHEN OTHERS THEN
30531        xla_exceptions_pkg.raise_message
30532            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_81');
30533 END AcctLineType_81;
30534 --
30535 
30536 ---------------------------------------
30537 --
30538 -- PRIVATE FUNCTION
30539 --         AcctLineType_82
30540 --
30541 ---------------------------------------
30542 PROCEDURE AcctLineType_82 (
30543   p_application_id        IN NUMBER
30544  ,p_event_id              IN NUMBER
30545  ,p_calculate_acctd_flag  IN VARCHAR2
30546  ,p_calculate_g_l_flag    IN VARCHAR2
30547  ,p_actual_flag           IN OUT VARCHAR2
30548  ,p_balance_type_code     OUT VARCHAR2
30549  ,p_gain_or_loss_ref      OUT VARCHAR2
30550  
30551 --Transaction Distribution GL Account
30552  , p_source_38            IN NUMBER
30553 --Bill To Customer Account Identifier
30554  , p_source_49            IN NUMBER
30555 --Bill To Customer Site Use Identifier
30556  , p_source_50            IN NUMBER
30557 --SLA Party Type
30558  , p_source_51            IN VARCHAR2
30559 --Transaction Distribution Account Class
30560  , p_source_55            IN VARCHAR2
30561 --Transaction Distribution Identifier
30562  , p_source_56            IN NUMBER
30563 --Transaction Distribution Type
30564  , p_source_57            IN VARCHAR2
30565 --Transaction Distribution Entered Amount
30566  , p_source_58            IN NUMBER
30567 --Transaction Currency Code
30568  , p_source_59            IN VARCHAR2
30569 --Transaction Exchange Date
30570  , p_source_60            IN DATE
30571 --Transaction Exchange Rate
30572  , p_source_61            IN NUMBER
30573 --Transaction Exchange Rate Type
30574  , p_source_62            IN VARCHAR2
30575 --Transaction Accounting Amount
30576  , p_source_63            IN NUMBER
30577 --Transaction Tax Line Identifier
30578  , p_source_97            IN NUMBER
30579 )
30580 IS
30581 
30582 l_component_type              VARCHAR2(80);
30583 l_component_code              VARCHAR2(30);
30584 l_component_type_code         VARCHAR2(1);
30585 l_component_appl_id           INTEGER;
30586 l_amb_context_code            VARCHAR2(30);
30587 l_entity_code                 VARCHAR2(30);
30588 l_event_class_code            VARCHAR2(30);
30589 l_ae_header_id                NUMBER;
30590 l_event_type_code             VARCHAR2(30);
30594 -- adr variables
30591 l_line_definition_code        VARCHAR2(30);
30592 l_line_definition_owner_code  VARCHAR2(1);
30593 --
30595 l_segment                     VARCHAR2(30);
30596 l_ccid                        NUMBER;
30597 l_adr_transaction_coa_id      NUMBER;
30598 l_adr_accounting_coa_id       NUMBER;
30599 l_adr_flexfield_segment_code  VARCHAR2(30);
30600 l_adr_flex_value_set_id       NUMBER;
30601 l_adr_value_type_code         VARCHAR2(30);
30602 l_adr_value_combination_id    NUMBER;
30603 l_adr_value_segment_code      VARCHAR2(30);
30604 
30605 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
30606 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
30607 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
30608 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
30609 
30610 -- 4262811 Variables ------------------------------------------------------------------------------------------
30611 l_entered_amt_idx             NUMBER;
30612 l_accted_amt_idx              NUMBER;
30613 l_acc_rev_flag                VARCHAR2(1);
30614 l_accrual_line_num            NUMBER;
30615 l_tmp_amt                     NUMBER;
30616 l_acc_rev_natural_side_code   VARCHAR2(1);
30617 
30618 l_num_entries                 NUMBER;
30619 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
30620 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
30621 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
30622 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
30623 l_recog_line_1                NUMBER;
30624 l_recog_line_2                NUMBER;
30625 
30626 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
30627 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
30628 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
30629 
30630 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
30631 
30632 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
30633 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
30634 
30635 ---------------------------------------------------------------------------------------------------------------
30636 
30637 
30638 --
30639 -- bulk performance
30640 --
30641 l_balance_type_code           VARCHAR2(1);
30642 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
30643 l_log_module                  VARCHAR2(240);
30644 
30645 --
30646 -- Upgrade strategy
30647 --
30648 l_actual_upg_option           VARCHAR2(1);
30649 l_enc_upg_option           VARCHAR2(1);
30650 
30651 --
30652 BEGIN
30653 --
30654 IF g_log_enabled THEN
30655       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_82';
30656 END IF;
30657 --
30658 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
30659 
30660       trace
30661          (p_msg      => 'BEGIN of AcctLineType_82'
30662          ,p_level    => C_LEVEL_PROCEDURE
30663          ,p_module   => l_log_module);
30664 
30665 END IF;
30666 --
30667 l_component_type             := 'AMB_JLT';
30668 l_component_code             := 'DM_UNBILL';
30669 l_component_type_code        := 'S';
30670 l_component_appl_id          :=  222;
30671 l_amb_context_code           := 'DEFAULT';
30672 l_entity_code                := 'TRANSACTIONS';
30673 l_event_class_code           := 'DEBIT_MEMO';
30674 l_event_type_code            := 'DEBIT_MEMO_ALL';
30675 l_line_definition_owner_code := 'S';
30676 l_line_definition_code       := 'AR_DM_DEFAULT_ACCRUAL';
30677 --
30678 l_balance_type_code          := 'A';
30679 l_segment                     := NULL;
30680 l_ccid                        := NULL;
30681 l_adr_transaction_coa_id      := NULL;
30682 l_adr_accounting_coa_id       := NULL;
30683 l_adr_flexfield_segment_code  := NULL;
30684 l_adr_flex_value_set_id       := NULL;
30685 l_adr_value_type_code         := NULL;
30686 l_adr_value_combination_id    := NULL;
30687 l_adr_value_segment_code      := NULL;
30688 
30689 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
30690 l_bflow_class_code           := '';    -- 4219869 Business Flow
30691 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
30692 l_budgetary_control_flag     := 'N';
30693 
30694 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
30695 l_bflow_applied_to_amt       := NULL; -- 5132302
30696 l_entered_amt_idx            := NULL;          -- 4262811
30697 l_accted_amt_idx             := NULL;          -- 4262811
30698 l_acc_rev_flag               := NULL;          -- 4262811
30699 l_accrual_line_num           := NULL;          -- 4262811
30700 l_tmp_amt                    := NULL;          -- 4262811
30701 --
30702  
30703 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
30704     l_balance_type_code <> 'B' THEN
30705 IF NVL(p_source_55,'
30706 ') =  'UNBILL'
30707  THEN 
30708 
30709    --
30710    XLA_AE_LINES_PKG.SetNewLine;
30711 
30712    p_balance_type_code          := l_balance_type_code;
30713    -- set the flag so later we will know whether the gain loss line needs to be created
30714    
30715    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
30716      p_actual_flag :='A';
30717    END IF;
30718 
30719    --
30720    -- bulk performance
30721    --
30725    -- set accounting line options
30722    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
30723                                       p_header_num   => 0); -- 4262811
30724    --
30726    --
30727    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
30728            p_natural_side_code          => 'D'
30729          , p_gain_or_loss_flag          => 'N'
30730          , p_gl_transfer_mode_code      => 'S'
30731          , p_acct_entry_type_code       => 'A'
30732          , p_switch_side_flag           => 'Y'
30733          , p_merge_duplicate_code       => 'A'
30734          );
30735    --
30736    l_acc_rev_natural_side_code := 'C';  -- 4262811
30737    -- 
30738    --
30739    -- set accounting line type info
30740    --
30741    xla_ae_lines_pkg.SetAcctLineType
30742       (p_component_type             => l_component_type
30743       ,p_event_type_code            => l_event_type_code
30744       ,p_line_definition_owner_code => l_line_definition_owner_code
30745       ,p_line_definition_code       => l_line_definition_code
30746       ,p_accounting_line_code       => l_component_code
30747       ,p_accounting_line_type_code  => l_component_type_code
30748       ,p_accounting_line_appl_id    => l_component_appl_id
30749       ,p_amb_context_code           => l_amb_context_code
30750       ,p_entity_code                => l_entity_code
30751       ,p_event_class_code           => l_event_class_code);
30752    --
30753    -- set accounting class
30754    --
30755    xla_ae_lines_pkg.SetAcctClass(
30756            p_accounting_class_code  => 'UNBILL'
30757          , p_ae_header_id           => l_ae_header_id
30758          );
30759 
30760    --
30761    -- set rounding class
30762    --
30763    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
30764                       'RECEIVABLE';
30765 
30766    --
30767    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
30768    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
30769    --
30770    -- bulk performance
30771    --
30772    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
30773 
30774    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
30775       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
30776 
30777    -- 4955764
30778    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
30779       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
30780 
30781    -- 4458381 Public Sector Enh
30782    
30783    --
30784    -- set accounting attributes for the line type
30785    --
30786    l_entered_amt_idx := 3;
30787    l_accted_amt_idx  := 8;
30788    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
30789    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
30790    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
30791    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
30792    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
30793    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
30794    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
30795    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
30796    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
30797    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
30798    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
30799    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
30800    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
30801    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
30802    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
30803    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
30804    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
30805    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
30806    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
30807    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
30808    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
30809    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
30810    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
30811    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
30812    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
30813 
30814    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
30815    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
30816 
30817    ---------------------------------------------------------------------------------------------------------------
30818    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
30819    ---------------------------------------------------------------------------------------------------------------
30820    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
30821 
30822    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30823    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
30824 
30825    IF xla_accounting_cache_pkg.GetValueChar
30826          (p_source_code         => 'LEDGER_CATEGORY_CODE'
30830    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
30827          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
30828    AND l_bflow_method_code = 'PRIOR_ENTRY'
30829 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
30831          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
30832        )
30833    THEN
30834          xla_ae_lines_pkg.BflowUpgEntry
30835            (p_business_method_code    => l_bflow_method_code
30836            ,p_business_class_code     => l_bflow_class_code
30837            ,p_balance_type            => l_balance_type_code);
30838    ELSE
30839       NULL;
30840 -- No business flow processing for business flow method of NONE.
30841    END IF;
30842 
30843    --
30844    -- call analytical criteria
30845    --
30846    
30847    --
30848    -- call description
30849    --
30850    -- No description or it is inherited.
30851    --
30852    -- call ADRs
30853    -- Bug 4922099
30854    --
30855    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30856         (NVL(l_actual_upg_option, 'N') = 'O') OR
30857         (NVL(l_enc_upg_option, 'N') = 'O')
30858       )
30859    THEN
30860    NULL;
30861    --
30862    --
30863    
30864   l_ccid := AcctDerRule_36(
30865            p_application_id           => p_application_id
30866          , p_ae_header_id             => l_ae_header_id 
30867 , p_source_38 => p_source_38
30868          , x_transaction_coa_id       => l_adr_transaction_coa_id
30869          , x_accounting_coa_id        => l_adr_accounting_coa_id
30870          , x_value_type_code          => l_adr_value_type_code
30871          , p_side                     => 'NA'
30872    );
30873 
30874    xla_ae_lines_pkg.set_ccid(
30875     p_code_combination_id          => l_ccid
30876   , p_value_type_code              => l_adr_value_type_code
30877   , p_transaction_coa_id           => l_adr_transaction_coa_id
30878   , p_accounting_coa_id            => l_adr_accounting_coa_id
30879   , p_adr_code                     => 'TRX_DIST_CCID'
30880   , p_adr_type_code                => 'S'
30881   , p_component_type               => l_component_type
30882   , p_component_code               => l_component_code
30883   , p_component_type_code          => l_component_type_code
30884   , p_component_appl_id            => l_component_appl_id
30885   , p_amb_context_code             => l_amb_context_code
30886   , p_side                         => 'NA'
30887   );
30888 
30889 
30890    --
30891    --
30892    END IF;
30893    --
30894    -- Bug 4922099
30895    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
30896           (NVL(l_enc_upg_option, 'N') = 'O')
30897         ) AND
30898         (l_bflow_method_code = 'PRIOR_ENTRY')
30899       )
30900    THEN
30901       IF
30902       --
30903       1 = 2
30904       --
30905       THEN
30906       xla_accounting_err_pkg.build_message
30907                                     (p_appli_s_name            => 'XLA'
30908                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30909                                     ,p_token_1                 => 'LINE_NUMBER'
30910                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
30911                                     ,p_token_2                 => 'LINE_TYPE_NAME'
30912                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
30913                                                                              l_component_type
30914                                                                             ,l_component_code
30915                                                                             ,l_component_type_code
30916                                                                             ,l_component_appl_id
30917                                                                             ,l_amb_context_code
30918                                                                             ,l_entity_code
30919                                                                             ,l_event_class_code
30920                                                                            )
30921                                     ,p_token_3                 => 'OWNER'
30922                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
30923                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
30924                                                                           ,p_lookup_code    => l_component_type_code
30925                                                                          )
30926                                     ,p_token_4                 => 'PRODUCT_NAME'
30927                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
30928                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
30929                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
30930                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
30931                                     ,p_ae_header_id            =>  NULL
30932                                        );
30933 
30934         IF (C_LEVEL_ERROR>= g_log_level) THEN
30935                  trace
30939         END IF;
30936                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
30937                       ,p_level    => C_LEVEL_ERROR
30938                       ,p_module   => l_log_module);
30940       END IF;
30941    END IF;
30942    --
30943    --
30944    ------------------------------------------------------------------------------------------------
30945    -- 4219869 Business Flow
30946    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
30947    -- Prior Entry.  Currently, the following code is always generated.
30948    ------------------------------------------------------------------------------------------------
30949    XLA_AE_LINES_PKG.ValidateCurrentLine;
30950 
30951    ------------------------------------------------------------------------------------
30952    -- 4219869 Business Flow
30953    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
30954    ------------------------------------------------------------------------------------
30955    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
30956 
30957    ----------------------------------------------------------------------------------
30958    -- 4219869 Business Flow
30959    -- Update journal entry status -- Need to generate this within IF <condition>
30960    ----------------------------------------------------------------------------------
30961    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
30962          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
30963          ,p_balance_type_code => l_balance_type_code
30964          );
30965 
30966    -------------------------------------------------------------------------------------------
30967    -- 4262811 - Generate the Accrual Reversal lines
30968    -------------------------------------------------------------------------------------------
30969    BEGIN
30970       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
30971                               (g_array_event(p_event_id).array_value_num('header_index'));
30972       IF l_acc_rev_flag IS NULL THEN
30973          l_acc_rev_flag := 'N';
30974       END IF;
30975    EXCEPTION
30976       WHEN OTHERS THEN
30977          l_acc_rev_flag := 'N';
30978    END;
30979    --
30980    IF (l_acc_rev_flag = 'Y') THEN
30981 
30982        -- 4645092  ------------------------------------------------------------------------------
30983        -- To allow MPA report to determine if it should generate report process
30984        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
30985        ------------------------------------------------------------------------------------------
30986 
30987        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
30988        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
30989    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
30990    -- call ADRs
30991    -- Bug 4922099
30992    --
30993    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
30994         (NVL(l_actual_upg_option, 'N') = 'O') OR
30995         (NVL(l_enc_upg_option, 'N') = 'O')
30996       )
30997    THEN
30998    NULL;
30999    --
31000    --
31001    
31002   l_ccid := AcctDerRule_36(
31003            p_application_id           => p_application_id
31004          , p_ae_header_id             => l_ae_header_id 
31005 , p_source_38 => p_source_38
31006          , x_transaction_coa_id       => l_adr_transaction_coa_id
31007          , x_accounting_coa_id        => l_adr_accounting_coa_id
31008          , x_value_type_code          => l_adr_value_type_code
31009          , p_side                     => 'NA'
31010    );
31011 
31012    xla_ae_lines_pkg.set_ccid(
31013     p_code_combination_id          => l_ccid
31014   , p_value_type_code              => l_adr_value_type_code
31015   , p_transaction_coa_id           => l_adr_transaction_coa_id
31016   , p_accounting_coa_id            => l_adr_accounting_coa_id
31017   , p_adr_code                     => 'TRX_DIST_CCID'
31018   , p_adr_type_code                => 'S'
31019   , p_component_type               => l_component_type
31020   , p_component_code               => l_component_code
31021   , p_component_type_code          => l_component_type_code
31022   , p_component_appl_id            => l_component_appl_id
31023   , p_amb_context_code             => l_amb_context_code
31024   , p_side                         => 'NA'
31025   );
31026 
31027 
31028    --
31029    --
31030    END IF;
31031 
31032        --
31033        -- Update the line information that should be overwritten
31034        --
31035        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31036                                          p_header_num   => 1);
31037        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31038 
31039        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31040 
31041        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31042           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31043        END IF;
31044 
31045       --
31046       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31047       --
31048       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31049           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31053           ---------------------------------------------------------------------------------------------------
31050       ELSE
31051           ---------------------------------------------------------------------------------------------------
31052           -- 4262811a Switch Sign
31054           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31055           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31056                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31057           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31058                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31059           -- 5132302
31060           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31061                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31062 
31063       END IF;
31064 
31065       -- 4955764
31066       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31067       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31068 
31069 
31070       XLA_AE_LINES_PKG.ValidateCurrentLine;
31071       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31072 
31073       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31074                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31075                ,p_balance_type_code => l_balance_type_code);
31076 
31077    END IF;
31078 
31079    -----------------------------------------------------------------------------------------
31080    -- 4262811 Multiperiod Accounting
31081    -----------------------------------------------------------------------------------------
31082      -- No MPA option is assigned.
31083 
31084 
31085 END IF;
31086 END IF;
31087 --
31088 
31089 --
31090 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31091    trace
31092       (p_msg      => 'END of AcctLineType_82'
31093       ,p_level    => C_LEVEL_PROCEDURE
31094       ,p_module   => l_log_module);
31095 END IF;
31096 --
31097 EXCEPTION
31098   WHEN xla_exceptions_pkg.application_exception THEN
31099       RAISE;
31100   WHEN OTHERS THEN
31101        xla_exceptions_pkg.raise_message
31102            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_82');
31103 END AcctLineType_82;
31104 --
31105 
31106 ---------------------------------------
31107 --
31108 -- PRIVATE FUNCTION
31109 --         AcctLineType_83
31110 --
31111 ---------------------------------------
31112 PROCEDURE AcctLineType_83 (
31113   p_application_id        IN NUMBER
31114  ,p_event_id              IN NUMBER
31115  ,p_calculate_acctd_flag  IN VARCHAR2
31116  ,p_calculate_g_l_flag    IN VARCHAR2
31117  ,p_actual_flag           IN OUT VARCHAR2
31118  ,p_balance_type_code     OUT VARCHAR2
31119  ,p_gain_or_loss_ref      OUT VARCHAR2
31120  
31121 --Transaction Distribution GL Account
31122  , p_source_38            IN NUMBER
31123 --Bill To Customer Account Identifier
31124  , p_source_49            IN NUMBER
31125 --Bill To Customer Site Use Identifier
31126  , p_source_50            IN NUMBER
31127 --SLA Party Type
31128  , p_source_51            IN VARCHAR2
31129 --Transaction Distribution Account Class
31130  , p_source_55            IN VARCHAR2
31131 --Transaction Distribution Identifier
31132  , p_source_56            IN NUMBER
31133 --Transaction Distribution Type
31134  , p_source_57            IN VARCHAR2
31135 --Transaction Distribution Entered Amount
31136  , p_source_58            IN NUMBER
31137 --Transaction Currency Code
31138  , p_source_59            IN VARCHAR2
31139 --Transaction Exchange Date
31140  , p_source_60            IN DATE
31141 --Transaction Exchange Rate
31142  , p_source_61            IN NUMBER
31143 --Transaction Exchange Rate Type
31144  , p_source_62            IN VARCHAR2
31145 --Transaction Accounting Amount
31146  , p_source_63            IN NUMBER
31147 --Transaction Tax Line Identifier
31148  , p_source_97            IN NUMBER
31149 )
31150 IS
31151 
31152 l_component_type              VARCHAR2(80);
31153 l_component_code              VARCHAR2(30);
31154 l_component_type_code         VARCHAR2(1);
31155 l_component_appl_id           INTEGER;
31156 l_amb_context_code            VARCHAR2(30);
31157 l_entity_code                 VARCHAR2(30);
31158 l_event_class_code            VARCHAR2(30);
31159 l_ae_header_id                NUMBER;
31160 l_event_type_code             VARCHAR2(30);
31161 l_line_definition_code        VARCHAR2(30);
31162 l_line_definition_owner_code  VARCHAR2(1);
31163 --
31164 -- adr variables
31165 l_segment                     VARCHAR2(30);
31166 l_ccid                        NUMBER;
31167 l_adr_transaction_coa_id      NUMBER;
31168 l_adr_accounting_coa_id       NUMBER;
31169 l_adr_flexfield_segment_code  VARCHAR2(30);
31170 l_adr_flex_value_set_id       NUMBER;
31171 l_adr_value_type_code         VARCHAR2(30);
31172 l_adr_value_combination_id    NUMBER;
31173 l_adr_value_segment_code      VARCHAR2(30);
31174 
31175 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31176 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31177 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31181 l_entered_amt_idx             NUMBER;
31178 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31179 
31180 -- 4262811 Variables ------------------------------------------------------------------------------------------
31182 l_accted_amt_idx              NUMBER;
31183 l_acc_rev_flag                VARCHAR2(1);
31184 l_accrual_line_num            NUMBER;
31185 l_tmp_amt                     NUMBER;
31186 l_acc_rev_natural_side_code   VARCHAR2(1);
31187 
31188 l_num_entries                 NUMBER;
31189 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31190 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31191 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31192 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31193 l_recog_line_1                NUMBER;
31194 l_recog_line_2                NUMBER;
31195 
31196 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31197 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31198 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31199 
31200 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31201 
31202 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31203 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31204 
31205 ---------------------------------------------------------------------------------------------------------------
31206 
31207 
31208 --
31209 -- bulk performance
31210 --
31211 l_balance_type_code           VARCHAR2(1);
31212 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31213 l_log_module                  VARCHAR2(240);
31214 
31215 --
31216 -- Upgrade strategy
31217 --
31218 l_actual_upg_option           VARCHAR2(1);
31219 l_enc_upg_option           VARCHAR2(1);
31220 
31221 --
31222 BEGIN
31223 --
31224 IF g_log_enabled THEN
31225       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_83';
31226 END IF;
31227 --
31228 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31229 
31230       trace
31231          (p_msg      => 'BEGIN of AcctLineType_83'
31232          ,p_level    => C_LEVEL_PROCEDURE
31233          ,p_module   => l_log_module);
31234 
31235 END IF;
31236 --
31237 l_component_type             := 'AMB_JLT';
31238 l_component_code             := 'DM_UNEARN';
31239 l_component_type_code        := 'S';
31240 l_component_appl_id          :=  222;
31241 l_amb_context_code           := 'DEFAULT';
31242 l_entity_code                := 'TRANSACTIONS';
31243 l_event_class_code           := 'DEBIT_MEMO';
31244 l_event_type_code            := 'DEBIT_MEMO_ALL';
31245 l_line_definition_owner_code := 'S';
31246 l_line_definition_code       := 'AR_DM_DEFAULT_ACCRUAL';
31247 --
31248 l_balance_type_code          := 'A';
31249 l_segment                     := NULL;
31250 l_ccid                        := NULL;
31251 l_adr_transaction_coa_id      := NULL;
31252 l_adr_accounting_coa_id       := NULL;
31253 l_adr_flexfield_segment_code  := NULL;
31254 l_adr_flex_value_set_id       := NULL;
31255 l_adr_value_type_code         := NULL;
31256 l_adr_value_combination_id    := NULL;
31257 l_adr_value_segment_code      := NULL;
31258 
31259 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31260 l_bflow_class_code           := '';    -- 4219869 Business Flow
31261 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31262 l_budgetary_control_flag     := 'N';
31263 
31264 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31265 l_bflow_applied_to_amt       := NULL; -- 5132302
31266 l_entered_amt_idx            := NULL;          -- 4262811
31267 l_accted_amt_idx             := NULL;          -- 4262811
31268 l_acc_rev_flag               := NULL;          -- 4262811
31269 l_accrual_line_num           := NULL;          -- 4262811
31270 l_tmp_amt                    := NULL;          -- 4262811
31271 --
31272  
31273 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31274     l_balance_type_code <> 'B' THEN
31275 IF NVL(p_source_55,'
31276 ') =  'UNEARN'
31277  THEN 
31278 
31279    --
31280    XLA_AE_LINES_PKG.SetNewLine;
31281 
31282    p_balance_type_code          := l_balance_type_code;
31283    -- set the flag so later we will know whether the gain loss line needs to be created
31284    
31285    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31286      p_actual_flag :='A';
31287    END IF;
31288 
31289    --
31290    -- bulk performance
31291    --
31292    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31293                                       p_header_num   => 0); -- 4262811
31294    --
31295    -- set accounting line options
31296    --
31297    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31298            p_natural_side_code          => 'C'
31299          , p_gain_or_loss_flag          => 'N'
31300          , p_gl_transfer_mode_code      => 'S'
31301          , p_acct_entry_type_code       => 'A'
31302          , p_switch_side_flag           => 'Y'
31303          , p_merge_duplicate_code       => 'A'
31304          );
31305    --
31306    l_acc_rev_natural_side_code := 'D';  -- 4262811
31307    -- 
31308    --
31309    -- set accounting line type info
31310    --
31311    xla_ae_lines_pkg.SetAcctLineType
31315       ,p_line_definition_code       => l_line_definition_code
31312       (p_component_type             => l_component_type
31313       ,p_event_type_code            => l_event_type_code
31314       ,p_line_definition_owner_code => l_line_definition_owner_code
31316       ,p_accounting_line_code       => l_component_code
31317       ,p_accounting_line_type_code  => l_component_type_code
31318       ,p_accounting_line_appl_id    => l_component_appl_id
31319       ,p_amb_context_code           => l_amb_context_code
31320       ,p_entity_code                => l_entity_code
31321       ,p_event_class_code           => l_event_class_code);
31322    --
31323    -- set accounting class
31324    --
31325    xla_ae_lines_pkg.SetAcctClass(
31326            p_accounting_class_code  => 'UNEARNED_REVENUE'
31327          , p_ae_header_id           => l_ae_header_id
31328          );
31329 
31330    --
31331    -- set rounding class
31332    --
31333    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31334                       'RECEIVABLE';
31335 
31336    --
31337    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31338    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31339    --
31340    -- bulk performance
31341    --
31342    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31343 
31344    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31345       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31346 
31347    -- 4955764
31348    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31349       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31350 
31351    -- 4458381 Public Sector Enh
31352    
31353    --
31354    -- set accounting attributes for the line type
31355    --
31356    l_entered_amt_idx := 3;
31357    l_accted_amt_idx  := 8;
31358    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31359    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
31360    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
31361    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
31362    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
31363    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
31364    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
31365    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
31366    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
31367    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
31368    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
31369    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
31370    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
31371    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
31372    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
31373    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
31374    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
31375    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
31376    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
31377    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
31378    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
31379    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
31380    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
31381    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
31382    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
31383 
31384    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
31385    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
31386 
31387    ---------------------------------------------------------------------------------------------------------------
31388    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
31389    ---------------------------------------------------------------------------------------------------------------
31390    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
31391 
31392    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31393    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
31394 
31395    IF xla_accounting_cache_pkg.GetValueChar
31396          (p_source_code         => 'LEDGER_CATEGORY_CODE'
31397          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
31398    AND l_bflow_method_code = 'PRIOR_ENTRY'
31399 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
31400    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
31401          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
31402        )
31403    THEN
31404          xla_ae_lines_pkg.BflowUpgEntry
31405            (p_business_method_code    => l_bflow_method_code
31406            ,p_business_class_code     => l_bflow_class_code
31407            ,p_balance_type            => l_balance_type_code);
31408    ELSE
31409       NULL;
31410 -- No business flow processing for business flow method of NONE.
31411    END IF;
31412 
31413    --
31417    --
31414    -- call analytical criteria
31415    --
31416    
31418    -- call description
31419    --
31420    -- No description or it is inherited.
31421    --
31422    -- call ADRs
31423    -- Bug 4922099
31424    --
31425    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31426         (NVL(l_actual_upg_option, 'N') = 'O') OR
31427         (NVL(l_enc_upg_option, 'N') = 'O')
31428       )
31429    THEN
31430    NULL;
31431    --
31432    --
31433    
31434   l_ccid := AcctDerRule_36(
31435            p_application_id           => p_application_id
31436          , p_ae_header_id             => l_ae_header_id 
31437 , p_source_38 => p_source_38
31438          , x_transaction_coa_id       => l_adr_transaction_coa_id
31439          , x_accounting_coa_id        => l_adr_accounting_coa_id
31440          , x_value_type_code          => l_adr_value_type_code
31441          , p_side                     => 'NA'
31442    );
31443 
31444    xla_ae_lines_pkg.set_ccid(
31445     p_code_combination_id          => l_ccid
31446   , p_value_type_code              => l_adr_value_type_code
31447   , p_transaction_coa_id           => l_adr_transaction_coa_id
31448   , p_accounting_coa_id            => l_adr_accounting_coa_id
31449   , p_adr_code                     => 'TRX_DIST_CCID'
31450   , p_adr_type_code                => 'S'
31451   , p_component_type               => l_component_type
31452   , p_component_code               => l_component_code
31453   , p_component_type_code          => l_component_type_code
31454   , p_component_appl_id            => l_component_appl_id
31455   , p_amb_context_code             => l_amb_context_code
31456   , p_side                         => 'NA'
31457   );
31458 
31459 
31460    --
31461    --
31462    END IF;
31463    --
31464    -- Bug 4922099
31465    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
31466           (NVL(l_enc_upg_option, 'N') = 'O')
31467         ) AND
31468         (l_bflow_method_code = 'PRIOR_ENTRY')
31469       )
31470    THEN
31471       IF
31472       --
31473       1 = 2
31474       --
31475       THEN
31476       xla_accounting_err_pkg.build_message
31477                                     (p_appli_s_name            => 'XLA'
31478                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31479                                     ,p_token_1                 => 'LINE_NUMBER'
31480                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
31481                                     ,p_token_2                 => 'LINE_TYPE_NAME'
31482                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
31483                                                                              l_component_type
31484                                                                             ,l_component_code
31485                                                                             ,l_component_type_code
31486                                                                             ,l_component_appl_id
31487                                                                             ,l_amb_context_code
31488                                                                             ,l_entity_code
31489                                                                             ,l_event_class_code
31490                                                                            )
31491                                     ,p_token_3                 => 'OWNER'
31492                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
31493                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
31494                                                                           ,p_lookup_code    => l_component_type_code
31495                                                                          )
31496                                     ,p_token_4                 => 'PRODUCT_NAME'
31497                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
31498                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
31499                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
31500                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
31501                                     ,p_ae_header_id            =>  NULL
31502                                        );
31503 
31504         IF (C_LEVEL_ERROR>= g_log_level) THEN
31505                  trace
31506                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
31507                       ,p_level    => C_LEVEL_ERROR
31508                       ,p_module   => l_log_module);
31509         END IF;
31510       END IF;
31511    END IF;
31512    --
31513    --
31514    ------------------------------------------------------------------------------------------------
31515    -- 4219869 Business Flow
31516    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
31517    -- Prior Entry.  Currently, the following code is always generated.
31518    ------------------------------------------------------------------------------------------------
31519    XLA_AE_LINES_PKG.ValidateCurrentLine;
31520 
31524    ------------------------------------------------------------------------------------
31521    ------------------------------------------------------------------------------------
31522    -- 4219869 Business Flow
31523    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
31525    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31526 
31527    ----------------------------------------------------------------------------------
31528    -- 4219869 Business Flow
31529    -- Update journal entry status -- Need to generate this within IF <condition>
31530    ----------------------------------------------------------------------------------
31531    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31532          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
31533          ,p_balance_type_code => l_balance_type_code
31534          );
31535 
31536    -------------------------------------------------------------------------------------------
31537    -- 4262811 - Generate the Accrual Reversal lines
31538    -------------------------------------------------------------------------------------------
31539    BEGIN
31540       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
31541                               (g_array_event(p_event_id).array_value_num('header_index'));
31542       IF l_acc_rev_flag IS NULL THEN
31543          l_acc_rev_flag := 'N';
31544       END IF;
31545    EXCEPTION
31546       WHEN OTHERS THEN
31547          l_acc_rev_flag := 'N';
31548    END;
31549    --
31550    IF (l_acc_rev_flag = 'Y') THEN
31551 
31552        -- 4645092  ------------------------------------------------------------------------------
31553        -- To allow MPA report to determine if it should generate report process
31554        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
31555        ------------------------------------------------------------------------------------------
31556 
31557        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
31558        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
31559    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
31560    -- call ADRs
31561    -- Bug 4922099
31562    --
31563    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
31564         (NVL(l_actual_upg_option, 'N') = 'O') OR
31565         (NVL(l_enc_upg_option, 'N') = 'O')
31566       )
31567    THEN
31568    NULL;
31569    --
31570    --
31571    
31572   l_ccid := AcctDerRule_36(
31573            p_application_id           => p_application_id
31574          , p_ae_header_id             => l_ae_header_id 
31575 , p_source_38 => p_source_38
31576          , x_transaction_coa_id       => l_adr_transaction_coa_id
31577          , x_accounting_coa_id        => l_adr_accounting_coa_id
31578          , x_value_type_code          => l_adr_value_type_code
31579          , p_side                     => 'NA'
31580    );
31581 
31582    xla_ae_lines_pkg.set_ccid(
31583     p_code_combination_id          => l_ccid
31584   , p_value_type_code              => l_adr_value_type_code
31585   , p_transaction_coa_id           => l_adr_transaction_coa_id
31586   , p_accounting_coa_id            => l_adr_accounting_coa_id
31587   , p_adr_code                     => 'TRX_DIST_CCID'
31588   , p_adr_type_code                => 'S'
31589   , p_component_type               => l_component_type
31590   , p_component_code               => l_component_code
31591   , p_component_type_code          => l_component_type_code
31592   , p_component_appl_id            => l_component_appl_id
31593   , p_amb_context_code             => l_amb_context_code
31594   , p_side                         => 'NA'
31595   );
31596 
31597 
31598    --
31599    --
31600    END IF;
31601 
31602        --
31603        -- Update the line information that should be overwritten
31604        --
31605        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
31606                                          p_header_num   => 1);
31607        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
31608 
31609        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
31610 
31611        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
31612           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
31613        END IF;
31614 
31615       --
31616       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
31617       --
31618       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
31619           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
31620       ELSE
31621           ---------------------------------------------------------------------------------------------------
31622           -- 4262811a Switch Sign
31623           ---------------------------------------------------------------------------------------------------
31624           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
31625           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31626                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31627           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
31628                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31629           -- 5132302
31633       END IF;
31630           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
31631                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
31632 
31634 
31635       -- 4955764
31636       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31637       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
31638 
31639 
31640       XLA_AE_LINES_PKG.ValidateCurrentLine;
31641       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
31642 
31643       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
31644                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
31645                ,p_balance_type_code => l_balance_type_code);
31646 
31647    END IF;
31648 
31649    -----------------------------------------------------------------------------------------
31650    -- 4262811 Multiperiod Accounting
31651    -----------------------------------------------------------------------------------------
31652      -- No MPA option is assigned.
31653 
31654 
31655 END IF;
31656 END IF;
31657 --
31658 
31659 --
31660 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31661    trace
31662       (p_msg      => 'END of AcctLineType_83'
31663       ,p_level    => C_LEVEL_PROCEDURE
31664       ,p_module   => l_log_module);
31665 END IF;
31666 --
31667 EXCEPTION
31668   WHEN xla_exceptions_pkg.application_exception THEN
31669       RAISE;
31670   WHEN OTHERS THEN
31671        xla_exceptions_pkg.raise_message
31672            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_83');
31673 END AcctLineType_83;
31674 --
31675 
31676 ---------------------------------------
31677 --
31678 -- PRIVATE FUNCTION
31679 --         AcctLineType_84
31680 --
31681 ---------------------------------------
31682 PROCEDURE AcctLineType_84 (
31683   p_application_id        IN NUMBER
31684  ,p_event_id              IN NUMBER
31685  ,p_calculate_acctd_flag  IN VARCHAR2
31686  ,p_calculate_g_l_flag    IN VARCHAR2
31687  ,p_actual_flag           IN OUT VARCHAR2
31688  ,p_balance_type_code     OUT VARCHAR2
31689  ,p_gain_or_loss_ref      OUT VARCHAR2
31690  
31691 --Collection Document Bank Occurrence
31692  , p_source_10            IN VARCHAR2
31693 --Collection Document Number
31694  , p_source_11            IN NUMBER
31695 --Collection Document Trade Note Number
31696  , p_source_12            IN VARCHAR2
31697 --Bordero Type
31698  , p_source_13            IN VARCHAR2
31699  , p_source_13_meaning    IN VARCHAR2
31700 --Collection Document Bank Charges Account
31701  , p_source_25            IN NUMBER
31702 --Bill To Customer Account Identifier
31703  , p_source_49            IN NUMBER
31704 --Bill To Customer Site Use Identifier
31705  , p_source_50            IN NUMBER
31706 --SLA Party Type
31707  , p_source_51            IN VARCHAR2
31708 --Collection Document Distribution Line Type
31709  , p_source_77            IN VARCHAR2
31710  , p_source_77_meaning    IN VARCHAR2
31711 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
31712  , p_source_78            IN VARCHAR2
31713  , p_source_78_meaning    IN VARCHAR2
31714 --Applied To Distribution Link Type
31715  , p_source_80            IN VARCHAR2
31716 --Applied To Distribution Identifier
31717  , p_source_82            IN NUMBER
31718 --Applied To Distribution Document Identifier
31719  , p_source_83            IN NUMBER
31720 --Applied To Distribution Occurrence Identifier
31721  , p_source_84            IN NUMBER
31722 --Collection Document Distribution Identifier
31723  , p_source_85            IN NUMBER
31724 --Collection Document Distribution Link Type
31725  , p_source_86            IN VARCHAR2
31726 --Collection Document Distribution Entered Amount
31727  , p_source_87            IN NUMBER
31728 --Collection Document Distribution Entered Currency Code
31729  , p_source_88            IN VARCHAR2
31730 --Collection Document Distribution Conversion Date
31731  , p_source_89            IN DATE
31732 --Collection Document Distribution Conversion Rate
31733  , p_source_90            IN NUMBER
31734 --Collection Document Distribution Conversion Rate Type
31735  , p_source_91            IN VARCHAR2
31736 --Collection Document Distribution Accounted Amount
31737  , p_source_92            IN NUMBER
31738 --Collection Document Occurrence Identifier
31739  , p_source_93            IN NUMBER
31740 --Reversed Collection Document Distribution Identifier
31741  , p_source_94            IN NUMBER
31742 --Reversed Collection Document Distribution Link Type
31743  , p_source_95            IN VARCHAR2
31744 )
31745 IS
31746 
31747 l_component_type              VARCHAR2(80);
31748 l_component_code              VARCHAR2(30);
31749 l_component_type_code         VARCHAR2(1);
31750 l_component_appl_id           INTEGER;
31751 l_amb_context_code            VARCHAR2(30);
31752 l_entity_code                 VARCHAR2(30);
31753 l_event_class_code            VARCHAR2(30);
31754 l_ae_header_id                NUMBER;
31755 l_event_type_code             VARCHAR2(30);
31756 l_line_definition_code        VARCHAR2(30);
31757 l_line_definition_owner_code  VARCHAR2(1);
31758 --
31759 -- adr variables
31760 l_segment                     VARCHAR2(30);
31761 l_ccid                        NUMBER;
31762 l_adr_transaction_coa_id      NUMBER;
31766 l_adr_value_type_code         VARCHAR2(30);
31763 l_adr_accounting_coa_id       NUMBER;
31764 l_adr_flexfield_segment_code  VARCHAR2(30);
31765 l_adr_flex_value_set_id       NUMBER;
31767 l_adr_value_combination_id    NUMBER;
31768 l_adr_value_segment_code      VARCHAR2(30);
31769 
31770 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
31771 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
31772 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
31773 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
31774 
31775 -- 4262811 Variables ------------------------------------------------------------------------------------------
31776 l_entered_amt_idx             NUMBER;
31777 l_accted_amt_idx              NUMBER;
31778 l_acc_rev_flag                VARCHAR2(1);
31779 l_accrual_line_num            NUMBER;
31780 l_tmp_amt                     NUMBER;
31781 l_acc_rev_natural_side_code   VARCHAR2(1);
31782 
31783 l_num_entries                 NUMBER;
31784 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
31785 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
31786 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
31787 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
31788 l_recog_line_1                NUMBER;
31789 l_recog_line_2                NUMBER;
31790 
31791 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
31792 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
31793 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
31794 
31795 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
31796 
31797 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
31798 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
31799 
31800 ---------------------------------------------------------------------------------------------------------------
31801 
31802 
31803 --
31804 -- bulk performance
31805 --
31806 l_balance_type_code           VARCHAR2(1);
31807 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
31808 l_log_module                  VARCHAR2(240);
31809 
31810 --
31811 -- Upgrade strategy
31812 --
31813 l_actual_upg_option           VARCHAR2(1);
31814 l_enc_upg_option           VARCHAR2(1);
31815 
31816 --
31817 BEGIN
31818 --
31819 IF g_log_enabled THEN
31820       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_84';
31821 END IF;
31822 --
31823 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
31824 
31825       trace
31826          (p_msg      => 'BEGIN of AcctLineType_84'
31827          ,p_level    => C_LEVEL_PROCEDURE
31828          ,p_module   => l_log_module);
31829 
31830 END IF;
31831 --
31832 l_component_type             := 'AMB_JLT';
31833 l_component_code             := 'FACT_DOC_BANK_CHARGES';
31834 l_component_type_code        := 'S';
31835 l_component_appl_id          :=  222;
31836 l_amb_context_code           := 'DEFAULT';
31837 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
31838 l_event_class_code           := 'FACTORING_OCC_DOCUMENT';
31839 l_event_type_code            := 'FACTORING_OCC_DOCUMENT_ALL';
31840 l_line_definition_owner_code := 'S';
31841 l_line_definition_code       := 'JLBR_AR_FACT_DOC_ACCRUAL';
31842 --
31843 l_balance_type_code          := 'A';
31844 l_segment                     := NULL;
31845 l_ccid                        := NULL;
31846 l_adr_transaction_coa_id      := NULL;
31847 l_adr_accounting_coa_id       := NULL;
31848 l_adr_flexfield_segment_code  := NULL;
31849 l_adr_flex_value_set_id       := NULL;
31850 l_adr_value_type_code         := NULL;
31851 l_adr_value_combination_id    := NULL;
31852 l_adr_value_segment_code      := NULL;
31853 
31854 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
31855 l_bflow_class_code           := '';    -- 4219869 Business Flow
31856 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
31857 l_budgetary_control_flag     := 'N';
31858 
31859 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
31860 l_bflow_applied_to_amt       := NULL; -- 5132302
31861 l_entered_amt_idx            := NULL;          -- 4262811
31862 l_accted_amt_idx             := NULL;          -- 4262811
31863 l_acc_rev_flag               := NULL;          -- 4262811
31864 l_accrual_line_num           := NULL;          -- 4262811
31865 l_tmp_amt                    := NULL;          -- 4262811
31866 --
31867  
31868 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
31869     l_balance_type_code <> 'B' THEN
31870 IF NVL(p_source_77,'
31871 ') =  'JLBR_AR_BANK_CHARGES' AND 
31872 NVL(p_source_13,'
31873 ') =  'FACTORING'
31874  THEN 
31875 
31876    --
31877    XLA_AE_LINES_PKG.SetNewLine;
31878 
31879    p_balance_type_code          := l_balance_type_code;
31880    -- set the flag so later we will know whether the gain loss line needs to be created
31881    
31882    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
31883      p_actual_flag :='A';
31884    END IF;
31885 
31886    --
31887    -- bulk performance
31888    --
31889    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
31890                                       p_header_num   => 0); -- 4262811
31891    --
31895            p_natural_side_code          => 'D'
31892    -- set accounting line options
31893    --
31894    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
31896          , p_gain_or_loss_flag          => 'N'
31897          , p_gl_transfer_mode_code      => 'S'
31898          , p_acct_entry_type_code       => 'A'
31899          , p_switch_side_flag           => 'Y'
31900          , p_merge_duplicate_code       => 'W'
31901          );
31902    --
31903    l_acc_rev_natural_side_code := 'C';  -- 4262811
31904    -- 
31905    --
31906    -- set accounting line type info
31907    --
31908    xla_ae_lines_pkg.SetAcctLineType
31909       (p_component_type             => l_component_type
31910       ,p_event_type_code            => l_event_type_code
31911       ,p_line_definition_owner_code => l_line_definition_owner_code
31912       ,p_line_definition_code       => l_line_definition_code
31913       ,p_accounting_line_code       => l_component_code
31914       ,p_accounting_line_type_code  => l_component_type_code
31915       ,p_accounting_line_appl_id    => l_component_appl_id
31916       ,p_amb_context_code           => l_amb_context_code
31917       ,p_entity_code                => l_entity_code
31918       ,p_event_class_code           => l_event_class_code);
31919    --
31920    -- set accounting class
31921    --
31922    xla_ae_lines_pkg.SetAcctClass(
31923            p_accounting_class_code  => 'BANK_CHG'
31924          , p_ae_header_id           => l_ae_header_id
31925          );
31926 
31927    --
31928    -- set rounding class
31929    --
31930    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
31931                       'BANK_CHG';
31932 
31933    --
31934    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
31935    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
31936    --
31937    -- bulk performance
31938    --
31939    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
31940 
31941    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
31942       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
31943 
31944    -- 4955764
31945    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
31946       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
31947 
31948    -- 4458381 Public Sector Enh
31949    
31950    --
31951    -- set accounting attributes for the line type
31952    --
31953    l_entered_amt_idx := 10;
31954    l_accted_amt_idx  := 15;
31955    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
31956    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
31957    l_rec_acct_attrs.array_char_value(1)  := p_source_78;
31958    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
31959    l_rec_acct_attrs.array_num_value(2)  := 
31960 xla_ae_sources_pkg.GetSystemSourceNum(
31961    p_source_code           => 'XLA_EVENT_APPL_ID'
31962  , p_source_type_code      => 'Y'
31963  , p_source_application_id =>  602
31964 );
31965    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
31966    l_rec_acct_attrs.array_char_value(3)  := p_source_80;
31967    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
31968    l_rec_acct_attrs.array_char_value(4)  := 
31969 xla_ae_sources_pkg.GetSystemSourceChar(
31970    p_source_code           => 'XLA_ENTITY_CODE'
31971  , p_source_type_code      => 'Y'
31972  , p_source_application_id =>  602
31973 );
31974    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
31975    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_82);
31976    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
31977    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_83);
31978    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
31979    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_84);
31980    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
31981    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_85);
31982    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
31983    l_rec_acct_attrs.array_char_value(9)  := p_source_86;
31984    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
31985    l_rec_acct_attrs.array_num_value(10)  := p_source_87;
31986    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
31987    l_rec_acct_attrs.array_char_value(11)  := p_source_88;
31988    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
31989    l_rec_acct_attrs.array_date_value(12)  := p_source_89;
31990    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
31991    l_rec_acct_attrs.array_num_value(13)  := p_source_90;
31992    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
31993    l_rec_acct_attrs.array_char_value(14)  := p_source_91;
31994    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
31995    l_rec_acct_attrs.array_num_value(15)  := p_source_92;
31996    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
31997    l_rec_acct_attrs.array_num_value(16)  := p_source_49;
31998    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
31999    l_rec_acct_attrs.array_num_value(17)  := p_source_50;
32003    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_93);
32000    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
32001    l_rec_acct_attrs.array_char_value(18)  := p_source_51;
32002    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
32004    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
32005    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_94);
32006    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
32007    l_rec_acct_attrs.array_char_value(21)  := p_source_95;
32008    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
32009    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_93);
32010 
32011    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32012    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32013 
32014    ---------------------------------------------------------------------------------------------------------------
32015    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32016    ---------------------------------------------------------------------------------------------------------------
32017    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32018 
32019    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32020    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32021 
32022    IF xla_accounting_cache_pkg.GetValueChar
32023          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32024          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32025    AND l_bflow_method_code = 'PRIOR_ENTRY'
32026 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32027    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32028          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32029        )
32030    THEN
32031          xla_ae_lines_pkg.BflowUpgEntry
32032            (p_business_method_code    => l_bflow_method_code
32033            ,p_business_class_code     => l_bflow_class_code
32034            ,p_balance_type            => l_balance_type_code);
32035    ELSE
32036       NULL;
32037 -- No business flow processing for business flow method of NONE.
32038    END IF;
32039 
32040    --
32041    -- call analytical criteria
32042    --
32043    
32044    --
32045    -- call description
32046    --
32047    
32048 xla_ae_lines_pkg.SetLineDescription(
32049    p_ae_header_id => l_ae_header_id
32050   ,p_description  => Description_10 (
32051      p_application_id         => p_application_id
32052    , p_ae_header_id           => l_ae_header_id 
32053 , p_source_10 => p_source_10
32054 , p_source_11 => p_source_11
32055 , p_source_12 => p_source_12
32056 , p_source_13 => p_source_13
32057 , p_source_13_meaning => p_source_13_meaning
32058    )
32059 );
32060 
32061 
32062    --
32063    -- call ADRs
32064    -- Bug 4922099
32065    --
32066    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32067         (NVL(l_actual_upg_option, 'N') = 'O') OR
32068         (NVL(l_enc_upg_option, 'N') = 'O')
32069       )
32070    THEN
32071    NULL;
32072    --
32073    --
32074    
32075   l_ccid := AcctDerRule_22(
32076            p_application_id           => p_application_id
32077          , p_ae_header_id             => l_ae_header_id 
32078 , p_source_25 => p_source_25
32079          , x_transaction_coa_id       => l_adr_transaction_coa_id
32080          , x_accounting_coa_id        => l_adr_accounting_coa_id
32081          , x_value_type_code          => l_adr_value_type_code
32082          , p_side                     => 'NA'
32083    );
32084 
32085    xla_ae_lines_pkg.set_ccid(
32086     p_code_combination_id          => l_ccid
32087   , p_value_type_code              => l_adr_value_type_code
32088   , p_transaction_coa_id           => l_adr_transaction_coa_id
32089   , p_accounting_coa_id            => l_adr_accounting_coa_id
32090   , p_adr_code                     => 'COLL_DOC_BANK_CHARGES'
32091   , p_adr_type_code                => 'S'
32092   , p_component_type               => l_component_type
32093   , p_component_code               => l_component_code
32094   , p_component_type_code          => l_component_type_code
32095   , p_component_appl_id            => l_component_appl_id
32096   , p_amb_context_code             => l_amb_context_code
32097   , p_side                         => 'NA'
32098   );
32099 
32100 
32101    --
32102    --
32103    END IF;
32104    --
32105    -- Bug 4922099
32106    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32107           (NVL(l_enc_upg_option, 'N') = 'O')
32108         ) AND
32109         (l_bflow_method_code = 'PRIOR_ENTRY')
32110       )
32111    THEN
32112       IF
32113       --
32114       1 = 2
32115       --
32116       THEN
32117       xla_accounting_err_pkg.build_message
32118                                     (p_appli_s_name            => 'XLA'
32119                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32120                                     ,p_token_1                 => 'LINE_NUMBER'
32121                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32125                                                                             ,l_component_code
32122                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32123                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32124                                                                              l_component_type
32126                                                                             ,l_component_type_code
32127                                                                             ,l_component_appl_id
32128                                                                             ,l_amb_context_code
32129                                                                             ,l_entity_code
32130                                                                             ,l_event_class_code
32131                                                                            )
32132                                     ,p_token_3                 => 'OWNER'
32133                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32134                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32135                                                                           ,p_lookup_code    => l_component_type_code
32136                                                                          )
32137                                     ,p_token_4                 => 'PRODUCT_NAME'
32138                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32139                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32140                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32141                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32142                                     ,p_ae_header_id            =>  NULL
32143                                        );
32144 
32145         IF (C_LEVEL_ERROR>= g_log_level) THEN
32146                  trace
32147                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32148                       ,p_level    => C_LEVEL_ERROR
32149                       ,p_module   => l_log_module);
32150         END IF;
32151       END IF;
32152    END IF;
32153    --
32154    --
32155    ------------------------------------------------------------------------------------------------
32156    -- 4219869 Business Flow
32157    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32158    -- Prior Entry.  Currently, the following code is always generated.
32159    ------------------------------------------------------------------------------------------------
32160    XLA_AE_LINES_PKG.ValidateCurrentLine;
32161 
32162    ------------------------------------------------------------------------------------
32163    -- 4219869 Business Flow
32164    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32165    ------------------------------------------------------------------------------------
32166    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32167 
32168    ----------------------------------------------------------------------------------
32169    -- 4219869 Business Flow
32170    -- Update journal entry status -- Need to generate this within IF <condition>
32171    ----------------------------------------------------------------------------------
32172    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32173          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32174          ,p_balance_type_code => l_balance_type_code
32175          );
32176 
32177    -------------------------------------------------------------------------------------------
32178    -- 4262811 - Generate the Accrual Reversal lines
32179    -------------------------------------------------------------------------------------------
32180    BEGIN
32181       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32182                               (g_array_event(p_event_id).array_value_num('header_index'));
32183       IF l_acc_rev_flag IS NULL THEN
32184          l_acc_rev_flag := 'N';
32185       END IF;
32186    EXCEPTION
32187       WHEN OTHERS THEN
32188          l_acc_rev_flag := 'N';
32189    END;
32190    --
32191    IF (l_acc_rev_flag = 'Y') THEN
32192 
32193        -- 4645092  ------------------------------------------------------------------------------
32194        -- To allow MPA report to determine if it should generate report process
32195        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32196        ------------------------------------------------------------------------------------------
32197 
32198        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32199        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32200    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
32201    -- call ADRs
32202    -- Bug 4922099
32203    --
32204    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32205         (NVL(l_actual_upg_option, 'N') = 'O') OR
32206         (NVL(l_enc_upg_option, 'N') = 'O')
32207       )
32208    THEN
32209    NULL;
32210    --
32211    --
32212    
32213   l_ccid := AcctDerRule_22(
32214            p_application_id           => p_application_id
32215          , p_ae_header_id             => l_ae_header_id 
32216 , p_source_25 => p_source_25
32217          , x_transaction_coa_id       => l_adr_transaction_coa_id
32221    );
32218          , x_accounting_coa_id        => l_adr_accounting_coa_id
32219          , x_value_type_code          => l_adr_value_type_code
32220          , p_side                     => 'NA'
32222 
32223    xla_ae_lines_pkg.set_ccid(
32224     p_code_combination_id          => l_ccid
32225   , p_value_type_code              => l_adr_value_type_code
32226   , p_transaction_coa_id           => l_adr_transaction_coa_id
32227   , p_accounting_coa_id            => l_adr_accounting_coa_id
32228   , p_adr_code                     => 'COLL_DOC_BANK_CHARGES'
32229   , p_adr_type_code                => 'S'
32230   , p_component_type               => l_component_type
32231   , p_component_code               => l_component_code
32232   , p_component_type_code          => l_component_type_code
32233   , p_component_appl_id            => l_component_appl_id
32234   , p_amb_context_code             => l_amb_context_code
32235   , p_side                         => 'NA'
32236   );
32237 
32238 
32239    --
32240    --
32241    END IF;
32242 
32243        --
32244        -- Update the line information that should be overwritten
32245        --
32246        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32247                                          p_header_num   => 1);
32248        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32249 
32250        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32251 
32252        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32253           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32254        END IF;
32255 
32256       --
32257       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32258       --
32259       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32260           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32261       ELSE
32262           ---------------------------------------------------------------------------------------------------
32263           -- 4262811a Switch Sign
32264           ---------------------------------------------------------------------------------------------------
32265           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32266           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32267                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32268           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32269                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32270           -- 5132302
32271           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32272                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32273 
32274       END IF;
32275 
32276       -- 4955764
32277       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32278       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32279 
32280 
32281       XLA_AE_LINES_PKG.ValidateCurrentLine;
32282       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32283 
32284       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32285                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32286                ,p_balance_type_code => l_balance_type_code);
32287 
32288    END IF;
32289 
32290    -----------------------------------------------------------------------------------------
32291    -- 4262811 Multiperiod Accounting
32292    -----------------------------------------------------------------------------------------
32293      -- No MPA option is assigned.
32294 
32295 
32296 END IF;
32297 END IF;
32298 --
32299 
32300 --
32301 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32302    trace
32303       (p_msg      => 'END of AcctLineType_84'
32304       ,p_level    => C_LEVEL_PROCEDURE
32305       ,p_module   => l_log_module);
32306 END IF;
32307 --
32308 EXCEPTION
32309   WHEN xla_exceptions_pkg.application_exception THEN
32310       RAISE;
32311   WHEN OTHERS THEN
32312        xla_exceptions_pkg.raise_message
32313            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_84');
32314 END AcctLineType_84;
32315 --
32316 
32317 ---------------------------------------
32318 --
32319 -- PRIVATE FUNCTION
32320 --         AcctLineType_85
32321 --
32322 ---------------------------------------
32323 PROCEDURE AcctLineType_85 (
32324   p_application_id        IN NUMBER
32325  ,p_event_id              IN NUMBER
32326  ,p_calculate_acctd_flag  IN VARCHAR2
32327  ,p_calculate_g_l_flag    IN VARCHAR2
32328  ,p_actual_flag           IN OUT VARCHAR2
32329  ,p_balance_type_code     OUT VARCHAR2
32330  ,p_gain_or_loss_ref      OUT VARCHAR2
32331  
32332 --Bordero Type
32333  , p_source_13            IN VARCHAR2
32334  , p_source_13_meaning    IN VARCHAR2
32335 --SLA Party Type
32336  , p_source_51            IN VARCHAR2
32337 --Collection Document Distribution Line Type
32338  , p_source_77            IN VARCHAR2
32342  , p_source_78_meaning    IN VARCHAR2
32339  , p_source_77_meaning    IN VARCHAR2
32340 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
32341  , p_source_78            IN VARCHAR2
32343 --Applied To Distribution Link Type
32344  , p_source_80            IN VARCHAR2
32345 --Applied To Distribution Identifier
32346  , p_source_82            IN NUMBER
32347 --Applied To Distribution Document Identifier
32348  , p_source_83            IN NUMBER
32349 --Applied To Distribution Occurrence Identifier
32350  , p_source_84            IN NUMBER
32351 --Collection Document Distribution Identifier
32352  , p_source_85            IN NUMBER
32353 --Collection Document Distribution Link Type
32354  , p_source_86            IN VARCHAR2
32355 --Collection Document Distribution Entered Amount
32356  , p_source_87            IN NUMBER
32357 --Collection Document Distribution Entered Currency Code
32358  , p_source_88            IN VARCHAR2
32359 --Collection Document Distribution Accounted Amount
32360  , p_source_92            IN NUMBER
32361 --Collection Document Occurrence Identifier
32362  , p_source_93            IN NUMBER
32363 --Reversed Collection Document Distribution Identifier
32364  , p_source_94            IN NUMBER
32365 --Reversed Collection Document Distribution Link Type
32366  , p_source_95            IN VARCHAR2
32367 --Collection Document Occurrence Type
32368  , p_source_96            IN VARCHAR2
32369  , p_source_96_meaning    IN VARCHAR2
32370 )
32371 IS
32372 
32373 l_component_type              VARCHAR2(80);
32374 l_component_code              VARCHAR2(30);
32375 l_component_type_code         VARCHAR2(1);
32376 l_component_appl_id           INTEGER;
32377 l_amb_context_code            VARCHAR2(30);
32378 l_entity_code                 VARCHAR2(30);
32379 l_event_class_code            VARCHAR2(30);
32380 l_ae_header_id                NUMBER;
32381 l_event_type_code             VARCHAR2(30);
32382 l_line_definition_code        VARCHAR2(30);
32383 l_line_definition_owner_code  VARCHAR2(1);
32384 --
32385 -- adr variables
32386 l_segment                     VARCHAR2(30);
32387 l_ccid                        NUMBER;
32388 l_adr_transaction_coa_id      NUMBER;
32389 l_adr_accounting_coa_id       NUMBER;
32390 l_adr_flexfield_segment_code  VARCHAR2(30);
32391 l_adr_flex_value_set_id       NUMBER;
32392 l_adr_value_type_code         VARCHAR2(30);
32393 l_adr_value_combination_id    NUMBER;
32394 l_adr_value_segment_code      VARCHAR2(30);
32395 
32396 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32397 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32398 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32399 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32400 
32401 -- 4262811 Variables ------------------------------------------------------------------------------------------
32402 l_entered_amt_idx             NUMBER;
32403 l_accted_amt_idx              NUMBER;
32404 l_acc_rev_flag                VARCHAR2(1);
32405 l_accrual_line_num            NUMBER;
32406 l_tmp_amt                     NUMBER;
32407 l_acc_rev_natural_side_code   VARCHAR2(1);
32408 
32409 l_num_entries                 NUMBER;
32410 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32411 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32412 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32413 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32414 l_recog_line_1                NUMBER;
32415 l_recog_line_2                NUMBER;
32416 
32417 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32418 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32419 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32420 
32421 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32422 
32423 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32424 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32425 
32426 ---------------------------------------------------------------------------------------------------------------
32427 
32428 
32429 --
32430 -- bulk performance
32431 --
32432 l_balance_type_code           VARCHAR2(1);
32433 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
32434 l_log_module                  VARCHAR2(240);
32435 
32436 --
32437 -- Upgrade strategy
32438 --
32439 l_actual_upg_option           VARCHAR2(1);
32440 l_enc_upg_option           VARCHAR2(1);
32441 
32442 --
32443 BEGIN
32444 --
32445 IF g_log_enabled THEN
32446       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_85';
32447 END IF;
32448 --
32449 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32450 
32451       trace
32452          (p_msg      => 'BEGIN of AcctLineType_85'
32453          ,p_level    => C_LEVEL_PROCEDURE
32454          ,p_module   => l_log_module);
32455 
32456 END IF;
32457 --
32458 l_component_type             := 'AMB_JLT';
32459 l_component_code             := 'FACT_DOC_BILLS_UNDER_DISC_CR';
32460 l_component_type_code        := 'S';
32461 l_component_appl_id          :=  222;
32462 l_amb_context_code           := 'DEFAULT';
32463 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
32464 l_event_class_code           := 'FACTORING_OCC_DOCUMENT';
32468 --
32465 l_event_type_code            := 'FACTORING_OCC_DOCUMENT_ALL';
32466 l_line_definition_owner_code := 'S';
32467 l_line_definition_code       := 'JLBR_AR_FACT_DOC_ACCRUAL';
32469 l_balance_type_code          := 'A';
32470 l_segment                     := NULL;
32471 l_ccid                        := NULL;
32472 l_adr_transaction_coa_id      := NULL;
32473 l_adr_accounting_coa_id       := NULL;
32474 l_adr_flexfield_segment_code  := NULL;
32475 l_adr_flex_value_set_id       := NULL;
32476 l_adr_value_type_code         := NULL;
32477 l_adr_value_combination_id    := NULL;
32478 l_adr_value_segment_code      := NULL;
32479 
32480 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
32481 l_bflow_class_code           := 'JLBR_AR_BILLS_UNDER_DISCOUNT';    -- 4219869 Business Flow
32482 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
32483 l_budgetary_control_flag     := 'N';
32484 
32485 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
32486 l_bflow_applied_to_amt       := NULL; -- 5132302
32487 l_entered_amt_idx            := NULL;          -- 4262811
32488 l_accted_amt_idx             := NULL;          -- 4262811
32489 l_acc_rev_flag               := NULL;          -- 4262811
32490 l_accrual_line_num           := NULL;          -- 4262811
32491 l_tmp_amt                    := NULL;          -- 4262811
32492 --
32493  
32494 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
32495     l_balance_type_code <> 'B' THEN
32496 IF NVL(p_source_77,'
32497 ') =  'JLBR_AR_ENDORSEMENT' AND 
32498 NVL(p_source_13,'
32499 ') =  'FACTORING' AND 
32500 NVL(p_source_96,'
32501 ') =  'RETURN_OCCURRENCE'
32502  THEN 
32503 
32504    --
32505    XLA_AE_LINES_PKG.SetNewLine;
32506 
32507    p_balance_type_code          := l_balance_type_code;
32508    -- set the flag so later we will know whether the gain loss line needs to be created
32509    
32510    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
32511      p_actual_flag :='A';
32512    END IF;
32513 
32514    --
32515    -- bulk performance
32516    --
32517    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
32518                                       p_header_num   => 0); -- 4262811
32519    --
32520    -- set accounting line options
32521    --
32522    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
32523            p_natural_side_code          => 'C'
32524          , p_gain_or_loss_flag          => 'N'
32525          , p_gl_transfer_mode_code      => 'S'
32526          , p_acct_entry_type_code       => 'A'
32527          , p_switch_side_flag           => 'Y'
32528          , p_merge_duplicate_code       => 'A'
32529          );
32530    --
32531    l_acc_rev_natural_side_code := 'D';  -- 4262811
32532    -- 
32533    --
32534    -- set accounting line type info
32535    --
32536    xla_ae_lines_pkg.SetAcctLineType
32537       (p_component_type             => l_component_type
32538       ,p_event_type_code            => l_event_type_code
32539       ,p_line_definition_owner_code => l_line_definition_owner_code
32540       ,p_line_definition_code       => l_line_definition_code
32541       ,p_accounting_line_code       => l_component_code
32542       ,p_accounting_line_type_code  => l_component_type_code
32543       ,p_accounting_line_appl_id    => l_component_appl_id
32544       ,p_amb_context_code           => l_amb_context_code
32545       ,p_entity_code                => l_entity_code
32546       ,p_event_class_code           => l_event_class_code);
32547    --
32548    -- set accounting class
32549    --
32550    xla_ae_lines_pkg.SetAcctClass(
32551            p_accounting_class_code  => 'FACTOR'
32552          , p_ae_header_id           => l_ae_header_id
32553          );
32554 
32555    --
32556    -- set rounding class
32557    --
32558    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
32559                       'FACTOR';
32560 
32561    --
32562    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
32563    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
32564    --
32565    -- bulk performance
32566    --
32567    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
32568 
32569    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
32570       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
32571 
32572    -- 4955764
32573    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32574       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
32575 
32576    -- 4458381 Public Sector Enh
32577    
32578    --
32579    -- set accounting attributes for the line type
32580    --
32581    l_entered_amt_idx := 10;
32582    l_accted_amt_idx  := 12;
32583    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
32584    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
32585    l_rec_acct_attrs.array_char_value(1)  := p_source_78;
32586    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
32587    l_rec_acct_attrs.array_num_value(2)  := 
32588 xla_ae_sources_pkg.GetSystemSourceNum(
32589    p_source_code           => 'XLA_EVENT_APPL_ID'
32593    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
32590  , p_source_type_code      => 'Y'
32591  , p_source_application_id =>  602
32592 );
32594    l_rec_acct_attrs.array_char_value(3)  := p_source_80;
32595    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
32596    l_rec_acct_attrs.array_char_value(4)  := 
32597 xla_ae_sources_pkg.GetSystemSourceChar(
32598    p_source_code           => 'XLA_ENTITY_CODE'
32599  , p_source_type_code      => 'Y'
32600  , p_source_application_id =>  602
32601 );
32602    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
32603    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_82);
32604    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
32605    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_83);
32606    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
32607    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_84);
32608    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
32609    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_85);
32610    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
32611    l_rec_acct_attrs.array_char_value(9)  := p_source_86;
32612    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
32613    l_rec_acct_attrs.array_num_value(10)  := p_source_87;
32614    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
32615    l_rec_acct_attrs.array_char_value(11)  := p_source_88;
32616    l_rec_acct_attrs.array_acct_attr_code(12) := 'LEDGER_AMOUNT';
32617    l_rec_acct_attrs.array_num_value(12)  := p_source_92;
32618    l_rec_acct_attrs.array_acct_attr_code(13) := 'PARTY_TYPE';
32619    l_rec_acct_attrs.array_char_value(13)  := p_source_51;
32620    l_rec_acct_attrs.array_acct_attr_code(14) := 'RECON_REF';
32621    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_93);
32622    l_rec_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_ID1';
32623    l_rec_acct_attrs.array_num_value(15)  :=  to_char(p_source_94);
32624    l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_TYPE';
32625    l_rec_acct_attrs.array_char_value(16)  := p_source_95;
32626    l_rec_acct_attrs.array_acct_attr_code(17) := 'TRX_ROUNDING_REF';
32627    l_rec_acct_attrs.array_num_value(17)  :=  to_char(p_source_93);
32628 
32629    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
32630    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
32631 
32632    ---------------------------------------------------------------------------------------------------------------
32633    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
32634    ---------------------------------------------------------------------------------------------------------------
32635    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
32636 
32637    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32638    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
32639 
32640    IF xla_accounting_cache_pkg.GetValueChar
32641          (p_source_code         => 'LEDGER_CATEGORY_CODE'
32642          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
32643    AND l_bflow_method_code = 'PRIOR_ENTRY'
32644 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
32645    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
32646          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
32647        )
32648    THEN
32649          xla_ae_lines_pkg.BflowUpgEntry
32650            (p_business_method_code    => l_bflow_method_code
32651            ,p_business_class_code     => l_bflow_class_code
32652            ,p_balance_type            => l_balance_type_code);
32653    ELSE
32654       NULL;
32655 XLA_AE_LINES_PKG.business_flow_validation(
32656                                 p_business_method_code     => l_bflow_method_code
32657                                ,p_business_class_code      => l_bflow_class_code
32658                                ,p_inherit_description_flag => l_inherit_desc_flag);
32659    END IF;
32660 
32661    --
32662    -- call analytical criteria
32663    --
32664    -- Inherited Analytical Criteria for business flow method of Prior Entry.
32665    --
32666    -- call description
32667    --
32668    -- No description or it is inherited.
32669    --
32670    -- call ADRs
32671    -- Bug 4922099
32672    --
32673    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32674         (NVL(l_actual_upg_option, 'N') = 'O') OR
32675         (NVL(l_enc_upg_option, 'N') = 'O')
32676       )
32677    THEN
32678    NULL;
32679    --
32680    --
32681    
32682    --
32683    --
32684    END IF;
32685    --
32686    -- Bug 4922099
32687    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
32688           (NVL(l_enc_upg_option, 'N') = 'O')
32689         ) AND
32690         (l_bflow_method_code = 'PRIOR_ENTRY')
32691       )
32692    THEN
32693       IF
32694       --
32695       1 = 1
32696       --
32697       THEN
32698       xla_accounting_err_pkg.build_message
32699                                     (p_appli_s_name            => 'XLA'
32700                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32704                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
32701                                     ,p_token_1                 => 'LINE_NUMBER'
32702                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
32703                                     ,p_token_2                 => 'LINE_TYPE_NAME'
32705                                                                              l_component_type
32706                                                                             ,l_component_code
32707                                                                             ,l_component_type_code
32708                                                                             ,l_component_appl_id
32709                                                                             ,l_amb_context_code
32710                                                                             ,l_entity_code
32711                                                                             ,l_event_class_code
32712                                                                            )
32713                                     ,p_token_3                 => 'OWNER'
32714                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
32715                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
32716                                                                           ,p_lookup_code    => l_component_type_code
32717                                                                          )
32718                                     ,p_token_4                 => 'PRODUCT_NAME'
32719                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
32720                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
32721                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
32722                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
32723                                     ,p_ae_header_id            =>  NULL
32724                                        );
32725 
32726         IF (C_LEVEL_ERROR>= g_log_level) THEN
32727                  trace
32728                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
32729                       ,p_level    => C_LEVEL_ERROR
32730                       ,p_module   => l_log_module);
32731         END IF;
32732       END IF;
32733    END IF;
32734    --
32735    --
32736    ------------------------------------------------------------------------------------------------
32737    -- 4219869 Business Flow
32738    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
32739    -- Prior Entry.  Currently, the following code is always generated.
32740    ------------------------------------------------------------------------------------------------
32741    -- No ValidateCurrentLine for business flow method of Prior Entry
32742 
32743    ------------------------------------------------------------------------------------
32744    -- 4219869 Business Flow
32745    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
32746    ------------------------------------------------------------------------------------
32747    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32748 
32749    ----------------------------------------------------------------------------------
32750    -- 4219869 Business Flow
32751    -- Update journal entry status -- Need to generate this within IF <condition>
32752    ----------------------------------------------------------------------------------
32753    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32754          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
32755          ,p_balance_type_code => l_balance_type_code
32756          );
32757 
32758    -------------------------------------------------------------------------------------------
32759    -- 4262811 - Generate the Accrual Reversal lines
32760    -------------------------------------------------------------------------------------------
32761    BEGIN
32762       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
32763                               (g_array_event(p_event_id).array_value_num('header_index'));
32764       IF l_acc_rev_flag IS NULL THEN
32765          l_acc_rev_flag := 'N';
32766       END IF;
32767    EXCEPTION
32768       WHEN OTHERS THEN
32769          l_acc_rev_flag := 'N';
32770    END;
32771    --
32772    IF (l_acc_rev_flag = 'Y') THEN
32773 
32774        -- 4645092  ------------------------------------------------------------------------------
32775        -- To allow MPA report to determine if it should generate report process
32776        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
32777        ------------------------------------------------------------------------------------------
32778 
32779        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
32780        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
32781    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
32782    -- call ADRs
32783    -- Bug 4922099
32784    --
32785    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
32786         (NVL(l_actual_upg_option, 'N') = 'O') OR
32787         (NVL(l_enc_upg_option, 'N') = 'O')
32788       )
32789    THEN
32790    NULL;
32791    --
32792    --
32793    
32794    --
32795    --
32796    END IF;
32797 
32801        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
32798        --
32799        -- Update the line information that should be overwritten
32800        --
32802                                          p_header_num   => 1);
32803        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
32804 
32805        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
32806 
32807        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
32808           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
32809        END IF;
32810 
32811       --
32812       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
32813       --
32814       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
32815           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
32816       ELSE
32817           ---------------------------------------------------------------------------------------------------
32818           -- 4262811a Switch Sign
32819           ---------------------------------------------------------------------------------------------------
32820           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
32821           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32822                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32823           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
32824                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32825           -- 5132302
32826           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
32827                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
32828 
32829       END IF;
32830 
32831       -- 4955764
32832       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
32833       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
32834 
32835 
32836       XLA_AE_LINES_PKG.ValidateCurrentLine;
32837       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
32838 
32839       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
32840                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
32841                ,p_balance_type_code => l_balance_type_code);
32842 
32843    END IF;
32844 
32845    -----------------------------------------------------------------------------------------
32846    -- 4262811 Multiperiod Accounting
32847    -----------------------------------------------------------------------------------------
32848      -- No MPA option is assigned.
32849 
32850 
32851 END IF;
32852 END IF;
32853 --
32854 
32855 --
32856 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
32857    trace
32858       (p_msg      => 'END of AcctLineType_85'
32859       ,p_level    => C_LEVEL_PROCEDURE
32860       ,p_module   => l_log_module);
32861 END IF;
32862 --
32863 EXCEPTION
32864   WHEN xla_exceptions_pkg.application_exception THEN
32865       RAISE;
32866   WHEN OTHERS THEN
32867        xla_exceptions_pkg.raise_message
32868            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_85');
32869 END AcctLineType_85;
32870 --
32871 
32872 ---------------------------------------
32873 --
32874 -- PRIVATE FUNCTION
32875 --         AcctLineType_86
32876 --
32877 ---------------------------------------
32878 PROCEDURE AcctLineType_86 (
32879   p_application_id        IN NUMBER
32880  ,p_event_id              IN NUMBER
32881  ,p_calculate_acctd_flag  IN VARCHAR2
32882  ,p_calculate_g_l_flag    IN VARCHAR2
32883  ,p_actual_flag           IN OUT VARCHAR2
32884  ,p_balance_type_code     OUT VARCHAR2
32885  ,p_gain_or_loss_ref      OUT VARCHAR2
32886  
32887 --Collection Document Bank Occurrence
32888  , p_source_10            IN VARCHAR2
32889 --Collection Document Number
32890  , p_source_11            IN NUMBER
32891 --Collection Document Trade Note Number
32892  , p_source_12            IN VARCHAR2
32893 --Bordero Type
32894  , p_source_13            IN VARCHAR2
32895  , p_source_13_meaning    IN VARCHAR2
32896 --Collection Document Bills Under Discount Account
32897  , p_source_27            IN NUMBER
32898 --Bill To Customer Account Identifier
32899  , p_source_49            IN NUMBER
32900 --Bill To Customer Site Use Identifier
32901  , p_source_50            IN NUMBER
32902 --SLA Party Type
32903  , p_source_51            IN VARCHAR2
32904 --Collection Document Distribution Line Type
32905  , p_source_77            IN VARCHAR2
32906  , p_source_77_meaning    IN VARCHAR2
32907 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
32908  , p_source_78            IN VARCHAR2
32909  , p_source_78_meaning    IN VARCHAR2
32910 --Applied To Distribution Link Type
32911  , p_source_80            IN VARCHAR2
32912 --Applied To Distribution Identifier
32913  , p_source_82            IN NUMBER
32914 --Applied To Distribution Document Identifier
32915  , p_source_83            IN NUMBER
32916 --Applied To Distribution Occurrence Identifier
32917  , p_source_84            IN NUMBER
32921  , p_source_86            IN VARCHAR2
32918 --Collection Document Distribution Identifier
32919  , p_source_85            IN NUMBER
32920 --Collection Document Distribution Link Type
32922 --Collection Document Distribution Entered Amount
32923  , p_source_87            IN NUMBER
32924 --Collection Document Distribution Entered Currency Code
32925  , p_source_88            IN VARCHAR2
32926 --Collection Document Distribution Conversion Date
32927  , p_source_89            IN DATE
32928 --Collection Document Distribution Conversion Rate
32929  , p_source_90            IN NUMBER
32930 --Collection Document Distribution Conversion Rate Type
32931  , p_source_91            IN VARCHAR2
32932 --Collection Document Distribution Accounted Amount
32933  , p_source_92            IN NUMBER
32934 --Collection Document Occurrence Identifier
32935  , p_source_93            IN NUMBER
32936 --Reversed Collection Document Distribution Identifier
32937  , p_source_94            IN NUMBER
32938 --Reversed Collection Document Distribution Link Type
32939  , p_source_95            IN VARCHAR2
32940 --Collection Document Occurrence Type
32941  , p_source_96            IN VARCHAR2
32942  , p_source_96_meaning    IN VARCHAR2
32943 )
32944 IS
32945 
32946 l_component_type              VARCHAR2(80);
32947 l_component_code              VARCHAR2(30);
32948 l_component_type_code         VARCHAR2(1);
32949 l_component_appl_id           INTEGER;
32950 l_amb_context_code            VARCHAR2(30);
32951 l_entity_code                 VARCHAR2(30);
32952 l_event_class_code            VARCHAR2(30);
32953 l_ae_header_id                NUMBER;
32954 l_event_type_code             VARCHAR2(30);
32955 l_line_definition_code        VARCHAR2(30);
32956 l_line_definition_owner_code  VARCHAR2(1);
32957 --
32958 -- adr variables
32959 l_segment                     VARCHAR2(30);
32960 l_ccid                        NUMBER;
32961 l_adr_transaction_coa_id      NUMBER;
32962 l_adr_accounting_coa_id       NUMBER;
32963 l_adr_flexfield_segment_code  VARCHAR2(30);
32964 l_adr_flex_value_set_id       NUMBER;
32965 l_adr_value_type_code         VARCHAR2(30);
32966 l_adr_value_combination_id    NUMBER;
32967 l_adr_value_segment_code      VARCHAR2(30);
32968 
32969 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
32970 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
32971 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
32972 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
32973 
32974 -- 4262811 Variables ------------------------------------------------------------------------------------------
32975 l_entered_amt_idx             NUMBER;
32976 l_accted_amt_idx              NUMBER;
32977 l_acc_rev_flag                VARCHAR2(1);
32978 l_accrual_line_num            NUMBER;
32979 l_tmp_amt                     NUMBER;
32980 l_acc_rev_natural_side_code   VARCHAR2(1);
32981 
32982 l_num_entries                 NUMBER;
32983 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
32984 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
32985 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
32986 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
32987 l_recog_line_1                NUMBER;
32988 l_recog_line_2                NUMBER;
32989 
32990 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
32991 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
32992 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
32993 
32994 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
32995 
32996 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
32997 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
32998 
32999 ---------------------------------------------------------------------------------------------------------------
33000 
33001 
33002 --
33003 -- bulk performance
33004 --
33005 l_balance_type_code           VARCHAR2(1);
33006 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33007 l_log_module                  VARCHAR2(240);
33008 
33009 --
33010 -- Upgrade strategy
33011 --
33012 l_actual_upg_option           VARCHAR2(1);
33013 l_enc_upg_option           VARCHAR2(1);
33014 
33015 --
33016 BEGIN
33017 --
33018 IF g_log_enabled THEN
33019       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_86';
33020 END IF;
33021 --
33022 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33023 
33024       trace
33025          (p_msg      => 'BEGIN of AcctLineType_86'
33026          ,p_level    => C_LEVEL_PROCEDURE
33027          ,p_module   => l_log_module);
33028 
33029 END IF;
33030 --
33031 l_component_type             := 'AMB_JLT';
33032 l_component_code             := 'FACT_DOC_BILLS_UNDER_DISC_DR';
33033 l_component_type_code        := 'S';
33034 l_component_appl_id          :=  222;
33035 l_amb_context_code           := 'DEFAULT';
33036 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
33037 l_event_class_code           := 'FACTORING_OCC_DOCUMENT';
33038 l_event_type_code            := 'FACTORING_OCC_DOCUMENT_ALL';
33039 l_line_definition_owner_code := 'S';
33040 l_line_definition_code       := 'JLBR_AR_FACT_DOC_ACCRUAL';
33041 --
33042 l_balance_type_code          := 'A';
33046 l_adr_accounting_coa_id       := NULL;
33043 l_segment                     := NULL;
33044 l_ccid                        := NULL;
33045 l_adr_transaction_coa_id      := NULL;
33047 l_adr_flexfield_segment_code  := NULL;
33048 l_adr_flex_value_set_id       := NULL;
33049 l_adr_value_type_code         := NULL;
33050 l_adr_value_combination_id    := NULL;
33051 l_adr_value_segment_code      := NULL;
33052 
33053 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33054 l_bflow_class_code           := 'JLBR_AR_BILLS_UNDER_DISCOUNT';    -- 4219869 Business Flow
33055 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33056 l_budgetary_control_flag     := 'N';
33057 
33058 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33059 l_bflow_applied_to_amt       := NULL; -- 5132302
33060 l_entered_amt_idx            := NULL;          -- 4262811
33061 l_accted_amt_idx             := NULL;          -- 4262811
33062 l_acc_rev_flag               := NULL;          -- 4262811
33063 l_accrual_line_num           := NULL;          -- 4262811
33064 l_tmp_amt                    := NULL;          -- 4262811
33065 --
33066  
33067 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33068     l_balance_type_code <> 'B' THEN
33069 IF NVL(p_source_77,'
33070 ') =  'JLBR_AR_ENDORSEMENT' AND 
33071 NVL(p_source_13,'
33072 ') =  'FACTORING' AND 
33073 NVL(p_source_96,'
33074 ') =  'REMITTANCE_OCCURRENCE'
33075  THEN 
33076 
33077    --
33078    XLA_AE_LINES_PKG.SetNewLine;
33079 
33080    p_balance_type_code          := l_balance_type_code;
33081    -- set the flag so later we will know whether the gain loss line needs to be created
33082    
33083    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33084      p_actual_flag :='A';
33085    END IF;
33086 
33087    --
33088    -- bulk performance
33089    --
33090    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33091                                       p_header_num   => 0); -- 4262811
33092    --
33093    -- set accounting line options
33094    --
33095    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33096            p_natural_side_code          => 'D'
33097          , p_gain_or_loss_flag          => 'N'
33098          , p_gl_transfer_mode_code      => 'S'
33099          , p_acct_entry_type_code       => 'A'
33100          , p_switch_side_flag           => 'Y'
33101          , p_merge_duplicate_code       => 'A'
33102          );
33103    --
33104    l_acc_rev_natural_side_code := 'C';  -- 4262811
33105    -- 
33106    --
33107    -- set accounting line type info
33108    --
33109    xla_ae_lines_pkg.SetAcctLineType
33110       (p_component_type             => l_component_type
33111       ,p_event_type_code            => l_event_type_code
33112       ,p_line_definition_owner_code => l_line_definition_owner_code
33113       ,p_line_definition_code       => l_line_definition_code
33114       ,p_accounting_line_code       => l_component_code
33115       ,p_accounting_line_type_code  => l_component_type_code
33116       ,p_accounting_line_appl_id    => l_component_appl_id
33117       ,p_amb_context_code           => l_amb_context_code
33118       ,p_entity_code                => l_entity_code
33119       ,p_event_class_code           => l_event_class_code);
33120    --
33121    -- set accounting class
33122    --
33123    xla_ae_lines_pkg.SetAcctClass(
33124            p_accounting_class_code  => 'FACTOR'
33125          , p_ae_header_id           => l_ae_header_id
33126          );
33127 
33128    --
33129    -- set rounding class
33130    --
33131    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33132                       'FACTOR';
33133 
33134    --
33135    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33136    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33137    --
33138    -- bulk performance
33139    --
33140    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33141 
33142    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33143       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33144 
33145    -- 4955764
33146    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33147       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33148 
33149    -- 4458381 Public Sector Enh
33150    
33151    --
33152    -- set accounting attributes for the line type
33153    --
33154    l_entered_amt_idx := 10;
33155    l_accted_amt_idx  := 15;
33156    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33157    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
33158    l_rec_acct_attrs.array_char_value(1)  := p_source_78;
33159    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
33160    l_rec_acct_attrs.array_num_value(2)  := 
33161 xla_ae_sources_pkg.GetSystemSourceNum(
33162    p_source_code           => 'XLA_EVENT_APPL_ID'
33163  , p_source_type_code      => 'Y'
33164  , p_source_application_id =>  602
33165 );
33166    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
33170 xla_ae_sources_pkg.GetSystemSourceChar(
33167    l_rec_acct_attrs.array_char_value(3)  := p_source_80;
33168    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
33169    l_rec_acct_attrs.array_char_value(4)  := 
33171    p_source_code           => 'XLA_ENTITY_CODE'
33172  , p_source_type_code      => 'Y'
33173  , p_source_application_id =>  602
33174 );
33175    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
33176    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_82);
33177    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
33178    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_83);
33179    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
33180    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_84);
33181    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
33182    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_85);
33183    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
33184    l_rec_acct_attrs.array_char_value(9)  := p_source_86;
33185    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
33186    l_rec_acct_attrs.array_num_value(10)  := p_source_87;
33187    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
33188    l_rec_acct_attrs.array_char_value(11)  := p_source_88;
33189    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
33190    l_rec_acct_attrs.array_date_value(12)  := p_source_89;
33191    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
33192    l_rec_acct_attrs.array_num_value(13)  := p_source_90;
33193    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
33194    l_rec_acct_attrs.array_char_value(14)  := p_source_91;
33195    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
33196    l_rec_acct_attrs.array_num_value(15)  := p_source_92;
33197    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
33198    l_rec_acct_attrs.array_num_value(16)  := p_source_49;
33199    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
33200    l_rec_acct_attrs.array_num_value(17)  := p_source_50;
33201    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
33202    l_rec_acct_attrs.array_char_value(18)  := p_source_51;
33203    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
33204    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_93);
33205    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
33206    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_94);
33207    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
33208    l_rec_acct_attrs.array_char_value(21)  := p_source_95;
33209    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
33210    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_93);
33211 
33212    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33213    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33214 
33215    ---------------------------------------------------------------------------------------------------------------
33216    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33217    ---------------------------------------------------------------------------------------------------------------
33218    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33219 
33220    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33221    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33222 
33223    IF xla_accounting_cache_pkg.GetValueChar
33224          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33225          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33226    AND l_bflow_method_code = 'PRIOR_ENTRY'
33227 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33228    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33229          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33230        )
33231    THEN
33232          xla_ae_lines_pkg.BflowUpgEntry
33233            (p_business_method_code    => l_bflow_method_code
33234            ,p_business_class_code     => l_bflow_class_code
33235            ,p_balance_type            => l_balance_type_code);
33236    ELSE
33237       NULL;
33238 -- No business flow processing for business flow method of NONE.
33239    END IF;
33240 
33241    --
33242    -- call analytical criteria
33243    --
33244    
33245    --
33246    -- call description
33247    --
33248    
33249 xla_ae_lines_pkg.SetLineDescription(
33250    p_ae_header_id => l_ae_header_id
33251   ,p_description  => Description_12 (
33252      p_application_id         => p_application_id
33253    , p_ae_header_id           => l_ae_header_id 
33254 , p_source_10 => p_source_10
33255 , p_source_11 => p_source_11
33256 , p_source_12 => p_source_12
33257    )
33258 );
33259 
33260 
33261    --
33262    -- call ADRs
33263    -- Bug 4922099
33264    --
33265    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33266         (NVL(l_actual_upg_option, 'N') = 'O') OR
33267         (NVL(l_enc_upg_option, 'N') = 'O')
33268       )
33269    THEN
33270    NULL;
33271    --
33272    --
33273    
33274   l_ccid := AcctDerRule_24(
33275            p_application_id           => p_application_id
33276          , p_ae_header_id             => l_ae_header_id 
33280          , x_value_type_code          => l_adr_value_type_code
33277 , p_source_27 => p_source_27
33278          , x_transaction_coa_id       => l_adr_transaction_coa_id
33279          , x_accounting_coa_id        => l_adr_accounting_coa_id
33281          , p_side                     => 'NA'
33282    );
33283 
33284    xla_ae_lines_pkg.set_ccid(
33285     p_code_combination_id          => l_ccid
33286   , p_value_type_code              => l_adr_value_type_code
33287   , p_transaction_coa_id           => l_adr_transaction_coa_id
33288   , p_accounting_coa_id            => l_adr_accounting_coa_id
33289   , p_adr_code                     => 'COLL_DOC_BILLS_UNDER_DISC'
33290   , p_adr_type_code                => 'S'
33291   , p_component_type               => l_component_type
33292   , p_component_code               => l_component_code
33293   , p_component_type_code          => l_component_type_code
33294   , p_component_appl_id            => l_component_appl_id
33295   , p_amb_context_code             => l_amb_context_code
33296   , p_side                         => 'NA'
33297   );
33298 
33299 
33300    --
33301    --
33302    END IF;
33303    --
33304    -- Bug 4922099
33305    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33306           (NVL(l_enc_upg_option, 'N') = 'O')
33307         ) AND
33308         (l_bflow_method_code = 'PRIOR_ENTRY')
33309       )
33310    THEN
33311       IF
33312       --
33313       1 = 2
33314       --
33315       THEN
33316       xla_accounting_err_pkg.build_message
33317                                     (p_appli_s_name            => 'XLA'
33318                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33319                                     ,p_token_1                 => 'LINE_NUMBER'
33320                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33321                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33322                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33323                                                                              l_component_type
33324                                                                             ,l_component_code
33325                                                                             ,l_component_type_code
33326                                                                             ,l_component_appl_id
33327                                                                             ,l_amb_context_code
33328                                                                             ,l_entity_code
33329                                                                             ,l_event_class_code
33330                                                                            )
33331                                     ,p_token_3                 => 'OWNER'
33332                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33333                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33334                                                                           ,p_lookup_code    => l_component_type_code
33335                                                                          )
33336                                     ,p_token_4                 => 'PRODUCT_NAME'
33337                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33338                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33339                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33340                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33341                                     ,p_ae_header_id            =>  NULL
33342                                        );
33343 
33344         IF (C_LEVEL_ERROR>= g_log_level) THEN
33345                  trace
33346                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33347                       ,p_level    => C_LEVEL_ERROR
33348                       ,p_module   => l_log_module);
33349         END IF;
33350       END IF;
33351    END IF;
33352    --
33353    --
33354    ------------------------------------------------------------------------------------------------
33355    -- 4219869 Business Flow
33356    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
33357    -- Prior Entry.  Currently, the following code is always generated.
33358    ------------------------------------------------------------------------------------------------
33359    XLA_AE_LINES_PKG.ValidateCurrentLine;
33360 
33361    ------------------------------------------------------------------------------------
33362    -- 4219869 Business Flow
33363    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
33364    ------------------------------------------------------------------------------------
33365    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33366 
33367    ----------------------------------------------------------------------------------
33368    -- 4219869 Business Flow
33369    -- Update journal entry status -- Need to generate this within IF <condition>
33370    ----------------------------------------------------------------------------------
33371    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33372          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
33376    -------------------------------------------------------------------------------------------
33373          ,p_balance_type_code => l_balance_type_code
33374          );
33375 
33377    -- 4262811 - Generate the Accrual Reversal lines
33378    -------------------------------------------------------------------------------------------
33379    BEGIN
33380       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
33381                               (g_array_event(p_event_id).array_value_num('header_index'));
33382       IF l_acc_rev_flag IS NULL THEN
33383          l_acc_rev_flag := 'N';
33384       END IF;
33385    EXCEPTION
33386       WHEN OTHERS THEN
33387          l_acc_rev_flag := 'N';
33388    END;
33389    --
33390    IF (l_acc_rev_flag = 'Y') THEN
33391 
33392        -- 4645092  ------------------------------------------------------------------------------
33393        -- To allow MPA report to determine if it should generate report process
33394        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
33395        ------------------------------------------------------------------------------------------
33396 
33397        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
33398        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
33399    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
33400    -- call ADRs
33401    -- Bug 4922099
33402    --
33403    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33404         (NVL(l_actual_upg_option, 'N') = 'O') OR
33405         (NVL(l_enc_upg_option, 'N') = 'O')
33406       )
33407    THEN
33408    NULL;
33409    --
33410    --
33411    
33412   l_ccid := AcctDerRule_24(
33413            p_application_id           => p_application_id
33414          , p_ae_header_id             => l_ae_header_id 
33415 , p_source_27 => p_source_27
33416          , x_transaction_coa_id       => l_adr_transaction_coa_id
33417          , x_accounting_coa_id        => l_adr_accounting_coa_id
33418          , x_value_type_code          => l_adr_value_type_code
33419          , p_side                     => 'NA'
33420    );
33421 
33422    xla_ae_lines_pkg.set_ccid(
33423     p_code_combination_id          => l_ccid
33424   , p_value_type_code              => l_adr_value_type_code
33425   , p_transaction_coa_id           => l_adr_transaction_coa_id
33426   , p_accounting_coa_id            => l_adr_accounting_coa_id
33427   , p_adr_code                     => 'COLL_DOC_BILLS_UNDER_DISC'
33428   , p_adr_type_code                => 'S'
33429   , p_component_type               => l_component_type
33430   , p_component_code               => l_component_code
33431   , p_component_type_code          => l_component_type_code
33432   , p_component_appl_id            => l_component_appl_id
33433   , p_amb_context_code             => l_amb_context_code
33434   , p_side                         => 'NA'
33435   );
33436 
33437 
33438    --
33439    --
33440    END IF;
33441 
33442        --
33443        -- Update the line information that should be overwritten
33444        --
33445        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
33446                                          p_header_num   => 1);
33447        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
33448 
33449        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
33450 
33451        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
33452           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
33453        END IF;
33454 
33455       --
33456       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
33457       --
33458       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
33459           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
33460       ELSE
33461           ---------------------------------------------------------------------------------------------------
33462           -- 4262811a Switch Sign
33463           ---------------------------------------------------------------------------------------------------
33464           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
33465           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33466                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33467           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
33468                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33469           -- 5132302
33470           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
33471                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
33472 
33473       END IF;
33474 
33475       -- 4955764
33476       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33477       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
33478 
33479 
33480       XLA_AE_LINES_PKG.ValidateCurrentLine;
33481       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
33482 
33486 
33483       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
33484                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
33485                ,p_balance_type_code => l_balance_type_code);
33487    END IF;
33488 
33489    -----------------------------------------------------------------------------------------
33490    -- 4262811 Multiperiod Accounting
33491    -----------------------------------------------------------------------------------------
33492      -- No MPA option is assigned.
33493 
33494 
33495 END IF;
33496 END IF;
33497 --
33498 
33499 --
33500 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33501    trace
33502       (p_msg      => 'END of AcctLineType_86'
33503       ,p_level    => C_LEVEL_PROCEDURE
33504       ,p_module   => l_log_module);
33505 END IF;
33506 --
33507 EXCEPTION
33508   WHEN xla_exceptions_pkg.application_exception THEN
33509       RAISE;
33510   WHEN OTHERS THEN
33511        xla_exceptions_pkg.raise_message
33512            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_86');
33513 END AcctLineType_86;
33514 --
33515 
33516 ---------------------------------------
33517 --
33518 -- PRIVATE FUNCTION
33519 --         AcctLineType_87
33520 --
33521 ---------------------------------------
33522 PROCEDURE AcctLineType_87 (
33523   p_application_id        IN NUMBER
33524  ,p_event_id              IN NUMBER
33525  ,p_calculate_acctd_flag  IN VARCHAR2
33526  ,p_calculate_g_l_flag    IN VARCHAR2
33527  ,p_actual_flag           IN OUT VARCHAR2
33528  ,p_balance_type_code     OUT VARCHAR2
33529  ,p_gain_or_loss_ref      OUT VARCHAR2
33530  
33531 --Collection Document Bank Occurrence
33532  , p_source_10            IN VARCHAR2
33533 --Collection Document Number
33534  , p_source_11            IN NUMBER
33535 --Collection Document Trade Note Number
33536  , p_source_12            IN VARCHAR2
33537 --Bordero Type
33538  , p_source_13            IN VARCHAR2
33539  , p_source_13_meaning    IN VARCHAR2
33540 --Collection Document Cash Account
33541  , p_source_28            IN NUMBER
33542 --Bill To Customer Account Identifier
33543  , p_source_49            IN NUMBER
33544 --Bill To Customer Site Use Identifier
33545  , p_source_50            IN NUMBER
33546 --SLA Party Type
33547  , p_source_51            IN VARCHAR2
33548 --Collection Document Distribution Line Type
33549  , p_source_77            IN VARCHAR2
33550  , p_source_77_meaning    IN VARCHAR2
33551 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
33552  , p_source_78            IN VARCHAR2
33553  , p_source_78_meaning    IN VARCHAR2
33554 --Applied To Distribution Link Type
33555  , p_source_80            IN VARCHAR2
33556 --Applied To Distribution Identifier
33557  , p_source_82            IN NUMBER
33558 --Applied To Distribution Document Identifier
33559  , p_source_83            IN NUMBER
33560 --Applied To Distribution Occurrence Identifier
33561  , p_source_84            IN NUMBER
33562 --Collection Document Distribution Identifier
33563  , p_source_85            IN NUMBER
33564 --Collection Document Distribution Link Type
33565  , p_source_86            IN VARCHAR2
33566 --Collection Document Distribution Entered Amount
33567  , p_source_87            IN NUMBER
33568 --Collection Document Distribution Entered Currency Code
33569  , p_source_88            IN VARCHAR2
33570 --Collection Document Distribution Conversion Date
33571  , p_source_89            IN DATE
33572 --Collection Document Distribution Conversion Rate
33573  , p_source_90            IN NUMBER
33574 --Collection Document Distribution Conversion Rate Type
33575  , p_source_91            IN VARCHAR2
33576 --Collection Document Distribution Accounted Amount
33577  , p_source_92            IN NUMBER
33578 --Collection Document Occurrence Identifier
33579  , p_source_93            IN NUMBER
33580 --Reversed Collection Document Distribution Identifier
33581  , p_source_94            IN NUMBER
33582 --Reversed Collection Document Distribution Link Type
33583  , p_source_95            IN VARCHAR2
33584 )
33585 IS
33586 
33587 l_component_type              VARCHAR2(80);
33588 l_component_code              VARCHAR2(30);
33589 l_component_type_code         VARCHAR2(1);
33590 l_component_appl_id           INTEGER;
33591 l_amb_context_code            VARCHAR2(30);
33592 l_entity_code                 VARCHAR2(30);
33593 l_event_class_code            VARCHAR2(30);
33594 l_ae_header_id                NUMBER;
33595 l_event_type_code             VARCHAR2(30);
33596 l_line_definition_code        VARCHAR2(30);
33597 l_line_definition_owner_code  VARCHAR2(1);
33598 --
33599 -- adr variables
33600 l_segment                     VARCHAR2(30);
33601 l_ccid                        NUMBER;
33602 l_adr_transaction_coa_id      NUMBER;
33603 l_adr_accounting_coa_id       NUMBER;
33604 l_adr_flexfield_segment_code  VARCHAR2(30);
33605 l_adr_flex_value_set_id       NUMBER;
33606 l_adr_value_type_code         VARCHAR2(30);
33607 l_adr_value_combination_id    NUMBER;
33608 l_adr_value_segment_code      VARCHAR2(30);
33609 
33610 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
33611 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
33612 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
33613 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
33617 l_accted_amt_idx              NUMBER;
33614 
33615 -- 4262811 Variables ------------------------------------------------------------------------------------------
33616 l_entered_amt_idx             NUMBER;
33618 l_acc_rev_flag                VARCHAR2(1);
33619 l_accrual_line_num            NUMBER;
33620 l_tmp_amt                     NUMBER;
33621 l_acc_rev_natural_side_code   VARCHAR2(1);
33622 
33623 l_num_entries                 NUMBER;
33624 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
33625 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
33626 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
33627 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
33628 l_recog_line_1                NUMBER;
33629 l_recog_line_2                NUMBER;
33630 
33631 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
33632 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
33633 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
33634 
33635 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
33636 
33637 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
33638 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
33639 
33640 ---------------------------------------------------------------------------------------------------------------
33641 
33642 
33643 --
33644 -- bulk performance
33645 --
33646 l_balance_type_code           VARCHAR2(1);
33647 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
33648 l_log_module                  VARCHAR2(240);
33649 
33650 --
33651 -- Upgrade strategy
33652 --
33653 l_actual_upg_option           VARCHAR2(1);
33654 l_enc_upg_option           VARCHAR2(1);
33655 
33656 --
33657 BEGIN
33658 --
33659 IF g_log_enabled THEN
33660       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_87';
33661 END IF;
33662 --
33663 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
33664 
33665       trace
33666          (p_msg      => 'BEGIN of AcctLineType_87'
33667          ,p_level    => C_LEVEL_PROCEDURE
33668          ,p_module   => l_log_module);
33669 
33670 END IF;
33671 --
33672 l_component_type             := 'AMB_JLT';
33673 l_component_code             := 'FACT_DOC_CASH';
33674 l_component_type_code        := 'S';
33675 l_component_appl_id          :=  222;
33676 l_amb_context_code           := 'DEFAULT';
33677 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
33678 l_event_class_code           := 'FACTORING_OCC_DOCUMENT';
33679 l_event_type_code            := 'FACTORING_OCC_DOCUMENT_ALL';
33680 l_line_definition_owner_code := 'S';
33681 l_line_definition_code       := 'JLBR_AR_FACT_DOC_ACCRUAL';
33682 --
33683 l_balance_type_code          := 'A';
33684 l_segment                     := NULL;
33685 l_ccid                        := NULL;
33686 l_adr_transaction_coa_id      := NULL;
33687 l_adr_accounting_coa_id       := NULL;
33688 l_adr_flexfield_segment_code  := NULL;
33689 l_adr_flex_value_set_id       := NULL;
33690 l_adr_value_type_code         := NULL;
33691 l_adr_value_combination_id    := NULL;
33692 l_adr_value_segment_code      := NULL;
33693 
33694 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
33695 l_bflow_class_code           := '';    -- 4219869 Business Flow
33696 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
33697 l_budgetary_control_flag     := 'N';
33698 
33699 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
33700 l_bflow_applied_to_amt       := NULL; -- 5132302
33701 l_entered_amt_idx            := NULL;          -- 4262811
33702 l_accted_amt_idx             := NULL;          -- 4262811
33703 l_acc_rev_flag               := NULL;          -- 4262811
33704 l_accrual_line_num           := NULL;          -- 4262811
33705 l_tmp_amt                    := NULL;          -- 4262811
33706 --
33707  
33708 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
33709     l_balance_type_code <> 'B' THEN
33710 IF (NVL(p_source_77,'
33711 ') =  'JLBR_AR_BANK_CHARGES' OR 
33712 NVL(p_source_77,'
33713 ') =  'JLBR_AR_FACTORING_CHARGES') AND 
33714 NVL(p_source_13,'
33715 ') =  'FACTORING'
33716  THEN 
33717 
33718    --
33719    XLA_AE_LINES_PKG.SetNewLine;
33720 
33721    p_balance_type_code          := l_balance_type_code;
33722    -- set the flag so later we will know whether the gain loss line needs to be created
33723    
33724    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
33725      p_actual_flag :='A';
33726    END IF;
33727 
33728    --
33729    -- bulk performance
33730    --
33731    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
33732                                       p_header_num   => 0); -- 4262811
33733    --
33734    -- set accounting line options
33735    --
33736    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
33737            p_natural_side_code          => 'C'
33738          , p_gain_or_loss_flag          => 'N'
33739          , p_gl_transfer_mode_code      => 'S'
33740          , p_acct_entry_type_code       => 'A'
33741          , p_switch_side_flag           => 'Y'
33742          , p_merge_duplicate_code       => 'W'
33743          );
33744    --
33748    -- set accounting line type info
33745    l_acc_rev_natural_side_code := 'D';  -- 4262811
33746    -- 
33747    --
33749    --
33750    xla_ae_lines_pkg.SetAcctLineType
33751       (p_component_type             => l_component_type
33752       ,p_event_type_code            => l_event_type_code
33753       ,p_line_definition_owner_code => l_line_definition_owner_code
33754       ,p_line_definition_code       => l_line_definition_code
33755       ,p_accounting_line_code       => l_component_code
33756       ,p_accounting_line_type_code  => l_component_type_code
33757       ,p_accounting_line_appl_id    => l_component_appl_id
33758       ,p_amb_context_code           => l_amb_context_code
33759       ,p_entity_code                => l_entity_code
33760       ,p_event_class_code           => l_event_class_code);
33761    --
33762    -- set accounting class
33763    --
33764    xla_ae_lines_pkg.SetAcctClass(
33765            p_accounting_class_code  => 'CASH'
33766          , p_ae_header_id           => l_ae_header_id
33767          );
33768 
33769    --
33770    -- set rounding class
33771    --
33772    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
33773                       'CASH';
33774 
33775    --
33776    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
33777    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
33778    --
33779    -- bulk performance
33780    --
33781    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
33782 
33783    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
33784       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
33785 
33786    -- 4955764
33787    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
33788       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
33789 
33790    -- 4458381 Public Sector Enh
33791    
33792    --
33793    -- set accounting attributes for the line type
33794    --
33795    l_entered_amt_idx := 10;
33796    l_accted_amt_idx  := 15;
33797    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
33798    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
33799    l_rec_acct_attrs.array_char_value(1)  := p_source_78;
33800    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
33801    l_rec_acct_attrs.array_num_value(2)  := 
33802 xla_ae_sources_pkg.GetSystemSourceNum(
33803    p_source_code           => 'XLA_EVENT_APPL_ID'
33804  , p_source_type_code      => 'Y'
33805  , p_source_application_id =>  602
33806 );
33807    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
33808    l_rec_acct_attrs.array_char_value(3)  := p_source_80;
33809    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
33810    l_rec_acct_attrs.array_char_value(4)  := 
33811 xla_ae_sources_pkg.GetSystemSourceChar(
33812    p_source_code           => 'XLA_ENTITY_CODE'
33813  , p_source_type_code      => 'Y'
33814  , p_source_application_id =>  602
33815 );
33816    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
33817    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_82);
33818    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
33819    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_83);
33820    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
33821    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_84);
33822    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
33823    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_85);
33824    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
33825    l_rec_acct_attrs.array_char_value(9)  := p_source_86;
33826    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
33827    l_rec_acct_attrs.array_num_value(10)  := p_source_87;
33828    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
33829    l_rec_acct_attrs.array_char_value(11)  := p_source_88;
33830    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
33831    l_rec_acct_attrs.array_date_value(12)  := p_source_89;
33832    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
33833    l_rec_acct_attrs.array_num_value(13)  := p_source_90;
33834    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
33835    l_rec_acct_attrs.array_char_value(14)  := p_source_91;
33836    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
33837    l_rec_acct_attrs.array_num_value(15)  := p_source_92;
33838    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
33839    l_rec_acct_attrs.array_num_value(16)  := p_source_49;
33840    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
33841    l_rec_acct_attrs.array_num_value(17)  := p_source_50;
33842    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
33843    l_rec_acct_attrs.array_char_value(18)  := p_source_51;
33844    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
33845    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_93);
33846    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
33847    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_94);
33848    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
33849    l_rec_acct_attrs.array_char_value(21)  := p_source_95;
33850    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
33854    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
33851    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_93);
33852 
33853    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
33855 
33856    ---------------------------------------------------------------------------------------------------------------
33857    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
33858    ---------------------------------------------------------------------------------------------------------------
33859    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
33860 
33861    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33862    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
33863 
33864    IF xla_accounting_cache_pkg.GetValueChar
33865          (p_source_code         => 'LEDGER_CATEGORY_CODE'
33866          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
33867    AND l_bflow_method_code = 'PRIOR_ENTRY'
33868 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
33869    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
33870          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
33871        )
33872    THEN
33873          xla_ae_lines_pkg.BflowUpgEntry
33874            (p_business_method_code    => l_bflow_method_code
33875            ,p_business_class_code     => l_bflow_class_code
33876            ,p_balance_type            => l_balance_type_code);
33877    ELSE
33878       NULL;
33879 -- No business flow processing for business flow method of NONE.
33880    END IF;
33881 
33882    --
33883    -- call analytical criteria
33884    --
33885    
33886    --
33887    -- call description
33888    --
33889    
33890 xla_ae_lines_pkg.SetLineDescription(
33891    p_ae_header_id => l_ae_header_id
33892   ,p_description  => Description_13 (
33893      p_application_id         => p_application_id
33894    , p_ae_header_id           => l_ae_header_id 
33895 , p_source_10 => p_source_10
33896 , p_source_11 => p_source_11
33897 , p_source_12 => p_source_12
33898 , p_source_13 => p_source_13
33899 , p_source_13_meaning => p_source_13_meaning
33900    )
33901 );
33902 
33903 
33904    --
33905    -- call ADRs
33906    -- Bug 4922099
33907    --
33908    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
33909         (NVL(l_actual_upg_option, 'N') = 'O') OR
33910         (NVL(l_enc_upg_option, 'N') = 'O')
33911       )
33912    THEN
33913    NULL;
33914    --
33915    --
33916    
33917   l_ccid := AcctDerRule_25(
33918            p_application_id           => p_application_id
33919          , p_ae_header_id             => l_ae_header_id 
33920 , p_source_28 => p_source_28
33921          , x_transaction_coa_id       => l_adr_transaction_coa_id
33922          , x_accounting_coa_id        => l_adr_accounting_coa_id
33923          , x_value_type_code          => l_adr_value_type_code
33924          , p_side                     => 'NA'
33925    );
33929   , p_value_type_code              => l_adr_value_type_code
33926 
33927    xla_ae_lines_pkg.set_ccid(
33928     p_code_combination_id          => l_ccid
33930   , p_transaction_coa_id           => l_adr_transaction_coa_id
33931   , p_accounting_coa_id            => l_adr_accounting_coa_id
33932   , p_adr_code                     => 'COLL_DOC_CASH'
33933   , p_adr_type_code                => 'S'
33934   , p_component_type               => l_component_type
33935   , p_component_code               => l_component_code
33936   , p_component_type_code          => l_component_type_code
33937   , p_component_appl_id            => l_component_appl_id
33938   , p_amb_context_code             => l_amb_context_code
33939   , p_side                         => 'NA'
33940   );
33941 
33942 
33943    --
33944    --
33945    END IF;
33946    --
33947    -- Bug 4922099
33948    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
33949           (NVL(l_enc_upg_option, 'N') = 'O')
33950         ) AND
33951         (l_bflow_method_code = 'PRIOR_ENTRY')
33952       )
33953    THEN
33954       IF
33955       --
33956       1 = 2
33957       --
33958       THEN
33959       xla_accounting_err_pkg.build_message
33960                                     (p_appli_s_name            => 'XLA'
33961                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33962                                     ,p_token_1                 => 'LINE_NUMBER'
33963                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
33964                                     ,p_token_2                 => 'LINE_TYPE_NAME'
33965                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
33966                                                                              l_component_type
33967                                                                             ,l_component_code
33968                                                                             ,l_component_type_code
33969                                                                             ,l_component_appl_id
33970                                                                             ,l_amb_context_code
33971                                                                             ,l_entity_code
33972                                                                             ,l_event_class_code
33973                                                                            )
33974                                     ,p_token_3                 => 'OWNER'
33975                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
33976                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
33977                                                                           ,p_lookup_code    => l_component_type_code
33978                                                                          )
33979                                     ,p_token_4                 => 'PRODUCT_NAME'
33980                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
33981                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
33982                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
33983                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
33984                                     ,p_ae_header_id            =>  NULL
33985                                        );
33986 
33987         IF (C_LEVEL_ERROR>= g_log_level) THEN
33988                  trace
33989                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
33990                       ,p_level    => C_LEVEL_ERROR
33991                       ,p_module   => l_log_module);
33992         END IF;
33993       END IF;
33994    END IF;
33995    --
33996    --
33997    ------------------------------------------------------------------------------------------------
33998    -- 4219869 Business Flow
33999    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34003 
34000    -- Prior Entry.  Currently, the following code is always generated.
34001    ------------------------------------------------------------------------------------------------
34002    XLA_AE_LINES_PKG.ValidateCurrentLine;
34004    ------------------------------------------------------------------------------------
34005    -- 4219869 Business Flow
34006    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34007    ------------------------------------------------------------------------------------
34008    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34009 
34010    ----------------------------------------------------------------------------------
34011    -- 4219869 Business Flow
34012    -- Update journal entry status -- Need to generate this within IF <condition>
34013    ----------------------------------------------------------------------------------
34014    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34015          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34016          ,p_balance_type_code => l_balance_type_code
34017          );
34018 
34019    -------------------------------------------------------------------------------------------
34020    -- 4262811 - Generate the Accrual Reversal lines
34021    -------------------------------------------------------------------------------------------
34022    BEGIN
34023       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34024                               (g_array_event(p_event_id).array_value_num('header_index'));
34025       IF l_acc_rev_flag IS NULL THEN
34026          l_acc_rev_flag := 'N';
34027       END IF;
34028    EXCEPTION
34029       WHEN OTHERS THEN
34030          l_acc_rev_flag := 'N';
34031    END;
34032    --
34033    IF (l_acc_rev_flag = 'Y') THEN
34034 
34035        -- 4645092  ------------------------------------------------------------------------------
34036        -- To allow MPA report to determine if it should generate report process
34037        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34038        ------------------------------------------------------------------------------------------
34039 
34040        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34041        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34042    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
34043    -- call ADRs
34044    -- Bug 4922099
34045    --
34046    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34047         (NVL(l_actual_upg_option, 'N') = 'O') OR
34048         (NVL(l_enc_upg_option, 'N') = 'O')
34049       )
34050    THEN
34051    NULL;
34052    --
34053    --
34054    
34055   l_ccid := AcctDerRule_25(
34056            p_application_id           => p_application_id
34057          , p_ae_header_id             => l_ae_header_id 
34058 , p_source_28 => p_source_28
34059          , x_transaction_coa_id       => l_adr_transaction_coa_id
34060          , x_accounting_coa_id        => l_adr_accounting_coa_id
34061          , x_value_type_code          => l_adr_value_type_code
34062          , p_side                     => 'NA'
34063    );
34064 
34065    xla_ae_lines_pkg.set_ccid(
34066     p_code_combination_id          => l_ccid
34067   , p_value_type_code              => l_adr_value_type_code
34068   , p_transaction_coa_id           => l_adr_transaction_coa_id
34069   , p_accounting_coa_id            => l_adr_accounting_coa_id
34070   , p_adr_code                     => 'COLL_DOC_CASH'
34071   , p_adr_type_code                => 'S'
34072   , p_component_type               => l_component_type
34073   , p_component_code               => l_component_code
34074   , p_component_type_code          => l_component_type_code
34075   , p_component_appl_id            => l_component_appl_id
34076   , p_amb_context_code             => l_amb_context_code
34077   , p_side                         => 'NA'
34078   );
34079 
34080 
34081    --
34082    --
34083    END IF;
34084 
34085        --
34086        -- Update the line information that should be overwritten
34087        --
34088        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34089                                          p_header_num   => 1);
34090        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34091 
34092        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34093 
34094        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34095           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34096        END IF;
34097 
34098       --
34099       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34100       --
34101       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34102           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34103       ELSE
34104           ---------------------------------------------------------------------------------------------------
34105           -- 4262811a Switch Sign
34106           ---------------------------------------------------------------------------------------------------
34107           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34111                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34108           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34109                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34110           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34112           -- 5132302
34113           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34114                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34115 
34116       END IF;
34117 
34118       -- 4955764
34119       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34120       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34121 
34122 
34123       XLA_AE_LINES_PKG.ValidateCurrentLine;
34124       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34125 
34126       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34127                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34128                ,p_balance_type_code => l_balance_type_code);
34129 
34130    END IF;
34131 
34132    -----------------------------------------------------------------------------------------
34133    -- 4262811 Multiperiod Accounting
34134    -----------------------------------------------------------------------------------------
34135      -- No MPA option is assigned.
34136 
34137 
34138 END IF;
34139 END IF;
34140 --
34141 
34142 --
34143 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34144    trace
34145       (p_msg      => 'END of AcctLineType_87'
34146       ,p_level    => C_LEVEL_PROCEDURE
34147       ,p_module   => l_log_module);
34148 END IF;
34149 --
34150 EXCEPTION
34151   WHEN xla_exceptions_pkg.application_exception THEN
34152       RAISE;
34153   WHEN OTHERS THEN
34154        xla_exceptions_pkg.raise_message
34155            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_87');
34156 END AcctLineType_87;
34157 --
34158 
34159 ---------------------------------------
34160 --
34161 -- PRIVATE FUNCTION
34162 --         AcctLineType_88
34163 --
34164 ---------------------------------------
34165 PROCEDURE AcctLineType_88 (
34166   p_application_id        IN NUMBER
34167  ,p_event_id              IN NUMBER
34168  ,p_calculate_acctd_flag  IN VARCHAR2
34169  ,p_calculate_g_l_flag    IN VARCHAR2
34170  ,p_actual_flag           IN OUT VARCHAR2
34171  ,p_balance_type_code     OUT VARCHAR2
34172  ,p_gain_or_loss_ref      OUT VARCHAR2
34173  
34174 --Collection Document Bank Occurrence
34175  , p_source_10            IN VARCHAR2
34176 --Collection Document Number
34177  , p_source_11            IN NUMBER
34178 --Collection Document Trade Note Number
34179  , p_source_12            IN VARCHAR2
34180 --Bordero Type
34181  , p_source_13            IN VARCHAR2
34182  , p_source_13_meaning    IN VARCHAR2
34183 --Collection Document Discount Endorsement Account
34184  , p_source_30            IN NUMBER
34185 --Bill To Customer Account Identifier
34186  , p_source_49            IN NUMBER
34187 --Bill To Customer Site Use Identifier
34188  , p_source_50            IN NUMBER
34189 --SLA Party Type
34190  , p_source_51            IN VARCHAR2
34191 --Collection Document Distribution Line Type
34192  , p_source_77            IN VARCHAR2
34193  , p_source_77_meaning    IN VARCHAR2
34194 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
34195  , p_source_78            IN VARCHAR2
34196  , p_source_78_meaning    IN VARCHAR2
34197 --Applied To Distribution Link Type
34198  , p_source_80            IN VARCHAR2
34199 --Applied To Distribution Identifier
34200  , p_source_82            IN NUMBER
34201 --Applied To Distribution Document Identifier
34202  , p_source_83            IN NUMBER
34203 --Applied To Distribution Occurrence Identifier
34204  , p_source_84            IN NUMBER
34205 --Collection Document Distribution Identifier
34206  , p_source_85            IN NUMBER
34207 --Collection Document Distribution Link Type
34208  , p_source_86            IN VARCHAR2
34209 --Collection Document Distribution Entered Amount
34210  , p_source_87            IN NUMBER
34211 --Collection Document Distribution Entered Currency Code
34212  , p_source_88            IN VARCHAR2
34213 --Collection Document Distribution Conversion Date
34214  , p_source_89            IN DATE
34215 --Collection Document Distribution Conversion Rate
34216  , p_source_90            IN NUMBER
34217 --Collection Document Distribution Conversion Rate Type
34218  , p_source_91            IN VARCHAR2
34219 --Collection Document Distribution Accounted Amount
34220  , p_source_92            IN NUMBER
34221 --Collection Document Occurrence Identifier
34222  , p_source_93            IN NUMBER
34223 --Reversed Collection Document Distribution Identifier
34224  , p_source_94            IN NUMBER
34225 --Reversed Collection Document Distribution Link Type
34226  , p_source_95            IN VARCHAR2
34227 --Collection Document Occurrence Type
34228  , p_source_96            IN VARCHAR2
34229  , p_source_96_meaning    IN VARCHAR2
34230 )
34231 IS
34232 
34233 l_component_type              VARCHAR2(80);
34234 l_component_code              VARCHAR2(30);
34238 l_entity_code                 VARCHAR2(30);
34235 l_component_type_code         VARCHAR2(1);
34236 l_component_appl_id           INTEGER;
34237 l_amb_context_code            VARCHAR2(30);
34239 l_event_class_code            VARCHAR2(30);
34240 l_ae_header_id                NUMBER;
34241 l_event_type_code             VARCHAR2(30);
34242 l_line_definition_code        VARCHAR2(30);
34243 l_line_definition_owner_code  VARCHAR2(1);
34244 --
34245 -- adr variables
34246 l_segment                     VARCHAR2(30);
34247 l_ccid                        NUMBER;
34248 l_adr_transaction_coa_id      NUMBER;
34249 l_adr_accounting_coa_id       NUMBER;
34250 l_adr_flexfield_segment_code  VARCHAR2(30);
34251 l_adr_flex_value_set_id       NUMBER;
34252 l_adr_value_type_code         VARCHAR2(30);
34253 l_adr_value_combination_id    NUMBER;
34254 l_adr_value_segment_code      VARCHAR2(30);
34255 
34256 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34257 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34258 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34259 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34260 
34261 -- 4262811 Variables ------------------------------------------------------------------------------------------
34262 l_entered_amt_idx             NUMBER;
34263 l_accted_amt_idx              NUMBER;
34264 l_acc_rev_flag                VARCHAR2(1);
34265 l_accrual_line_num            NUMBER;
34266 l_tmp_amt                     NUMBER;
34267 l_acc_rev_natural_side_code   VARCHAR2(1);
34268 
34269 l_num_entries                 NUMBER;
34270 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34271 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34272 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34273 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34274 l_recog_line_1                NUMBER;
34275 l_recog_line_2                NUMBER;
34276 
34277 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34278 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34279 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34280 
34281 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34282 
34283 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34284 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34285 
34286 ---------------------------------------------------------------------------------------------------------------
34287 
34288 
34289 --
34290 -- bulk performance
34291 --
34292 l_balance_type_code           VARCHAR2(1);
34293 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34294 l_log_module                  VARCHAR2(240);
34295 
34296 --
34297 -- Upgrade strategy
34298 --
34299 l_actual_upg_option           VARCHAR2(1);
34300 l_enc_upg_option           VARCHAR2(1);
34301 
34302 --
34303 BEGIN
34304 --
34305 IF g_log_enabled THEN
34306       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_88';
34307 END IF;
34308 --
34309 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34310 
34311       trace
34312          (p_msg      => 'BEGIN of AcctLineType_88'
34313          ,p_level    => C_LEVEL_PROCEDURE
34314          ,p_module   => l_log_module);
34315 
34316 END IF;
34317 --
34318 l_component_type             := 'AMB_JLT';
34319 l_component_code             := 'FACT_DOC_DISC_ENDRSMNT_CR';
34320 l_component_type_code        := 'S';
34321 l_component_appl_id          :=  222;
34322 l_amb_context_code           := 'DEFAULT';
34323 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
34324 l_event_class_code           := 'FACTORING_OCC_DOCUMENT';
34325 l_event_type_code            := 'FACTORING_OCC_DOCUMENT_ALL';
34326 l_line_definition_owner_code := 'S';
34327 l_line_definition_code       := 'JLBR_AR_FACT_DOC_ACCRUAL';
34328 --
34329 l_balance_type_code          := 'A';
34330 l_segment                     := NULL;
34331 l_ccid                        := NULL;
34332 l_adr_transaction_coa_id      := NULL;
34333 l_adr_accounting_coa_id       := NULL;
34334 l_adr_flexfield_segment_code  := NULL;
34335 l_adr_flex_value_set_id       := NULL;
34336 l_adr_value_type_code         := NULL;
34337 l_adr_value_combination_id    := NULL;
34338 l_adr_value_segment_code      := NULL;
34339 
34340 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
34341 l_bflow_class_code           := 'JLBR_AR_DISCOUNT_ENDORSEMENT';    -- 4219869 Business Flow
34342 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
34343 l_budgetary_control_flag     := 'N';
34344 
34345 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34346 l_bflow_applied_to_amt       := NULL; -- 5132302
34347 l_entered_amt_idx            := NULL;          -- 4262811
34348 l_accted_amt_idx             := NULL;          -- 4262811
34349 l_acc_rev_flag               := NULL;          -- 4262811
34350 l_accrual_line_num           := NULL;          -- 4262811
34351 l_tmp_amt                    := NULL;          -- 4262811
34352 --
34353  
34354 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34355     l_balance_type_code <> 'B' THEN
34356 IF NVL(p_source_77,'
34357 ') =  'JLBR_AR_ENDORSEMENT' AND 
34358 NVL(p_source_13,'
34359 ') =  'FACTORING' AND 
34360 NVL(p_source_96,'
34361 ') =  'REMITTANCE_OCCURRENCE'
34365    XLA_AE_LINES_PKG.SetNewLine;
34362  THEN 
34363 
34364    --
34366 
34367    p_balance_type_code          := l_balance_type_code;
34368    -- set the flag so later we will know whether the gain loss line needs to be created
34369    
34370    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34371      p_actual_flag :='A';
34372    END IF;
34373 
34374    --
34375    -- bulk performance
34376    --
34377    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
34378                                       p_header_num   => 0); -- 4262811
34379    --
34380    -- set accounting line options
34381    --
34382    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
34383            p_natural_side_code          => 'C'
34384          , p_gain_or_loss_flag          => 'N'
34385          , p_gl_transfer_mode_code      => 'S'
34386          , p_acct_entry_type_code       => 'A'
34387          , p_switch_side_flag           => 'Y'
34388          , p_merge_duplicate_code       => 'A'
34389          );
34390    --
34391    l_acc_rev_natural_side_code := 'D';  -- 4262811
34392    -- 
34393    --
34394    -- set accounting line type info
34395    --
34396    xla_ae_lines_pkg.SetAcctLineType
34397       (p_component_type             => l_component_type
34398       ,p_event_type_code            => l_event_type_code
34399       ,p_line_definition_owner_code => l_line_definition_owner_code
34400       ,p_line_definition_code       => l_line_definition_code
34401       ,p_accounting_line_code       => l_component_code
34402       ,p_accounting_line_type_code  => l_component_type_code
34403       ,p_accounting_line_appl_id    => l_component_appl_id
34404       ,p_amb_context_code           => l_amb_context_code
34405       ,p_entity_code                => l_entity_code
34406       ,p_event_class_code           => l_event_class_code);
34407    --
34408    -- set accounting class
34409    --
34410    xla_ae_lines_pkg.SetAcctClass(
34411            p_accounting_class_code  => 'FACTOR'
34412          , p_ae_header_id           => l_ae_header_id
34413          );
34414 
34415    --
34416    -- set rounding class
34417    --
34418    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
34419                       'FACTOR';
34420 
34421    --
34422    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
34423    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
34424    --
34425    -- bulk performance
34426    --
34427    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
34428 
34429    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
34430       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
34431 
34432    -- 4955764
34433    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34434       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
34435 
34436    -- 4458381 Public Sector Enh
34437    
34438    --
34439    -- set accounting attributes for the line type
34440    --
34441    l_entered_amt_idx := 10;
34442    l_accted_amt_idx  := 15;
34443    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
34444    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
34445    l_rec_acct_attrs.array_char_value(1)  := p_source_78;
34446    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
34447    l_rec_acct_attrs.array_num_value(2)  := 
34448 xla_ae_sources_pkg.GetSystemSourceNum(
34449    p_source_code           => 'XLA_EVENT_APPL_ID'
34450  , p_source_type_code      => 'Y'
34451  , p_source_application_id =>  602
34452 );
34453    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
34454    l_rec_acct_attrs.array_char_value(3)  := p_source_80;
34455    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
34456    l_rec_acct_attrs.array_char_value(4)  := 
34457 xla_ae_sources_pkg.GetSystemSourceChar(
34458    p_source_code           => 'XLA_ENTITY_CODE'
34459  , p_source_type_code      => 'Y'
34460  , p_source_application_id =>  602
34461 );
34462    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
34463    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_82);
34464    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
34465    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_83);
34466    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
34467    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_84);
34468    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
34469    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_85);
34470    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
34471    l_rec_acct_attrs.array_char_value(9)  := p_source_86;
34472    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
34473    l_rec_acct_attrs.array_num_value(10)  := p_source_87;
34474    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
34475    l_rec_acct_attrs.array_char_value(11)  := p_source_88;
34476    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
34477    l_rec_acct_attrs.array_date_value(12)  := p_source_89;
34478    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
34482    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
34479    l_rec_acct_attrs.array_num_value(13)  := p_source_90;
34480    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
34481    l_rec_acct_attrs.array_char_value(14)  := p_source_91;
34483    l_rec_acct_attrs.array_num_value(15)  := p_source_92;
34484    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
34485    l_rec_acct_attrs.array_num_value(16)  := p_source_49;
34486    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
34487    l_rec_acct_attrs.array_num_value(17)  := p_source_50;
34488    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
34489    l_rec_acct_attrs.array_char_value(18)  := p_source_51;
34490    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
34491    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_93);
34492    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
34493    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_94);
34494    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
34495    l_rec_acct_attrs.array_char_value(21)  := p_source_95;
34496    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
34497    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_93);
34498 
34499    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
34500    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
34501 
34502    ---------------------------------------------------------------------------------------------------------------
34503    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
34504    ---------------------------------------------------------------------------------------------------------------
34505    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
34506 
34507    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34508    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
34509 
34510    IF xla_accounting_cache_pkg.GetValueChar
34511          (p_source_code         => 'LEDGER_CATEGORY_CODE'
34512          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
34513    AND l_bflow_method_code = 'PRIOR_ENTRY'
34514 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
34515    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
34516          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
34517        )
34518    THEN
34519          xla_ae_lines_pkg.BflowUpgEntry
34520            (p_business_method_code    => l_bflow_method_code
34521            ,p_business_class_code     => l_bflow_class_code
34522            ,p_balance_type            => l_balance_type_code);
34523    ELSE
34524       NULL;
34525 -- No business flow processing for business flow method of NONE.
34526    END IF;
34527 
34528    --
34529    -- call analytical criteria
34530    --
34531    
34532    --
34533    -- call description
34534    --
34535    
34536 xla_ae_lines_pkg.SetLineDescription(
34537    p_ae_header_id => l_ae_header_id
34538   ,p_description  => Description_16 (
34539      p_application_id         => p_application_id
34540    , p_ae_header_id           => l_ae_header_id 
34541 , p_source_10 => p_source_10
34542 , p_source_11 => p_source_11
34543 , p_source_12 => p_source_12
34544    )
34545 );
34546 
34547 
34548    --
34549    -- call ADRs
34550    -- Bug 4922099
34551    --
34552    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34553         (NVL(l_actual_upg_option, 'N') = 'O') OR
34554         (NVL(l_enc_upg_option, 'N') = 'O')
34555       )
34556    THEN
34557    NULL;
34558    --
34559    --
34560    
34561   l_ccid := AcctDerRule_27(
34562            p_application_id           => p_application_id
34563          , p_ae_header_id             => l_ae_header_id 
34564 , p_source_30 => p_source_30
34565          , x_transaction_coa_id       => l_adr_transaction_coa_id
34566          , x_accounting_coa_id        => l_adr_accounting_coa_id
34567          , x_value_type_code          => l_adr_value_type_code
34568          , p_side                     => 'NA'
34569    );
34570 
34571    xla_ae_lines_pkg.set_ccid(
34572     p_code_combination_id          => l_ccid
34573   , p_value_type_code              => l_adr_value_type_code
34574   , p_transaction_coa_id           => l_adr_transaction_coa_id
34575   , p_accounting_coa_id            => l_adr_accounting_coa_id
34576   , p_adr_code                     => 'COLL_DOC_DISC_ENDRSMNT'
34577   , p_adr_type_code                => 'S'
34578   , p_component_type               => l_component_type
34579   , p_component_code               => l_component_code
34580   , p_component_type_code          => l_component_type_code
34581   , p_component_appl_id            => l_component_appl_id
34582   , p_amb_context_code             => l_amb_context_code
34583   , p_side                         => 'NA'
34584   );
34585 
34586 
34587    --
34588    --
34589    END IF;
34590    --
34591    -- Bug 4922099
34592    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
34593           (NVL(l_enc_upg_option, 'N') = 'O')
34594         ) AND
34595         (l_bflow_method_code = 'PRIOR_ENTRY')
34596       )
34597    THEN
34598       IF
34599       --
34603       xla_accounting_err_pkg.build_message
34600       1 = 2
34601       --
34602       THEN
34604                                     (p_appli_s_name            => 'XLA'
34605                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34606                                     ,p_token_1                 => 'LINE_NUMBER'
34607                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
34608                                     ,p_token_2                 => 'LINE_TYPE_NAME'
34609                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
34610                                                                              l_component_type
34611                                                                             ,l_component_code
34612                                                                             ,l_component_type_code
34613                                                                             ,l_component_appl_id
34614                                                                             ,l_amb_context_code
34615                                                                             ,l_entity_code
34616                                                                             ,l_event_class_code
34617                                                                            )
34618                                     ,p_token_3                 => 'OWNER'
34619                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
34620                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
34621                                                                           ,p_lookup_code    => l_component_type_code
34622                                                                          )
34623                                     ,p_token_4                 => 'PRODUCT_NAME'
34624                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
34625                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
34626                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
34627                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
34628                                     ,p_ae_header_id            =>  NULL
34629                                        );
34630 
34631         IF (C_LEVEL_ERROR>= g_log_level) THEN
34632                  trace
34633                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
34634                       ,p_level    => C_LEVEL_ERROR
34635                       ,p_module   => l_log_module);
34636         END IF;
34637       END IF;
34638    END IF;
34639    --
34640    --
34641    ------------------------------------------------------------------------------------------------
34642    -- 4219869 Business Flow
34643    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
34644    -- Prior Entry.  Currently, the following code is always generated.
34645    ------------------------------------------------------------------------------------------------
34646    XLA_AE_LINES_PKG.ValidateCurrentLine;
34647 
34648    ------------------------------------------------------------------------------------
34649    -- 4219869 Business Flow
34650    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
34651    ------------------------------------------------------------------------------------
34652    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34653 
34654    ----------------------------------------------------------------------------------
34655    -- 4219869 Business Flow
34656    -- Update journal entry status -- Need to generate this within IF <condition>
34657    ----------------------------------------------------------------------------------
34658    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34659          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
34660          ,p_balance_type_code => l_balance_type_code
34661          );
34662 
34663    -------------------------------------------------------------------------------------------
34664    -- 4262811 - Generate the Accrual Reversal lines
34665    -------------------------------------------------------------------------------------------
34666    BEGIN
34667       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
34668                               (g_array_event(p_event_id).array_value_num('header_index'));
34669       IF l_acc_rev_flag IS NULL THEN
34670          l_acc_rev_flag := 'N';
34671       END IF;
34672    EXCEPTION
34673       WHEN OTHERS THEN
34674          l_acc_rev_flag := 'N';
34675    END;
34676    --
34677    IF (l_acc_rev_flag = 'Y') THEN
34678 
34679        -- 4645092  ------------------------------------------------------------------------------
34680        -- To allow MPA report to determine if it should generate report process
34681        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
34682        ------------------------------------------------------------------------------------------
34683 
34684        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
34685        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
34686    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
34687    -- call ADRs
34691         (NVL(l_actual_upg_option, 'N') = 'O') OR
34688    -- Bug 4922099
34689    --
34690    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
34692         (NVL(l_enc_upg_option, 'N') = 'O')
34693       )
34694    THEN
34695    NULL;
34696    --
34697    --
34698    
34699   l_ccid := AcctDerRule_27(
34700            p_application_id           => p_application_id
34701          , p_ae_header_id             => l_ae_header_id 
34702 , p_source_30 => p_source_30
34703          , x_transaction_coa_id       => l_adr_transaction_coa_id
34704          , x_accounting_coa_id        => l_adr_accounting_coa_id
34705          , x_value_type_code          => l_adr_value_type_code
34706          , p_side                     => 'NA'
34707    );
34708 
34709    xla_ae_lines_pkg.set_ccid(
34710     p_code_combination_id          => l_ccid
34711   , p_value_type_code              => l_adr_value_type_code
34712   , p_transaction_coa_id           => l_adr_transaction_coa_id
34713   , p_accounting_coa_id            => l_adr_accounting_coa_id
34714   , p_adr_code                     => 'COLL_DOC_DISC_ENDRSMNT'
34715   , p_adr_type_code                => 'S'
34716   , p_component_type               => l_component_type
34717   , p_component_code               => l_component_code
34718   , p_component_type_code          => l_component_type_code
34719   , p_component_appl_id            => l_component_appl_id
34720   , p_amb_context_code             => l_amb_context_code
34721   , p_side                         => 'NA'
34722   );
34723 
34724 
34725    --
34726    --
34727    END IF;
34728 
34729        --
34730        -- Update the line information that should be overwritten
34731        --
34732        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
34733                                          p_header_num   => 1);
34734        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
34735 
34736        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
34737 
34738        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
34739           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
34740        END IF;
34741 
34742       --
34743       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
34744       --
34745       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
34746           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
34747       ELSE
34748           ---------------------------------------------------------------------------------------------------
34749           -- 4262811a Switch Sign
34750           ---------------------------------------------------------------------------------------------------
34751           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
34752           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34753                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34754           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
34755                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34756           -- 5132302
34757           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
34758                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
34759 
34760       END IF;
34761 
34762       -- 4955764
34763       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
34764       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
34765 
34766 
34767       XLA_AE_LINES_PKG.ValidateCurrentLine;
34768       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
34769 
34770       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
34771                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
34772                ,p_balance_type_code => l_balance_type_code);
34773 
34774    END IF;
34775 
34776    -----------------------------------------------------------------------------------------
34777    -- 4262811 Multiperiod Accounting
34778    -----------------------------------------------------------------------------------------
34779      -- No MPA option is assigned.
34780 
34781 
34782 END IF;
34783 END IF;
34784 --
34785 
34786 --
34787 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34788    trace
34789       (p_msg      => 'END of AcctLineType_88'
34790       ,p_level    => C_LEVEL_PROCEDURE
34791       ,p_module   => l_log_module);
34792 END IF;
34793 --
34794 EXCEPTION
34795   WHEN xla_exceptions_pkg.application_exception THEN
34796       RAISE;
34797   WHEN OTHERS THEN
34798        xla_exceptions_pkg.raise_message
34799            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_88');
34800 END AcctLineType_88;
34801 --
34802 
34803 ---------------------------------------
34804 --
34805 -- PRIVATE FUNCTION
34806 --         AcctLineType_89
34807 --
34808 ---------------------------------------
34809 PROCEDURE AcctLineType_89 (
34810   p_application_id        IN NUMBER
34811  ,p_event_id              IN NUMBER
34812  ,p_calculate_acctd_flag  IN VARCHAR2
34816  ,p_gain_or_loss_ref      OUT VARCHAR2
34813  ,p_calculate_g_l_flag    IN VARCHAR2
34814  ,p_actual_flag           IN OUT VARCHAR2
34815  ,p_balance_type_code     OUT VARCHAR2
34817  
34818 --Bordero Type
34819  , p_source_13            IN VARCHAR2
34820  , p_source_13_meaning    IN VARCHAR2
34821 --SLA Party Type
34822  , p_source_51            IN VARCHAR2
34823 --Collection Document Distribution Line Type
34824  , p_source_77            IN VARCHAR2
34825  , p_source_77_meaning    IN VARCHAR2
34826 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
34827  , p_source_78            IN VARCHAR2
34828  , p_source_78_meaning    IN VARCHAR2
34829 --Applied To Distribution Link Type
34830  , p_source_80            IN VARCHAR2
34831 --Applied To Distribution Identifier
34832  , p_source_82            IN NUMBER
34833 --Applied To Distribution Document Identifier
34834  , p_source_83            IN NUMBER
34835 --Applied To Distribution Occurrence Identifier
34836  , p_source_84            IN NUMBER
34837 --Collection Document Distribution Identifier
34838  , p_source_85            IN NUMBER
34839 --Collection Document Distribution Link Type
34840  , p_source_86            IN VARCHAR2
34841 --Collection Document Distribution Entered Amount
34842  , p_source_87            IN NUMBER
34843 --Collection Document Distribution Entered Currency Code
34844  , p_source_88            IN VARCHAR2
34845 --Collection Document Distribution Accounted Amount
34846  , p_source_92            IN NUMBER
34847 --Collection Document Occurrence Identifier
34848  , p_source_93            IN NUMBER
34849 --Reversed Collection Document Distribution Identifier
34850  , p_source_94            IN NUMBER
34851 --Reversed Collection Document Distribution Link Type
34852  , p_source_95            IN VARCHAR2
34853 --Collection Document Occurrence Type
34854  , p_source_96            IN VARCHAR2
34855  , p_source_96_meaning    IN VARCHAR2
34856 )
34857 IS
34858 
34859 l_component_type              VARCHAR2(80);
34860 l_component_code              VARCHAR2(30);
34861 l_component_type_code         VARCHAR2(1);
34862 l_component_appl_id           INTEGER;
34863 l_amb_context_code            VARCHAR2(30);
34864 l_entity_code                 VARCHAR2(30);
34865 l_event_class_code            VARCHAR2(30);
34866 l_ae_header_id                NUMBER;
34867 l_event_type_code             VARCHAR2(30);
34868 l_line_definition_code        VARCHAR2(30);
34869 l_line_definition_owner_code  VARCHAR2(1);
34870 --
34871 -- adr variables
34872 l_segment                     VARCHAR2(30);
34873 l_ccid                        NUMBER;
34874 l_adr_transaction_coa_id      NUMBER;
34875 l_adr_accounting_coa_id       NUMBER;
34876 l_adr_flexfield_segment_code  VARCHAR2(30);
34877 l_adr_flex_value_set_id       NUMBER;
34878 l_adr_value_type_code         VARCHAR2(30);
34879 l_adr_value_combination_id    NUMBER;
34880 l_adr_value_segment_code      VARCHAR2(30);
34881 
34882 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
34883 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
34884 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
34885 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
34886 
34887 -- 4262811 Variables ------------------------------------------------------------------------------------------
34888 l_entered_amt_idx             NUMBER;
34889 l_accted_amt_idx              NUMBER;
34890 l_acc_rev_flag                VARCHAR2(1);
34891 l_accrual_line_num            NUMBER;
34892 l_tmp_amt                     NUMBER;
34893 l_acc_rev_natural_side_code   VARCHAR2(1);
34894 
34895 l_num_entries                 NUMBER;
34896 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
34897 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
34898 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
34899 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
34900 l_recog_line_1                NUMBER;
34901 l_recog_line_2                NUMBER;
34902 
34903 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
34904 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
34905 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
34906 
34907 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
34908 
34909 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
34910 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
34911 
34912 ---------------------------------------------------------------------------------------------------------------
34913 
34914 
34915 --
34916 -- bulk performance
34917 --
34918 l_balance_type_code           VARCHAR2(1);
34919 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
34920 l_log_module                  VARCHAR2(240);
34921 
34922 --
34923 -- Upgrade strategy
34924 --
34925 l_actual_upg_option           VARCHAR2(1);
34926 l_enc_upg_option           VARCHAR2(1);
34927 
34928 --
34929 BEGIN
34930 --
34931 IF g_log_enabled THEN
34932       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_89';
34933 END IF;
34934 --
34935 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
34936 
34937       trace
34938          (p_msg      => 'BEGIN of AcctLineType_89'
34939          ,p_level    => C_LEVEL_PROCEDURE
34943 --
34940          ,p_module   => l_log_module);
34941 
34942 END IF;
34944 l_component_type             := 'AMB_JLT';
34945 l_component_code             := 'FACT_DOC_DISC_ENDRSMNT_DR';
34946 l_component_type_code        := 'S';
34947 l_component_appl_id          :=  222;
34948 l_amb_context_code           := 'DEFAULT';
34949 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
34950 l_event_class_code           := 'FACTORING_OCC_DOCUMENT';
34951 l_event_type_code            := 'FACTORING_OCC_DOCUMENT_ALL';
34952 l_line_definition_owner_code := 'S';
34953 l_line_definition_code       := 'JLBR_AR_FACT_DOC_ACCRUAL';
34954 --
34955 l_balance_type_code          := 'A';
34956 l_segment                     := NULL;
34957 l_ccid                        := NULL;
34958 l_adr_transaction_coa_id      := NULL;
34959 l_adr_accounting_coa_id       := NULL;
34960 l_adr_flexfield_segment_code  := NULL;
34961 l_adr_flex_value_set_id       := NULL;
34962 l_adr_value_type_code         := NULL;
34963 l_adr_value_combination_id    := NULL;
34964 l_adr_value_segment_code      := NULL;
34965 
34966 l_bflow_method_code          := 'PRIOR_ENTRY';   -- 4219869 Business Flow
34967 l_bflow_class_code           := 'JLBR_AR_DISCOUNT_ENDORSEMENT';    -- 4219869 Business Flow
34968 l_inherit_desc_flag          := 'Y';   -- 4219869 Business Flow
34969 l_budgetary_control_flag     := 'N';
34970 
34971 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
34972 l_bflow_applied_to_amt       := NULL; -- 5132302
34973 l_entered_amt_idx            := NULL;          -- 4262811
34974 l_accted_amt_idx             := NULL;          -- 4262811
34975 l_acc_rev_flag               := NULL;          -- 4262811
34976 l_accrual_line_num           := NULL;          -- 4262811
34977 l_tmp_amt                    := NULL;          -- 4262811
34978 --
34979  
34980 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
34981     l_balance_type_code <> 'B' THEN
34982 IF NVL(p_source_77,'
34983 ') =  'JLBR_AR_ENDORSEMENT' AND 
34984 NVL(p_source_13,'
34985 ') =  'FACTORING' AND 
34986 NVL(p_source_96,'
34987 ') =  'RETURN_OCCURRENCE'
34988  THEN 
34989 
34990    --
34991    XLA_AE_LINES_PKG.SetNewLine;
34992 
34993    p_balance_type_code          := l_balance_type_code;
34994    -- set the flag so later we will know whether the gain loss line needs to be created
34995    
34996    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
34997      p_actual_flag :='A';
34998    END IF;
34999 
35000    --
35001    -- bulk performance
35002    --
35003    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35004                                       p_header_num   => 0); -- 4262811
35005    --
35006    -- set accounting line options
35007    --
35008    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35009            p_natural_side_code          => 'D'
35010          , p_gain_or_loss_flag          => 'N'
35011          , p_gl_transfer_mode_code      => 'S'
35012          , p_acct_entry_type_code       => 'A'
35013          , p_switch_side_flag           => 'Y'
35014          , p_merge_duplicate_code       => 'A'
35015          );
35016    --
35017    l_acc_rev_natural_side_code := 'C';  -- 4262811
35018    -- 
35019    --
35020    -- set accounting line type info
35021    --
35022    xla_ae_lines_pkg.SetAcctLineType
35023       (p_component_type             => l_component_type
35024       ,p_event_type_code            => l_event_type_code
35025       ,p_line_definition_owner_code => l_line_definition_owner_code
35026       ,p_line_definition_code       => l_line_definition_code
35027       ,p_accounting_line_code       => l_component_code
35028       ,p_accounting_line_type_code  => l_component_type_code
35029       ,p_accounting_line_appl_id    => l_component_appl_id
35030       ,p_amb_context_code           => l_amb_context_code
35031       ,p_entity_code                => l_entity_code
35032       ,p_event_class_code           => l_event_class_code);
35033    --
35034    -- set accounting class
35035    --
35036    xla_ae_lines_pkg.SetAcctClass(
35037            p_accounting_class_code  => 'FACTOR'
35038          , p_ae_header_id           => l_ae_header_id
35039          );
35040 
35041    --
35042    -- set rounding class
35043    --
35044    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35045                       'FACTOR';
35046 
35047    --
35048    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35049    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35050    --
35051    -- bulk performance
35052    --
35053    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35054 
35055    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35056       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35057 
35058    -- 4955764
35059    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35060       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35061 
35062    -- 4458381 Public Sector Enh
35063    
35064    --
35065    -- set accounting attributes for the line type
35066    --
35067    l_entered_amt_idx := 10;
35068    l_accted_amt_idx  := 12;
35072    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
35069    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35070    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
35071    l_rec_acct_attrs.array_char_value(1)  := p_source_78;
35073    l_rec_acct_attrs.array_num_value(2)  := 
35074 xla_ae_sources_pkg.GetSystemSourceNum(
35075    p_source_code           => 'XLA_EVENT_APPL_ID'
35076  , p_source_type_code      => 'Y'
35077  , p_source_application_id =>  602
35078 );
35079    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
35080    l_rec_acct_attrs.array_char_value(3)  := p_source_80;
35081    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
35082    l_rec_acct_attrs.array_char_value(4)  := 
35083 xla_ae_sources_pkg.GetSystemSourceChar(
35084    p_source_code           => 'XLA_ENTITY_CODE'
35085  , p_source_type_code      => 'Y'
35086  , p_source_application_id =>  602
35087 );
35088    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
35089    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_82);
35090    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
35091    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_83);
35092    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
35093    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_84);
35094    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
35095    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_85);
35096    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
35097    l_rec_acct_attrs.array_char_value(9)  := p_source_86;
35098    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
35099    l_rec_acct_attrs.array_num_value(10)  := p_source_87;
35100    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
35101    l_rec_acct_attrs.array_char_value(11)  := p_source_88;
35102    l_rec_acct_attrs.array_acct_attr_code(12) := 'LEDGER_AMOUNT';
35103    l_rec_acct_attrs.array_num_value(12)  := p_source_92;
35104    l_rec_acct_attrs.array_acct_attr_code(13) := 'PARTY_TYPE';
35105    l_rec_acct_attrs.array_char_value(13)  := p_source_51;
35106    l_rec_acct_attrs.array_acct_attr_code(14) := 'RECON_REF';
35107    l_rec_acct_attrs.array_num_value(14)  :=  to_char(p_source_93);
35108    l_rec_acct_attrs.array_acct_attr_code(15) := 'REVERSED_DISTRIBUTION_ID1';
35109    l_rec_acct_attrs.array_num_value(15)  :=  to_char(p_source_94);
35110    l_rec_acct_attrs.array_acct_attr_code(16) := 'REVERSED_DISTRIBUTION_TYPE';
35111    l_rec_acct_attrs.array_char_value(16)  := p_source_95;
35112    l_rec_acct_attrs.array_acct_attr_code(17) := 'TRX_ROUNDING_REF';
35113    l_rec_acct_attrs.array_num_value(17)  :=  to_char(p_source_93);
35114 
35115    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35116    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35117 
35118    ---------------------------------------------------------------------------------------------------------------
35119    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35120    ---------------------------------------------------------------------------------------------------------------
35121    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35122 
35123    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35124    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35125 
35126    IF xla_accounting_cache_pkg.GetValueChar
35127          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35128          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35129    AND l_bflow_method_code = 'PRIOR_ENTRY'
35130 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35131    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35132          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35133        )
35134    THEN
35135          xla_ae_lines_pkg.BflowUpgEntry
35136            (p_business_method_code    => l_bflow_method_code
35137            ,p_business_class_code     => l_bflow_class_code
35138            ,p_balance_type            => l_balance_type_code);
35139    ELSE
35140       NULL;
35141 XLA_AE_LINES_PKG.business_flow_validation(
35142                                 p_business_method_code     => l_bflow_method_code
35143                                ,p_business_class_code      => l_bflow_class_code
35144                                ,p_inherit_description_flag => l_inherit_desc_flag);
35145    END IF;
35146 
35147    --
35148    -- call analytical criteria
35149    --
35150    -- Inherited Analytical Criteria for business flow method of Prior Entry.
35151    --
35152    -- call description
35153    --
35154    -- No description or it is inherited.
35155    --
35156    -- call ADRs
35157    -- Bug 4922099
35158    --
35159    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35160         (NVL(l_actual_upg_option, 'N') = 'O') OR
35161         (NVL(l_enc_upg_option, 'N') = 'O')
35162       )
35163    THEN
35164    NULL;
35165    --
35166    --
35167    
35168    --
35169    --
35170    END IF;
35171    --
35172    -- Bug 4922099
35173    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35177       )
35174           (NVL(l_enc_upg_option, 'N') = 'O')
35175         ) AND
35176         (l_bflow_method_code = 'PRIOR_ENTRY')
35178    THEN
35179       IF
35180       --
35181       1 = 1
35182       --
35183       THEN
35184       xla_accounting_err_pkg.build_message
35185                                     (p_appli_s_name            => 'XLA'
35186                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35187                                     ,p_token_1                 => 'LINE_NUMBER'
35188                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35189                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35190                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35191                                                                              l_component_type
35192                                                                             ,l_component_code
35193                                                                             ,l_component_type_code
35194                                                                             ,l_component_appl_id
35195                                                                             ,l_amb_context_code
35196                                                                             ,l_entity_code
35197                                                                             ,l_event_class_code
35198                                                                            )
35199                                     ,p_token_3                 => 'OWNER'
35200                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35201                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35202                                                                           ,p_lookup_code    => l_component_type_code
35203                                                                          )
35204                                     ,p_token_4                 => 'PRODUCT_NAME'
35205                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35206                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35207                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35208                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35209                                     ,p_ae_header_id            =>  NULL
35210                                        );
35211 
35212         IF (C_LEVEL_ERROR>= g_log_level) THEN
35213                  trace
35214                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35215                       ,p_level    => C_LEVEL_ERROR
35216                       ,p_module   => l_log_module);
35217         END IF;
35218       END IF;
35219    END IF;
35220    --
35221    --
35222    ------------------------------------------------------------------------------------------------
35223    -- 4219869 Business Flow
35224    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35225    -- Prior Entry.  Currently, the following code is always generated.
35226    ------------------------------------------------------------------------------------------------
35227    -- No ValidateCurrentLine for business flow method of Prior Entry
35228 
35229    ------------------------------------------------------------------------------------
35230    -- 4219869 Business Flow
35231    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35232    ------------------------------------------------------------------------------------
35233    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35234 
35235    ----------------------------------------------------------------------------------
35236    -- 4219869 Business Flow
35237    -- Update journal entry status -- Need to generate this within IF <condition>
35238    ----------------------------------------------------------------------------------
35239    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35240          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35241          ,p_balance_type_code => l_balance_type_code
35242          );
35243 
35244    -------------------------------------------------------------------------------------------
35245    -- 4262811 - Generate the Accrual Reversal lines
35246    -------------------------------------------------------------------------------------------
35247    BEGIN
35248       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35249                               (g_array_event(p_event_id).array_value_num('header_index'));
35250       IF l_acc_rev_flag IS NULL THEN
35251          l_acc_rev_flag := 'N';
35252       END IF;
35253    EXCEPTION
35254       WHEN OTHERS THEN
35255          l_acc_rev_flag := 'N';
35256    END;
35257    --
35258    IF (l_acc_rev_flag = 'Y') THEN
35259 
35260        -- 4645092  ------------------------------------------------------------------------------
35261        -- To allow MPA report to determine if it should generate report process
35262        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35263        ------------------------------------------------------------------------------------------
35264 
35268    -- call ADRs
35265        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35266        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35267    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
35269    -- Bug 4922099
35270    --
35271    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35272         (NVL(l_actual_upg_option, 'N') = 'O') OR
35273         (NVL(l_enc_upg_option, 'N') = 'O')
35274       )
35275    THEN
35276    NULL;
35277    --
35278    --
35279    
35280    --
35281    --
35282    END IF;
35283 
35284        --
35285        -- Update the line information that should be overwritten
35286        --
35287        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35288                                          p_header_num   => 1);
35289        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35290 
35291        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35292 
35293        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35294           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35295        END IF;
35296 
35297       --
35298       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35299       --
35300       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35301           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35302       ELSE
35303           ---------------------------------------------------------------------------------------------------
35304           -- 4262811a Switch Sign
35305           ---------------------------------------------------------------------------------------------------
35306           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35307           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35308                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35309           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35310                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35311           -- 5132302
35312           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35313                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35314 
35315       END IF;
35316 
35317       -- 4955764
35318       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35319       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35320 
35321 
35322       XLA_AE_LINES_PKG.ValidateCurrentLine;
35323       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35324 
35325       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35326                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35327                ,p_balance_type_code => l_balance_type_code);
35328 
35329    END IF;
35330 
35331    -----------------------------------------------------------------------------------------
35332    -- 4262811 Multiperiod Accounting
35333    -----------------------------------------------------------------------------------------
35334      -- No MPA option is assigned.
35335 
35336 
35337 END IF;
35338 END IF;
35339 --
35340 
35341 --
35342 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35343    trace
35344       (p_msg      => 'END of AcctLineType_89'
35345       ,p_level    => C_LEVEL_PROCEDURE
35346       ,p_module   => l_log_module);
35347 END IF;
35348 --
35349 EXCEPTION
35350   WHEN xla_exceptions_pkg.application_exception THEN
35351       RAISE;
35352   WHEN OTHERS THEN
35353        xla_exceptions_pkg.raise_message
35354            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_89');
35355 END AcctLineType_89;
35356 --
35357 
35358 ---------------------------------------
35359 --
35360 -- PRIVATE FUNCTION
35361 --         AcctLineType_90
35362 --
35363 ---------------------------------------
35364 PROCEDURE AcctLineType_90 (
35365   p_application_id        IN NUMBER
35366  ,p_event_id              IN NUMBER
35367  ,p_calculate_acctd_flag  IN VARCHAR2
35368  ,p_calculate_g_l_flag    IN VARCHAR2
35369  ,p_actual_flag           IN OUT VARCHAR2
35370  ,p_balance_type_code     OUT VARCHAR2
35371  ,p_gain_or_loss_ref      OUT VARCHAR2
35372  
35373 --Collection Document Bank Occurrence
35374  , p_source_10            IN VARCHAR2
35375 --Collection Document Number
35376  , p_source_11            IN NUMBER
35377 --Collection Document Trade Note Number
35378  , p_source_12            IN VARCHAR2
35379 --Bordero Type
35380  , p_source_13            IN VARCHAR2
35381  , p_source_13_meaning    IN VARCHAR2
35382 --Collection Document Factoring Charges Account
35383  , p_source_31            IN NUMBER
35384 --Bill To Customer Account Identifier
35385  , p_source_49            IN NUMBER
35386 --Bill To Customer Site Use Identifier
35387  , p_source_50            IN NUMBER
35388 --SLA Party Type
35389  , p_source_51            IN VARCHAR2
35390 --Collection Document Distribution Line Type
35391  , p_source_77            IN VARCHAR2
35392  , p_source_77_meaning    IN VARCHAR2
35396 --Applied To Distribution Link Type
35393 --Accounting Reversal Indicator for Collection/Factoring Occurrence Documents
35394  , p_source_78            IN VARCHAR2
35395  , p_source_78_meaning    IN VARCHAR2
35397  , p_source_80            IN VARCHAR2
35398 --Applied To Distribution Identifier
35399  , p_source_82            IN NUMBER
35400 --Applied To Distribution Document Identifier
35401  , p_source_83            IN NUMBER
35402 --Applied To Distribution Occurrence Identifier
35403  , p_source_84            IN NUMBER
35404 --Collection Document Distribution Identifier
35405  , p_source_85            IN NUMBER
35406 --Collection Document Distribution Link Type
35407  , p_source_86            IN VARCHAR2
35408 --Collection Document Distribution Entered Amount
35409  , p_source_87            IN NUMBER
35410 --Collection Document Distribution Entered Currency Code
35411  , p_source_88            IN VARCHAR2
35412 --Collection Document Distribution Conversion Date
35413  , p_source_89            IN DATE
35414 --Collection Document Distribution Conversion Rate
35415  , p_source_90            IN NUMBER
35416 --Collection Document Distribution Conversion Rate Type
35417  , p_source_91            IN VARCHAR2
35418 --Collection Document Distribution Accounted Amount
35419  , p_source_92            IN NUMBER
35420 --Collection Document Occurrence Identifier
35421  , p_source_93            IN NUMBER
35422 --Reversed Collection Document Distribution Identifier
35423  , p_source_94            IN NUMBER
35424 --Reversed Collection Document Distribution Link Type
35425  , p_source_95            IN VARCHAR2
35426 )
35427 IS
35428 
35429 l_component_type              VARCHAR2(80);
35430 l_component_code              VARCHAR2(30);
35431 l_component_type_code         VARCHAR2(1);
35432 l_component_appl_id           INTEGER;
35433 l_amb_context_code            VARCHAR2(30);
35434 l_entity_code                 VARCHAR2(30);
35435 l_event_class_code            VARCHAR2(30);
35436 l_ae_header_id                NUMBER;
35437 l_event_type_code             VARCHAR2(30);
35438 l_line_definition_code        VARCHAR2(30);
35439 l_line_definition_owner_code  VARCHAR2(1);
35440 --
35441 -- adr variables
35442 l_segment                     VARCHAR2(30);
35443 l_ccid                        NUMBER;
35444 l_adr_transaction_coa_id      NUMBER;
35445 l_adr_accounting_coa_id       NUMBER;
35446 l_adr_flexfield_segment_code  VARCHAR2(30);
35447 l_adr_flex_value_set_id       NUMBER;
35448 l_adr_value_type_code         VARCHAR2(30);
35449 l_adr_value_combination_id    NUMBER;
35450 l_adr_value_segment_code      VARCHAR2(30);
35451 
35452 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
35453 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
35454 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
35455 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
35456 
35457 -- 4262811 Variables ------------------------------------------------------------------------------------------
35458 l_entered_amt_idx             NUMBER;
35459 l_accted_amt_idx              NUMBER;
35460 l_acc_rev_flag                VARCHAR2(1);
35461 l_accrual_line_num            NUMBER;
35462 l_tmp_amt                     NUMBER;
35463 l_acc_rev_natural_side_code   VARCHAR2(1);
35464 
35465 l_num_entries                 NUMBER;
35466 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
35467 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
35468 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
35469 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
35470 l_recog_line_1                NUMBER;
35471 l_recog_line_2                NUMBER;
35472 
35473 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
35474 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
35475 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
35476 
35477 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
35478 
35479 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
35480 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
35481 
35482 ---------------------------------------------------------------------------------------------------------------
35483 
35484 
35485 --
35486 -- bulk performance
35487 --
35488 l_balance_type_code           VARCHAR2(1);
35489 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
35490 l_log_module                  VARCHAR2(240);
35491 
35492 --
35493 -- Upgrade strategy
35494 --
35495 l_actual_upg_option           VARCHAR2(1);
35496 l_enc_upg_option           VARCHAR2(1);
35497 
35498 --
35499 BEGIN
35500 --
35501 IF g_log_enabled THEN
35502       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_90';
35503 END IF;
35504 --
35505 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35506 
35507       trace
35508          (p_msg      => 'BEGIN of AcctLineType_90'
35509          ,p_level    => C_LEVEL_PROCEDURE
35510          ,p_module   => l_log_module);
35511 
35512 END IF;
35513 --
35514 l_component_type             := 'AMB_JLT';
35515 l_component_code             := 'FACT_DOC_FACTORING_CHARGES';
35516 l_component_type_code        := 'S';
35517 l_component_appl_id          :=  222;
35518 l_amb_context_code           := 'DEFAULT';
35522 l_line_definition_owner_code := 'S';
35519 l_entity_code                := 'JL_BR_AR_COLL_DOC_OCCS';
35520 l_event_class_code           := 'FACTORING_OCC_DOCUMENT';
35521 l_event_type_code            := 'FACTORING_OCC_DOCUMENT_ALL';
35523 l_line_definition_code       := 'JLBR_AR_FACT_DOC_ACCRUAL';
35524 --
35525 l_balance_type_code          := 'A';
35526 l_segment                     := NULL;
35527 l_ccid                        := NULL;
35528 l_adr_transaction_coa_id      := NULL;
35529 l_adr_accounting_coa_id       := NULL;
35530 l_adr_flexfield_segment_code  := NULL;
35531 l_adr_flex_value_set_id       := NULL;
35532 l_adr_value_type_code         := NULL;
35533 l_adr_value_combination_id    := NULL;
35534 l_adr_value_segment_code      := NULL;
35535 
35536 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
35537 l_bflow_class_code           := '';    -- 4219869 Business Flow
35538 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
35539 l_budgetary_control_flag     := 'N';
35540 
35541 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
35542 l_bflow_applied_to_amt       := NULL; -- 5132302
35543 l_entered_amt_idx            := NULL;          -- 4262811
35544 l_accted_amt_idx             := NULL;          -- 4262811
35545 l_acc_rev_flag               := NULL;          -- 4262811
35546 l_accrual_line_num           := NULL;          -- 4262811
35547 l_tmp_amt                    := NULL;          -- 4262811
35548 --
35549  
35550 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
35551     l_balance_type_code <> 'B' THEN
35552 IF NVL(p_source_77,'
35553 ') =  'JLBR_AR_FACTORING_CHARGES' AND 
35554 NVL(p_source_13,'
35555 ') =  'FACTORING'
35556  THEN 
35557 
35558    --
35559    XLA_AE_LINES_PKG.SetNewLine;
35560 
35561    p_balance_type_code          := l_balance_type_code;
35562    -- set the flag so later we will know whether the gain loss line needs to be created
35563    
35564    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
35565      p_actual_flag :='A';
35566    END IF;
35567 
35568    --
35569    -- bulk performance
35570    --
35571    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
35572                                       p_header_num   => 0); -- 4262811
35573    --
35574    -- set accounting line options
35575    --
35576    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
35577            p_natural_side_code          => 'D'
35578          , p_gain_or_loss_flag          => 'N'
35579          , p_gl_transfer_mode_code      => 'S'
35580          , p_acct_entry_type_code       => 'A'
35581          , p_switch_side_flag           => 'Y'
35582          , p_merge_duplicate_code       => 'A'
35583          );
35584    --
35585    l_acc_rev_natural_side_code := 'C';  -- 4262811
35586    -- 
35587    --
35588    -- set accounting line type info
35589    --
35590    xla_ae_lines_pkg.SetAcctLineType
35591       (p_component_type             => l_component_type
35592       ,p_event_type_code            => l_event_type_code
35593       ,p_line_definition_owner_code => l_line_definition_owner_code
35594       ,p_line_definition_code       => l_line_definition_code
35595       ,p_accounting_line_code       => l_component_code
35596       ,p_accounting_line_type_code  => l_component_type_code
35597       ,p_accounting_line_appl_id    => l_component_appl_id
35598       ,p_amb_context_code           => l_amb_context_code
35599       ,p_entity_code                => l_entity_code
35600       ,p_event_class_code           => l_event_class_code);
35601    --
35602    -- set accounting class
35603    --
35604    xla_ae_lines_pkg.SetAcctClass(
35605            p_accounting_class_code  => 'BANK_CHG'
35606          , p_ae_header_id           => l_ae_header_id
35607          );
35608 
35609    --
35610    -- set rounding class
35611    --
35612    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
35613                       'BANK_CHG';
35614 
35615    --
35616    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
35617    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
35618    --
35619    -- bulk performance
35620    --
35621    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
35622 
35623    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
35624       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
35625 
35626    -- 4955764
35627    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35628       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
35629 
35630    -- 4458381 Public Sector Enh
35631    
35632    --
35633    -- set accounting attributes for the line type
35634    --
35635    l_entered_amt_idx := 10;
35636    l_accted_amt_idx  := 15;
35637    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
35638    l_rec_acct_attrs.array_acct_attr_code(1) := 'ACCOUNTING_REVERSAL_OPTION';
35639    l_rec_acct_attrs.array_char_value(1)  := p_source_78;
35640    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_APPLICATION_ID';
35641    l_rec_acct_attrs.array_num_value(2)  := 
35642 xla_ae_sources_pkg.GetSystemSourceNum(
35646 );
35643    p_source_code           => 'XLA_EVENT_APPL_ID'
35644  , p_source_type_code      => 'Y'
35645  , p_source_application_id =>  602
35647    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_DISTRIBUTION_TYPE';
35648    l_rec_acct_attrs.array_char_value(3)  := p_source_80;
35649    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_ENTITY_CODE';
35650    l_rec_acct_attrs.array_char_value(4)  := 
35651 xla_ae_sources_pkg.GetSystemSourceChar(
35652    p_source_code           => 'XLA_ENTITY_CODE'
35653  , p_source_type_code      => 'Y'
35654  , p_source_application_id =>  602
35655 );
35656    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_DIST_ID';
35657    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_82);
35658    l_rec_acct_attrs.array_acct_attr_code(6) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
35659    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_83);
35660    l_rec_acct_attrs.array_acct_attr_code(7) := 'APPLIED_TO_SECOND_SYS_TRAN_ID';
35661    l_rec_acct_attrs.array_num_value(7)  :=  to_char(p_source_84);
35662    l_rec_acct_attrs.array_acct_attr_code(8) := 'DISTRIBUTION_IDENTIFIER_1';
35663    l_rec_acct_attrs.array_num_value(8)  :=  to_char(p_source_85);
35664    l_rec_acct_attrs.array_acct_attr_code(9) := 'DISTRIBUTION_TYPE';
35665    l_rec_acct_attrs.array_char_value(9)  := p_source_86;
35666    l_rec_acct_attrs.array_acct_attr_code(10) := 'ENTERED_CURRENCY_AMOUNT';
35667    l_rec_acct_attrs.array_num_value(10)  := p_source_87;
35668    l_rec_acct_attrs.array_acct_attr_code(11) := 'ENTERED_CURRENCY_CODE';
35669    l_rec_acct_attrs.array_char_value(11)  := p_source_88;
35670    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_DATE';
35671    l_rec_acct_attrs.array_date_value(12)  := p_source_89;
35672    l_rec_acct_attrs.array_acct_attr_code(13) := 'EXCHANGE_RATE';
35673    l_rec_acct_attrs.array_num_value(13)  := p_source_90;
35674    l_rec_acct_attrs.array_acct_attr_code(14) := 'EXCHANGE_RATE_TYPE';
35675    l_rec_acct_attrs.array_char_value(14)  := p_source_91;
35676    l_rec_acct_attrs.array_acct_attr_code(15) := 'LEDGER_AMOUNT';
35677    l_rec_acct_attrs.array_num_value(15)  := p_source_92;
35678    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_ID';
35679    l_rec_acct_attrs.array_num_value(16)  := p_source_49;
35680    l_rec_acct_attrs.array_acct_attr_code(17) := 'PARTY_SITE_ID';
35681    l_rec_acct_attrs.array_num_value(17)  := p_source_50;
35682    l_rec_acct_attrs.array_acct_attr_code(18) := 'PARTY_TYPE';
35683    l_rec_acct_attrs.array_char_value(18)  := p_source_51;
35684    l_rec_acct_attrs.array_acct_attr_code(19) := 'RECON_REF';
35685    l_rec_acct_attrs.array_num_value(19)  :=  to_char(p_source_93);
35686    l_rec_acct_attrs.array_acct_attr_code(20) := 'REVERSED_DISTRIBUTION_ID1';
35687    l_rec_acct_attrs.array_num_value(20)  :=  to_char(p_source_94);
35688    l_rec_acct_attrs.array_acct_attr_code(21) := 'REVERSED_DISTRIBUTION_TYPE';
35689    l_rec_acct_attrs.array_char_value(21)  := p_source_95;
35690    l_rec_acct_attrs.array_acct_attr_code(22) := 'TRX_ROUNDING_REF';
35691    l_rec_acct_attrs.array_num_value(22)  :=  to_char(p_source_93);
35692 
35693    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
35694    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
35695 
35696    ---------------------------------------------------------------------------------------------------------------
35697    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
35698    ---------------------------------------------------------------------------------------------------------------
35699    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
35700 
35701    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35702    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
35703 
35704    IF xla_accounting_cache_pkg.GetValueChar
35705          (p_source_code         => 'LEDGER_CATEGORY_CODE'
35706          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
35707    AND l_bflow_method_code = 'PRIOR_ENTRY'
35708 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
35709    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
35710          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
35711        )
35712    THEN
35713          xla_ae_lines_pkg.BflowUpgEntry
35714            (p_business_method_code    => l_bflow_method_code
35715            ,p_business_class_code     => l_bflow_class_code
35716            ,p_balance_type            => l_balance_type_code);
35717    ELSE
35718       NULL;
35719 -- No business flow processing for business flow method of NONE.
35720    END IF;
35721 
35722    --
35723    -- call analytical criteria
35724    --
35725    
35726    --
35727    -- call description
35728    --
35729    
35730 xla_ae_lines_pkg.SetLineDescription(
35731    p_ae_header_id => l_ae_header_id
35732   ,p_description  => Description_17 (
35733      p_application_id         => p_application_id
35734    , p_ae_header_id           => l_ae_header_id 
35735 , p_source_10 => p_source_10
35736 , p_source_11 => p_source_11
35737 , p_source_12 => p_source_12
35738    )
35739 );
35740 
35741 
35742    --
35743    -- call ADRs
35744    -- Bug 4922099
35745    --
35746    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35750    THEN
35747         (NVL(l_actual_upg_option, 'N') = 'O') OR
35748         (NVL(l_enc_upg_option, 'N') = 'O')
35749       )
35751    NULL;
35752    --
35753    --
35754    
35755   l_ccid := AcctDerRule_28(
35756            p_application_id           => p_application_id
35757          , p_ae_header_id             => l_ae_header_id 
35758 , p_source_31 => p_source_31
35759          , x_transaction_coa_id       => l_adr_transaction_coa_id
35760          , x_accounting_coa_id        => l_adr_accounting_coa_id
35761          , x_value_type_code          => l_adr_value_type_code
35762          , p_side                     => 'NA'
35763    );
35764 
35765    xla_ae_lines_pkg.set_ccid(
35766     p_code_combination_id          => l_ccid
35767   , p_value_type_code              => l_adr_value_type_code
35768   , p_transaction_coa_id           => l_adr_transaction_coa_id
35769   , p_accounting_coa_id            => l_adr_accounting_coa_id
35770   , p_adr_code                     => 'COLL_DOC_FACTORING_CHARGES'
35771   , p_adr_type_code                => 'S'
35772   , p_component_type               => l_component_type
35773   , p_component_code               => l_component_code
35774   , p_component_type_code          => l_component_type_code
35775   , p_component_appl_id            => l_component_appl_id
35776   , p_amb_context_code             => l_amb_context_code
35777   , p_side                         => 'NA'
35778   );
35779 
35780 
35781    --
35782    --
35783    END IF;
35784    --
35785    -- Bug 4922099
35786    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
35787           (NVL(l_enc_upg_option, 'N') = 'O')
35788         ) AND
35789         (l_bflow_method_code = 'PRIOR_ENTRY')
35790       )
35791    THEN
35792       IF
35793       --
35794       1 = 2
35795       --
35796       THEN
35797       xla_accounting_err_pkg.build_message
35798                                     (p_appli_s_name            => 'XLA'
35799                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35800                                     ,p_token_1                 => 'LINE_NUMBER'
35801                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
35802                                     ,p_token_2                 => 'LINE_TYPE_NAME'
35803                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
35804                                                                              l_component_type
35805                                                                             ,l_component_code
35806                                                                             ,l_component_type_code
35807                                                                             ,l_component_appl_id
35808                                                                             ,l_amb_context_code
35809                                                                             ,l_entity_code
35810                                                                             ,l_event_class_code
35811                                                                            )
35812                                     ,p_token_3                 => 'OWNER'
35813                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
35814                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
35815                                                                           ,p_lookup_code    => l_component_type_code
35816                                                                          )
35817                                     ,p_token_4                 => 'PRODUCT_NAME'
35818                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
35819                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
35820                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
35821                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
35822                                     ,p_ae_header_id            =>  NULL
35823                                        );
35824 
35825         IF (C_LEVEL_ERROR>= g_log_level) THEN
35826                  trace
35827                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
35828                       ,p_level    => C_LEVEL_ERROR
35829                       ,p_module   => l_log_module);
35830         END IF;
35831       END IF;
35832    END IF;
35833    --
35834    --
35835    ------------------------------------------------------------------------------------------------
35836    -- 4219869 Business Flow
35837    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
35838    -- Prior Entry.  Currently, the following code is always generated.
35839    ------------------------------------------------------------------------------------------------
35840    XLA_AE_LINES_PKG.ValidateCurrentLine;
35841 
35842    ------------------------------------------------------------------------------------
35843    -- 4219869 Business Flow
35844    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
35845    ------------------------------------------------------------------------------------
35846    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35847 
35848    ----------------------------------------------------------------------------------
35849    -- 4219869 Business Flow
35853          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
35850    -- Update journal entry status -- Need to generate this within IF <condition>
35851    ----------------------------------------------------------------------------------
35852    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35854          ,p_balance_type_code => l_balance_type_code
35855          );
35856 
35857    -------------------------------------------------------------------------------------------
35858    -- 4262811 - Generate the Accrual Reversal lines
35859    -------------------------------------------------------------------------------------------
35860    BEGIN
35861       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
35862                               (g_array_event(p_event_id).array_value_num('header_index'));
35863       IF l_acc_rev_flag IS NULL THEN
35864          l_acc_rev_flag := 'N';
35865       END IF;
35866    EXCEPTION
35867       WHEN OTHERS THEN
35868          l_acc_rev_flag := 'N';
35869    END;
35870    --
35871    IF (l_acc_rev_flag = 'Y') THEN
35872 
35873        -- 4645092  ------------------------------------------------------------------------------
35874        -- To allow MPA report to determine if it should generate report process
35875        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
35876        ------------------------------------------------------------------------------------------
35877 
35878        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
35879        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
35880    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
35881    -- call ADRs
35882    -- Bug 4922099
35883    --
35884    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
35885         (NVL(l_actual_upg_option, 'N') = 'O') OR
35886         (NVL(l_enc_upg_option, 'N') = 'O')
35887       )
35888    THEN
35889    NULL;
35890    --
35891    --
35892    
35893   l_ccid := AcctDerRule_28(
35894            p_application_id           => p_application_id
35895          , p_ae_header_id             => l_ae_header_id 
35896 , p_source_31 => p_source_31
35897          , x_transaction_coa_id       => l_adr_transaction_coa_id
35898          , x_accounting_coa_id        => l_adr_accounting_coa_id
35899          , x_value_type_code          => l_adr_value_type_code
35900          , p_side                     => 'NA'
35901    );
35902 
35903    xla_ae_lines_pkg.set_ccid(
35904     p_code_combination_id          => l_ccid
35905   , p_value_type_code              => l_adr_value_type_code
35906   , p_transaction_coa_id           => l_adr_transaction_coa_id
35907   , p_accounting_coa_id            => l_adr_accounting_coa_id
35908   , p_adr_code                     => 'COLL_DOC_FACTORING_CHARGES'
35909   , p_adr_type_code                => 'S'
35910   , p_component_type               => l_component_type
35911   , p_component_code               => l_component_code
35912   , p_component_type_code          => l_component_type_code
35913   , p_component_appl_id            => l_component_appl_id
35914   , p_amb_context_code             => l_amb_context_code
35915   , p_side                         => 'NA'
35916   );
35917 
35918 
35919    --
35920    --
35921    END IF;
35922 
35923        --
35924        -- Update the line information that should be overwritten
35925        --
35926        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
35927                                          p_header_num   => 1);
35928        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
35929 
35930        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
35931 
35932        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
35933           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
35934        END IF;
35935 
35936       --
35937       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
35938       --
35939       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
35940           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
35941       ELSE
35942           ---------------------------------------------------------------------------------------------------
35943           -- 4262811a Switch Sign
35944           ---------------------------------------------------------------------------------------------------
35945           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
35946           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35947                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35948           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
35949                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35950           -- 5132302
35951           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
35952                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
35953 
35954       END IF;
35955 
35956       -- 4955764
35957       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
35961       XLA_AE_LINES_PKG.ValidateCurrentLine;
35958       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
35959 
35960 
35962       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
35963 
35964       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
35965                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
35966                ,p_balance_type_code => l_balance_type_code);
35967 
35968    END IF;
35969 
35970    -----------------------------------------------------------------------------------------
35971    -- 4262811 Multiperiod Accounting
35972    -----------------------------------------------------------------------------------------
35973      -- No MPA option is assigned.
35974 
35975 
35976 END IF;
35977 END IF;
35978 --
35979 
35980 --
35981 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
35982    trace
35983       (p_msg      => 'END of AcctLineType_90'
35984       ,p_level    => C_LEVEL_PROCEDURE
35985       ,p_module   => l_log_module);
35986 END IF;
35987 --
35988 EXCEPTION
35989   WHEN xla_exceptions_pkg.application_exception THEN
35990       RAISE;
35991   WHEN OTHERS THEN
35992        xla_exceptions_pkg.raise_message
35993            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_90');
35994 END AcctLineType_90;
35995 --
35996 
35997 ---------------------------------------
35998 --
35999 -- PRIVATE FUNCTION
36000 --         AcctLineType_91
36001 --
36002 ---------------------------------------
36003 PROCEDURE AcctLineType_91 (
36004   p_application_id        IN NUMBER
36005  ,p_event_id              IN NUMBER
36006  ,p_calculate_acctd_flag  IN VARCHAR2
36007  ,p_calculate_g_l_flag    IN VARCHAR2
36008  ,p_actual_flag           IN OUT VARCHAR2
36009  ,p_balance_type_code     OUT VARCHAR2
36010  ,p_gain_or_loss_ref      OUT VARCHAR2
36011  
36012 --Transaction Distribution GL Account
36013  , p_source_38            IN NUMBER
36014 --Bill To Customer Account Identifier
36015  , p_source_49            IN NUMBER
36016 --Bill To Customer Site Use Identifier
36017  , p_source_50            IN NUMBER
36018 --SLA Party Type
36019  , p_source_51            IN VARCHAR2
36020 --Transaction Distribution Account Class
36021  , p_source_55            IN VARCHAR2
36022 --Transaction Distribution Identifier
36023  , p_source_56            IN NUMBER
36024 --Transaction Distribution Type
36025  , p_source_57            IN VARCHAR2
36026 --Transaction Distribution Entered Amount
36027  , p_source_58            IN NUMBER
36028 --Transaction Currency Code
36029  , p_source_59            IN VARCHAR2
36030 --Transaction Exchange Date
36031  , p_source_60            IN DATE
36032 --Transaction Exchange Rate
36033  , p_source_61            IN NUMBER
36034 --Transaction Exchange Rate Type
36035  , p_source_62            IN VARCHAR2
36036 --Transaction Accounting Amount
36037  , p_source_63            IN NUMBER
36038 )
36039 IS
36040 
36041 l_component_type              VARCHAR2(80);
36042 l_component_code              VARCHAR2(30);
36043 l_component_type_code         VARCHAR2(1);
36044 l_component_appl_id           INTEGER;
36045 l_amb_context_code            VARCHAR2(30);
36046 l_entity_code                 VARCHAR2(30);
36047 l_event_class_code            VARCHAR2(30);
36048 l_ae_header_id                NUMBER;
36049 l_event_type_code             VARCHAR2(30);
36050 l_line_definition_code        VARCHAR2(30);
36051 l_line_definition_owner_code  VARCHAR2(1);
36052 --
36053 -- adr variables
36054 l_segment                     VARCHAR2(30);
36055 l_ccid                        NUMBER;
36056 l_adr_transaction_coa_id      NUMBER;
36057 l_adr_accounting_coa_id       NUMBER;
36058 l_adr_flexfield_segment_code  VARCHAR2(30);
36059 l_adr_flex_value_set_id       NUMBER;
36060 l_adr_value_type_code         VARCHAR2(30);
36061 l_adr_value_combination_id    NUMBER;
36062 l_adr_value_segment_code      VARCHAR2(30);
36063 
36064 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36065 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36066 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36067 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36068 
36069 -- 4262811 Variables ------------------------------------------------------------------------------------------
36070 l_entered_amt_idx             NUMBER;
36071 l_accted_amt_idx              NUMBER;
36072 l_acc_rev_flag                VARCHAR2(1);
36073 l_accrual_line_num            NUMBER;
36074 l_tmp_amt                     NUMBER;
36075 l_acc_rev_natural_side_code   VARCHAR2(1);
36076 
36077 l_num_entries                 NUMBER;
36078 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36079 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36080 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36081 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36082 l_recog_line_1                NUMBER;
36083 l_recog_line_2                NUMBER;
36084 
36085 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36086 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36087 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36088 
36092 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36089 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36090 
36091 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36093 
36094 ---------------------------------------------------------------------------------------------------------------
36095 
36096 
36097 --
36098 -- bulk performance
36099 --
36100 l_balance_type_code           VARCHAR2(1);
36101 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36102 l_log_module                  VARCHAR2(240);
36103 
36104 --
36105 -- Upgrade strategy
36106 --
36107 l_actual_upg_option           VARCHAR2(1);
36108 l_enc_upg_option           VARCHAR2(1);
36109 
36110 --
36111 BEGIN
36112 --
36113 IF g_log_enabled THEN
36114       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_91';
36115 END IF;
36116 --
36117 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36118 
36119       trace
36120          (p_msg      => 'BEGIN of AcctLineType_91'
36121          ,p_level    => C_LEVEL_PROCEDURE
36122          ,p_module   => l_log_module);
36123 
36124 END IF;
36125 --
36126 l_component_type             := 'AMB_JLT';
36127 l_component_code             := 'GUAR_DEFAULT_REC';
36128 l_component_type_code        := 'S';
36129 l_component_appl_id          :=  222;
36130 l_amb_context_code           := 'DEFAULT';
36131 l_entity_code                := 'TRANSACTIONS';
36132 l_event_class_code           := 'GUARANTEE';
36133 l_event_type_code            := 'GUARANTEE_ALL';
36134 l_line_definition_owner_code := 'S';
36135 l_line_definition_code       := 'AR_GUAR_DEFAULT_ACCRUAL';
36136 --
36137 l_balance_type_code          := 'A';
36138 l_segment                     := NULL;
36139 l_ccid                        := NULL;
36140 l_adr_transaction_coa_id      := NULL;
36141 l_adr_accounting_coa_id       := NULL;
36142 l_adr_flexfield_segment_code  := NULL;
36143 l_adr_flex_value_set_id       := NULL;
36144 l_adr_value_type_code         := NULL;
36145 l_adr_value_combination_id    := NULL;
36146 l_adr_value_segment_code      := NULL;
36147 
36148 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36149 l_bflow_class_code           := '';    -- 4219869 Business Flow
36150 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36151 l_budgetary_control_flag     := 'N';
36152 
36153 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36154 l_bflow_applied_to_amt       := NULL; -- 5132302
36155 l_entered_amt_idx            := NULL;          -- 4262811
36156 l_accted_amt_idx             := NULL;          -- 4262811
36157 l_acc_rev_flag               := NULL;          -- 4262811
36158 l_accrual_line_num           := NULL;          -- 4262811
36159 l_tmp_amt                    := NULL;          -- 4262811
36160 --
36161  
36162 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36163     l_balance_type_code <> 'B' THEN
36164 IF NVL(p_source_55,'
36165 ') =  'REC'
36166  THEN 
36167 
36168    --
36169    XLA_AE_LINES_PKG.SetNewLine;
36170 
36171    p_balance_type_code          := l_balance_type_code;
36172    -- set the flag so later we will know whether the gain loss line needs to be created
36173    
36174    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36175      p_actual_flag :='A';
36176    END IF;
36177 
36178    --
36179    -- bulk performance
36180    --
36181    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36182                                       p_header_num   => 0); -- 4262811
36183    --
36184    -- set accounting line options
36185    --
36186    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36187            p_natural_side_code          => 'D'
36188          , p_gain_or_loss_flag          => 'N'
36189          , p_gl_transfer_mode_code      => 'S'
36190          , p_acct_entry_type_code       => 'A'
36191          , p_switch_side_flag           => 'Y'
36192          , p_merge_duplicate_code       => 'A'
36193          );
36194    --
36195    l_acc_rev_natural_side_code := 'C';  -- 4262811
36196    -- 
36197    --
36198    -- set accounting line type info
36199    --
36200    xla_ae_lines_pkg.SetAcctLineType
36201       (p_component_type             => l_component_type
36202       ,p_event_type_code            => l_event_type_code
36203       ,p_line_definition_owner_code => l_line_definition_owner_code
36204       ,p_line_definition_code       => l_line_definition_code
36205       ,p_accounting_line_code       => l_component_code
36206       ,p_accounting_line_type_code  => l_component_type_code
36207       ,p_accounting_line_appl_id    => l_component_appl_id
36208       ,p_amb_context_code           => l_amb_context_code
36209       ,p_entity_code                => l_entity_code
36210       ,p_event_class_code           => l_event_class_code);
36211    --
36212    -- set accounting class
36213    --
36214    xla_ae_lines_pkg.SetAcctClass(
36215            p_accounting_class_code  => 'RECEIVABLE'
36216          , p_ae_header_id           => l_ae_header_id
36217          );
36218 
36219    --
36220    -- set rounding class
36221    --
36222    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36226    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36223                       'RECEIVABLE';
36224 
36225    --
36227    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36228    --
36229    -- bulk performance
36230    --
36231    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36232 
36233    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36234       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36235 
36236    -- 4955764
36237    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36238       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36239 
36240    -- 4458381 Public Sector Enh
36241    
36242    --
36243    -- set accounting attributes for the line type
36244    --
36245    l_entered_amt_idx := 3;
36246    l_accted_amt_idx  := 8;
36247    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36248    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36249    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
36250    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36251    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
36252    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36253    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
36254    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36255    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
36256    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36257    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
36258    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36259    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
36260    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36261    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
36262    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36263    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
36264    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
36265    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
36266    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
36267    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
36268    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
36269    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
36270 
36271    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36272    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36273 
36274    ---------------------------------------------------------------------------------------------------------------
36275    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36276    ---------------------------------------------------------------------------------------------------------------
36277    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36278 
36279    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36280    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36281 
36282    IF xla_accounting_cache_pkg.GetValueChar
36283          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36284          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36285    AND l_bflow_method_code = 'PRIOR_ENTRY'
36286 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36287    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36288          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36289        )
36290    THEN
36291          xla_ae_lines_pkg.BflowUpgEntry
36292            (p_business_method_code    => l_bflow_method_code
36293            ,p_business_class_code     => l_bflow_class_code
36294            ,p_balance_type            => l_balance_type_code);
36295    ELSE
36296       NULL;
36297 -- No business flow processing for business flow method of NONE.
36298    END IF;
36299 
36300    --
36301    -- call analytical criteria
36302    --
36303    
36304    --
36305    -- call description
36306    --
36307    -- No description or it is inherited.
36308    --
36309    -- call ADRs
36310    -- Bug 4922099
36311    --
36312    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36313         (NVL(l_actual_upg_option, 'N') = 'O') OR
36314         (NVL(l_enc_upg_option, 'N') = 'O')
36315       )
36316    THEN
36317    NULL;
36318    --
36319    --
36320    
36321   l_ccid := AcctDerRule_36(
36322            p_application_id           => p_application_id
36323          , p_ae_header_id             => l_ae_header_id 
36324 , p_source_38 => p_source_38
36325          , x_transaction_coa_id       => l_adr_transaction_coa_id
36326          , x_accounting_coa_id        => l_adr_accounting_coa_id
36327          , x_value_type_code          => l_adr_value_type_code
36328          , p_side                     => 'NA'
36329    );
36330 
36331    xla_ae_lines_pkg.set_ccid(
36332     p_code_combination_id          => l_ccid
36333   , p_value_type_code              => l_adr_value_type_code
36334   , p_transaction_coa_id           => l_adr_transaction_coa_id
36338   , p_component_type               => l_component_type
36335   , p_accounting_coa_id            => l_adr_accounting_coa_id
36336   , p_adr_code                     => 'TRX_DIST_CCID'
36337   , p_adr_type_code                => 'S'
36339   , p_component_code               => l_component_code
36340   , p_component_type_code          => l_component_type_code
36341   , p_component_appl_id            => l_component_appl_id
36342   , p_amb_context_code             => l_amb_context_code
36343   , p_side                         => 'NA'
36344   );
36345 
36346 
36347    --
36348    --
36349    END IF;
36350    --
36351    -- Bug 4922099
36352    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36353           (NVL(l_enc_upg_option, 'N') = 'O')
36354         ) AND
36355         (l_bflow_method_code = 'PRIOR_ENTRY')
36356       )
36357    THEN
36358       IF
36359       --
36360       1 = 2
36361       --
36362       THEN
36363       xla_accounting_err_pkg.build_message
36364                                     (p_appli_s_name            => 'XLA'
36365                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36366                                     ,p_token_1                 => 'LINE_NUMBER'
36367                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36368                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36369                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36370                                                                              l_component_type
36371                                                                             ,l_component_code
36372                                                                             ,l_component_type_code
36373                                                                             ,l_component_appl_id
36374                                                                             ,l_amb_context_code
36375                                                                             ,l_entity_code
36376                                                                             ,l_event_class_code
36377                                                                            )
36378                                     ,p_token_3                 => 'OWNER'
36379                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36380                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36381                                                                           ,p_lookup_code    => l_component_type_code
36382                                                                          )
36383                                     ,p_token_4                 => 'PRODUCT_NAME'
36384                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36385                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36386                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36387                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36388                                     ,p_ae_header_id            =>  NULL
36389                                        );
36390 
36391         IF (C_LEVEL_ERROR>= g_log_level) THEN
36392                  trace
36393                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36394                       ,p_level    => C_LEVEL_ERROR
36395                       ,p_module   => l_log_module);
36396         END IF;
36397       END IF;
36398    END IF;
36399    --
36400    --
36401    ------------------------------------------------------------------------------------------------
36402    -- 4219869 Business Flow
36403    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36404    -- Prior Entry.  Currently, the following code is always generated.
36405    ------------------------------------------------------------------------------------------------
36406    XLA_AE_LINES_PKG.ValidateCurrentLine;
36407 
36408    ------------------------------------------------------------------------------------
36409    -- 4219869 Business Flow
36410    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36411    ------------------------------------------------------------------------------------
36412    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36413 
36414    ----------------------------------------------------------------------------------
36415    -- 4219869 Business Flow
36416    -- Update journal entry status -- Need to generate this within IF <condition>
36417    ----------------------------------------------------------------------------------
36418    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36419          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36420          ,p_balance_type_code => l_balance_type_code
36421          );
36422 
36423    -------------------------------------------------------------------------------------------
36424    -- 4262811 - Generate the Accrual Reversal lines
36425    -------------------------------------------------------------------------------------------
36426    BEGIN
36427       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36428                               (g_array_event(p_event_id).array_value_num('header_index'));
36429       IF l_acc_rev_flag IS NULL THEN
36430          l_acc_rev_flag := 'N';
36431       END IF;
36435    END;
36432    EXCEPTION
36433       WHEN OTHERS THEN
36434          l_acc_rev_flag := 'N';
36436    --
36437    IF (l_acc_rev_flag = 'Y') THEN
36438 
36439        -- 4645092  ------------------------------------------------------------------------------
36440        -- To allow MPA report to determine if it should generate report process
36441        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
36442        ------------------------------------------------------------------------------------------
36443 
36444        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
36445        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
36446    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
36447    -- call ADRs
36448    -- Bug 4922099
36449    --
36450    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36451         (NVL(l_actual_upg_option, 'N') = 'O') OR
36452         (NVL(l_enc_upg_option, 'N') = 'O')
36453       )
36454    THEN
36455    NULL;
36456    --
36457    --
36458    
36459   l_ccid := AcctDerRule_36(
36460            p_application_id           => p_application_id
36461          , p_ae_header_id             => l_ae_header_id 
36462 , p_source_38 => p_source_38
36463          , x_transaction_coa_id       => l_adr_transaction_coa_id
36464          , x_accounting_coa_id        => l_adr_accounting_coa_id
36465          , x_value_type_code          => l_adr_value_type_code
36466          , p_side                     => 'NA'
36467    );
36468 
36469    xla_ae_lines_pkg.set_ccid(
36470     p_code_combination_id          => l_ccid
36471   , p_value_type_code              => l_adr_value_type_code
36472   , p_transaction_coa_id           => l_adr_transaction_coa_id
36473   , p_accounting_coa_id            => l_adr_accounting_coa_id
36474   , p_adr_code                     => 'TRX_DIST_CCID'
36475   , p_adr_type_code                => 'S'
36476   , p_component_type               => l_component_type
36477   , p_component_code               => l_component_code
36478   , p_component_type_code          => l_component_type_code
36479   , p_component_appl_id            => l_component_appl_id
36480   , p_amb_context_code             => l_amb_context_code
36481   , p_side                         => 'NA'
36482   );
36483 
36484 
36485    --
36486    --
36487    END IF;
36488 
36489        --
36490        -- Update the line information that should be overwritten
36491        --
36492        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
36493                                          p_header_num   => 1);
36494        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
36495 
36496        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
36497 
36498        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
36499           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
36500        END IF;
36501 
36502       --
36503       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
36504       --
36505       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
36506           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
36507       ELSE
36508           ---------------------------------------------------------------------------------------------------
36509           -- 4262811a Switch Sign
36510           ---------------------------------------------------------------------------------------------------
36511           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
36512           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36513                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36514           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
36515                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36516           -- 5132302
36517           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
36518                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
36519 
36520       END IF;
36521 
36522       -- 4955764
36523       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36524       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
36525 
36526 
36527       XLA_AE_LINES_PKG.ValidateCurrentLine;
36528       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36529 
36530       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36531                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
36532                ,p_balance_type_code => l_balance_type_code);
36533 
36534    END IF;
36535 
36536    -----------------------------------------------------------------------------------------
36537    -- 4262811 Multiperiod Accounting
36538    -----------------------------------------------------------------------------------------
36539      -- No MPA option is assigned.
36540 
36541 
36542 END IF;
36543 END IF;
36544 --
36545 
36546 --
36547 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36551       ,p_module   => l_log_module);
36548    trace
36549       (p_msg      => 'END of AcctLineType_91'
36550       ,p_level    => C_LEVEL_PROCEDURE
36552 END IF;
36553 --
36554 EXCEPTION
36555   WHEN xla_exceptions_pkg.application_exception THEN
36556       RAISE;
36557   WHEN OTHERS THEN
36558        xla_exceptions_pkg.raise_message
36559            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_91');
36560 END AcctLineType_91;
36561 --
36562 
36563 ---------------------------------------
36564 --
36565 -- PRIVATE FUNCTION
36566 --         AcctLineType_92
36567 --
36568 ---------------------------------------
36569 PROCEDURE AcctLineType_92 (
36570   p_application_id        IN NUMBER
36571  ,p_event_id              IN NUMBER
36572  ,p_calculate_acctd_flag  IN VARCHAR2
36573  ,p_calculate_g_l_flag    IN VARCHAR2
36574  ,p_actual_flag           IN OUT VARCHAR2
36575  ,p_balance_type_code     OUT VARCHAR2
36576  ,p_gain_or_loss_ref      OUT VARCHAR2
36577  
36578 --Transaction Distribution GL Account
36579  , p_source_38            IN NUMBER
36580 --Bill To Customer Account Identifier
36581  , p_source_49            IN NUMBER
36582 --Bill To Customer Site Use Identifier
36583  , p_source_50            IN NUMBER
36584 --SLA Party Type
36585  , p_source_51            IN VARCHAR2
36586 --Transaction Distribution Account Class
36587  , p_source_55            IN VARCHAR2
36588 --Transaction Distribution Identifier
36589  , p_source_56            IN NUMBER
36590 --Transaction Distribution Type
36591  , p_source_57            IN VARCHAR2
36592 --Transaction Distribution Entered Amount
36593  , p_source_58            IN NUMBER
36594 --Transaction Currency Code
36595  , p_source_59            IN VARCHAR2
36596 --Transaction Exchange Date
36597  , p_source_60            IN DATE
36598 --Transaction Exchange Rate
36599  , p_source_61            IN NUMBER
36600 --Transaction Exchange Rate Type
36601  , p_source_62            IN VARCHAR2
36602 --Transaction Accounting Amount
36603  , p_source_63            IN NUMBER
36604 )
36605 IS
36606 
36607 l_component_type              VARCHAR2(80);
36608 l_component_code              VARCHAR2(30);
36609 l_component_type_code         VARCHAR2(1);
36610 l_component_appl_id           INTEGER;
36611 l_amb_context_code            VARCHAR2(30);
36612 l_entity_code                 VARCHAR2(30);
36613 l_event_class_code            VARCHAR2(30);
36614 l_ae_header_id                NUMBER;
36615 l_event_type_code             VARCHAR2(30);
36616 l_line_definition_code        VARCHAR2(30);
36617 l_line_definition_owner_code  VARCHAR2(1);
36618 --
36619 -- adr variables
36620 l_segment                     VARCHAR2(30);
36621 l_ccid                        NUMBER;
36622 l_adr_transaction_coa_id      NUMBER;
36623 l_adr_accounting_coa_id       NUMBER;
36624 l_adr_flexfield_segment_code  VARCHAR2(30);
36625 l_adr_flex_value_set_id       NUMBER;
36626 l_adr_value_type_code         VARCHAR2(30);
36627 l_adr_value_combination_id    NUMBER;
36628 l_adr_value_segment_code      VARCHAR2(30);
36629 
36630 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
36631 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
36632 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
36633 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
36634 
36635 -- 4262811 Variables ------------------------------------------------------------------------------------------
36636 l_entered_amt_idx             NUMBER;
36637 l_accted_amt_idx              NUMBER;
36638 l_acc_rev_flag                VARCHAR2(1);
36639 l_accrual_line_num            NUMBER;
36640 l_tmp_amt                     NUMBER;
36641 l_acc_rev_natural_side_code   VARCHAR2(1);
36642 
36643 l_num_entries                 NUMBER;
36644 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
36645 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
36646 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
36647 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
36648 l_recog_line_1                NUMBER;
36649 l_recog_line_2                NUMBER;
36650 
36651 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
36652 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
36653 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
36654 
36655 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
36656 
36657 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
36658 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
36659 
36660 ---------------------------------------------------------------------------------------------------------------
36661 
36662 
36663 --
36664 -- bulk performance
36665 --
36666 l_balance_type_code           VARCHAR2(1);
36667 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
36668 l_log_module                  VARCHAR2(240);
36669 
36670 --
36671 -- Upgrade strategy
36672 --
36673 l_actual_upg_option           VARCHAR2(1);
36674 l_enc_upg_option           VARCHAR2(1);
36675 
36676 --
36677 BEGIN
36678 --
36679 IF g_log_enabled THEN
36683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
36680       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_92';
36681 END IF;
36682 --
36684 
36685       trace
36686          (p_msg      => 'BEGIN of AcctLineType_92'
36687          ,p_level    => C_LEVEL_PROCEDURE
36688          ,p_module   => l_log_module);
36689 
36690 END IF;
36691 --
36692 l_component_type             := 'AMB_JLT';
36693 l_component_code             := 'GUAR_REV';
36694 l_component_type_code        := 'S';
36695 l_component_appl_id          :=  222;
36696 l_amb_context_code           := 'DEFAULT';
36697 l_entity_code                := 'TRANSACTIONS';
36698 l_event_class_code           := 'GUARANTEE';
36699 l_event_type_code            := 'GUARANTEE_ALL';
36700 l_line_definition_owner_code := 'S';
36701 l_line_definition_code       := 'AR_GUAR_DEFAULT_ACCRUAL';
36702 --
36703 l_balance_type_code          := 'A';
36704 l_segment                     := NULL;
36705 l_ccid                        := NULL;
36706 l_adr_transaction_coa_id      := NULL;
36707 l_adr_accounting_coa_id       := NULL;
36708 l_adr_flexfield_segment_code  := NULL;
36709 l_adr_flex_value_set_id       := NULL;
36710 l_adr_value_type_code         := NULL;
36711 l_adr_value_combination_id    := NULL;
36712 l_adr_value_segment_code      := NULL;
36713 
36714 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
36715 l_bflow_class_code           := '';    -- 4219869 Business Flow
36716 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
36717 l_budgetary_control_flag     := 'N';
36718 
36719 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
36720 l_bflow_applied_to_amt       := NULL; -- 5132302
36721 l_entered_amt_idx            := NULL;          -- 4262811
36722 l_accted_amt_idx             := NULL;          -- 4262811
36723 l_acc_rev_flag               := NULL;          -- 4262811
36724 l_accrual_line_num           := NULL;          -- 4262811
36725 l_tmp_amt                    := NULL;          -- 4262811
36726 --
36727  
36728 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
36729     l_balance_type_code <> 'B' THEN
36730 IF NVL(p_source_55,'
36731 ') =  'REV'
36732  THEN 
36733 
36734    --
36735    XLA_AE_LINES_PKG.SetNewLine;
36736 
36737    p_balance_type_code          := l_balance_type_code;
36738    -- set the flag so later we will know whether the gain loss line needs to be created
36739    
36740    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
36741      p_actual_flag :='A';
36742    END IF;
36743 
36744    --
36745    -- bulk performance
36746    --
36747    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
36748                                       p_header_num   => 0); -- 4262811
36749    --
36750    -- set accounting line options
36751    --
36752    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
36753            p_natural_side_code          => 'C'
36754          , p_gain_or_loss_flag          => 'N'
36755          , p_gl_transfer_mode_code      => 'S'
36756          , p_acct_entry_type_code       => 'A'
36757          , p_switch_side_flag           => 'Y'
36758          , p_merge_duplicate_code       => 'A'
36759          );
36760    --
36761    l_acc_rev_natural_side_code := 'D';  -- 4262811
36762    -- 
36763    --
36764    -- set accounting line type info
36765    --
36766    xla_ae_lines_pkg.SetAcctLineType
36767       (p_component_type             => l_component_type
36768       ,p_event_type_code            => l_event_type_code
36769       ,p_line_definition_owner_code => l_line_definition_owner_code
36770       ,p_line_definition_code       => l_line_definition_code
36771       ,p_accounting_line_code       => l_component_code
36772       ,p_accounting_line_type_code  => l_component_type_code
36773       ,p_accounting_line_appl_id    => l_component_appl_id
36774       ,p_amb_context_code           => l_amb_context_code
36775       ,p_entity_code                => l_entity_code
36776       ,p_event_class_code           => l_event_class_code);
36777    --
36778    -- set accounting class
36779    --
36780    xla_ae_lines_pkg.SetAcctClass(
36781            p_accounting_class_code  => 'REVENUE'
36782          , p_ae_header_id           => l_ae_header_id
36783          );
36784 
36785    --
36786    -- set rounding class
36787    --
36788    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
36789                       'RECEIVABLE';
36790 
36791    --
36792    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
36793    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
36794    --
36795    -- bulk performance
36796    --
36797    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
36798 
36799    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
36800       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
36801 
36802    -- 4955764
36803    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
36804       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
36805 
36806    -- 4458381 Public Sector Enh
36807    
36808    --
36812    l_accted_amt_idx  := 8;
36809    -- set accounting attributes for the line type
36810    --
36811    l_entered_amt_idx := 3;
36813    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
36814    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
36815    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
36816    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
36817    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
36818    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
36819    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
36820    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
36821    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
36822    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
36823    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
36824    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
36825    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
36826    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
36827    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
36828    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
36829    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
36830    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
36831    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
36832    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
36833    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
36834    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
36835    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
36836 
36837    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
36838    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
36839 
36840    ---------------------------------------------------------------------------------------------------------------
36841    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
36842    ---------------------------------------------------------------------------------------------------------------
36843    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
36844 
36845    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36846    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
36847 
36848    IF xla_accounting_cache_pkg.GetValueChar
36849          (p_source_code         => 'LEDGER_CATEGORY_CODE'
36850          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
36851    AND l_bflow_method_code = 'PRIOR_ENTRY'
36852 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
36853    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
36854          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
36855        )
36856    THEN
36857          xla_ae_lines_pkg.BflowUpgEntry
36858            (p_business_method_code    => l_bflow_method_code
36859            ,p_business_class_code     => l_bflow_class_code
36860            ,p_balance_type            => l_balance_type_code);
36861    ELSE
36862       NULL;
36863 -- No business flow processing for business flow method of NONE.
36864    END IF;
36865 
36866    --
36867    -- call analytical criteria
36868    --
36869    
36870    --
36871    -- call description
36872    --
36873    -- No description or it is inherited.
36874    --
36875    -- call ADRs
36876    -- Bug 4922099
36877    --
36878    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
36879         (NVL(l_actual_upg_option, 'N') = 'O') OR
36880         (NVL(l_enc_upg_option, 'N') = 'O')
36881       )
36882    THEN
36883    NULL;
36884    --
36885    --
36886    
36887   l_ccid := AcctDerRule_36(
36888            p_application_id           => p_application_id
36889          , p_ae_header_id             => l_ae_header_id 
36890 , p_source_38 => p_source_38
36891          , x_transaction_coa_id       => l_adr_transaction_coa_id
36892          , x_accounting_coa_id        => l_adr_accounting_coa_id
36893          , x_value_type_code          => l_adr_value_type_code
36894          , p_side                     => 'NA'
36895    );
36896 
36897    xla_ae_lines_pkg.set_ccid(
36898     p_code_combination_id          => l_ccid
36899   , p_value_type_code              => l_adr_value_type_code
36900   , p_transaction_coa_id           => l_adr_transaction_coa_id
36901   , p_accounting_coa_id            => l_adr_accounting_coa_id
36902   , p_adr_code                     => 'TRX_DIST_CCID'
36903   , p_adr_type_code                => 'S'
36904   , p_component_type               => l_component_type
36905   , p_component_code               => l_component_code
36906   , p_component_type_code          => l_component_type_code
36907   , p_component_appl_id            => l_component_appl_id
36908   , p_amb_context_code             => l_amb_context_code
36909   , p_side                         => 'NA'
36910   );
36911 
36912 
36913    --
36914    --
36915    END IF;
36916    --
36917    -- Bug 4922099
36918    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
36919           (NVL(l_enc_upg_option, 'N') = 'O')
36920         ) AND
36921         (l_bflow_method_code = 'PRIOR_ENTRY')
36922       )
36923    THEN
36924       IF
36925       --
36926       1 = 2
36927       --
36928       THEN
36929       xla_accounting_err_pkg.build_message
36933                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
36930                                     (p_appli_s_name            => 'XLA'
36931                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36932                                     ,p_token_1                 => 'LINE_NUMBER'
36934                                     ,p_token_2                 => 'LINE_TYPE_NAME'
36935                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
36936                                                                              l_component_type
36937                                                                             ,l_component_code
36938                                                                             ,l_component_type_code
36939                                                                             ,l_component_appl_id
36940                                                                             ,l_amb_context_code
36941                                                                             ,l_entity_code
36942                                                                             ,l_event_class_code
36943                                                                            )
36944                                     ,p_token_3                 => 'OWNER'
36945                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
36946                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
36947                                                                           ,p_lookup_code    => l_component_type_code
36948                                                                          )
36949                                     ,p_token_4                 => 'PRODUCT_NAME'
36950                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
36951                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
36952                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
36953                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
36954                                     ,p_ae_header_id            =>  NULL
36955                                        );
36956 
36957         IF (C_LEVEL_ERROR>= g_log_level) THEN
36958                  trace
36959                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
36960                       ,p_level    => C_LEVEL_ERROR
36961                       ,p_module   => l_log_module);
36962         END IF;
36963       END IF;
36964    END IF;
36965    --
36966    --
36967    ------------------------------------------------------------------------------------------------
36968    -- 4219869 Business Flow
36969    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
36970    -- Prior Entry.  Currently, the following code is always generated.
36971    ------------------------------------------------------------------------------------------------
36972    XLA_AE_LINES_PKG.ValidateCurrentLine;
36973 
36974    ------------------------------------------------------------------------------------
36975    -- 4219869 Business Flow
36976    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
36977    ------------------------------------------------------------------------------------
36978    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
36979 
36980    ----------------------------------------------------------------------------------
36981    -- 4219869 Business Flow
36982    -- Update journal entry status -- Need to generate this within IF <condition>
36983    ----------------------------------------------------------------------------------
36984    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
36985          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
36986          ,p_balance_type_code => l_balance_type_code
36987          );
36988 
36989    -------------------------------------------------------------------------------------------
36990    -- 4262811 - Generate the Accrual Reversal lines
36991    -------------------------------------------------------------------------------------------
36992    BEGIN
36993       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
36994                               (g_array_event(p_event_id).array_value_num('header_index'));
36995       IF l_acc_rev_flag IS NULL THEN
36996          l_acc_rev_flag := 'N';
36997       END IF;
36998    EXCEPTION
36999       WHEN OTHERS THEN
37000          l_acc_rev_flag := 'N';
37001    END;
37002    --
37003    IF (l_acc_rev_flag = 'Y') THEN
37004 
37005        -- 4645092  ------------------------------------------------------------------------------
37006        -- To allow MPA report to determine if it should generate report process
37007        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37008        ------------------------------------------------------------------------------------------
37009 
37010        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37011        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37012    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
37013    -- call ADRs
37014    -- Bug 4922099
37015    --
37016    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37017         (NVL(l_actual_upg_option, 'N') = 'O') OR
37018         (NVL(l_enc_upg_option, 'N') = 'O')
37019       )
37023    --
37020    THEN
37021    NULL;
37022    --
37024    
37025   l_ccid := AcctDerRule_36(
37026            p_application_id           => p_application_id
37027          , p_ae_header_id             => l_ae_header_id 
37028 , p_source_38 => p_source_38
37029          , x_transaction_coa_id       => l_adr_transaction_coa_id
37030          , x_accounting_coa_id        => l_adr_accounting_coa_id
37031          , x_value_type_code          => l_adr_value_type_code
37032          , p_side                     => 'NA'
37033    );
37034 
37035    xla_ae_lines_pkg.set_ccid(
37036     p_code_combination_id          => l_ccid
37037   , p_value_type_code              => l_adr_value_type_code
37038   , p_transaction_coa_id           => l_adr_transaction_coa_id
37039   , p_accounting_coa_id            => l_adr_accounting_coa_id
37040   , p_adr_code                     => 'TRX_DIST_CCID'
37041   , p_adr_type_code                => 'S'
37042   , p_component_type               => l_component_type
37043   , p_component_code               => l_component_code
37044   , p_component_type_code          => l_component_type_code
37045   , p_component_appl_id            => l_component_appl_id
37046   , p_amb_context_code             => l_amb_context_code
37047   , p_side                         => 'NA'
37048   );
37049 
37050 
37051    --
37052    --
37053    END IF;
37054 
37055        --
37056        -- Update the line information that should be overwritten
37057        --
37058        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37059                                          p_header_num   => 1);
37060        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37061 
37062        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37063 
37064        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37065           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37066        END IF;
37067 
37068       --
37069       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37070       --
37071       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37072           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37073       ELSE
37074           ---------------------------------------------------------------------------------------------------
37075           -- 4262811a Switch Sign
37076           ---------------------------------------------------------------------------------------------------
37077           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37078           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37079                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37080           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37081                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37082           -- 5132302
37083           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37084                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37085 
37086       END IF;
37087 
37088       -- 4955764
37089       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37090       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37091 
37092 
37093       XLA_AE_LINES_PKG.ValidateCurrentLine;
37094       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37095 
37096       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37097                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37098                ,p_balance_type_code => l_balance_type_code);
37099 
37100    END IF;
37101 
37102    -----------------------------------------------------------------------------------------
37103    -- 4262811 Multiperiod Accounting
37104    -----------------------------------------------------------------------------------------
37105      -- No MPA option is assigned.
37106 
37107 
37108 END IF;
37109 END IF;
37110 --
37111 
37112 --
37113 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37114    trace
37115       (p_msg      => 'END of AcctLineType_92'
37116       ,p_level    => C_LEVEL_PROCEDURE
37117       ,p_module   => l_log_module);
37118 END IF;
37119 --
37120 EXCEPTION
37121   WHEN xla_exceptions_pkg.application_exception THEN
37122       RAISE;
37123   WHEN OTHERS THEN
37124        xla_exceptions_pkg.raise_message
37125            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_92');
37126 END AcctLineType_92;
37127 --
37128 
37129 ---------------------------------------
37130 --
37131 -- PRIVATE FUNCTION
37132 --         AcctLineType_93
37133 --
37134 ---------------------------------------
37135 PROCEDURE AcctLineType_93 (
37136   p_application_id        IN NUMBER
37137  ,p_event_id              IN NUMBER
37138  ,p_calculate_acctd_flag  IN VARCHAR2
37139  ,p_calculate_g_l_flag    IN VARCHAR2
37140  ,p_actual_flag           IN OUT VARCHAR2
37141  ,p_balance_type_code     OUT VARCHAR2
37145  , p_source_38            IN NUMBER
37142  ,p_gain_or_loss_ref      OUT VARCHAR2
37143  
37144 --Transaction Distribution GL Account
37146 --Bill To Customer Account Identifier
37147  , p_source_49            IN NUMBER
37148 --Bill To Customer Site Use Identifier
37149  , p_source_50            IN NUMBER
37150 --SLA Party Type
37151  , p_source_51            IN VARCHAR2
37152 --Transaction Distribution Account Class
37153  , p_source_55            IN VARCHAR2
37154 --Transaction Distribution Identifier
37155  , p_source_56            IN NUMBER
37156 --Transaction Distribution Type
37157  , p_source_57            IN VARCHAR2
37158 --Transaction Distribution Entered Amount
37159  , p_source_58            IN NUMBER
37160 --Transaction Currency Code
37161  , p_source_59            IN VARCHAR2
37162 --Transaction Exchange Date
37163  , p_source_60            IN DATE
37164 --Transaction Exchange Rate
37165  , p_source_61            IN NUMBER
37166 --Transaction Exchange Rate Type
37167  , p_source_62            IN VARCHAR2
37168 --Transaction Accounting Amount
37169  , p_source_63            IN NUMBER
37170 --Transaction Tax Line Identifier
37171  , p_source_97            IN NUMBER
37172 )
37173 IS
37174 
37175 l_component_type              VARCHAR2(80);
37176 l_component_code              VARCHAR2(30);
37177 l_component_type_code         VARCHAR2(1);
37178 l_component_appl_id           INTEGER;
37179 l_amb_context_code            VARCHAR2(30);
37180 l_entity_code                 VARCHAR2(30);
37181 l_event_class_code            VARCHAR2(30);
37182 l_ae_header_id                NUMBER;
37183 l_event_type_code             VARCHAR2(30);
37184 l_line_definition_code        VARCHAR2(30);
37185 l_line_definition_owner_code  VARCHAR2(1);
37186 --
37187 -- adr variables
37188 l_segment                     VARCHAR2(30);
37189 l_ccid                        NUMBER;
37190 l_adr_transaction_coa_id      NUMBER;
37191 l_adr_accounting_coa_id       NUMBER;
37192 l_adr_flexfield_segment_code  VARCHAR2(30);
37193 l_adr_flex_value_set_id       NUMBER;
37194 l_adr_value_type_code         VARCHAR2(30);
37195 l_adr_value_combination_id    NUMBER;
37196 l_adr_value_segment_code      VARCHAR2(30);
37197 
37198 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37199 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37200 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37201 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37202 
37203 -- 4262811 Variables ------------------------------------------------------------------------------------------
37204 l_entered_amt_idx             NUMBER;
37205 l_accted_amt_idx              NUMBER;
37206 l_acc_rev_flag                VARCHAR2(1);
37207 l_accrual_line_num            NUMBER;
37208 l_tmp_amt                     NUMBER;
37209 l_acc_rev_natural_side_code   VARCHAR2(1);
37210 
37211 l_num_entries                 NUMBER;
37212 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37213 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37214 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37215 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37216 l_recog_line_1                NUMBER;
37217 l_recog_line_2                NUMBER;
37218 
37219 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37220 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37221 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37222 
37223 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37224 
37225 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37226 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37227 
37228 ---------------------------------------------------------------------------------------------------------------
37229 
37230 
37231 --
37232 -- bulk performance
37233 --
37234 l_balance_type_code           VARCHAR2(1);
37235 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37236 l_log_module                  VARCHAR2(240);
37237 
37238 --
37239 -- Upgrade strategy
37240 --
37241 l_actual_upg_option           VARCHAR2(1);
37242 l_enc_upg_option           VARCHAR2(1);
37243 
37244 --
37245 BEGIN
37246 --
37247 IF g_log_enabled THEN
37248       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_93';
37249 END IF;
37250 --
37251 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37252 
37253       trace
37254          (p_msg      => 'BEGIN of AcctLineType_93'
37255          ,p_level    => C_LEVEL_PROCEDURE
37256          ,p_module   => l_log_module);
37257 
37258 END IF;
37259 --
37260 l_component_type             := 'AMB_JLT';
37261 l_component_code             := 'INV_CHARGES';
37262 l_component_type_code        := 'S';
37263 l_component_appl_id          :=  222;
37264 l_amb_context_code           := 'DEFAULT';
37265 l_entity_code                := 'TRANSACTIONS';
37266 l_event_class_code           := 'INVOICE';
37267 l_event_type_code            := 'INVOICE_ALL';
37268 l_line_definition_owner_code := 'S';
37269 l_line_definition_code       := 'AR_INV_DEFAULT_ACCRUAL';
37270 --
37271 l_balance_type_code          := 'A';
37275 l_adr_accounting_coa_id       := NULL;
37272 l_segment                     := NULL;
37273 l_ccid                        := NULL;
37274 l_adr_transaction_coa_id      := NULL;
37276 l_adr_flexfield_segment_code  := NULL;
37277 l_adr_flex_value_set_id       := NULL;
37278 l_adr_value_type_code         := NULL;
37279 l_adr_value_combination_id    := NULL;
37280 l_adr_value_segment_code      := NULL;
37281 
37282 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37283 l_bflow_class_code           := '';    -- 4219869 Business Flow
37284 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37285 l_budgetary_control_flag     := 'N';
37286 
37287 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37288 l_bflow_applied_to_amt       := NULL; -- 5132302
37289 l_entered_amt_idx            := NULL;          -- 4262811
37290 l_accted_amt_idx             := NULL;          -- 4262811
37291 l_acc_rev_flag               := NULL;          -- 4262811
37292 l_accrual_line_num           := NULL;          -- 4262811
37293 l_tmp_amt                    := NULL;          -- 4262811
37294 --
37295  
37296 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37297     l_balance_type_code <> 'B' THEN
37298 IF NVL(p_source_55,'
37299 ') =  'CHARGES'
37300  THEN 
37301 
37302    --
37303    XLA_AE_LINES_PKG.SetNewLine;
37304 
37305    p_balance_type_code          := l_balance_type_code;
37306    -- set the flag so later we will know whether the gain loss line needs to be created
37307    
37308    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37309      p_actual_flag :='A';
37310    END IF;
37311 
37312    --
37313    -- bulk performance
37314    --
37315    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37316                                       p_header_num   => 0); -- 4262811
37317    --
37318    -- set accounting line options
37319    --
37320    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37321            p_natural_side_code          => 'C'
37322          , p_gain_or_loss_flag          => 'N'
37323          , p_gl_transfer_mode_code      => 'S'
37324          , p_acct_entry_type_code       => 'A'
37325          , p_switch_side_flag           => 'Y'
37326          , p_merge_duplicate_code       => 'A'
37327          );
37328    --
37329    l_acc_rev_natural_side_code := 'D';  -- 4262811
37330    -- 
37331    --
37332    -- set accounting line type info
37333    --
37334    xla_ae_lines_pkg.SetAcctLineType
37335       (p_component_type             => l_component_type
37336       ,p_event_type_code            => l_event_type_code
37337       ,p_line_definition_owner_code => l_line_definition_owner_code
37338       ,p_line_definition_code       => l_line_definition_code
37339       ,p_accounting_line_code       => l_component_code
37340       ,p_accounting_line_type_code  => l_component_type_code
37341       ,p_accounting_line_appl_id    => l_component_appl_id
37342       ,p_amb_context_code           => l_amb_context_code
37343       ,p_entity_code                => l_entity_code
37344       ,p_event_class_code           => l_event_class_code);
37345    --
37346    -- set accounting class
37347    --
37348    xla_ae_lines_pkg.SetAcctClass(
37349            p_accounting_class_code  => 'CHARGES'
37350          , p_ae_header_id           => l_ae_header_id
37351          );
37352 
37353    --
37354    -- set rounding class
37355    --
37356    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37357                       'RECEIVABLE';
37358 
37359    --
37360    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37361    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37362    --
37363    -- bulk performance
37364    --
37365    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37366 
37367    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37368       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37369 
37370    -- 4955764
37371    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37372       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37373 
37374    -- 4458381 Public Sector Enh
37375    
37376    --
37377    -- set accounting attributes for the line type
37381    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
37378    --
37379    l_entered_amt_idx := 3;
37380    l_accted_amt_idx  := 8;
37382    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
37383    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
37384    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
37385    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
37386    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
37387    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
37388    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
37389    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
37390    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
37391    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
37392    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
37393    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
37394    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
37395    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
37396    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
37397    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
37398    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
37399    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
37400    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
37401    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
37402    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
37403    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
37404    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
37405    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
37406 
37407    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37408    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37409 
37410    ---------------------------------------------------------------------------------------------------------------
37411    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37412    ---------------------------------------------------------------------------------------------------------------
37413    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37414 
37415    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37416    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37417 
37418    IF xla_accounting_cache_pkg.GetValueChar
37419          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37420          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37421    AND l_bflow_method_code = 'PRIOR_ENTRY'
37422 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37423    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37424          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37425        )
37426    THEN
37427          xla_ae_lines_pkg.BflowUpgEntry
37428            (p_business_method_code    => l_bflow_method_code
37429            ,p_business_class_code     => l_bflow_class_code
37430            ,p_balance_type            => l_balance_type_code);
37431    ELSE
37432       NULL;
37433 -- No business flow processing for business flow method of NONE.
37434    END IF;
37435 
37436    --
37437    -- call analytical criteria
37438    --
37439    
37440    --
37441    -- call description
37442    --
37443    -- No description or it is inherited.
37444    --
37445    -- call ADRs
37446    -- Bug 4922099
37447    --
37448    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37449         (NVL(l_actual_upg_option, 'N') = 'O') OR
37450         (NVL(l_enc_upg_option, 'N') = 'O')
37451       )
37452    THEN
37453    NULL;
37454    --
37455    --
37456    
37457   l_ccid := AcctDerRule_36(
37458            p_application_id           => p_application_id
37459          , p_ae_header_id             => l_ae_header_id 
37460 , p_source_38 => p_source_38
37461          , x_transaction_coa_id       => l_adr_transaction_coa_id
37462          , x_accounting_coa_id        => l_adr_accounting_coa_id
37463          , x_value_type_code          => l_adr_value_type_code
37464          , p_side                     => 'NA'
37465    );
37466 
37467    xla_ae_lines_pkg.set_ccid(
37468     p_code_combination_id          => l_ccid
37469   , p_value_type_code              => l_adr_value_type_code
37470   , p_transaction_coa_id           => l_adr_transaction_coa_id
37471   , p_accounting_coa_id            => l_adr_accounting_coa_id
37472   , p_adr_code                     => 'TRX_DIST_CCID'
37473   , p_adr_type_code                => 'S'
37474   , p_component_type               => l_component_type
37475   , p_component_code               => l_component_code
37476   , p_component_type_code          => l_component_type_code
37477   , p_component_appl_id            => l_component_appl_id
37478   , p_amb_context_code             => l_amb_context_code
37479   , p_side                         => 'NA'
37480   );
37481 
37482 
37483    --
37484    --
37485    END IF;
37486    --
37487    -- Bug 4922099
37488    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
37489           (NVL(l_enc_upg_option, 'N') = 'O')
37490         ) AND
37491         (l_bflow_method_code = 'PRIOR_ENTRY')
37492       )
37493    THEN
37494       IF
37495       --
37496       1 = 2
37497       --
37501                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37498       THEN
37499       xla_accounting_err_pkg.build_message
37500                                     (p_appli_s_name            => 'XLA'
37502                                     ,p_token_1                 => 'LINE_NUMBER'
37503                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
37504                                     ,p_token_2                 => 'LINE_TYPE_NAME'
37505                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
37506                                                                              l_component_type
37507                                                                             ,l_component_code
37508                                                                             ,l_component_type_code
37509                                                                             ,l_component_appl_id
37510                                                                             ,l_amb_context_code
37511                                                                             ,l_entity_code
37512                                                                             ,l_event_class_code
37513                                                                            )
37514                                     ,p_token_3                 => 'OWNER'
37515                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
37516                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
37517                                                                           ,p_lookup_code    => l_component_type_code
37518                                                                          )
37519                                     ,p_token_4                 => 'PRODUCT_NAME'
37520                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
37521                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
37522                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
37523                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
37524                                     ,p_ae_header_id            =>  NULL
37525                                        );
37526 
37527         IF (C_LEVEL_ERROR>= g_log_level) THEN
37528                  trace
37529                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
37530                       ,p_level    => C_LEVEL_ERROR
37531                       ,p_module   => l_log_module);
37532         END IF;
37533       END IF;
37534    END IF;
37535    --
37536    --
37537    ------------------------------------------------------------------------------------------------
37538    -- 4219869 Business Flow
37539    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
37540    -- Prior Entry.  Currently, the following code is always generated.
37541    ------------------------------------------------------------------------------------------------
37542    XLA_AE_LINES_PKG.ValidateCurrentLine;
37543 
37544    ------------------------------------------------------------------------------------
37545    -- 4219869 Business Flow
37546    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
37547    ------------------------------------------------------------------------------------
37548    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37549 
37550    ----------------------------------------------------------------------------------
37551    -- 4219869 Business Flow
37552    -- Update journal entry status -- Need to generate this within IF <condition>
37553    ----------------------------------------------------------------------------------
37554    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37555          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
37556          ,p_balance_type_code => l_balance_type_code
37557          );
37558 
37559    -------------------------------------------------------------------------------------------
37560    -- 4262811 - Generate the Accrual Reversal lines
37561    -------------------------------------------------------------------------------------------
37562    BEGIN
37563       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
37564                               (g_array_event(p_event_id).array_value_num('header_index'));
37565       IF l_acc_rev_flag IS NULL THEN
37566          l_acc_rev_flag := 'N';
37567       END IF;
37568    EXCEPTION
37569       WHEN OTHERS THEN
37570          l_acc_rev_flag := 'N';
37571    END;
37572    --
37573    IF (l_acc_rev_flag = 'Y') THEN
37574 
37575        -- 4645092  ------------------------------------------------------------------------------
37576        -- To allow MPA report to determine if it should generate report process
37577        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
37578        ------------------------------------------------------------------------------------------
37579 
37580        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
37581        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
37582    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
37583    -- call ADRs
37584    -- Bug 4922099
37585    --
37586    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
37587         (NVL(l_actual_upg_option, 'N') = 'O') OR
37588         (NVL(l_enc_upg_option, 'N') = 'O')
37589       )
37590    THEN
37591    NULL;
37595   l_ccid := AcctDerRule_36(
37592    --
37593    --
37594    
37596            p_application_id           => p_application_id
37597          , p_ae_header_id             => l_ae_header_id 
37598 , p_source_38 => p_source_38
37599          , x_transaction_coa_id       => l_adr_transaction_coa_id
37600          , x_accounting_coa_id        => l_adr_accounting_coa_id
37601          , x_value_type_code          => l_adr_value_type_code
37602          , p_side                     => 'NA'
37603    );
37604 
37605    xla_ae_lines_pkg.set_ccid(
37606     p_code_combination_id          => l_ccid
37607   , p_value_type_code              => l_adr_value_type_code
37608   , p_transaction_coa_id           => l_adr_transaction_coa_id
37609   , p_accounting_coa_id            => l_adr_accounting_coa_id
37610   , p_adr_code                     => 'TRX_DIST_CCID'
37611   , p_adr_type_code                => 'S'
37612   , p_component_type               => l_component_type
37613   , p_component_code               => l_component_code
37614   , p_component_type_code          => l_component_type_code
37615   , p_component_appl_id            => l_component_appl_id
37616   , p_amb_context_code             => l_amb_context_code
37617   , p_side                         => 'NA'
37618   );
37619 
37620 
37621    --
37622    --
37623    END IF;
37624 
37625        --
37626        -- Update the line information that should be overwritten
37627        --
37628        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
37629                                          p_header_num   => 1);
37630        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
37631 
37632        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
37633 
37634        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
37635           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
37636        END IF;
37637 
37638       --
37639       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
37640       --
37641       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
37642           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
37643       ELSE
37644           ---------------------------------------------------------------------------------------------------
37645           -- 4262811a Switch Sign
37646           ---------------------------------------------------------------------------------------------------
37647           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
37648           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37649                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37650           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
37651                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37652           -- 5132302
37653           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
37654                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
37655 
37656       END IF;
37657 
37658       -- 4955764
37659       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37660       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
37661 
37662 
37663       XLA_AE_LINES_PKG.ValidateCurrentLine;
37664       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
37665 
37666       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
37667                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
37668                ,p_balance_type_code => l_balance_type_code);
37669 
37670    END IF;
37671 
37672    -----------------------------------------------------------------------------------------
37673    -- 4262811 Multiperiod Accounting
37674    -----------------------------------------------------------------------------------------
37675      -- No MPA option is assigned.
37676 
37677 
37678 END IF;
37679 END IF;
37680 --
37681 
37682 --
37683 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37684    trace
37685       (p_msg      => 'END of AcctLineType_93'
37686       ,p_level    => C_LEVEL_PROCEDURE
37687       ,p_module   => l_log_module);
37688 END IF;
37689 --
37690 EXCEPTION
37691   WHEN xla_exceptions_pkg.application_exception THEN
37692       RAISE;
37693   WHEN OTHERS THEN
37694        xla_exceptions_pkg.raise_message
37695            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_93');
37696 END AcctLineType_93;
37697 --
37698 
37699 ---------------------------------------
37700 --
37701 -- PRIVATE FUNCTION
37702 --         AcctLineType_94
37703 --
37704 ---------------------------------------
37705 PROCEDURE AcctLineType_94 (
37706   p_application_id        IN NUMBER
37707  ,p_event_id              IN NUMBER
37708  ,p_calculate_acctd_flag  IN VARCHAR2
37709  ,p_calculate_g_l_flag    IN VARCHAR2
37710  ,p_actual_flag           IN OUT VARCHAR2
37711  ,p_balance_type_code     OUT VARCHAR2
37712  ,p_gain_or_loss_ref      OUT VARCHAR2
37713  
37717  , p_source_49            IN NUMBER
37714 --Transaction Distribution GL Account
37715  , p_source_38            IN NUMBER
37716 --Bill To Customer Account Identifier
37718 --Bill To Customer Site Use Identifier
37719  , p_source_50            IN NUMBER
37720 --SLA Party Type
37721  , p_source_51            IN VARCHAR2
37722 --Transaction Distribution Account Class
37723  , p_source_55            IN VARCHAR2
37724 --Transaction Distribution Identifier
37725  , p_source_56            IN NUMBER
37726 --Transaction Distribution Type
37727  , p_source_57            IN VARCHAR2
37728 --Transaction Distribution Entered Amount
37729  , p_source_58            IN NUMBER
37730 --Transaction Currency Code
37731  , p_source_59            IN VARCHAR2
37732 --Transaction Exchange Date
37733  , p_source_60            IN DATE
37734 --Transaction Exchange Rate
37735  , p_source_61            IN NUMBER
37736 --Transaction Exchange Rate Type
37737  , p_source_62            IN VARCHAR2
37738 --Transaction Accounting Amount
37739  , p_source_63            IN NUMBER
37740 --Transaction Tax Line Identifier
37741  , p_source_97            IN NUMBER
37742 )
37743 IS
37744 
37745 l_component_type              VARCHAR2(80);
37746 l_component_code              VARCHAR2(30);
37747 l_component_type_code         VARCHAR2(1);
37748 l_component_appl_id           INTEGER;
37749 l_amb_context_code            VARCHAR2(30);
37750 l_entity_code                 VARCHAR2(30);
37751 l_event_class_code            VARCHAR2(30);
37752 l_ae_header_id                NUMBER;
37753 l_event_type_code             VARCHAR2(30);
37754 l_line_definition_code        VARCHAR2(30);
37755 l_line_definition_owner_code  VARCHAR2(1);
37756 --
37757 -- adr variables
37758 l_segment                     VARCHAR2(30);
37759 l_ccid                        NUMBER;
37760 l_adr_transaction_coa_id      NUMBER;
37761 l_adr_accounting_coa_id       NUMBER;
37762 l_adr_flexfield_segment_code  VARCHAR2(30);
37763 l_adr_flex_value_set_id       NUMBER;
37764 l_adr_value_type_code         VARCHAR2(30);
37765 l_adr_value_combination_id    NUMBER;
37766 l_adr_value_segment_code      VARCHAR2(30);
37767 
37768 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
37769 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
37770 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
37771 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
37772 
37773 -- 4262811 Variables ------------------------------------------------------------------------------------------
37774 l_entered_amt_idx             NUMBER;
37775 l_accted_amt_idx              NUMBER;
37776 l_acc_rev_flag                VARCHAR2(1);
37777 l_accrual_line_num            NUMBER;
37778 l_tmp_amt                     NUMBER;
37779 l_acc_rev_natural_side_code   VARCHAR2(1);
37780 
37781 l_num_entries                 NUMBER;
37782 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
37783 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
37784 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
37785 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
37786 l_recog_line_1                NUMBER;
37787 l_recog_line_2                NUMBER;
37788 
37789 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
37790 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
37791 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
37792 
37793 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
37794 
37795 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
37796 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
37797 
37798 ---------------------------------------------------------------------------------------------------------------
37799 
37800 
37801 --
37802 -- bulk performance
37803 --
37804 l_balance_type_code           VARCHAR2(1);
37805 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
37806 l_log_module                  VARCHAR2(240);
37807 
37808 --
37809 -- Upgrade strategy
37810 --
37811 l_actual_upg_option           VARCHAR2(1);
37812 l_enc_upg_option           VARCHAR2(1);
37813 
37814 --
37815 BEGIN
37816 --
37817 IF g_log_enabled THEN
37818       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_94';
37819 END IF;
37820 --
37821 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
37822 
37823       trace
37824          (p_msg      => 'BEGIN of AcctLineType_94'
37825          ,p_level    => C_LEVEL_PROCEDURE
37826          ,p_module   => l_log_module);
37827 
37828 END IF;
37829 --
37830 l_component_type             := 'AMB_JLT';
37831 l_component_code             := 'INV_DEFAULT_REC';
37832 l_component_type_code        := 'S';
37833 l_component_appl_id          :=  222;
37834 l_amb_context_code           := 'DEFAULT';
37835 l_entity_code                := 'TRANSACTIONS';
37836 l_event_class_code           := 'INVOICE';
37837 l_event_type_code            := 'INVOICE_ALL';
37838 l_line_definition_owner_code := 'S';
37839 l_line_definition_code       := 'AR_INV_DEFAULT_ACCRUAL';
37840 --
37841 l_balance_type_code          := 'A';
37842 l_segment                     := NULL;
37843 l_ccid                        := NULL;
37847 l_adr_flex_value_set_id       := NULL;
37844 l_adr_transaction_coa_id      := NULL;
37845 l_adr_accounting_coa_id       := NULL;
37846 l_adr_flexfield_segment_code  := NULL;
37848 l_adr_value_type_code         := NULL;
37849 l_adr_value_combination_id    := NULL;
37850 l_adr_value_segment_code      := NULL;
37851 
37852 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
37853 l_bflow_class_code           := 'RECEIVABLE';    -- 4219869 Business Flow
37854 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
37855 l_budgetary_control_flag     := 'N';
37856 
37857 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
37858 l_bflow_applied_to_amt       := NULL; -- 5132302
37859 l_entered_amt_idx            := NULL;          -- 4262811
37860 l_accted_amt_idx             := NULL;          -- 4262811
37861 l_acc_rev_flag               := NULL;          -- 4262811
37862 l_accrual_line_num           := NULL;          -- 4262811
37863 l_tmp_amt                    := NULL;          -- 4262811
37864 --
37865  
37866 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
37867     l_balance_type_code <> 'B' THEN
37868 IF NVL(p_source_55,'
37869 ') =  'REC'
37870  THEN 
37871 
37872    --
37873    XLA_AE_LINES_PKG.SetNewLine;
37874 
37875    p_balance_type_code          := l_balance_type_code;
37876    -- set the flag so later we will know whether the gain loss line needs to be created
37877    
37878    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
37879      p_actual_flag :='A';
37880    END IF;
37881 
37882    --
37883    -- bulk performance
37884    --
37885    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
37886                                       p_header_num   => 0); -- 4262811
37887    --
37888    -- set accounting line options
37889    --
37890    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
37891            p_natural_side_code          => 'D'
37892          , p_gain_or_loss_flag          => 'N'
37893          , p_gl_transfer_mode_code      => 'S'
37894          , p_acct_entry_type_code       => 'A'
37895          , p_switch_side_flag           => 'Y'
37896          , p_merge_duplicate_code       => 'A'
37897          );
37898    --
37899    l_acc_rev_natural_side_code := 'C';  -- 4262811
37900    -- 
37901    --
37902    -- set accounting line type info
37903    --
37904    xla_ae_lines_pkg.SetAcctLineType
37905       (p_component_type             => l_component_type
37906       ,p_event_type_code            => l_event_type_code
37907       ,p_line_definition_owner_code => l_line_definition_owner_code
37908       ,p_line_definition_code       => l_line_definition_code
37909       ,p_accounting_line_code       => l_component_code
37910       ,p_accounting_line_type_code  => l_component_type_code
37911       ,p_accounting_line_appl_id    => l_component_appl_id
37912       ,p_amb_context_code           => l_amb_context_code
37913       ,p_entity_code                => l_entity_code
37914       ,p_event_class_code           => l_event_class_code);
37915    --
37916    -- set accounting class
37917    --
37918    xla_ae_lines_pkg.SetAcctClass(
37919            p_accounting_class_code  => 'RECEIVABLE'
37920          , p_ae_header_id           => l_ae_header_id
37921          );
37922 
37923    --
37924    -- set rounding class
37925    --
37926    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
37927                       'RECEIVABLE';
37928 
37929    --
37930    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
37931    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
37932    --
37933    -- bulk performance
37934    --
37935    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
37936 
37937    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
37938       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
37939 
37940    -- 4955764
37941    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
37942       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
37943 
37944    -- 4458381 Public Sector Enh
37945    
37946    --
37947    -- set accounting attributes for the line type
37948    --
37949    l_entered_amt_idx := 3;
37950    l_accted_amt_idx  := 8;
37951    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
37952    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
37953    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
37954    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
37955    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
37956    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
37957    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
37958    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
37959    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
37960    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
37961    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
37962    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
37963    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
37964    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
37968    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
37965    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
37966    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
37967    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
37969    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
37970    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
37971    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
37972    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
37973    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
37974    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
37975    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
37976 
37977    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
37978    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
37979 
37980    ---------------------------------------------------------------------------------------------------------------
37981    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
37982    ---------------------------------------------------------------------------------------------------------------
37983    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
37984 
37985    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37986    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
37987 
37988    IF xla_accounting_cache_pkg.GetValueChar
37989          (p_source_code         => 'LEDGER_CATEGORY_CODE'
37990          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
37991    AND l_bflow_method_code = 'PRIOR_ENTRY'
37992 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
37993    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
37994          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
37995        )
37996    THEN
37997          xla_ae_lines_pkg.BflowUpgEntry
37998            (p_business_method_code    => l_bflow_method_code
37999            ,p_business_class_code     => l_bflow_class_code
38000            ,p_balance_type            => l_balance_type_code);
38001    ELSE
38002       NULL;
38003 -- No business flow processing for business flow method of NONE.
38004    END IF;
38005 
38006    --
38007    -- call analytical criteria
38008    --
38009    
38010    --
38011    -- call description
38012    --
38013    -- No description or it is inherited.
38014    --
38015    -- call ADRs
38016    -- Bug 4922099
38017    --
38018    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38019         (NVL(l_actual_upg_option, 'N') = 'O') OR
38020         (NVL(l_enc_upg_option, 'N') = 'O')
38021       )
38022    THEN
38023    NULL;
38024    --
38025    --
38026    
38027   l_ccid := AcctDerRule_36(
38028            p_application_id           => p_application_id
38029          , p_ae_header_id             => l_ae_header_id 
38030 , p_source_38 => p_source_38
38031          , x_transaction_coa_id       => l_adr_transaction_coa_id
38032          , x_accounting_coa_id        => l_adr_accounting_coa_id
38033          , x_value_type_code          => l_adr_value_type_code
38034          , p_side                     => 'NA'
38035    );
38036 
38037    xla_ae_lines_pkg.set_ccid(
38038     p_code_combination_id          => l_ccid
38039   , p_value_type_code              => l_adr_value_type_code
38040   , p_transaction_coa_id           => l_adr_transaction_coa_id
38041   , p_accounting_coa_id            => l_adr_accounting_coa_id
38042   , p_adr_code                     => 'TRX_DIST_CCID'
38043   , p_adr_type_code                => 'S'
38044   , p_component_type               => l_component_type
38045   , p_component_code               => l_component_code
38046   , p_component_type_code          => l_component_type_code
38047   , p_component_appl_id            => l_component_appl_id
38048   , p_amb_context_code             => l_amb_context_code
38049   , p_side                         => 'NA'
38050   );
38051 
38052 
38053    --
38054    --
38055    END IF;
38056    --
38057    -- Bug 4922099
38058    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38059           (NVL(l_enc_upg_option, 'N') = 'O')
38060         ) AND
38061         (l_bflow_method_code = 'PRIOR_ENTRY')
38062       )
38063    THEN
38064       IF
38065       --
38066       1 = 2
38067       --
38068       THEN
38069       xla_accounting_err_pkg.build_message
38070                                     (p_appli_s_name            => 'XLA'
38071                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38072                                     ,p_token_1                 => 'LINE_NUMBER'
38073                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38074                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38075                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38076                                                                              l_component_type
38077                                                                             ,l_component_code
38078                                                                             ,l_component_type_code
38079                                                                             ,l_component_appl_id
38083                                                                            )
38080                                                                             ,l_amb_context_code
38081                                                                             ,l_entity_code
38082                                                                             ,l_event_class_code
38084                                     ,p_token_3                 => 'OWNER'
38085                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38086                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38087                                                                           ,p_lookup_code    => l_component_type_code
38088                                                                          )
38089                                     ,p_token_4                 => 'PRODUCT_NAME'
38090                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38091                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38092                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38093                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38094                                     ,p_ae_header_id            =>  NULL
38095                                        );
38096 
38097         IF (C_LEVEL_ERROR>= g_log_level) THEN
38098                  trace
38099                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38100                       ,p_level    => C_LEVEL_ERROR
38101                       ,p_module   => l_log_module);
38102         END IF;
38103       END IF;
38104    END IF;
38105    --
38106    --
38107    ------------------------------------------------------------------------------------------------
38108    -- 4219869 Business Flow
38109    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38110    -- Prior Entry.  Currently, the following code is always generated.
38111    ------------------------------------------------------------------------------------------------
38112    XLA_AE_LINES_PKG.ValidateCurrentLine;
38113 
38114    ------------------------------------------------------------------------------------
38115    -- 4219869 Business Flow
38116    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38117    ------------------------------------------------------------------------------------
38118    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38119 
38120    ----------------------------------------------------------------------------------
38121    -- 4219869 Business Flow
38122    -- Update journal entry status -- Need to generate this within IF <condition>
38123    ----------------------------------------------------------------------------------
38124    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38125          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38126          ,p_balance_type_code => l_balance_type_code
38127          );
38128 
38129    -------------------------------------------------------------------------------------------
38130    -- 4262811 - Generate the Accrual Reversal lines
38131    -------------------------------------------------------------------------------------------
38132    BEGIN
38133       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38134                               (g_array_event(p_event_id).array_value_num('header_index'));
38135       IF l_acc_rev_flag IS NULL THEN
38136          l_acc_rev_flag := 'N';
38137       END IF;
38138    EXCEPTION
38139       WHEN OTHERS THEN
38140          l_acc_rev_flag := 'N';
38141    END;
38142    --
38143    IF (l_acc_rev_flag = 'Y') THEN
38144 
38145        -- 4645092  ------------------------------------------------------------------------------
38146        -- To allow MPA report to determine if it should generate report process
38147        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38148        ------------------------------------------------------------------------------------------
38149 
38150        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38151        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38152    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
38153    -- call ADRs
38154    -- Bug 4922099
38155    --
38156    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38157         (NVL(l_actual_upg_option, 'N') = 'O') OR
38161    NULL;
38158         (NVL(l_enc_upg_option, 'N') = 'O')
38159       )
38160    THEN
38162    --
38163    --
38164    
38165   l_ccid := AcctDerRule_36(
38166            p_application_id           => p_application_id
38167          , p_ae_header_id             => l_ae_header_id 
38168 , p_source_38 => p_source_38
38169          , x_transaction_coa_id       => l_adr_transaction_coa_id
38170          , x_accounting_coa_id        => l_adr_accounting_coa_id
38171          , x_value_type_code          => l_adr_value_type_code
38172          , p_side                     => 'NA'
38173    );
38174 
38175    xla_ae_lines_pkg.set_ccid(
38176     p_code_combination_id          => l_ccid
38177   , p_value_type_code              => l_adr_value_type_code
38178   , p_transaction_coa_id           => l_adr_transaction_coa_id
38179   , p_accounting_coa_id            => l_adr_accounting_coa_id
38180   , p_adr_code                     => 'TRX_DIST_CCID'
38181   , p_adr_type_code                => 'S'
38182   , p_component_type               => l_component_type
38183   , p_component_code               => l_component_code
38184   , p_component_type_code          => l_component_type_code
38185   , p_component_appl_id            => l_component_appl_id
38186   , p_amb_context_code             => l_amb_context_code
38187   , p_side                         => 'NA'
38188   );
38189 
38190 
38191    --
38192    --
38193    END IF;
38194 
38195        --
38196        -- Update the line information that should be overwritten
38197        --
38198        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38199                                          p_header_num   => 1);
38200        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38201 
38202        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38203 
38204        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38205           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38206        END IF;
38207 
38208       --
38209       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38210       --
38211       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38212           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38213       ELSE
38214           ---------------------------------------------------------------------------------------------------
38215           -- 4262811a Switch Sign
38216           ---------------------------------------------------------------------------------------------------
38217           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38218           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38219                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38220           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38221                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38222           -- 5132302
38223           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38224                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38225 
38226       END IF;
38227 
38228       -- 4955764
38229       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38230       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38231 
38232 
38233       XLA_AE_LINES_PKG.ValidateCurrentLine;
38234       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38235 
38236       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38237                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38238                ,p_balance_type_code => l_balance_type_code);
38239 
38240    END IF;
38241 
38242    -----------------------------------------------------------------------------------------
38243    -- 4262811 Multiperiod Accounting
38244    -----------------------------------------------------------------------------------------
38245      -- No MPA option is assigned.
38246 
38247 
38248 END IF;
38249 END IF;
38250 --
38251 
38252 --
38253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38254    trace
38255       (p_msg      => 'END of AcctLineType_94'
38256       ,p_level    => C_LEVEL_PROCEDURE
38257       ,p_module   => l_log_module);
38258 END IF;
38259 --
38260 EXCEPTION
38261   WHEN xla_exceptions_pkg.application_exception THEN
38262       RAISE;
38263   WHEN OTHERS THEN
38264        xla_exceptions_pkg.raise_message
38265            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_94');
38266 END AcctLineType_94;
38267 --
38268 
38269 ---------------------------------------
38270 --
38271 -- PRIVATE FUNCTION
38272 --         AcctLineType_95
38273 --
38274 ---------------------------------------
38275 PROCEDURE AcctLineType_95 (
38276   p_application_id        IN NUMBER
38277  ,p_event_id              IN NUMBER
38278  ,p_calculate_acctd_flag  IN VARCHAR2
38282  ,p_gain_or_loss_ref      OUT VARCHAR2
38279  ,p_calculate_g_l_flag    IN VARCHAR2
38280  ,p_actual_flag           IN OUT VARCHAR2
38281  ,p_balance_type_code     OUT VARCHAR2
38283  
38284 --Transaction Distribution GL Account
38285  , p_source_38            IN NUMBER
38286 --Bill To Customer Account Identifier
38287  , p_source_49            IN NUMBER
38288 --Bill To Customer Site Use Identifier
38289  , p_source_50            IN NUMBER
38290 --SLA Party Type
38291  , p_source_51            IN VARCHAR2
38292 --Transaction Distribution Account Class
38293  , p_source_55            IN VARCHAR2
38294 --Transaction Distribution Identifier
38295  , p_source_56            IN NUMBER
38296 --Transaction Distribution Type
38297  , p_source_57            IN VARCHAR2
38298 --Transaction Distribution Entered Amount
38299  , p_source_58            IN NUMBER
38300 --Transaction Currency Code
38301  , p_source_59            IN VARCHAR2
38302 --Transaction Exchange Date
38303  , p_source_60            IN DATE
38304 --Transaction Exchange Rate
38305  , p_source_61            IN NUMBER
38306 --Transaction Exchange Rate Type
38307  , p_source_62            IN VARCHAR2
38308 --Transaction Accounting Amount
38309  , p_source_63            IN NUMBER
38310 --Transaction Tax Line Identifier
38311  , p_source_97            IN NUMBER
38312 )
38313 IS
38314 
38315 l_component_type              VARCHAR2(80);
38316 l_component_code              VARCHAR2(30);
38317 l_component_type_code         VARCHAR2(1);
38318 l_component_appl_id           INTEGER;
38319 l_amb_context_code            VARCHAR2(30);
38320 l_entity_code                 VARCHAR2(30);
38321 l_event_class_code            VARCHAR2(30);
38322 l_ae_header_id                NUMBER;
38323 l_event_type_code             VARCHAR2(30);
38324 l_line_definition_code        VARCHAR2(30);
38325 l_line_definition_owner_code  VARCHAR2(1);
38326 --
38327 -- adr variables
38328 l_segment                     VARCHAR2(30);
38329 l_ccid                        NUMBER;
38330 l_adr_transaction_coa_id      NUMBER;
38331 l_adr_accounting_coa_id       NUMBER;
38332 l_adr_flexfield_segment_code  VARCHAR2(30);
38333 l_adr_flex_value_set_id       NUMBER;
38334 l_adr_value_type_code         VARCHAR2(30);
38335 l_adr_value_combination_id    NUMBER;
38336 l_adr_value_segment_code      VARCHAR2(30);
38337 
38338 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38339 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38340 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38341 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38342 
38343 -- 4262811 Variables ------------------------------------------------------------------------------------------
38344 l_entered_amt_idx             NUMBER;
38345 l_accted_amt_idx              NUMBER;
38346 l_acc_rev_flag                VARCHAR2(1);
38347 l_accrual_line_num            NUMBER;
38348 l_tmp_amt                     NUMBER;
38349 l_acc_rev_natural_side_code   VARCHAR2(1);
38350 
38351 l_num_entries                 NUMBER;
38352 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38353 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38354 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38355 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38356 l_recog_line_1                NUMBER;
38357 l_recog_line_2                NUMBER;
38358 
38359 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38360 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38361 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38362 
38363 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38364 
38365 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38366 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38367 
38368 ---------------------------------------------------------------------------------------------------------------
38369 
38370 
38371 --
38372 -- bulk performance
38373 --
38374 l_balance_type_code           VARCHAR2(1);
38375 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38376 l_log_module                  VARCHAR2(240);
38377 
38378 --
38379 -- Upgrade strategy
38380 --
38381 l_actual_upg_option           VARCHAR2(1);
38382 l_enc_upg_option           VARCHAR2(1);
38383 
38384 --
38385 BEGIN
38386 --
38387 IF g_log_enabled THEN
38388       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_95';
38389 END IF;
38390 --
38391 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38392 
38393       trace
38394          (p_msg      => 'BEGIN of AcctLineType_95'
38395          ,p_level    => C_LEVEL_PROCEDURE
38396          ,p_module   => l_log_module);
38397 
38398 END IF;
38399 --
38400 l_component_type             := 'AMB_JLT';
38401 l_component_code             := 'INV_FREIGHT';
38402 l_component_type_code        := 'S';
38403 l_component_appl_id          :=  222;
38404 l_amb_context_code           := 'DEFAULT';
38405 l_entity_code                := 'TRANSACTIONS';
38406 l_event_class_code           := 'INVOICE';
38407 l_event_type_code            := 'INVOICE_ALL';
38408 l_line_definition_owner_code := 'S';
38412 l_segment                     := NULL;
38409 l_line_definition_code       := 'AR_INV_DEFAULT_ACCRUAL';
38410 --
38411 l_balance_type_code          := 'A';
38413 l_ccid                        := NULL;
38414 l_adr_transaction_coa_id      := NULL;
38415 l_adr_accounting_coa_id       := NULL;
38416 l_adr_flexfield_segment_code  := NULL;
38417 l_adr_flex_value_set_id       := NULL;
38418 l_adr_value_type_code         := NULL;
38419 l_adr_value_combination_id    := NULL;
38420 l_adr_value_segment_code      := NULL;
38421 
38422 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38423 l_bflow_class_code           := 'FREIGHT';    -- 4219869 Business Flow
38424 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38425 l_budgetary_control_flag     := 'N';
38426 
38427 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
38428 l_bflow_applied_to_amt       := NULL; -- 5132302
38429 l_entered_amt_idx            := NULL;          -- 4262811
38430 l_accted_amt_idx             := NULL;          -- 4262811
38431 l_acc_rev_flag               := NULL;          -- 4262811
38432 l_accrual_line_num           := NULL;          -- 4262811
38433 l_tmp_amt                    := NULL;          -- 4262811
38434 --
38435  
38436 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
38437     l_balance_type_code <> 'B' THEN
38438 IF NVL(p_source_55,'
38439 ') =  'FREIGHT'
38440  THEN 
38441 
38442    --
38443    XLA_AE_LINES_PKG.SetNewLine;
38444 
38445    p_balance_type_code          := l_balance_type_code;
38446    -- set the flag so later we will know whether the gain loss line needs to be created
38447    
38448    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
38449      p_actual_flag :='A';
38450    END IF;
38451 
38452    --
38453    -- bulk performance
38454    --
38455    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
38456                                       p_header_num   => 0); -- 4262811
38457    --
38458    -- set accounting line options
38459    --
38460    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
38461            p_natural_side_code          => 'C'
38462          , p_gain_or_loss_flag          => 'N'
38463          , p_gl_transfer_mode_code      => 'S'
38464          , p_acct_entry_type_code       => 'A'
38465          , p_switch_side_flag           => 'Y'
38466          , p_merge_duplicate_code       => 'A'
38467          );
38468    --
38469    l_acc_rev_natural_side_code := 'D';  -- 4262811
38470    -- 
38471    --
38472    -- set accounting line type info
38473    --
38474    xla_ae_lines_pkg.SetAcctLineType
38475       (p_component_type             => l_component_type
38476       ,p_event_type_code            => l_event_type_code
38477       ,p_line_definition_owner_code => l_line_definition_owner_code
38478       ,p_line_definition_code       => l_line_definition_code
38479       ,p_accounting_line_code       => l_component_code
38480       ,p_accounting_line_type_code  => l_component_type_code
38481       ,p_accounting_line_appl_id    => l_component_appl_id
38482       ,p_amb_context_code           => l_amb_context_code
38483       ,p_entity_code                => l_entity_code
38484       ,p_event_class_code           => l_event_class_code);
38485    --
38486    -- set accounting class
38487    --
38488    xla_ae_lines_pkg.SetAcctClass(
38489            p_accounting_class_code  => 'FREIGHT'
38490          , p_ae_header_id           => l_ae_header_id
38491          );
38492 
38493    --
38494    -- set rounding class
38495    --
38496    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
38497                       'RECEIVABLE';
38498 
38499    --
38500    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
38501    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
38502    --
38503    -- bulk performance
38504    --
38505    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
38506 
38507    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
38508       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
38509 
38510    -- 4955764
38511    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38512       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
38513 
38514    -- 4458381 Public Sector Enh
38515    
38516    --
38517    -- set accounting attributes for the line type
38518    --
38519    l_entered_amt_idx := 3;
38520    l_accted_amt_idx  := 8;
38521    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
38522    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
38523    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
38524    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
38525    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
38526    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
38527    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
38528    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
38529    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
38530    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
38531    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
38532    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
38536    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
38533    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
38534    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
38535    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
38537    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
38538    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
38539    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
38540    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
38541    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
38542    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
38543    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
38544    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
38545    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
38546 
38547    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
38548    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
38549 
38550    ---------------------------------------------------------------------------------------------------------------
38551    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
38552    ---------------------------------------------------------------------------------------------------------------
38553    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
38554 
38555    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38556    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
38557 
38558    IF xla_accounting_cache_pkg.GetValueChar
38559          (p_source_code         => 'LEDGER_CATEGORY_CODE'
38560          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
38561    AND l_bflow_method_code = 'PRIOR_ENTRY'
38562 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
38563    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
38564          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
38565        )
38566    THEN
38567          xla_ae_lines_pkg.BflowUpgEntry
38568            (p_business_method_code    => l_bflow_method_code
38569            ,p_business_class_code     => l_bflow_class_code
38570            ,p_balance_type            => l_balance_type_code);
38571    ELSE
38572       NULL;
38573 -- No business flow processing for business flow method of NONE.
38574    END IF;
38575 
38576    --
38577    -- call analytical criteria
38578    --
38579    
38580    --
38581    -- call description
38582    --
38583    -- No description or it is inherited.
38584    --
38585    -- call ADRs
38586    -- Bug 4922099
38587    --
38588    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38589         (NVL(l_actual_upg_option, 'N') = 'O') OR
38590         (NVL(l_enc_upg_option, 'N') = 'O')
38591       )
38592    THEN
38593    NULL;
38594    --
38595    --
38596    
38597   l_ccid := AcctDerRule_36(
38598            p_application_id           => p_application_id
38599          , p_ae_header_id             => l_ae_header_id 
38600 , p_source_38 => p_source_38
38601          , x_transaction_coa_id       => l_adr_transaction_coa_id
38602          , x_accounting_coa_id        => l_adr_accounting_coa_id
38603          , x_value_type_code          => l_adr_value_type_code
38604          , p_side                     => 'NA'
38605    );
38606 
38607    xla_ae_lines_pkg.set_ccid(
38608     p_code_combination_id          => l_ccid
38609   , p_value_type_code              => l_adr_value_type_code
38610   , p_transaction_coa_id           => l_adr_transaction_coa_id
38611   , p_accounting_coa_id            => l_adr_accounting_coa_id
38612   , p_adr_code                     => 'TRX_DIST_CCID'
38613   , p_adr_type_code                => 'S'
38614   , p_component_type               => l_component_type
38615   , p_component_code               => l_component_code
38616   , p_component_type_code          => l_component_type_code
38617   , p_component_appl_id            => l_component_appl_id
38618   , p_amb_context_code             => l_amb_context_code
38619   , p_side                         => 'NA'
38620   );
38621 
38622 
38623    --
38624    --
38625    END IF;
38626    --
38627    -- Bug 4922099
38628    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
38629           (NVL(l_enc_upg_option, 'N') = 'O')
38630         ) AND
38631         (l_bflow_method_code = 'PRIOR_ENTRY')
38632       )
38633    THEN
38634       IF
38635       --
38636       1 = 2
38637       --
38638       THEN
38639       xla_accounting_err_pkg.build_message
38640                                     (p_appli_s_name            => 'XLA'
38641                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38642                                     ,p_token_1                 => 'LINE_NUMBER'
38643                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
38644                                     ,p_token_2                 => 'LINE_TYPE_NAME'
38645                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
38646                                                                              l_component_type
38647                                                                             ,l_component_code
38648                                                                             ,l_component_type_code
38652                                                                             ,l_event_class_code
38649                                                                             ,l_component_appl_id
38650                                                                             ,l_amb_context_code
38651                                                                             ,l_entity_code
38653                                                                            )
38654                                     ,p_token_3                 => 'OWNER'
38655                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
38656                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
38657                                                                           ,p_lookup_code    => l_component_type_code
38658                                                                          )
38659                                     ,p_token_4                 => 'PRODUCT_NAME'
38660                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
38661                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
38662                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
38663                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
38664                                     ,p_ae_header_id            =>  NULL
38665                                        );
38666 
38667         IF (C_LEVEL_ERROR>= g_log_level) THEN
38668                  trace
38669                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
38670                       ,p_level    => C_LEVEL_ERROR
38671                       ,p_module   => l_log_module);
38672         END IF;
38673       END IF;
38674    END IF;
38675    --
38676    --
38677    ------------------------------------------------------------------------------------------------
38678    -- 4219869 Business Flow
38679    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
38680    -- Prior Entry.  Currently, the following code is always generated.
38681    ------------------------------------------------------------------------------------------------
38682    XLA_AE_LINES_PKG.ValidateCurrentLine;
38683 
38684    ------------------------------------------------------------------------------------
38685    -- 4219869 Business Flow
38686    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
38687    ------------------------------------------------------------------------------------
38688    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38689 
38690    ----------------------------------------------------------------------------------
38691    -- 4219869 Business Flow
38692    -- Update journal entry status -- Need to generate this within IF <condition>
38693    ----------------------------------------------------------------------------------
38694    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38695          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
38696          ,p_balance_type_code => l_balance_type_code
38697          );
38698 
38699    -------------------------------------------------------------------------------------------
38700    -- 4262811 - Generate the Accrual Reversal lines
38701    -------------------------------------------------------------------------------------------
38702    BEGIN
38703       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
38704                               (g_array_event(p_event_id).array_value_num('header_index'));
38705       IF l_acc_rev_flag IS NULL THEN
38706          l_acc_rev_flag := 'N';
38707       END IF;
38708    EXCEPTION
38709       WHEN OTHERS THEN
38710          l_acc_rev_flag := 'N';
38711    END;
38712    --
38713    IF (l_acc_rev_flag = 'Y') THEN
38714 
38715        -- 4645092  ------------------------------------------------------------------------------
38716        -- To allow MPA report to determine if it should generate report process
38717        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
38718        ------------------------------------------------------------------------------------------
38719 
38720        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
38721        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
38722    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
38723    -- call ADRs
38724    -- Bug 4922099
38725    --
38726    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
38727         (NVL(l_actual_upg_option, 'N') = 'O') OR
38728         (NVL(l_enc_upg_option, 'N') = 'O')
38729       )
38730    THEN
38731    NULL;
38732    --
38733    --
38734    
38735   l_ccid := AcctDerRule_36(
38736            p_application_id           => p_application_id
38737          , p_ae_header_id             => l_ae_header_id 
38738 , p_source_38 => p_source_38
38739          , x_transaction_coa_id       => l_adr_transaction_coa_id
38740          , x_accounting_coa_id        => l_adr_accounting_coa_id
38741          , x_value_type_code          => l_adr_value_type_code
38742          , p_side                     => 'NA'
38743    );
38744 
38745    xla_ae_lines_pkg.set_ccid(
38746     p_code_combination_id          => l_ccid
38747   , p_value_type_code              => l_adr_value_type_code
38748   , p_transaction_coa_id           => l_adr_transaction_coa_id
38752   , p_component_type               => l_component_type
38749   , p_accounting_coa_id            => l_adr_accounting_coa_id
38750   , p_adr_code                     => 'TRX_DIST_CCID'
38751   , p_adr_type_code                => 'S'
38753   , p_component_code               => l_component_code
38754   , p_component_type_code          => l_component_type_code
38755   , p_component_appl_id            => l_component_appl_id
38756   , p_amb_context_code             => l_amb_context_code
38757   , p_side                         => 'NA'
38758   );
38759 
38760 
38761    --
38762    --
38763    END IF;
38764 
38765        --
38766        -- Update the line information that should be overwritten
38767        --
38768        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
38769                                          p_header_num   => 1);
38770        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
38771 
38772        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
38773 
38774        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
38775           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
38776        END IF;
38777 
38778       --
38779       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
38780       --
38781       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
38782           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
38783       ELSE
38784           ---------------------------------------------------------------------------------------------------
38785           -- 4262811a Switch Sign
38786           ---------------------------------------------------------------------------------------------------
38787           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
38788           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38789                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38790           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
38791                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38792           -- 5132302
38793           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
38794                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
38795 
38796       END IF;
38797 
38798       -- 4955764
38799       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
38800       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
38801 
38802 
38803       XLA_AE_LINES_PKG.ValidateCurrentLine;
38804       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
38805 
38806       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
38807                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
38808                ,p_balance_type_code => l_balance_type_code);
38809 
38810    END IF;
38811 
38812    -----------------------------------------------------------------------------------------
38813    -- 4262811 Multiperiod Accounting
38814    -----------------------------------------------------------------------------------------
38815      -- No MPA option is assigned.
38816 
38817 
38818 END IF;
38819 END IF;
38820 --
38821 
38822 --
38823 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38824    trace
38825       (p_msg      => 'END of AcctLineType_95'
38826       ,p_level    => C_LEVEL_PROCEDURE
38827       ,p_module   => l_log_module);
38828 END IF;
38829 --
38830 EXCEPTION
38831   WHEN xla_exceptions_pkg.application_exception THEN
38832       RAISE;
38833   WHEN OTHERS THEN
38834        xla_exceptions_pkg.raise_message
38835            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_95');
38836 END AcctLineType_95;
38837 --
38838 
38839 ---------------------------------------
38840 --
38841 -- PRIVATE FUNCTION
38842 --         AcctLineType_96
38843 --
38844 ---------------------------------------
38845 PROCEDURE AcctLineType_96 (
38846   p_application_id        IN NUMBER
38847  ,p_event_id              IN NUMBER
38848  ,p_calculate_acctd_flag  IN VARCHAR2
38849  ,p_calculate_g_l_flag    IN VARCHAR2
38850  ,p_actual_flag           IN OUT VARCHAR2
38851  ,p_balance_type_code     OUT VARCHAR2
38852  ,p_gain_or_loss_ref      OUT VARCHAR2
38853  
38854 --Transaction Distribution GL Account
38855  , p_source_38            IN NUMBER
38856 --Bill To Customer Account Identifier
38857  , p_source_49            IN NUMBER
38858 --Bill To Customer Site Use Identifier
38859  , p_source_50            IN NUMBER
38860 --SLA Party Type
38861  , p_source_51            IN VARCHAR2
38862 --Transaction Distribution Account Class
38863  , p_source_55            IN VARCHAR2
38864 --Transaction Distribution Identifier
38865  , p_source_56            IN NUMBER
38866 --Transaction Distribution Type
38867  , p_source_57            IN VARCHAR2
38868 --Transaction Distribution Entered Amount
38869  , p_source_58            IN NUMBER
38873  , p_source_60            IN DATE
38870 --Transaction Currency Code
38871  , p_source_59            IN VARCHAR2
38872 --Transaction Exchange Date
38874 --Transaction Exchange Rate
38875  , p_source_61            IN NUMBER
38876 --Transaction Exchange Rate Type
38877  , p_source_62            IN VARCHAR2
38878 --Transaction Accounting Amount
38879  , p_source_63            IN NUMBER
38880 --Transaction Tax Line Identifier
38881  , p_source_97            IN NUMBER
38882 --Rounding Correction Flag
38883  , p_source_98            IN VARCHAR2
38884 )
38885 IS
38886 
38887 l_component_type              VARCHAR2(80);
38888 l_component_code              VARCHAR2(30);
38889 l_component_type_code         VARCHAR2(1);
38890 l_component_appl_id           INTEGER;
38891 l_amb_context_code            VARCHAR2(30);
38892 l_entity_code                 VARCHAR2(30);
38893 l_event_class_code            VARCHAR2(30);
38894 l_ae_header_id                NUMBER;
38895 l_event_type_code             VARCHAR2(30);
38896 l_line_definition_code        VARCHAR2(30);
38897 l_line_definition_owner_code  VARCHAR2(1);
38898 --
38899 -- adr variables
38900 l_segment                     VARCHAR2(30);
38901 l_ccid                        NUMBER;
38902 l_adr_transaction_coa_id      NUMBER;
38903 l_adr_accounting_coa_id       NUMBER;
38904 l_adr_flexfield_segment_code  VARCHAR2(30);
38905 l_adr_flex_value_set_id       NUMBER;
38906 l_adr_value_type_code         VARCHAR2(30);
38907 l_adr_value_combination_id    NUMBER;
38908 l_adr_value_segment_code      VARCHAR2(30);
38909 
38910 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
38911 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
38912 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
38913 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
38914 
38915 -- 4262811 Variables ------------------------------------------------------------------------------------------
38916 l_entered_amt_idx             NUMBER;
38917 l_accted_amt_idx              NUMBER;
38918 l_acc_rev_flag                VARCHAR2(1);
38919 l_accrual_line_num            NUMBER;
38920 l_tmp_amt                     NUMBER;
38921 l_acc_rev_natural_side_code   VARCHAR2(1);
38922 
38923 l_num_entries                 NUMBER;
38924 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
38925 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
38926 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
38927 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
38928 l_recog_line_1                NUMBER;
38929 l_recog_line_2                NUMBER;
38930 
38931 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
38932 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
38933 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
38934 
38935 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
38936 
38937 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
38938 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
38939 
38940 ---------------------------------------------------------------------------------------------------------------
38941 
38942 
38943 --
38944 -- bulk performance
38945 --
38946 l_balance_type_code           VARCHAR2(1);
38947 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
38948 l_log_module                  VARCHAR2(240);
38949 
38950 --
38951 -- Upgrade strategy
38952 --
38953 l_actual_upg_option           VARCHAR2(1);
38954 l_enc_upg_option           VARCHAR2(1);
38955 
38956 --
38957 BEGIN
38958 --
38959 IF g_log_enabled THEN
38960       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_96';
38961 END IF;
38962 --
38963 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
38964 
38965       trace
38966          (p_msg      => 'BEGIN of AcctLineType_96'
38967          ,p_level    => C_LEVEL_PROCEDURE
38968          ,p_module   => l_log_module);
38969 
38970 END IF;
38971 --
38972 l_component_type             := 'AMB_JLT';
38973 l_component_code             := 'INV_REV';
38974 l_component_type_code        := 'S';
38975 l_component_appl_id          :=  222;
38976 l_amb_context_code           := 'DEFAULT';
38977 l_entity_code                := 'TRANSACTIONS';
38978 l_event_class_code           := 'INVOICE';
38979 l_event_type_code            := 'INVOICE_ALL';
38980 l_line_definition_owner_code := 'S';
38981 l_line_definition_code       := 'AR_INV_DEFAULT_ACCRUAL';
38982 --
38983 l_balance_type_code          := 'A';
38984 l_segment                     := NULL;
38985 l_ccid                        := NULL;
38986 l_adr_transaction_coa_id      := NULL;
38987 l_adr_accounting_coa_id       := NULL;
38988 l_adr_flexfield_segment_code  := NULL;
38989 l_adr_flex_value_set_id       := NULL;
38990 l_adr_value_type_code         := NULL;
38991 l_adr_value_combination_id    := NULL;
38992 l_adr_value_segment_code      := NULL;
38993 
38994 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
38995 l_bflow_class_code           := 'REVENUE';    -- 4219869 Business Flow
38996 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
38997 l_budgetary_control_flag     := 'N';
38998 
38999 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39003 l_acc_rev_flag               := NULL;          -- 4262811
39000 l_bflow_applied_to_amt       := NULL; -- 5132302
39001 l_entered_amt_idx            := NULL;          -- 4262811
39002 l_accted_amt_idx             := NULL;          -- 4262811
39004 l_accrual_line_num           := NULL;          -- 4262811
39005 l_tmp_amt                    := NULL;          -- 4262811
39006 --
39007  
39008 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39009     l_balance_type_code <> 'B' THEN
39010 IF NVL(p_source_55,'
39011 ') =  'REV' AND 
39012 p_source_98 IS NULL 
39013  THEN 
39014 
39015    --
39016    XLA_AE_LINES_PKG.SetNewLine;
39017 
39018    p_balance_type_code          := l_balance_type_code;
39019    -- set the flag so later we will know whether the gain loss line needs to be created
39020    
39021    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39022      p_actual_flag :='A';
39023    END IF;
39024 
39025    --
39026    -- bulk performance
39027    --
39028    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39029                                       p_header_num   => 0); -- 4262811
39030    --
39031    -- set accounting line options
39032    --
39033    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39034            p_natural_side_code          => 'C'
39035          , p_gain_or_loss_flag          => 'N'
39036          , p_gl_transfer_mode_code      => 'S'
39037          , p_acct_entry_type_code       => 'A'
39038          , p_switch_side_flag           => 'Y'
39039          , p_merge_duplicate_code       => 'A'
39040          );
39041    --
39042    l_acc_rev_natural_side_code := 'D';  -- 4262811
39043    -- 
39044    --
39045    -- set accounting line type info
39046    --
39047    xla_ae_lines_pkg.SetAcctLineType
39048       (p_component_type             => l_component_type
39049       ,p_event_type_code            => l_event_type_code
39050       ,p_line_definition_owner_code => l_line_definition_owner_code
39051       ,p_line_definition_code       => l_line_definition_code
39052       ,p_accounting_line_code       => l_component_code
39053       ,p_accounting_line_type_code  => l_component_type_code
39054       ,p_accounting_line_appl_id    => l_component_appl_id
39055       ,p_amb_context_code           => l_amb_context_code
39056       ,p_entity_code                => l_entity_code
39057       ,p_event_class_code           => l_event_class_code);
39058    --
39059    -- set accounting class
39060    --
39061    xla_ae_lines_pkg.SetAcctClass(
39062            p_accounting_class_code  => 'REVENUE'
39063          , p_ae_header_id           => l_ae_header_id
39064          );
39065 
39066    --
39067    -- set rounding class
39068    --
39069    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39070                       'RECEIVABLE';
39071 
39072    --
39073    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39074    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39075    --
39076    -- bulk performance
39077    --
39078    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39079 
39080    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39081       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39082 
39083    -- 4955764
39084    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39085       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39086 
39087    -- 4458381 Public Sector Enh
39088    
39089    --
39090    -- set accounting attributes for the line type
39091    --
39092    l_entered_amt_idx := 3;
39093    l_accted_amt_idx  := 8;
39094    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39095    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39096    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
39097    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39098    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
39099    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39100    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
39101    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39102    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
39103    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39104    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
39105    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39106    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
39107    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39108    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
39109    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39110    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
39111    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
39112    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
39113    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
39114    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
39115    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
39116    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
39117    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
39118    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
39119 
39123    ---------------------------------------------------------------------------------------------------------------
39120    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39121    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39122 
39124    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39125    ---------------------------------------------------------------------------------------------------------------
39126    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39127 
39128    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39129    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39130 
39131    IF xla_accounting_cache_pkg.GetValueChar
39132          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39133          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39134    AND l_bflow_method_code = 'PRIOR_ENTRY'
39135 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39136    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39137          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39138        )
39139    THEN
39140          xla_ae_lines_pkg.BflowUpgEntry
39141            (p_business_method_code    => l_bflow_method_code
39142            ,p_business_class_code     => l_bflow_class_code
39143            ,p_balance_type            => l_balance_type_code);
39144    ELSE
39145       NULL;
39146 -- No business flow processing for business flow method of NONE.
39147    END IF;
39148 
39149    --
39150    -- call analytical criteria
39151    --
39152    
39153    --
39154    -- call description
39155    --
39156    -- No description or it is inherited.
39157    --
39158    -- call ADRs
39159    -- Bug 4922099
39160    --
39161    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39162         (NVL(l_actual_upg_option, 'N') = 'O') OR
39163         (NVL(l_enc_upg_option, 'N') = 'O')
39164       )
39165    THEN
39166    NULL;
39167    --
39168    --
39169    
39170   l_ccid := AcctDerRule_36(
39171            p_application_id           => p_application_id
39172          , p_ae_header_id             => l_ae_header_id 
39173 , p_source_38 => p_source_38
39174          , x_transaction_coa_id       => l_adr_transaction_coa_id
39175          , x_accounting_coa_id        => l_adr_accounting_coa_id
39176          , x_value_type_code          => l_adr_value_type_code
39177          , p_side                     => 'NA'
39178    );
39179 
39180    xla_ae_lines_pkg.set_ccid(
39181     p_code_combination_id          => l_ccid
39182   , p_value_type_code              => l_adr_value_type_code
39183   , p_transaction_coa_id           => l_adr_transaction_coa_id
39184   , p_accounting_coa_id            => l_adr_accounting_coa_id
39185   , p_adr_code                     => 'TRX_DIST_CCID'
39186   , p_adr_type_code                => 'S'
39187   , p_component_type               => l_component_type
39188   , p_component_code               => l_component_code
39189   , p_component_type_code          => l_component_type_code
39190   , p_component_appl_id            => l_component_appl_id
39191   , p_amb_context_code             => l_amb_context_code
39192   , p_side                         => 'NA'
39193   );
39194 
39195 
39196    --
39197    --
39198    END IF;
39199    --
39200    -- Bug 4922099
39201    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39202           (NVL(l_enc_upg_option, 'N') = 'O')
39203         ) AND
39204         (l_bflow_method_code = 'PRIOR_ENTRY')
39205       )
39206    THEN
39207       IF
39208       --
39209       1 = 2
39210       --
39211       THEN
39212       xla_accounting_err_pkg.build_message
39213                                     (p_appli_s_name            => 'XLA'
39214                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39215                                     ,p_token_1                 => 'LINE_NUMBER'
39216                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39217                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39218                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39219                                                                              l_component_type
39220                                                                             ,l_component_code
39221                                                                             ,l_component_type_code
39222                                                                             ,l_component_appl_id
39223                                                                             ,l_amb_context_code
39224                                                                             ,l_entity_code
39225                                                                             ,l_event_class_code
39226                                                                            )
39227                                     ,p_token_3                 => 'OWNER'
39228                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39229                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39233                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39230                                                                           ,p_lookup_code    => l_component_type_code
39231                                                                          )
39232                                     ,p_token_4                 => 'PRODUCT_NAME'
39234                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39235                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39236                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39237                                     ,p_ae_header_id            =>  NULL
39238                                        );
39239 
39240         IF (C_LEVEL_ERROR>= g_log_level) THEN
39241                  trace
39242                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39243                       ,p_level    => C_LEVEL_ERROR
39244                       ,p_module   => l_log_module);
39245         END IF;
39246       END IF;
39247    END IF;
39248    --
39249    --
39250    ------------------------------------------------------------------------------------------------
39251    -- 4219869 Business Flow
39252    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39253    -- Prior Entry.  Currently, the following code is always generated.
39254    ------------------------------------------------------------------------------------------------
39255    XLA_AE_LINES_PKG.ValidateCurrentLine;
39256 
39257    ------------------------------------------------------------------------------------
39258    -- 4219869 Business Flow
39259    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39260    ------------------------------------------------------------------------------------
39261    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39262 
39263    ----------------------------------------------------------------------------------
39264    -- 4219869 Business Flow
39265    -- Update journal entry status -- Need to generate this within IF <condition>
39266    ----------------------------------------------------------------------------------
39267    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39268          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39269          ,p_balance_type_code => l_balance_type_code
39270          );
39271 
39272    -------------------------------------------------------------------------------------------
39273    -- 4262811 - Generate the Accrual Reversal lines
39274    -------------------------------------------------------------------------------------------
39275    BEGIN
39276       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39277                               (g_array_event(p_event_id).array_value_num('header_index'));
39278       IF l_acc_rev_flag IS NULL THEN
39279          l_acc_rev_flag := 'N';
39280       END IF;
39281    EXCEPTION
39282       WHEN OTHERS THEN
39283          l_acc_rev_flag := 'N';
39284    END;
39285    --
39286    IF (l_acc_rev_flag = 'Y') THEN
39287 
39288        -- 4645092  ------------------------------------------------------------------------------
39289        -- To allow MPA report to determine if it should generate report process
39290        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39291        ------------------------------------------------------------------------------------------
39292 
39293        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39294        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39295    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
39296    -- call ADRs
39297    -- Bug 4922099
39298    --
39299    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39300         (NVL(l_actual_upg_option, 'N') = 'O') OR
39301         (NVL(l_enc_upg_option, 'N') = 'O')
39302       )
39303    THEN
39304    NULL;
39305    --
39306    --
39307    
39308   l_ccid := AcctDerRule_36(
39309            p_application_id           => p_application_id
39310          , p_ae_header_id             => l_ae_header_id 
39311 , p_source_38 => p_source_38
39312          , x_transaction_coa_id       => l_adr_transaction_coa_id
39313          , x_accounting_coa_id        => l_adr_accounting_coa_id
39314          , x_value_type_code          => l_adr_value_type_code
39315          , p_side                     => 'NA'
39316    );
39317 
39318    xla_ae_lines_pkg.set_ccid(
39319     p_code_combination_id          => l_ccid
39320   , p_value_type_code              => l_adr_value_type_code
39321   , p_transaction_coa_id           => l_adr_transaction_coa_id
39322   , p_accounting_coa_id            => l_adr_accounting_coa_id
39323   , p_adr_code                     => 'TRX_DIST_CCID'
39324   , p_adr_type_code                => 'S'
39325   , p_component_type               => l_component_type
39326   , p_component_code               => l_component_code
39327   , p_component_type_code          => l_component_type_code
39328   , p_component_appl_id            => l_component_appl_id
39329   , p_amb_context_code             => l_amb_context_code
39330   , p_side                         => 'NA'
39331   );
39332 
39333 
39334    --
39335    --
39336    END IF;
39337 
39338        --
39342                                          p_header_num   => 1);
39339        -- Update the line information that should be overwritten
39340        --
39341        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39343        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39344 
39345        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39346 
39347        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39348           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39349        END IF;
39350 
39351       --
39352       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39353       --
39354       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39355           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39356       ELSE
39357           ---------------------------------------------------------------------------------------------------
39358           -- 4262811a Switch Sign
39359           ---------------------------------------------------------------------------------------------------
39360           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39361           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39362                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39363           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39364                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39365           -- 5132302
39366           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39367                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39368 
39369       END IF;
39370 
39371       -- 4955764
39372       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39373       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39374 
39375 
39376       XLA_AE_LINES_PKG.ValidateCurrentLine;
39377       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39378 
39379       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39380                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39381                ,p_balance_type_code => l_balance_type_code);
39382 
39383    END IF;
39384 
39385    -----------------------------------------------------------------------------------------
39386    -- 4262811 Multiperiod Accounting
39387    -----------------------------------------------------------------------------------------
39388      -- No MPA option is assigned.
39389 
39390 
39391 END IF;
39392 END IF;
39393 --
39394 
39395 --
39396 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39397    trace
39398       (p_msg      => 'END of AcctLineType_96'
39399       ,p_level    => C_LEVEL_PROCEDURE
39400       ,p_module   => l_log_module);
39401 END IF;
39402 --
39403 EXCEPTION
39404   WHEN xla_exceptions_pkg.application_exception THEN
39405       RAISE;
39406   WHEN OTHERS THEN
39407        xla_exceptions_pkg.raise_message
39408            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_96');
39409 END AcctLineType_96;
39410 --
39411 
39412 ---------------------------------------
39413 --
39414 -- PRIVATE FUNCTION
39415 --         AcctLineType_97
39416 --
39417 ---------------------------------------
39418 PROCEDURE AcctLineType_97 (
39419   p_application_id        IN NUMBER
39420  ,p_event_id              IN NUMBER
39421  ,p_calculate_acctd_flag  IN VARCHAR2
39422  ,p_calculate_g_l_flag    IN VARCHAR2
39423  ,p_actual_flag           IN OUT VARCHAR2
39424  ,p_balance_type_code     OUT VARCHAR2
39425  ,p_gain_or_loss_ref      OUT VARCHAR2
39426  
39427 --Transaction Distribution GL Account
39428  , p_source_38            IN NUMBER
39429 --Bill To Customer Account Identifier
39430  , p_source_49            IN NUMBER
39431 --Bill To Customer Site Use Identifier
39432  , p_source_50            IN NUMBER
39433 --SLA Party Type
39434  , p_source_51            IN VARCHAR2
39435 --Transaction Distribution Account Class
39436  , p_source_55            IN VARCHAR2
39437 --Transaction Distribution Identifier
39438  , p_source_56            IN NUMBER
39439 --Transaction Distribution Type
39440  , p_source_57            IN VARCHAR2
39441 --Transaction Distribution Entered Amount
39442  , p_source_58            IN NUMBER
39443 --Transaction Currency Code
39444  , p_source_59            IN VARCHAR2
39445 --Transaction Exchange Date
39446  , p_source_60            IN DATE
39447 --Transaction Exchange Rate
39448  , p_source_61            IN NUMBER
39449 --Transaction Exchange Rate Type
39450  , p_source_62            IN VARCHAR2
39451 --Transaction Accounting Amount
39452  , p_source_63            IN NUMBER
39453 --Transaction Tax Line Identifier
39454  , p_source_97            IN NUMBER
39455 --Rounding Correction Flag
39456  , p_source_98            IN VARCHAR2
39457 )
39458 IS
39459 
39460 l_component_type              VARCHAR2(80);
39464 l_amb_context_code            VARCHAR2(30);
39461 l_component_code              VARCHAR2(30);
39462 l_component_type_code         VARCHAR2(1);
39463 l_component_appl_id           INTEGER;
39465 l_entity_code                 VARCHAR2(30);
39466 l_event_class_code            VARCHAR2(30);
39467 l_ae_header_id                NUMBER;
39468 l_event_type_code             VARCHAR2(30);
39469 l_line_definition_code        VARCHAR2(30);
39470 l_line_definition_owner_code  VARCHAR2(1);
39471 --
39472 -- adr variables
39473 l_segment                     VARCHAR2(30);
39474 l_ccid                        NUMBER;
39475 l_adr_transaction_coa_id      NUMBER;
39476 l_adr_accounting_coa_id       NUMBER;
39477 l_adr_flexfield_segment_code  VARCHAR2(30);
39478 l_adr_flex_value_set_id       NUMBER;
39479 l_adr_value_type_code         VARCHAR2(30);
39480 l_adr_value_combination_id    NUMBER;
39481 l_adr_value_segment_code      VARCHAR2(30);
39482 
39483 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
39484 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
39485 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
39486 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
39487 
39488 -- 4262811 Variables ------------------------------------------------------------------------------------------
39489 l_entered_amt_idx             NUMBER;
39490 l_accted_amt_idx              NUMBER;
39491 l_acc_rev_flag                VARCHAR2(1);
39492 l_accrual_line_num            NUMBER;
39493 l_tmp_amt                     NUMBER;
39494 l_acc_rev_natural_side_code   VARCHAR2(1);
39495 
39496 l_num_entries                 NUMBER;
39497 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
39498 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
39499 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
39500 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
39501 l_recog_line_1                NUMBER;
39502 l_recog_line_2                NUMBER;
39503 
39504 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
39505 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
39506 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
39507 
39508 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
39509 
39510 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
39511 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
39512 
39513 ---------------------------------------------------------------------------------------------------------------
39514 
39515 
39516 --
39517 -- bulk performance
39518 --
39519 l_balance_type_code           VARCHAR2(1);
39520 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
39521 l_log_module                  VARCHAR2(240);
39522 
39523 --
39524 -- Upgrade strategy
39525 --
39526 l_actual_upg_option           VARCHAR2(1);
39527 l_enc_upg_option           VARCHAR2(1);
39528 
39529 --
39530 BEGIN
39531 --
39532 IF g_log_enabled THEN
39533       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_97';
39534 END IF;
39535 --
39536 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39537 
39538       trace
39539          (p_msg      => 'BEGIN of AcctLineType_97'
39540          ,p_level    => C_LEVEL_PROCEDURE
39541          ,p_module   => l_log_module);
39542 
39543 END IF;
39544 --
39545 l_component_type             := 'AMB_JLT';
39546 l_component_code             := 'INV_REV_ROUND';
39547 l_component_type_code        := 'S';
39548 l_component_appl_id          :=  222;
39549 l_amb_context_code           := 'DEFAULT';
39550 l_entity_code                := 'TRANSACTIONS';
39551 l_event_class_code           := 'INVOICE';
39552 l_event_type_code            := 'INVOICE_ALL';
39553 l_line_definition_owner_code := 'S';
39554 l_line_definition_code       := 'AR_INV_DEFAULT_ACCRUAL';
39555 --
39556 l_balance_type_code          := 'A';
39557 l_segment                     := NULL;
39558 l_ccid                        := NULL;
39559 l_adr_transaction_coa_id      := NULL;
39560 l_adr_accounting_coa_id       := NULL;
39561 l_adr_flexfield_segment_code  := NULL;
39562 l_adr_flex_value_set_id       := NULL;
39563 l_adr_value_type_code         := NULL;
39564 l_adr_value_combination_id    := NULL;
39565 l_adr_value_segment_code      := NULL;
39566 
39567 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
39568 l_bflow_class_code           := 'REVENUE';    -- 4219869 Business Flow
39569 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
39570 l_budgetary_control_flag     := 'N';
39571 
39572 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
39573 l_bflow_applied_to_amt       := NULL; -- 5132302
39574 l_entered_amt_idx            := NULL;          -- 4262811
39575 l_accted_amt_idx             := NULL;          -- 4262811
39576 l_acc_rev_flag               := NULL;          -- 4262811
39577 l_accrual_line_num           := NULL;          -- 4262811
39578 l_tmp_amt                    := NULL;          -- 4262811
39579 --
39580  
39581 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
39582     l_balance_type_code <> 'B' THEN
39583 IF NVL(p_source_55,'
39584 ') =  'REV' AND 
39585 NVL(p_source_98,'
39586 ') =  'Y'
39587  THEN 
39588 
39589    --
39590    XLA_AE_LINES_PKG.SetNewLine;
39594    
39591 
39592    p_balance_type_code          := l_balance_type_code;
39593    -- set the flag so later we will know whether the gain loss line needs to be created
39595    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
39596      p_actual_flag :='A';
39597    END IF;
39598 
39599    --
39600    -- bulk performance
39601    --
39602    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
39603                                       p_header_num   => 0); -- 4262811
39604    --
39605    -- set accounting line options
39606    --
39607    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
39608            p_natural_side_code          => 'C'
39609          , p_gain_or_loss_flag          => 'N'
39610          , p_gl_transfer_mode_code      => 'S'
39611          , p_acct_entry_type_code       => 'A'
39612          , p_switch_side_flag           => 'Y'
39613          , p_merge_duplicate_code       => 'N'
39614          );
39615    --
39616    l_acc_rev_natural_side_code := 'D';  -- 4262811
39617    -- 
39618    --
39619    -- set accounting line type info
39620    --
39621    xla_ae_lines_pkg.SetAcctLineType
39622       (p_component_type             => l_component_type
39623       ,p_event_type_code            => l_event_type_code
39624       ,p_line_definition_owner_code => l_line_definition_owner_code
39625       ,p_line_definition_code       => l_line_definition_code
39626       ,p_accounting_line_code       => l_component_code
39627       ,p_accounting_line_type_code  => l_component_type_code
39628       ,p_accounting_line_appl_id    => l_component_appl_id
39629       ,p_amb_context_code           => l_amb_context_code
39630       ,p_entity_code                => l_entity_code
39631       ,p_event_class_code           => l_event_class_code);
39632    --
39633    -- set accounting class
39634    --
39635    xla_ae_lines_pkg.SetAcctClass(
39636            p_accounting_class_code  => 'REVENUE'
39637          , p_ae_header_id           => l_ae_header_id
39638          );
39639 
39640    --
39641    -- set rounding class
39642    --
39643    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
39644                       'RECEIVABLE';
39645 
39646    --
39647    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
39648    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
39649    --
39650    -- bulk performance
39651    --
39652    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
39653 
39654    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
39655       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
39656 
39657    -- 4955764
39658    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39659       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
39660 
39661    -- 4458381 Public Sector Enh
39662    
39663    --
39664    -- set accounting attributes for the line type
39665    --
39666    l_entered_amt_idx := 3;
39667    l_accted_amt_idx  := 8;
39668    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
39669    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
39670    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
39671    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
39672    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
39673    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
39674    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
39675    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
39676    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
39677    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
39678    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
39679    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
39680    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
39681    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
39682    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
39683    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
39684    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
39685    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
39686    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
39687    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
39688    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
39689    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
39690    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
39691    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
39692    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
39693 
39694    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
39695    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
39696 
39697    ---------------------------------------------------------------------------------------------------------------
39698    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
39699    ---------------------------------------------------------------------------------------------------------------
39700    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
39701 
39705    IF xla_accounting_cache_pkg.GetValueChar
39702    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39703    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
39704 
39706          (p_source_code         => 'LEDGER_CATEGORY_CODE'
39707          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
39708    AND l_bflow_method_code = 'PRIOR_ENTRY'
39709 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
39710    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
39711          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
39712        )
39713    THEN
39714          xla_ae_lines_pkg.BflowUpgEntry
39715            (p_business_method_code    => l_bflow_method_code
39716            ,p_business_class_code     => l_bflow_class_code
39717            ,p_balance_type            => l_balance_type_code);
39718    ELSE
39719       NULL;
39720 -- No business flow processing for business flow method of NONE.
39721    END IF;
39722 
39723    --
39724    -- call analytical criteria
39725    --
39726    
39727    --
39728    -- call description
39729    --
39730    -- No description or it is inherited.
39731    --
39732    -- call ADRs
39733    -- Bug 4922099
39734    --
39735    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39736         (NVL(l_actual_upg_option, 'N') = 'O') OR
39737         (NVL(l_enc_upg_option, 'N') = 'O')
39738       )
39739    THEN
39740    NULL;
39741    --
39742    --
39743    
39744   l_ccid := AcctDerRule_36(
39745            p_application_id           => p_application_id
39746          , p_ae_header_id             => l_ae_header_id 
39747 , p_source_38 => p_source_38
39748          , x_transaction_coa_id       => l_adr_transaction_coa_id
39749          , x_accounting_coa_id        => l_adr_accounting_coa_id
39750          , x_value_type_code          => l_adr_value_type_code
39751          , p_side                     => 'NA'
39752    );
39753 
39754    xla_ae_lines_pkg.set_ccid(
39755     p_code_combination_id          => l_ccid
39756   , p_value_type_code              => l_adr_value_type_code
39757   , p_transaction_coa_id           => l_adr_transaction_coa_id
39758   , p_accounting_coa_id            => l_adr_accounting_coa_id
39759   , p_adr_code                     => 'TRX_DIST_CCID'
39760   , p_adr_type_code                => 'S'
39761   , p_component_type               => l_component_type
39762   , p_component_code               => l_component_code
39763   , p_component_type_code          => l_component_type_code
39764   , p_component_appl_id            => l_component_appl_id
39765   , p_amb_context_code             => l_amb_context_code
39766   , p_side                         => 'NA'
39767   );
39768 
39769 
39770    --
39771    --
39772    END IF;
39773    --
39774    -- Bug 4922099
39775    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
39776           (NVL(l_enc_upg_option, 'N') = 'O')
39777         ) AND
39778         (l_bflow_method_code = 'PRIOR_ENTRY')
39779       )
39780    THEN
39781       IF
39782       --
39783       1 = 2
39784       --
39785       THEN
39786       xla_accounting_err_pkg.build_message
39787                                     (p_appli_s_name            => 'XLA'
39788                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39789                                     ,p_token_1                 => 'LINE_NUMBER'
39790                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
39791                                     ,p_token_2                 => 'LINE_TYPE_NAME'
39792                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
39793                                                                              l_component_type
39794                                                                             ,l_component_code
39795                                                                             ,l_component_type_code
39796                                                                             ,l_component_appl_id
39797                                                                             ,l_amb_context_code
39798                                                                             ,l_entity_code
39799                                                                             ,l_event_class_code
39800                                                                            )
39801                                     ,p_token_3                 => 'OWNER'
39802                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
39803                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
39804                                                                           ,p_lookup_code    => l_component_type_code
39805                                                                          )
39806                                     ,p_token_4                 => 'PRODUCT_NAME'
39807                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
39808                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
39809                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
39813 
39810                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
39811                                     ,p_ae_header_id            =>  NULL
39812                                        );
39814         IF (C_LEVEL_ERROR>= g_log_level) THEN
39815                  trace
39816                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
39817                       ,p_level    => C_LEVEL_ERROR
39818                       ,p_module   => l_log_module);
39819         END IF;
39820       END IF;
39821    END IF;
39822    --
39823    --
39824    ------------------------------------------------------------------------------------------------
39825    -- 4219869 Business Flow
39826    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
39827    -- Prior Entry.  Currently, the following code is always generated.
39828    ------------------------------------------------------------------------------------------------
39829    XLA_AE_LINES_PKG.ValidateCurrentLine;
39830 
39831    ------------------------------------------------------------------------------------
39832    -- 4219869 Business Flow
39833    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
39834    ------------------------------------------------------------------------------------
39835    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39836 
39837    ----------------------------------------------------------------------------------
39838    -- 4219869 Business Flow
39839    -- Update journal entry status -- Need to generate this within IF <condition>
39840    ----------------------------------------------------------------------------------
39841    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39842          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
39843          ,p_balance_type_code => l_balance_type_code
39844          );
39845 
39846    -------------------------------------------------------------------------------------------
39847    -- 4262811 - Generate the Accrual Reversal lines
39848    -------------------------------------------------------------------------------------------
39849    BEGIN
39850       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
39851                               (g_array_event(p_event_id).array_value_num('header_index'));
39852       IF l_acc_rev_flag IS NULL THEN
39853          l_acc_rev_flag := 'N';
39854       END IF;
39855    EXCEPTION
39856       WHEN OTHERS THEN
39857          l_acc_rev_flag := 'N';
39858    END;
39859    --
39860    IF (l_acc_rev_flag = 'Y') THEN
39861 
39862        -- 4645092  ------------------------------------------------------------------------------
39863        -- To allow MPA report to determine if it should generate report process
39864        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
39865        ------------------------------------------------------------------------------------------
39866 
39867        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
39868        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
39869    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
39870    -- call ADRs
39871    -- Bug 4922099
39872    --
39873    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
39874         (NVL(l_actual_upg_option, 'N') = 'O') OR
39875         (NVL(l_enc_upg_option, 'N') = 'O')
39876       )
39877    THEN
39878    NULL;
39879    --
39880    --
39881    
39882   l_ccid := AcctDerRule_36(
39883            p_application_id           => p_application_id
39884          , p_ae_header_id             => l_ae_header_id 
39885 , p_source_38 => p_source_38
39886          , x_transaction_coa_id       => l_adr_transaction_coa_id
39887          , x_accounting_coa_id        => l_adr_accounting_coa_id
39888          , x_value_type_code          => l_adr_value_type_code
39889          , p_side                     => 'NA'
39890    );
39891 
39892    xla_ae_lines_pkg.set_ccid(
39893     p_code_combination_id          => l_ccid
39894   , p_value_type_code              => l_adr_value_type_code
39895   , p_transaction_coa_id           => l_adr_transaction_coa_id
39896   , p_accounting_coa_id            => l_adr_accounting_coa_id
39897   , p_adr_code                     => 'TRX_DIST_CCID'
39898   , p_adr_type_code                => 'S'
39899   , p_component_type               => l_component_type
39900   , p_component_code               => l_component_code
39901   , p_component_type_code          => l_component_type_code
39902   , p_component_appl_id            => l_component_appl_id
39903   , p_amb_context_code             => l_amb_context_code
39904   , p_side                         => 'NA'
39905   );
39906 
39907 
39908    --
39909    --
39910    END IF;
39911 
39912        --
39913        -- Update the line information that should be overwritten
39914        --
39915        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
39916                                          p_header_num   => 1);
39917        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
39918 
39919        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
39920 
39921        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
39925       --
39922           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
39923        END IF;
39924 
39926       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
39927       --
39928       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
39929           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
39930       ELSE
39931           ---------------------------------------------------------------------------------------------------
39932           -- 4262811a Switch Sign
39933           ---------------------------------------------------------------------------------------------------
39934           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
39935           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39936                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39937           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
39938                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39939           -- 5132302
39940           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
39941                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
39942 
39943       END IF;
39944 
39945       -- 4955764
39946       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
39947       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
39948 
39949 
39950       XLA_AE_LINES_PKG.ValidateCurrentLine;
39951       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
39952 
39953       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
39954                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
39955                ,p_balance_type_code => l_balance_type_code);
39956 
39957    END IF;
39958 
39959    -----------------------------------------------------------------------------------------
39960    -- 4262811 Multiperiod Accounting
39961    -----------------------------------------------------------------------------------------
39962      -- No MPA option is assigned.
39963 
39964 
39965 END IF;
39966 END IF;
39967 --
39968 
39969 --
39970 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
39971    trace
39972       (p_msg      => 'END of AcctLineType_97'
39973       ,p_level    => C_LEVEL_PROCEDURE
39974       ,p_module   => l_log_module);
39975 END IF;
39976 --
39977 EXCEPTION
39978   WHEN xla_exceptions_pkg.application_exception THEN
39979       RAISE;
39980   WHEN OTHERS THEN
39981        xla_exceptions_pkg.raise_message
39982            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_97');
39983 END AcctLineType_97;
39984 --
39985 
39986 ---------------------------------------
39987 --
39988 -- PRIVATE FUNCTION
39989 --         AcctLineType_98
39990 --
39991 ---------------------------------------
39992 PROCEDURE AcctLineType_98 (
39993   p_application_id        IN NUMBER
39994  ,p_event_id              IN NUMBER
39995  ,p_calculate_acctd_flag  IN VARCHAR2
39996  ,p_calculate_g_l_flag    IN VARCHAR2
39997  ,p_actual_flag           IN OUT VARCHAR2
39998  ,p_balance_type_code     OUT VARCHAR2
39999  ,p_gain_or_loss_ref      OUT VARCHAR2
40000  
40001 --Transaction Distribution GL Account
40002  , p_source_38            IN NUMBER
40003 --Bill To Customer Account Identifier
40004  , p_source_49            IN NUMBER
40005 --Bill To Customer Site Use Identifier
40006  , p_source_50            IN NUMBER
40007 --SLA Party Type
40008  , p_source_51            IN VARCHAR2
40009 --Transaction Distribution Account Class
40010  , p_source_55            IN VARCHAR2
40011 --Transaction Distribution Identifier
40012  , p_source_56            IN NUMBER
40013 --Transaction Distribution Type
40014  , p_source_57            IN VARCHAR2
40015 --Transaction Distribution Entered Amount
40016  , p_source_58            IN NUMBER
40017 --Transaction Currency Code
40018  , p_source_59            IN VARCHAR2
40019 --Transaction Exchange Date
40020  , p_source_60            IN DATE
40021 --Transaction Exchange Rate
40022  , p_source_61            IN NUMBER
40023 --Transaction Exchange Rate Type
40024  , p_source_62            IN VARCHAR2
40025 --Transaction Accounting Amount
40026  , p_source_63            IN NUMBER
40027 --Transaction Tax Line Identifier
40028  , p_source_97            IN NUMBER
40029 )
40030 IS
40031 
40032 l_component_type              VARCHAR2(80);
40033 l_component_code              VARCHAR2(30);
40034 l_component_type_code         VARCHAR2(1);
40035 l_component_appl_id           INTEGER;
40036 l_amb_context_code            VARCHAR2(30);
40037 l_entity_code                 VARCHAR2(30);
40038 l_event_class_code            VARCHAR2(30);
40039 l_ae_header_id                NUMBER;
40040 l_event_type_code             VARCHAR2(30);
40041 l_line_definition_code        VARCHAR2(30);
40042 l_line_definition_owner_code  VARCHAR2(1);
40043 --
40044 -- adr variables
40045 l_segment                     VARCHAR2(30);
40049 l_adr_flexfield_segment_code  VARCHAR2(30);
40046 l_ccid                        NUMBER;
40047 l_adr_transaction_coa_id      NUMBER;
40048 l_adr_accounting_coa_id       NUMBER;
40050 l_adr_flex_value_set_id       NUMBER;
40051 l_adr_value_type_code         VARCHAR2(30);
40052 l_adr_value_combination_id    NUMBER;
40053 l_adr_value_segment_code      VARCHAR2(30);
40054 
40055 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40056 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40057 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40058 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40059 
40060 -- 4262811 Variables ------------------------------------------------------------------------------------------
40061 l_entered_amt_idx             NUMBER;
40062 l_accted_amt_idx              NUMBER;
40063 l_acc_rev_flag                VARCHAR2(1);
40064 l_accrual_line_num            NUMBER;
40065 l_tmp_amt                     NUMBER;
40066 l_acc_rev_natural_side_code   VARCHAR2(1);
40067 
40068 l_num_entries                 NUMBER;
40069 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40070 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40071 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40072 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40073 l_recog_line_1                NUMBER;
40074 l_recog_line_2                NUMBER;
40075 
40076 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40077 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40078 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40079 
40080 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40081 
40082 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40083 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40084 
40085 ---------------------------------------------------------------------------------------------------------------
40086 
40087 
40088 --
40089 -- bulk performance
40090 --
40091 l_balance_type_code           VARCHAR2(1);
40092 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40093 l_log_module                  VARCHAR2(240);
40094 
40095 --
40096 -- Upgrade strategy
40097 --
40098 l_actual_upg_option           VARCHAR2(1);
40099 l_enc_upg_option           VARCHAR2(1);
40100 
40101 --
40102 BEGIN
40103 --
40104 IF g_log_enabled THEN
40105       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_98';
40106 END IF;
40107 --
40108 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40109 
40110       trace
40111          (p_msg      => 'BEGIN of AcctLineType_98'
40112          ,p_level    => C_LEVEL_PROCEDURE
40113          ,p_module   => l_log_module);
40114 
40115 END IF;
40116 --
40117 l_component_type             := 'AMB_JLT';
40118 l_component_code             := 'INV_ROUND';
40119 l_component_type_code        := 'S';
40120 l_component_appl_id          :=  222;
40121 l_amb_context_code           := 'DEFAULT';
40122 l_entity_code                := 'TRANSACTIONS';
40123 l_event_class_code           := 'INVOICE';
40124 l_event_type_code            := 'INVOICE_ALL';
40125 l_line_definition_owner_code := 'S';
40126 l_line_definition_code       := 'AR_INV_DEFAULT_ACCRUAL';
40127 --
40128 l_balance_type_code          := 'A';
40129 l_segment                     := NULL;
40130 l_ccid                        := NULL;
40131 l_adr_transaction_coa_id      := NULL;
40132 l_adr_accounting_coa_id       := NULL;
40133 l_adr_flexfield_segment_code  := NULL;
40134 l_adr_flex_value_set_id       := NULL;
40135 l_adr_value_type_code         := NULL;
40136 l_adr_value_combination_id    := NULL;
40137 l_adr_value_segment_code      := NULL;
40138 
40139 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40140 l_bflow_class_code           := '';    -- 4219869 Business Flow
40141 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40142 l_budgetary_control_flag     := 'N';
40143 
40144 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40145 l_bflow_applied_to_amt       := NULL; -- 5132302
40146 l_entered_amt_idx            := NULL;          -- 4262811
40147 l_accted_amt_idx             := NULL;          -- 4262811
40148 l_acc_rev_flag               := NULL;          -- 4262811
40149 l_accrual_line_num           := NULL;          -- 4262811
40150 l_tmp_amt                    := NULL;          -- 4262811
40151 --
40152  
40153 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40154     l_balance_type_code <> 'B' THEN
40155 IF NVL(p_source_55,'
40156 ') =  'ROUND'
40157  THEN 
40158 
40159    --
40160    XLA_AE_LINES_PKG.SetNewLine;
40161 
40162    p_balance_type_code          := l_balance_type_code;
40163    -- set the flag so later we will know whether the gain loss line needs to be created
40164    
40165    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40166      p_actual_flag :='A';
40167    END IF;
40168 
40169    --
40170    -- bulk performance
40171    --
40172    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40173                                       p_header_num   => 0); -- 4262811
40174    --
40175    -- set accounting line options
40176    --
40180          , p_gl_transfer_mode_code      => 'S'
40177    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40178            p_natural_side_code          => 'C'
40179          , p_gain_or_loss_flag          => 'N'
40181          , p_acct_entry_type_code       => 'A'
40182          , p_switch_side_flag           => 'Y'
40183          , p_merge_duplicate_code       => 'A'
40184          );
40185    --
40186    l_acc_rev_natural_side_code := 'D';  -- 4262811
40187    -- 
40188    --
40189    -- set accounting line type info
40190    --
40191    xla_ae_lines_pkg.SetAcctLineType
40192       (p_component_type             => l_component_type
40193       ,p_event_type_code            => l_event_type_code
40194       ,p_line_definition_owner_code => l_line_definition_owner_code
40195       ,p_line_definition_code       => l_line_definition_code
40196       ,p_accounting_line_code       => l_component_code
40197       ,p_accounting_line_type_code  => l_component_type_code
40198       ,p_accounting_line_appl_id    => l_component_appl_id
40199       ,p_amb_context_code           => l_amb_context_code
40200       ,p_entity_code                => l_entity_code
40201       ,p_event_class_code           => l_event_class_code);
40202    --
40203    -- set accounting class
40204    --
40205    xla_ae_lines_pkg.SetAcctClass(
40206            p_accounting_class_code  => 'ROUNDING'
40207          , p_ae_header_id           => l_ae_header_id
40208          );
40209 
40210    --
40211    -- set rounding class
40212    --
40213    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40214                       'RECEIVABLE';
40215 
40216    --
40217    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40218    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40219    --
40220    -- bulk performance
40221    --
40222    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40223 
40224    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40225       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40226 
40227    -- 4955764
40228    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40229       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40230 
40231    -- 4458381 Public Sector Enh
40232    
40233    --
40234    -- set accounting attributes for the line type
40235    --
40236    l_entered_amt_idx := 3;
40237    l_accted_amt_idx  := 8;
40238    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40239    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40240    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
40241    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40242    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
40243    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40244    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
40245    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40246    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
40247    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40248    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
40249    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40250    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
40251    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40252    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
40253    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40254    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
40255    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
40256    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
40257    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
40258    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
40259    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
40260    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
40261    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
40262    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
40263 
40264    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40265    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40266 
40267    ---------------------------------------------------------------------------------------------------------------
40268    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40269    ---------------------------------------------------------------------------------------------------------------
40270    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40271 
40272    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40273    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40274 
40275    IF xla_accounting_cache_pkg.GetValueChar
40276          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40277          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40278    AND l_bflow_method_code = 'PRIOR_ENTRY'
40279 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40283    THEN
40280    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40281          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40282        )
40284          xla_ae_lines_pkg.BflowUpgEntry
40285            (p_business_method_code    => l_bflow_method_code
40286            ,p_business_class_code     => l_bflow_class_code
40287            ,p_balance_type            => l_balance_type_code);
40288    ELSE
40289       NULL;
40290 -- No business flow processing for business flow method of NONE.
40291    END IF;
40292 
40293    --
40294    -- call analytical criteria
40295    --
40296    
40297    --
40298    -- call description
40299    --
40300    -- No description or it is inherited.
40301    --
40302    -- call ADRs
40303    -- Bug 4922099
40304    --
40305    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40306         (NVL(l_actual_upg_option, 'N') = 'O') OR
40307         (NVL(l_enc_upg_option, 'N') = 'O')
40308       )
40309    THEN
40310    NULL;
40311    --
40312    --
40313    
40314   l_ccid := AcctDerRule_36(
40315            p_application_id           => p_application_id
40316          , p_ae_header_id             => l_ae_header_id 
40317 , p_source_38 => p_source_38
40318          , x_transaction_coa_id       => l_adr_transaction_coa_id
40319          , x_accounting_coa_id        => l_adr_accounting_coa_id
40320          , x_value_type_code          => l_adr_value_type_code
40321          , p_side                     => 'NA'
40322    );
40323 
40324    xla_ae_lines_pkg.set_ccid(
40325     p_code_combination_id          => l_ccid
40326   , p_value_type_code              => l_adr_value_type_code
40327   , p_transaction_coa_id           => l_adr_transaction_coa_id
40328   , p_accounting_coa_id            => l_adr_accounting_coa_id
40329   , p_adr_code                     => 'TRX_DIST_CCID'
40330   , p_adr_type_code                => 'S'
40331   , p_component_type               => l_component_type
40332   , p_component_code               => l_component_code
40333   , p_component_type_code          => l_component_type_code
40334   , p_component_appl_id            => l_component_appl_id
40335   , p_amb_context_code             => l_amb_context_code
40336   , p_side                         => 'NA'
40337   );
40338 
40339 
40340    --
40341    --
40342    END IF;
40343    --
40344    -- Bug 4922099
40345    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40346           (NVL(l_enc_upg_option, 'N') = 'O')
40347         ) AND
40348         (l_bflow_method_code = 'PRIOR_ENTRY')
40349       )
40350    THEN
40351       IF
40352       --
40353       1 = 2
40354       --
40355       THEN
40356       xla_accounting_err_pkg.build_message
40357                                     (p_appli_s_name            => 'XLA'
40358                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40359                                     ,p_token_1                 => 'LINE_NUMBER'
40360                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40361                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40362                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40363                                                                              l_component_type
40364                                                                             ,l_component_code
40365                                                                             ,l_component_type_code
40366                                                                             ,l_component_appl_id
40367                                                                             ,l_amb_context_code
40368                                                                             ,l_entity_code
40369                                                                             ,l_event_class_code
40370                                                                            )
40371                                     ,p_token_3                 => 'OWNER'
40372                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40373                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40374                                                                           ,p_lookup_code    => l_component_type_code
40375                                                                          )
40376                                     ,p_token_4                 => 'PRODUCT_NAME'
40377                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40378                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40379                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40380                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40381                                     ,p_ae_header_id            =>  NULL
40382                                        );
40383 
40384         IF (C_LEVEL_ERROR>= g_log_level) THEN
40385                  trace
40386                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40387                       ,p_level    => C_LEVEL_ERROR
40388                       ,p_module   => l_log_module);
40389         END IF;
40390       END IF;
40394    ------------------------------------------------------------------------------------------------
40391    END IF;
40392    --
40393    --
40395    -- 4219869 Business Flow
40396    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40397    -- Prior Entry.  Currently, the following code is always generated.
40398    ------------------------------------------------------------------------------------------------
40399    XLA_AE_LINES_PKG.ValidateCurrentLine;
40400 
40401    ------------------------------------------------------------------------------------
40402    -- 4219869 Business Flow
40403    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40404    ------------------------------------------------------------------------------------
40405    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40406 
40407    ----------------------------------------------------------------------------------
40408    -- 4219869 Business Flow
40409    -- Update journal entry status -- Need to generate this within IF <condition>
40410    ----------------------------------------------------------------------------------
40411    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40412          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40413          ,p_balance_type_code => l_balance_type_code
40414          );
40415 
40416    -------------------------------------------------------------------------------------------
40417    -- 4262811 - Generate the Accrual Reversal lines
40418    -------------------------------------------------------------------------------------------
40419    BEGIN
40420       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40421                               (g_array_event(p_event_id).array_value_num('header_index'));
40422       IF l_acc_rev_flag IS NULL THEN
40423          l_acc_rev_flag := 'N';
40424       END IF;
40425    EXCEPTION
40426       WHEN OTHERS THEN
40427          l_acc_rev_flag := 'N';
40428    END;
40429    --
40430    IF (l_acc_rev_flag = 'Y') THEN
40431 
40432        -- 4645092  ------------------------------------------------------------------------------
40433        -- To allow MPA report to determine if it should generate report process
40434        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
40435        ------------------------------------------------------------------------------------------
40436 
40437        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
40438        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
40439    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
40440    -- call ADRs
40441    -- Bug 4922099
40442    --
40443    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40444         (NVL(l_actual_upg_option, 'N') = 'O') OR
40445         (NVL(l_enc_upg_option, 'N') = 'O')
40446       )
40447    THEN
40448    NULL;
40449    --
40450    --
40451    
40452   l_ccid := AcctDerRule_36(
40453            p_application_id           => p_application_id
40454          , p_ae_header_id             => l_ae_header_id 
40455 , p_source_38 => p_source_38
40456          , x_transaction_coa_id       => l_adr_transaction_coa_id
40457          , x_accounting_coa_id        => l_adr_accounting_coa_id
40458          , x_value_type_code          => l_adr_value_type_code
40459          , p_side                     => 'NA'
40460    );
40461 
40462    xla_ae_lines_pkg.set_ccid(
40463     p_code_combination_id          => l_ccid
40464   , p_value_type_code              => l_adr_value_type_code
40465   , p_transaction_coa_id           => l_adr_transaction_coa_id
40466   , p_accounting_coa_id            => l_adr_accounting_coa_id
40467   , p_adr_code                     => 'TRX_DIST_CCID'
40468   , p_adr_type_code                => 'S'
40469   , p_component_type               => l_component_type
40470   , p_component_code               => l_component_code
40471   , p_component_type_code          => l_component_type_code
40472   , p_component_appl_id            => l_component_appl_id
40473   , p_amb_context_code             => l_amb_context_code
40474   , p_side                         => 'NA'
40475   );
40476 
40477 
40478    --
40479    --
40480    END IF;
40481 
40482        --
40483        -- Update the line information that should be overwritten
40484        --
40485        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
40486                                          p_header_num   => 1);
40487        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
40488 
40489        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
40490 
40491        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
40492           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
40493        END IF;
40494 
40495       --
40496       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
40497       --
40498       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
40499           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
40500       ELSE
40504           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
40501           ---------------------------------------------------------------------------------------------------
40502           -- 4262811a Switch Sign
40503           ---------------------------------------------------------------------------------------------------
40505           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40506                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40507           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
40508                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40509           -- 5132302
40510           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
40511                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
40512 
40513       END IF;
40514 
40515       -- 4955764
40516       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40517       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
40518 
40519 
40520       XLA_AE_LINES_PKG.ValidateCurrentLine;
40521       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40522 
40523       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40524                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
40525                ,p_balance_type_code => l_balance_type_code);
40526 
40527    END IF;
40528 
40529    -----------------------------------------------------------------------------------------
40530    -- 4262811 Multiperiod Accounting
40531    -----------------------------------------------------------------------------------------
40532      -- No MPA option is assigned.
40533 
40534 
40535 END IF;
40536 END IF;
40537 --
40538 
40539 --
40540 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40541    trace
40542       (p_msg      => 'END of AcctLineType_98'
40543       ,p_level    => C_LEVEL_PROCEDURE
40544       ,p_module   => l_log_module);
40545 END IF;
40546 --
40547 EXCEPTION
40548   WHEN xla_exceptions_pkg.application_exception THEN
40549       RAISE;
40550   WHEN OTHERS THEN
40551        xla_exceptions_pkg.raise_message
40552            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_98');
40553 END AcctLineType_98;
40554 --
40555 
40556 ---------------------------------------
40557 --
40558 -- PRIVATE FUNCTION
40559 --         AcctLineType_99
40560 --
40561 ---------------------------------------
40562 PROCEDURE AcctLineType_99 (
40563   p_application_id        IN NUMBER
40564  ,p_event_id              IN NUMBER
40565  ,p_calculate_acctd_flag  IN VARCHAR2
40566  ,p_calculate_g_l_flag    IN VARCHAR2
40567  ,p_actual_flag           IN OUT VARCHAR2
40568  ,p_balance_type_code     OUT VARCHAR2
40569  ,p_gain_or_loss_ref      OUT VARCHAR2
40570  
40571 --Transaction Distribution GL Account
40572  , p_source_38            IN NUMBER
40573 --Bill To Customer Account Identifier
40574  , p_source_49            IN NUMBER
40575 --Bill To Customer Site Use Identifier
40576  , p_source_50            IN NUMBER
40577 --SLA Party Type
40578  , p_source_51            IN VARCHAR2
40579 --Transaction Distribution Account Class
40580  , p_source_55            IN VARCHAR2
40581 --Transaction Distribution Identifier
40582  , p_source_56            IN NUMBER
40583 --Transaction Distribution Type
40584  , p_source_57            IN VARCHAR2
40585 --Transaction Distribution Entered Amount
40586  , p_source_58            IN NUMBER
40587 --Transaction Currency Code
40588  , p_source_59            IN VARCHAR2
40589 --Transaction Exchange Date
40590  , p_source_60            IN DATE
40591 --Transaction Exchange Rate
40592  , p_source_61            IN NUMBER
40593 --Transaction Exchange Rate Type
40594  , p_source_62            IN VARCHAR2
40595 --Transaction Accounting Amount
40596  , p_source_63            IN NUMBER
40597 --Transaction Tax Line Identifier
40598  , p_source_97            IN NUMBER
40599 )
40600 IS
40601 
40602 l_component_type              VARCHAR2(80);
40603 l_component_code              VARCHAR2(30);
40604 l_component_type_code         VARCHAR2(1);
40605 l_component_appl_id           INTEGER;
40606 l_amb_context_code            VARCHAR2(30);
40607 l_entity_code                 VARCHAR2(30);
40608 l_event_class_code            VARCHAR2(30);
40609 l_ae_header_id                NUMBER;
40610 l_event_type_code             VARCHAR2(30);
40611 l_line_definition_code        VARCHAR2(30);
40612 l_line_definition_owner_code  VARCHAR2(1);
40613 --
40614 -- adr variables
40615 l_segment                     VARCHAR2(30);
40616 l_ccid                        NUMBER;
40617 l_adr_transaction_coa_id      NUMBER;
40618 l_adr_accounting_coa_id       NUMBER;
40619 l_adr_flexfield_segment_code  VARCHAR2(30);
40620 l_adr_flex_value_set_id       NUMBER;
40621 l_adr_value_type_code         VARCHAR2(30);
40622 l_adr_value_combination_id    NUMBER;
40623 l_adr_value_segment_code      VARCHAR2(30);
40624 
40625 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
40626 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
40627 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
40631 l_entered_amt_idx             NUMBER;
40628 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
40629 
40630 -- 4262811 Variables ------------------------------------------------------------------------------------------
40632 l_accted_amt_idx              NUMBER;
40633 l_acc_rev_flag                VARCHAR2(1);
40634 l_accrual_line_num            NUMBER;
40635 l_tmp_amt                     NUMBER;
40636 l_acc_rev_natural_side_code   VARCHAR2(1);
40637 
40638 l_num_entries                 NUMBER;
40639 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
40640 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
40641 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
40642 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
40643 l_recog_line_1                NUMBER;
40644 l_recog_line_2                NUMBER;
40645 
40646 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
40647 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
40648 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
40649 
40650 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
40651 
40652 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
40653 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
40654 
40655 ---------------------------------------------------------------------------------------------------------------
40656 
40657 
40658 --
40659 -- bulk performance
40660 --
40661 l_balance_type_code           VARCHAR2(1);
40662 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
40663 l_log_module                  VARCHAR2(240);
40664 
40665 --
40666 -- Upgrade strategy
40667 --
40668 l_actual_upg_option           VARCHAR2(1);
40669 l_enc_upg_option           VARCHAR2(1);
40670 
40671 --
40672 BEGIN
40673 --
40674 IF g_log_enabled THEN
40675       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_99';
40676 END IF;
40677 --
40678 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
40679 
40680       trace
40681          (p_msg      => 'BEGIN of AcctLineType_99'
40682          ,p_level    => C_LEVEL_PROCEDURE
40683          ,p_module   => l_log_module);
40684 
40685 END IF;
40686 --
40687 l_component_type             := 'AMB_JLT';
40688 l_component_code             := 'INV_SUSPENSE';
40689 l_component_type_code        := 'S';
40690 l_component_appl_id          :=  222;
40691 l_amb_context_code           := 'DEFAULT';
40692 l_entity_code                := 'TRANSACTIONS';
40693 l_event_class_code           := 'INVOICE';
40694 l_event_type_code            := 'INVOICE_ALL';
40695 l_line_definition_owner_code := 'S';
40696 l_line_definition_code       := 'AR_INV_DEFAULT_ACCRUAL';
40697 --
40698 l_balance_type_code          := 'A';
40699 l_segment                     := NULL;
40700 l_ccid                        := NULL;
40701 l_adr_transaction_coa_id      := NULL;
40702 l_adr_accounting_coa_id       := NULL;
40703 l_adr_flexfield_segment_code  := NULL;
40704 l_adr_flex_value_set_id       := NULL;
40705 l_adr_value_type_code         := NULL;
40706 l_adr_value_combination_id    := NULL;
40707 l_adr_value_segment_code      := NULL;
40708 
40709 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
40710 l_bflow_class_code           := '';    -- 4219869 Business Flow
40711 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
40712 l_budgetary_control_flag     := 'N';
40713 
40714 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
40715 l_bflow_applied_to_amt       := NULL; -- 5132302
40716 l_entered_amt_idx            := NULL;          -- 4262811
40717 l_accted_amt_idx             := NULL;          -- 4262811
40718 l_acc_rev_flag               := NULL;          -- 4262811
40719 l_accrual_line_num           := NULL;          -- 4262811
40720 l_tmp_amt                    := NULL;          -- 4262811
40721 --
40722  
40723 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
40724     l_balance_type_code <> 'B' THEN
40725 IF NVL(p_source_55,'
40726 ') =  'SUSPENSE'
40727  THEN 
40728 
40729    --
40730    XLA_AE_LINES_PKG.SetNewLine;
40731 
40732    p_balance_type_code          := l_balance_type_code;
40733    -- set the flag so later we will know whether the gain loss line needs to be created
40734    
40735    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
40736      p_actual_flag :='A';
40737    END IF;
40738 
40739    --
40740    -- bulk performance
40741    --
40742    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
40743                                       p_header_num   => 0); -- 4262811
40744    --
40745    -- set accounting line options
40746    --
40747    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
40748            p_natural_side_code          => 'C'
40749          , p_gain_or_loss_flag          => 'N'
40750          , p_gl_transfer_mode_code      => 'S'
40751          , p_acct_entry_type_code       => 'A'
40752          , p_switch_side_flag           => 'Y'
40753          , p_merge_duplicate_code       => 'A'
40754          );
40755    --
40756    l_acc_rev_natural_side_code := 'D';  -- 4262811
40757    -- 
40758    --
40759    -- set accounting line type info
40760    --
40761    xla_ae_lines_pkg.SetAcctLineType
40765       ,p_line_definition_code       => l_line_definition_code
40762       (p_component_type             => l_component_type
40763       ,p_event_type_code            => l_event_type_code
40764       ,p_line_definition_owner_code => l_line_definition_owner_code
40766       ,p_accounting_line_code       => l_component_code
40767       ,p_accounting_line_type_code  => l_component_type_code
40768       ,p_accounting_line_appl_id    => l_component_appl_id
40769       ,p_amb_context_code           => l_amb_context_code
40770       ,p_entity_code                => l_entity_code
40771       ,p_event_class_code           => l_event_class_code);
40772    --
40773    -- set accounting class
40774    --
40775    xla_ae_lines_pkg.SetAcctClass(
40776            p_accounting_class_code  => 'SUSPENSE'
40777          , p_ae_header_id           => l_ae_header_id
40778          );
40779 
40780    --
40781    -- set rounding class
40782    --
40783    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
40784                       'RECEIVABLE';
40785 
40786    --
40787    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
40788    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
40789    --
40790    -- bulk performance
40791    --
40792    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
40793 
40794    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
40795       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
40796 
40797    -- 4955764
40798    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
40799       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
40800 
40801    -- 4458381 Public Sector Enh
40802    
40803    --
40804    -- set accounting attributes for the line type
40805    --
40806    l_entered_amt_idx := 3;
40807    l_accted_amt_idx  := 8;
40808    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
40809    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
40810    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
40811    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
40812    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
40813    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
40814    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
40815    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
40816    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
40817    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
40818    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
40819    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
40820    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
40821    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
40822    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
40823    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
40824    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
40825    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
40826    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
40827    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
40828    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
40829    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
40830    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
40831    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
40832    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
40833 
40834    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
40835    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
40836 
40837    ---------------------------------------------------------------------------------------------------------------
40838    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
40839    ---------------------------------------------------------------------------------------------------------------
40840    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
40841 
40842    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40843    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
40844 
40845    IF xla_accounting_cache_pkg.GetValueChar
40846          (p_source_code         => 'LEDGER_CATEGORY_CODE'
40847          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
40848    AND l_bflow_method_code = 'PRIOR_ENTRY'
40849 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
40850    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
40851          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
40852        )
40853    THEN
40854          xla_ae_lines_pkg.BflowUpgEntry
40855            (p_business_method_code    => l_bflow_method_code
40856            ,p_business_class_code     => l_bflow_class_code
40857            ,p_balance_type            => l_balance_type_code);
40858    ELSE
40859       NULL;
40860 -- No business flow processing for business flow method of NONE.
40861    END IF;
40862 
40863    --
40864    -- call analytical criteria
40865    --
40866    
40867    --
40871    --
40868    -- call description
40869    --
40870    -- No description or it is inherited.
40872    -- call ADRs
40873    -- Bug 4922099
40874    --
40875    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
40876         (NVL(l_actual_upg_option, 'N') = 'O') OR
40877         (NVL(l_enc_upg_option, 'N') = 'O')
40878       )
40879    THEN
40880    NULL;
40881    --
40882    --
40883    
40884   l_ccid := AcctDerRule_36(
40885            p_application_id           => p_application_id
40886          , p_ae_header_id             => l_ae_header_id 
40887 , p_source_38 => p_source_38
40888          , x_transaction_coa_id       => l_adr_transaction_coa_id
40889          , x_accounting_coa_id        => l_adr_accounting_coa_id
40890          , x_value_type_code          => l_adr_value_type_code
40891          , p_side                     => 'NA'
40892    );
40893 
40894    xla_ae_lines_pkg.set_ccid(
40895     p_code_combination_id          => l_ccid
40896   , p_value_type_code              => l_adr_value_type_code
40897   , p_transaction_coa_id           => l_adr_transaction_coa_id
40898   , p_accounting_coa_id            => l_adr_accounting_coa_id
40899   , p_adr_code                     => 'TRX_DIST_CCID'
40900   , p_adr_type_code                => 'S'
40901   , p_component_type               => l_component_type
40902   , p_component_code               => l_component_code
40903   , p_component_type_code          => l_component_type_code
40904   , p_component_appl_id            => l_component_appl_id
40905   , p_amb_context_code             => l_amb_context_code
40906   , p_side                         => 'NA'
40907   );
40908 
40909 
40910    --
40911    --
40912    END IF;
40913    --
40914    -- Bug 4922099
40915    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
40916           (NVL(l_enc_upg_option, 'N') = 'O')
40917         ) AND
40918         (l_bflow_method_code = 'PRIOR_ENTRY')
40919       )
40920    THEN
40921       IF
40922       --
40923       1 = 2
40924       --
40925       THEN
40926       xla_accounting_err_pkg.build_message
40927                                     (p_appli_s_name            => 'XLA'
40928                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40929                                     ,p_token_1                 => 'LINE_NUMBER'
40930                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
40931                                     ,p_token_2                 => 'LINE_TYPE_NAME'
40932                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
40933                                                                              l_component_type
40934                                                                             ,l_component_code
40935                                                                             ,l_component_type_code
40936                                                                             ,l_component_appl_id
40937                                                                             ,l_amb_context_code
40938                                                                             ,l_entity_code
40939                                                                             ,l_event_class_code
40940                                                                            )
40941                                     ,p_token_3                 => 'OWNER'
40942                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
40943                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
40944                                                                           ,p_lookup_code    => l_component_type_code
40945                                                                          )
40946                                     ,p_token_4                 => 'PRODUCT_NAME'
40947                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
40948                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
40949                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
40950                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
40951                                     ,p_ae_header_id            =>  NULL
40952                                        );
40953 
40954         IF (C_LEVEL_ERROR>= g_log_level) THEN
40955                  trace
40956                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
40957                       ,p_level    => C_LEVEL_ERROR
40958                       ,p_module   => l_log_module);
40959         END IF;
40960       END IF;
40961    END IF;
40962    --
40963    --
40964    ------------------------------------------------------------------------------------------------
40965    -- 4219869 Business Flow
40966    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
40967    -- Prior Entry.  Currently, the following code is always generated.
40968    ------------------------------------------------------------------------------------------------
40969    XLA_AE_LINES_PKG.ValidateCurrentLine;
40970 
40971    ------------------------------------------------------------------------------------
40972    -- 4219869 Business Flow
40976 
40973    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
40974    ------------------------------------------------------------------------------------
40975    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
40977    ----------------------------------------------------------------------------------
40978    -- 4219869 Business Flow
40979    -- Update journal entry status -- Need to generate this within IF <condition>
40980    ----------------------------------------------------------------------------------
40981    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
40982          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
40983          ,p_balance_type_code => l_balance_type_code
40984          );
40985 
40986    -------------------------------------------------------------------------------------------
40987    -- 4262811 - Generate the Accrual Reversal lines
40988    -------------------------------------------------------------------------------------------
40989    BEGIN
40990       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
40991                               (g_array_event(p_event_id).array_value_num('header_index'));
40992       IF l_acc_rev_flag IS NULL THEN
40993          l_acc_rev_flag := 'N';
40994       END IF;
40995    EXCEPTION
40996       WHEN OTHERS THEN
40997          l_acc_rev_flag := 'N';
40998    END;
40999    --
41000    IF (l_acc_rev_flag = 'Y') THEN
41001 
41002        -- 4645092  ------------------------------------------------------------------------------
41003        -- To allow MPA report to determine if it should generate report process
41004        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41005        ------------------------------------------------------------------------------------------
41006 
41007        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41008        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41009    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
41010    -- call ADRs
41011    -- Bug 4922099
41012    --
41013    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41014         (NVL(l_actual_upg_option, 'N') = 'O') OR
41015         (NVL(l_enc_upg_option, 'N') = 'O')
41016       )
41017    THEN
41018    NULL;
41019    --
41020    --
41021    
41022   l_ccid := AcctDerRule_36(
41023            p_application_id           => p_application_id
41024          , p_ae_header_id             => l_ae_header_id 
41025 , p_source_38 => p_source_38
41026          , x_transaction_coa_id       => l_adr_transaction_coa_id
41027          , x_accounting_coa_id        => l_adr_accounting_coa_id
41028          , x_value_type_code          => l_adr_value_type_code
41029          , p_side                     => 'NA'
41030    );
41031 
41032    xla_ae_lines_pkg.set_ccid(
41033     p_code_combination_id          => l_ccid
41034   , p_value_type_code              => l_adr_value_type_code
41035   , p_transaction_coa_id           => l_adr_transaction_coa_id
41036   , p_accounting_coa_id            => l_adr_accounting_coa_id
41037   , p_adr_code                     => 'TRX_DIST_CCID'
41038   , p_adr_type_code                => 'S'
41039   , p_component_type               => l_component_type
41040   , p_component_code               => l_component_code
41041   , p_component_type_code          => l_component_type_code
41042   , p_component_appl_id            => l_component_appl_id
41043   , p_amb_context_code             => l_amb_context_code
41044   , p_side                         => 'NA'
41045   );
41046 
41047 
41048    --
41049    --
41050    END IF;
41051 
41052        --
41053        -- Update the line information that should be overwritten
41054        --
41055        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41056                                          p_header_num   => 1);
41057        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41058 
41059        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41060 
41061        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41062           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41063        END IF;
41064 
41065       --
41066       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41067       --
41068       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41069           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41070       ELSE
41071           ---------------------------------------------------------------------------------------------------
41072           -- 4262811a Switch Sign
41073           ---------------------------------------------------------------------------------------------------
41074           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41075           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41076                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41077           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41078                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41079           -- 5132302
41083       END IF;
41080           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41081                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41082 
41084 
41085       -- 4955764
41086       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41087       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41088 
41089 
41090       XLA_AE_LINES_PKG.ValidateCurrentLine;
41091       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41092 
41093       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41094                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41095                ,p_balance_type_code => l_balance_type_code);
41096 
41097    END IF;
41098 
41099    -----------------------------------------------------------------------------------------
41100    -- 4262811 Multiperiod Accounting
41101    -----------------------------------------------------------------------------------------
41102      -- No MPA option is assigned.
41103 
41104 
41105 END IF;
41106 END IF;
41107 --
41108 
41109 --
41110 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41111    trace
41112       (p_msg      => 'END of AcctLineType_99'
41113       ,p_level    => C_LEVEL_PROCEDURE
41114       ,p_module   => l_log_module);
41115 END IF;
41116 --
41117 EXCEPTION
41118   WHEN xla_exceptions_pkg.application_exception THEN
41119       RAISE;
41120   WHEN OTHERS THEN
41121        xla_exceptions_pkg.raise_message
41122            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_99');
41123 END AcctLineType_99;
41124 --
41125 
41126 ---------------------------------------
41127 --
41128 -- PRIVATE FUNCTION
41129 --         AcctLineType_100
41130 --
41131 ---------------------------------------
41132 PROCEDURE AcctLineType_100 (
41133   p_application_id        IN NUMBER
41134  ,p_event_id              IN NUMBER
41135  ,p_calculate_acctd_flag  IN VARCHAR2
41136  ,p_calculate_g_l_flag    IN VARCHAR2
41137  ,p_actual_flag           IN OUT VARCHAR2
41138  ,p_balance_type_code     OUT VARCHAR2
41139  ,p_gain_or_loss_ref      OUT VARCHAR2
41140  
41141 --Transaction Distribution GL Account
41142  , p_source_38            IN NUMBER
41143 --Bill To Customer Account Identifier
41144  , p_source_49            IN NUMBER
41145 --Bill To Customer Site Use Identifier
41146  , p_source_50            IN NUMBER
41147 --SLA Party Type
41148  , p_source_51            IN VARCHAR2
41149 --Transaction Distribution Account Class
41150  , p_source_55            IN VARCHAR2
41151 --Transaction Distribution Identifier
41152  , p_source_56            IN NUMBER
41153 --Transaction Distribution Type
41154  , p_source_57            IN VARCHAR2
41155 --Transaction Distribution Entered Amount
41156  , p_source_58            IN NUMBER
41157 --Transaction Currency Code
41158  , p_source_59            IN VARCHAR2
41159 --Transaction Exchange Date
41160  , p_source_60            IN DATE
41161 --Transaction Exchange Rate
41162  , p_source_61            IN NUMBER
41163 --Transaction Exchange Rate Type
41164  , p_source_62            IN VARCHAR2
41165 --Transaction Accounting Amount
41166  , p_source_63            IN NUMBER
41167 --Transaction Tax Line Identifier
41168  , p_source_97            IN NUMBER
41169 )
41170 IS
41171 
41172 l_component_type              VARCHAR2(80);
41173 l_component_code              VARCHAR2(30);
41174 l_component_type_code         VARCHAR2(1);
41175 l_component_appl_id           INTEGER;
41176 l_amb_context_code            VARCHAR2(30);
41177 l_entity_code                 VARCHAR2(30);
41178 l_event_class_code            VARCHAR2(30);
41179 l_ae_header_id                NUMBER;
41180 l_event_type_code             VARCHAR2(30);
41181 l_line_definition_code        VARCHAR2(30);
41182 l_line_definition_owner_code  VARCHAR2(1);
41183 --
41184 -- adr variables
41185 l_segment                     VARCHAR2(30);
41186 l_ccid                        NUMBER;
41187 l_adr_transaction_coa_id      NUMBER;
41188 l_adr_accounting_coa_id       NUMBER;
41189 l_adr_flexfield_segment_code  VARCHAR2(30);
41190 l_adr_flex_value_set_id       NUMBER;
41191 l_adr_value_type_code         VARCHAR2(30);
41192 l_adr_value_combination_id    NUMBER;
41193 l_adr_value_segment_code      VARCHAR2(30);
41194 
41195 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41196 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41197 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41198 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41199 
41200 -- 4262811 Variables ------------------------------------------------------------------------------------------
41201 l_entered_amt_idx             NUMBER;
41202 l_accted_amt_idx              NUMBER;
41203 l_acc_rev_flag                VARCHAR2(1);
41204 l_accrual_line_num            NUMBER;
41205 l_tmp_amt                     NUMBER;
41206 l_acc_rev_natural_side_code   VARCHAR2(1);
41207 
41208 l_num_entries                 NUMBER;
41209 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41210 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41211 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41212 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41213 l_recog_line_1                NUMBER;
41217 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41214 l_recog_line_2                NUMBER;
41215 
41216 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41218 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41219 
41220 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41221 
41222 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41223 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41224 
41225 ---------------------------------------------------------------------------------------------------------------
41226 
41227 
41228 --
41229 -- bulk performance
41230 --
41231 l_balance_type_code           VARCHAR2(1);
41232 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41233 l_log_module                  VARCHAR2(240);
41234 
41235 --
41236 -- Upgrade strategy
41237 --
41238 l_actual_upg_option           VARCHAR2(1);
41239 l_enc_upg_option           VARCHAR2(1);
41240 
41241 --
41242 BEGIN
41243 --
41244 IF g_log_enabled THEN
41245       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_100';
41246 END IF;
41247 --
41248 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41249 
41250       trace
41251          (p_msg      => 'BEGIN of AcctLineType_100'
41252          ,p_level    => C_LEVEL_PROCEDURE
41253          ,p_module   => l_log_module);
41254 
41255 END IF;
41256 --
41257 l_component_type             := 'AMB_JLT';
41258 l_component_code             := 'INV_TAX';
41259 l_component_type_code        := 'S';
41260 l_component_appl_id          :=  222;
41261 l_amb_context_code           := 'DEFAULT';
41262 l_entity_code                := 'TRANSACTIONS';
41263 l_event_class_code           := 'INVOICE';
41264 l_event_type_code            := 'INVOICE_ALL';
41265 l_line_definition_owner_code := 'S';
41266 l_line_definition_code       := 'AR_INV_DEFAULT_ACCRUAL';
41267 --
41268 l_balance_type_code          := 'A';
41269 l_segment                     := NULL;
41270 l_ccid                        := NULL;
41271 l_adr_transaction_coa_id      := NULL;
41272 l_adr_accounting_coa_id       := NULL;
41273 l_adr_flexfield_segment_code  := NULL;
41274 l_adr_flex_value_set_id       := NULL;
41275 l_adr_value_type_code         := NULL;
41276 l_adr_value_combination_id    := NULL;
41277 l_adr_value_segment_code      := NULL;
41278 
41279 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41280 l_bflow_class_code           := 'TAX';    -- 4219869 Business Flow
41281 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41282 l_budgetary_control_flag     := 'N';
41283 
41284 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41285 l_bflow_applied_to_amt       := NULL; -- 5132302
41286 l_entered_amt_idx            := NULL;          -- 4262811
41287 l_accted_amt_idx             := NULL;          -- 4262811
41288 l_acc_rev_flag               := NULL;          -- 4262811
41289 l_accrual_line_num           := NULL;          -- 4262811
41290 l_tmp_amt                    := NULL;          -- 4262811
41291 --
41292  
41293 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41294     l_balance_type_code <> 'B' THEN
41295 IF NVL(p_source_55,'
41296 ') =  'TAX'
41297  THEN 
41298 
41299    --
41300    XLA_AE_LINES_PKG.SetNewLine;
41301 
41302    p_balance_type_code          := l_balance_type_code;
41303    -- set the flag so later we will know whether the gain loss line needs to be created
41304    
41305    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41306      p_actual_flag :='A';
41307    END IF;
41308 
41309    --
41310    -- bulk performance
41311    --
41312    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41313                                       p_header_num   => 0); -- 4262811
41314    --
41315    -- set accounting line options
41316    --
41317    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41318            p_natural_side_code          => 'C'
41319          , p_gain_or_loss_flag          => 'N'
41320          , p_gl_transfer_mode_code      => 'S'
41321          , p_acct_entry_type_code       => 'A'
41322          , p_switch_side_flag           => 'Y'
41323          , p_merge_duplicate_code       => 'A'
41324          );
41325    --
41326    l_acc_rev_natural_side_code := 'D';  -- 4262811
41327    -- 
41328    --
41329    -- set accounting line type info
41330    --
41331    xla_ae_lines_pkg.SetAcctLineType
41332       (p_component_type             => l_component_type
41333       ,p_event_type_code            => l_event_type_code
41334       ,p_line_definition_owner_code => l_line_definition_owner_code
41335       ,p_line_definition_code       => l_line_definition_code
41336       ,p_accounting_line_code       => l_component_code
41337       ,p_accounting_line_type_code  => l_component_type_code
41338       ,p_accounting_line_appl_id    => l_component_appl_id
41339       ,p_amb_context_code           => l_amb_context_code
41340       ,p_entity_code                => l_entity_code
41341       ,p_event_class_code           => l_event_class_code);
41342    --
41343    -- set accounting class
41344    --
41345    xla_ae_lines_pkg.SetAcctClass(
41346            p_accounting_class_code  => 'TAX'
41350    --
41347          , p_ae_header_id           => l_ae_header_id
41348          );
41349 
41351    -- set rounding class
41352    --
41353    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41354                       'RECEIVABLE';
41355 
41356    --
41357    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41358    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41359    --
41360    -- bulk performance
41361    --
41362    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41363 
41364    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41365       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41366 
41367    -- 4955764
41368    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41369       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41370 
41371    -- 4458381 Public Sector Enh
41372    
41373    --
41374    -- set accounting attributes for the line type
41375    --
41376    l_entered_amt_idx := 3;
41377    l_accted_amt_idx  := 8;
41378    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41379    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41380    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
41381    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41382    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
41383    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41384    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
41385    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41386    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
41387    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41388    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
41389    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41390    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
41391    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41392    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
41393    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41394    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
41395    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
41396    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
41397    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
41398    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
41399    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
41400    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
41401    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
41402    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
41403 
41404    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41405    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41406 
41407    ---------------------------------------------------------------------------------------------------------------
41408    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41409    ---------------------------------------------------------------------------------------------------------------
41410    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41411 
41412    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41413    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41414 
41415    IF xla_accounting_cache_pkg.GetValueChar
41416          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41417          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41418    AND l_bflow_method_code = 'PRIOR_ENTRY'
41419 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41420    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41421          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41422        )
41423    THEN
41424          xla_ae_lines_pkg.BflowUpgEntry
41425            (p_business_method_code    => l_bflow_method_code
41426            ,p_business_class_code     => l_bflow_class_code
41427            ,p_balance_type            => l_balance_type_code);
41428    ELSE
41429       NULL;
41430 -- No business flow processing for business flow method of NONE.
41431    END IF;
41432 
41433    --
41434    -- call analytical criteria
41435    --
41436    
41437    --
41438    -- call description
41439    --
41440    -- No description or it is inherited.
41441    --
41442    -- call ADRs
41443    -- Bug 4922099
41444    --
41445    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41446         (NVL(l_actual_upg_option, 'N') = 'O') OR
41447         (NVL(l_enc_upg_option, 'N') = 'O')
41448       )
41449    THEN
41450    NULL;
41451    --
41452    --
41453    
41454   l_ccid := AcctDerRule_36(
41455            p_application_id           => p_application_id
41456          , p_ae_header_id             => l_ae_header_id 
41457 , p_source_38 => p_source_38
41458          , x_transaction_coa_id       => l_adr_transaction_coa_id
41462    );
41459          , x_accounting_coa_id        => l_adr_accounting_coa_id
41460          , x_value_type_code          => l_adr_value_type_code
41461          , p_side                     => 'NA'
41463 
41464    xla_ae_lines_pkg.set_ccid(
41465     p_code_combination_id          => l_ccid
41466   , p_value_type_code              => l_adr_value_type_code
41467   , p_transaction_coa_id           => l_adr_transaction_coa_id
41468   , p_accounting_coa_id            => l_adr_accounting_coa_id
41469   , p_adr_code                     => 'TRX_DIST_CCID'
41470   , p_adr_type_code                => 'S'
41471   , p_component_type               => l_component_type
41472   , p_component_code               => l_component_code
41473   , p_component_type_code          => l_component_type_code
41474   , p_component_appl_id            => l_component_appl_id
41475   , p_amb_context_code             => l_amb_context_code
41476   , p_side                         => 'NA'
41477   );
41478 
41479 
41480    --
41481    --
41482    END IF;
41483    --
41484    -- Bug 4922099
41485    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
41486           (NVL(l_enc_upg_option, 'N') = 'O')
41487         ) AND
41488         (l_bflow_method_code = 'PRIOR_ENTRY')
41489       )
41490    THEN
41491       IF
41492       --
41493       1 = 2
41494       --
41495       THEN
41496       xla_accounting_err_pkg.build_message
41497                                     (p_appli_s_name            => 'XLA'
41498                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41499                                     ,p_token_1                 => 'LINE_NUMBER'
41500                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
41501                                     ,p_token_2                 => 'LINE_TYPE_NAME'
41502                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
41503                                                                              l_component_type
41504                                                                             ,l_component_code
41505                                                                             ,l_component_type_code
41506                                                                             ,l_component_appl_id
41507                                                                             ,l_amb_context_code
41508                                                                             ,l_entity_code
41509                                                                             ,l_event_class_code
41510                                                                            )
41511                                     ,p_token_3                 => 'OWNER'
41512                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
41516                                     ,p_token_4                 => 'PRODUCT_NAME'
41513                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
41514                                                                           ,p_lookup_code    => l_component_type_code
41515                                                                          )
41517                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
41518                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
41519                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
41520                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
41521                                     ,p_ae_header_id            =>  NULL
41522                                        );
41523 
41524         IF (C_LEVEL_ERROR>= g_log_level) THEN
41525                  trace
41526                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
41527                       ,p_level    => C_LEVEL_ERROR
41528                       ,p_module   => l_log_module);
41529         END IF;
41530       END IF;
41531    END IF;
41532    --
41533    --
41534    ------------------------------------------------------------------------------------------------
41535    -- 4219869 Business Flow
41536    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
41537    -- Prior Entry.  Currently, the following code is always generated.
41538    ------------------------------------------------------------------------------------------------
41539    XLA_AE_LINES_PKG.ValidateCurrentLine;
41540 
41541    ------------------------------------------------------------------------------------
41542    -- 4219869 Business Flow
41543    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
41544    ------------------------------------------------------------------------------------
41545    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41546 
41547    ----------------------------------------------------------------------------------
41548    -- 4219869 Business Flow
41549    -- Update journal entry status -- Need to generate this within IF <condition>
41550    ----------------------------------------------------------------------------------
41551    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41552          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
41553          ,p_balance_type_code => l_balance_type_code
41554          );
41555 
41556    -------------------------------------------------------------------------------------------
41557    -- 4262811 - Generate the Accrual Reversal lines
41558    -------------------------------------------------------------------------------------------
41559    BEGIN
41560       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
41564       END IF;
41561                               (g_array_event(p_event_id).array_value_num('header_index'));
41562       IF l_acc_rev_flag IS NULL THEN
41563          l_acc_rev_flag := 'N';
41565    EXCEPTION
41566       WHEN OTHERS THEN
41567          l_acc_rev_flag := 'N';
41568    END;
41569    --
41570    IF (l_acc_rev_flag = 'Y') THEN
41571 
41572        -- 4645092  ------------------------------------------------------------------------------
41573        -- To allow MPA report to determine if it should generate report process
41574        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
41575        ------------------------------------------------------------------------------------------
41576 
41577        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
41578        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
41579    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
41580    -- call ADRs
41581    -- Bug 4922099
41582    --
41583    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
41584         (NVL(l_actual_upg_option, 'N') = 'O') OR
41585         (NVL(l_enc_upg_option, 'N') = 'O')
41586       )
41587    THEN
41588    NULL;
41589    --
41590    --
41591    
41592   l_ccid := AcctDerRule_36(
41593            p_application_id           => p_application_id
41594          , p_ae_header_id             => l_ae_header_id 
41595 , p_source_38 => p_source_38
41596          , x_transaction_coa_id       => l_adr_transaction_coa_id
41597          , x_accounting_coa_id        => l_adr_accounting_coa_id
41598          , x_value_type_code          => l_adr_value_type_code
41599          , p_side                     => 'NA'
41600    );
41601 
41602    xla_ae_lines_pkg.set_ccid(
41603     p_code_combination_id          => l_ccid
41604   , p_value_type_code              => l_adr_value_type_code
41605   , p_transaction_coa_id           => l_adr_transaction_coa_id
41606   , p_accounting_coa_id            => l_adr_accounting_coa_id
41607   , p_adr_code                     => 'TRX_DIST_CCID'
41608   , p_adr_type_code                => 'S'
41609   , p_component_type               => l_component_type
41610   , p_component_code               => l_component_code
41611   , p_component_type_code          => l_component_type_code
41612   , p_component_appl_id            => l_component_appl_id
41613   , p_amb_context_code             => l_amb_context_code
41614   , p_side                         => 'NA'
41615   );
41616 
41617 
41618    --
41619    --
41620    END IF;
41621 
41622        --
41623        -- Update the line information that should be overwritten
41624        --
41625        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
41626                                          p_header_num   => 1);
41627        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
41628 
41629        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
41630 
41631        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
41632           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
41633        END IF;
41634 
41635       --
41636       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
41637       --
41638       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
41639           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
41640       ELSE
41641           ---------------------------------------------------------------------------------------------------
41642           -- 4262811a Switch Sign
41643           ---------------------------------------------------------------------------------------------------
41644           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
41645           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41646                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41647           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
41648                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41649           -- 5132302
41650           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
41651                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
41652 
41653       END IF;
41654 
41655       -- 4955764
41656       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41657       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
41658 
41659 
41660       XLA_AE_LINES_PKG.ValidateCurrentLine;
41661       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
41662 
41663       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
41664                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
41665                ,p_balance_type_code => l_balance_type_code);
41666 
41667    END IF;
41668 
41669    -----------------------------------------------------------------------------------------
41670    -- 4262811 Multiperiod Accounting
41671    -----------------------------------------------------------------------------------------
41672      -- No MPA option is assigned.
41676 END IF;
41673 
41674 
41675 END IF;
41677 --
41678 
41679 --
41680 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41681    trace
41682       (p_msg      => 'END of AcctLineType_100'
41683       ,p_level    => C_LEVEL_PROCEDURE
41684       ,p_module   => l_log_module);
41685 END IF;
41686 --
41687 EXCEPTION
41688   WHEN xla_exceptions_pkg.application_exception THEN
41689       RAISE;
41690   WHEN OTHERS THEN
41691        xla_exceptions_pkg.raise_message
41692            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_100');
41693 END AcctLineType_100;
41694 --
41695 
41696 ---------------------------------------
41697 --
41698 -- PRIVATE FUNCTION
41699 --         AcctLineType_101
41700 --
41701 ---------------------------------------
41702 PROCEDURE AcctLineType_101 (
41703   p_application_id        IN NUMBER
41704  ,p_event_id              IN NUMBER
41705  ,p_calculate_acctd_flag  IN VARCHAR2
41706  ,p_calculate_g_l_flag    IN VARCHAR2
41707  ,p_actual_flag           IN OUT VARCHAR2
41708  ,p_balance_type_code     OUT VARCHAR2
41709  ,p_gain_or_loss_ref      OUT VARCHAR2
41710  
41711 --Transaction Distribution GL Account
41712  , p_source_38            IN NUMBER
41713 --Bill To Customer Account Identifier
41714  , p_source_49            IN NUMBER
41715 --Bill To Customer Site Use Identifier
41716  , p_source_50            IN NUMBER
41717 --SLA Party Type
41718  , p_source_51            IN VARCHAR2
41719 --Transaction Distribution Account Class
41720  , p_source_55            IN VARCHAR2
41721 --Transaction Distribution Identifier
41722  , p_source_56            IN NUMBER
41723 --Transaction Distribution Type
41724  , p_source_57            IN VARCHAR2
41725 --Transaction Distribution Entered Amount
41726  , p_source_58            IN NUMBER
41727 --Transaction Currency Code
41728  , p_source_59            IN VARCHAR2
41729 --Transaction Exchange Date
41730  , p_source_60            IN DATE
41731 --Transaction Exchange Rate
41732  , p_source_61            IN NUMBER
41733 --Transaction Exchange Rate Type
41734  , p_source_62            IN VARCHAR2
41735 --Transaction Accounting Amount
41736  , p_source_63            IN NUMBER
41737 --Transaction Tax Line Identifier
41738  , p_source_97            IN NUMBER
41739 --Rounding Correction Flag
41740  , p_source_98            IN VARCHAR2
41741 )
41742 IS
41743 
41744 l_component_type              VARCHAR2(80);
41745 l_component_code              VARCHAR2(30);
41746 l_component_type_code         VARCHAR2(1);
41747 l_component_appl_id           INTEGER;
41748 l_amb_context_code            VARCHAR2(30);
41749 l_entity_code                 VARCHAR2(30);
41750 l_event_class_code            VARCHAR2(30);
41751 l_ae_header_id                NUMBER;
41752 l_event_type_code             VARCHAR2(30);
41753 l_line_definition_code        VARCHAR2(30);
41754 l_line_definition_owner_code  VARCHAR2(1);
41755 --
41756 -- adr variables
41757 l_segment                     VARCHAR2(30);
41758 l_ccid                        NUMBER;
41759 l_adr_transaction_coa_id      NUMBER;
41760 l_adr_accounting_coa_id       NUMBER;
41761 l_adr_flexfield_segment_code  VARCHAR2(30);
41762 l_adr_flex_value_set_id       NUMBER;
41763 l_adr_value_type_code         VARCHAR2(30);
41764 l_adr_value_combination_id    NUMBER;
41765 l_adr_value_segment_code      VARCHAR2(30);
41766 
41767 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
41768 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
41769 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
41770 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
41771 
41772 -- 4262811 Variables ------------------------------------------------------------------------------------------
41773 l_entered_amt_idx             NUMBER;
41774 l_accted_amt_idx              NUMBER;
41775 l_acc_rev_flag                VARCHAR2(1);
41776 l_accrual_line_num            NUMBER;
41777 l_tmp_amt                     NUMBER;
41778 l_acc_rev_natural_side_code   VARCHAR2(1);
41779 
41780 l_num_entries                 NUMBER;
41781 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
41782 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
41783 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
41784 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
41785 l_recog_line_1                NUMBER;
41786 l_recog_line_2                NUMBER;
41787 
41788 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
41789 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
41790 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
41791 
41792 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
41793 
41794 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
41795 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
41796 
41797 ---------------------------------------------------------------------------------------------------------------
41798 
41799 
41800 --
41801 -- bulk performance
41802 --
41803 l_balance_type_code           VARCHAR2(1);
41804 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
41805 l_log_module                  VARCHAR2(240);
41806 
41807 --
41808 -- Upgrade strategy
41809 --
41813 --
41810 l_actual_upg_option           VARCHAR2(1);
41811 l_enc_upg_option           VARCHAR2(1);
41812 
41814 BEGIN
41815 --
41816 IF g_log_enabled THEN
41817       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_101';
41818 END IF;
41819 --
41820 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
41821 
41822       trace
41823          (p_msg      => 'BEGIN of AcctLineType_101'
41824          ,p_level    => C_LEVEL_PROCEDURE
41825          ,p_module   => l_log_module);
41826 
41827 END IF;
41828 --
41829 l_component_type             := 'AMB_JLT';
41830 l_component_code             := 'INV_UNBILL';
41831 l_component_type_code        := 'S';
41832 l_component_appl_id          :=  222;
41833 l_amb_context_code           := 'DEFAULT';
41834 l_entity_code                := 'TRANSACTIONS';
41835 l_event_class_code           := 'INVOICE';
41836 l_event_type_code            := 'INVOICE_ALL';
41837 l_line_definition_owner_code := 'S';
41838 l_line_definition_code       := 'AR_INV_DEFAULT_ACCRUAL';
41839 --
41840 l_balance_type_code          := 'A';
41841 l_segment                     := NULL;
41842 l_ccid                        := NULL;
41843 l_adr_transaction_coa_id      := NULL;
41844 l_adr_accounting_coa_id       := NULL;
41845 l_adr_flexfield_segment_code  := NULL;
41846 l_adr_flex_value_set_id       := NULL;
41847 l_adr_value_type_code         := NULL;
41848 l_adr_value_combination_id    := NULL;
41849 l_adr_value_segment_code      := NULL;
41850 
41851 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
41852 l_bflow_class_code           := '';    -- 4219869 Business Flow
41853 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
41854 l_budgetary_control_flag     := 'N';
41855 
41856 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
41857 l_bflow_applied_to_amt       := NULL; -- 5132302
41858 l_entered_amt_idx            := NULL;          -- 4262811
41859 l_accted_amt_idx             := NULL;          -- 4262811
41860 l_acc_rev_flag               := NULL;          -- 4262811
41861 l_accrual_line_num           := NULL;          -- 4262811
41862 l_tmp_amt                    := NULL;          -- 4262811
41863 --
41864  
41865 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
41866     l_balance_type_code <> 'B' THEN
41867 IF NVL(p_source_55,'
41868 ') =  'UNBILL' AND 
41869 p_source_98 IS NULL 
41870  THEN 
41871 
41872    --
41873    XLA_AE_LINES_PKG.SetNewLine;
41874 
41875    p_balance_type_code          := l_balance_type_code;
41876    -- set the flag so later we will know whether the gain loss line needs to be created
41877    
41878    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
41879      p_actual_flag :='A';
41880    END IF;
41881 
41882    --
41883    -- bulk performance
41884    --
41885    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
41886                                       p_header_num   => 0); -- 4262811
41887    --
41888    -- set accounting line options
41889    --
41890    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
41891            p_natural_side_code          => 'C'
41892          , p_gain_or_loss_flag          => 'N'
41893          , p_gl_transfer_mode_code      => 'S'
41894          , p_acct_entry_type_code       => 'A'
41895          , p_switch_side_flag           => 'Y'
41896          , p_merge_duplicate_code       => 'A'
41897          );
41898    --
41899    l_acc_rev_natural_side_code := 'D';  -- 4262811
41900    -- 
41901    --
41902    -- set accounting line type info
41903    --
41904    xla_ae_lines_pkg.SetAcctLineType
41905       (p_component_type             => l_component_type
41906       ,p_event_type_code            => l_event_type_code
41907       ,p_line_definition_owner_code => l_line_definition_owner_code
41908       ,p_line_definition_code       => l_line_definition_code
41909       ,p_accounting_line_code       => l_component_code
41910       ,p_accounting_line_type_code  => l_component_type_code
41911       ,p_accounting_line_appl_id    => l_component_appl_id
41912       ,p_amb_context_code           => l_amb_context_code
41913       ,p_entity_code                => l_entity_code
41914       ,p_event_class_code           => l_event_class_code);
41915    --
41916    -- set accounting class
41917    --
41918    xla_ae_lines_pkg.SetAcctClass(
41919            p_accounting_class_code  => 'UNBILL'
41920          , p_ae_header_id           => l_ae_header_id
41921          );
41922 
41923    --
41924    -- set rounding class
41925    --
41926    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
41927                       'UNBILL';
41928 
41929    --
41930    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
41931    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
41932    --
41933    -- bulk performance
41934    --
41935    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
41936 
41937    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
41938       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
41939 
41940    -- 4955764
41941    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
41945    
41942       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
41943 
41944    -- 4458381 Public Sector Enh
41946    --
41947    -- set accounting attributes for the line type
41948    --
41949    l_entered_amt_idx := 3;
41950    l_accted_amt_idx  := 8;
41951    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
41952    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
41953    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
41954    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
41955    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
41956    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
41957    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
41958    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
41959    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
41960    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
41961    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
41962    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
41963    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
41964    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
41965    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
41966    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
41967    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
41968    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
41969    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
41970    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
41971    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
41972    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
41973    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
41974    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
41975    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
41976 
41977    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
41978    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
41979 
41980    ---------------------------------------------------------------------------------------------------------------
41981    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
41982    ---------------------------------------------------------------------------------------------------------------
41983    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
41984 
41985    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41986    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
41987 
41988    IF xla_accounting_cache_pkg.GetValueChar
41989          (p_source_code         => 'LEDGER_CATEGORY_CODE'
41990          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
41991    AND l_bflow_method_code = 'PRIOR_ENTRY'
41992 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
41993    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
41994          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
41995        )
41996    THEN
41997          xla_ae_lines_pkg.BflowUpgEntry
41998            (p_business_method_code    => l_bflow_method_code
41999            ,p_business_class_code     => l_bflow_class_code
42000            ,p_balance_type            => l_balance_type_code);
42001    ELSE
42002       NULL;
42003 -- No business flow processing for business flow method of NONE.
42004    END IF;
42005 
42006    --
42007    -- call analytical criteria
42008    --
42009    
42010    --
42011    -- call description
42012    --
42013    -- No description or it is inherited.
42014    --
42015    -- call ADRs
42016    -- Bug 4922099
42017    --
42018    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42019         (NVL(l_actual_upg_option, 'N') = 'O') OR
42020         (NVL(l_enc_upg_option, 'N') = 'O')
42021       )
42022    THEN
42023    NULL;
42024    --
42025    --
42026    
42027   l_ccid := AcctDerRule_36(
42028            p_application_id           => p_application_id
42029          , p_ae_header_id             => l_ae_header_id 
42030 , p_source_38 => p_source_38
42031          , x_transaction_coa_id       => l_adr_transaction_coa_id
42032          , x_accounting_coa_id        => l_adr_accounting_coa_id
42033          , x_value_type_code          => l_adr_value_type_code
42034          , p_side                     => 'NA'
42035    );
42036 
42037    xla_ae_lines_pkg.set_ccid(
42038     p_code_combination_id          => l_ccid
42039   , p_value_type_code              => l_adr_value_type_code
42040   , p_transaction_coa_id           => l_adr_transaction_coa_id
42041   , p_accounting_coa_id            => l_adr_accounting_coa_id
42042   , p_adr_code                     => 'TRX_DIST_CCID'
42043   , p_adr_type_code                => 'S'
42044   , p_component_type               => l_component_type
42045   , p_component_code               => l_component_code
42046   , p_component_type_code          => l_component_type_code
42047   , p_component_appl_id            => l_component_appl_id
42048   , p_amb_context_code             => l_amb_context_code
42049   , p_side                         => 'NA'
42050   );
42051 
42052 
42053    --
42054    --
42055    END IF;
42056    --
42060         ) AND
42057    -- Bug 4922099
42058    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42059           (NVL(l_enc_upg_option, 'N') = 'O')
42061         (l_bflow_method_code = 'PRIOR_ENTRY')
42062       )
42063    THEN
42064       IF
42065       --
42066       1 = 2
42067       --
42068       THEN
42069       xla_accounting_err_pkg.build_message
42070                                     (p_appli_s_name            => 'XLA'
42071                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42072                                     ,p_token_1                 => 'LINE_NUMBER'
42073                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42074                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42075                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42076                                                                              l_component_type
42077                                                                             ,l_component_code
42078                                                                             ,l_component_type_code
42079                                                                             ,l_component_appl_id
42080                                                                             ,l_amb_context_code
42081                                                                             ,l_entity_code
42082                                                                             ,l_event_class_code
42083                                                                            )
42084                                     ,p_token_3                 => 'OWNER'
42085                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42086                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42087                                                                           ,p_lookup_code    => l_component_type_code
42088                                                                          )
42089                                     ,p_token_4                 => 'PRODUCT_NAME'
42090                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42091                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42092                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42093                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42094                                     ,p_ae_header_id            =>  NULL
42095                                        );
42096 
42097         IF (C_LEVEL_ERROR>= g_log_level) THEN
42098                  trace
42099                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42100                       ,p_level    => C_LEVEL_ERROR
42101                       ,p_module   => l_log_module);
42102         END IF;
42103       END IF;
42104    END IF;
42105    --
42106    --
42107    ------------------------------------------------------------------------------------------------
42108    -- 4219869 Business Flow
42109    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42110    -- Prior Entry.  Currently, the following code is always generated.
42111    ------------------------------------------------------------------------------------------------
42112    XLA_AE_LINES_PKG.ValidateCurrentLine;
42113 
42114    ------------------------------------------------------------------------------------
42115    -- 4219869 Business Flow
42116    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42117    ------------------------------------------------------------------------------------
42118    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42119 
42120    ----------------------------------------------------------------------------------
42121    -- 4219869 Business Flow
42122    -- Update journal entry status -- Need to generate this within IF <condition>
42123    ----------------------------------------------------------------------------------
42124    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42125          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42126          ,p_balance_type_code => l_balance_type_code
42127          );
42128 
42129    -------------------------------------------------------------------------------------------
42130    -- 4262811 - Generate the Accrual Reversal lines
42131    -------------------------------------------------------------------------------------------
42132    BEGIN
42133       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42134                               (g_array_event(p_event_id).array_value_num('header_index'));
42135       IF l_acc_rev_flag IS NULL THEN
42136          l_acc_rev_flag := 'N';
42137       END IF;
42138    EXCEPTION
42139       WHEN OTHERS THEN
42140          l_acc_rev_flag := 'N';
42141    END;
42142    --
42143    IF (l_acc_rev_flag = 'Y') THEN
42144 
42145        -- 4645092  ------------------------------------------------------------------------------
42146        -- To allow MPA report to determine if it should generate report process
42147        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42148        ------------------------------------------------------------------------------------------
42149 
42153    -- call ADRs
42150        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42151        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42152    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
42154    -- Bug 4922099
42155    --
42156    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42157         (NVL(l_actual_upg_option, 'N') = 'O') OR
42158         (NVL(l_enc_upg_option, 'N') = 'O')
42159       )
42160    THEN
42161    NULL;
42162    --
42163    --
42164    
42165   l_ccid := AcctDerRule_36(
42166            p_application_id           => p_application_id
42167          , p_ae_header_id             => l_ae_header_id 
42168 , p_source_38 => p_source_38
42169          , x_transaction_coa_id       => l_adr_transaction_coa_id
42170          , x_accounting_coa_id        => l_adr_accounting_coa_id
42171          , x_value_type_code          => l_adr_value_type_code
42172          , p_side                     => 'NA'
42173    );
42174 
42175    xla_ae_lines_pkg.set_ccid(
42176     p_code_combination_id          => l_ccid
42177   , p_value_type_code              => l_adr_value_type_code
42178   , p_transaction_coa_id           => l_adr_transaction_coa_id
42179   , p_accounting_coa_id            => l_adr_accounting_coa_id
42180   , p_adr_code                     => 'TRX_DIST_CCID'
42181   , p_adr_type_code                => 'S'
42182   , p_component_type               => l_component_type
42183   , p_component_code               => l_component_code
42184   , p_component_type_code          => l_component_type_code
42185   , p_component_appl_id            => l_component_appl_id
42186   , p_amb_context_code             => l_amb_context_code
42187   , p_side                         => 'NA'
42188   );
42189 
42190 
42191    --
42192    --
42193    END IF;
42194 
42195        --
42196        -- Update the line information that should be overwritten
42197        --
42198        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42199                                          p_header_num   => 1);
42200        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42201 
42202        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42203 
42204        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42205           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42206        END IF;
42207 
42208       --
42209       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42210       --
42211       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42212           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42213       ELSE
42214           ---------------------------------------------------------------------------------------------------
42215           -- 4262811a Switch Sign
42216           ---------------------------------------------------------------------------------------------------
42217           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42218           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42219                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42220           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42221                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42222           -- 5132302
42223           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42224                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42225 
42226       END IF;
42227 
42228       -- 4955764
42229       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42230       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42231 
42232 
42233       XLA_AE_LINES_PKG.ValidateCurrentLine;
42234       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42235 
42236       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42237                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42238                ,p_balance_type_code => l_balance_type_code);
42239 
42240    END IF;
42241 
42242    -----------------------------------------------------------------------------------------
42243    -- 4262811 Multiperiod Accounting
42244    -----------------------------------------------------------------------------------------
42245      -- No MPA option is assigned.
42246 
42247 
42248 END IF;
42249 END IF;
42250 --
42251 
42252 --
42253 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42254    trace
42255       (p_msg      => 'END of AcctLineType_101'
42256       ,p_level    => C_LEVEL_PROCEDURE
42257       ,p_module   => l_log_module);
42258 END IF;
42259 --
42260 EXCEPTION
42261   WHEN xla_exceptions_pkg.application_exception THEN
42262       RAISE;
42263   WHEN OTHERS THEN
42264        xla_exceptions_pkg.raise_message
42265            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_101');
42266 END AcctLineType_101;
42267 --
42268 
42269 ---------------------------------------
42270 --
42271 -- PRIVATE FUNCTION
42275 PROCEDURE AcctLineType_102 (
42272 --         AcctLineType_102
42273 --
42274 ---------------------------------------
42276   p_application_id        IN NUMBER
42277  ,p_event_id              IN NUMBER
42278  ,p_calculate_acctd_flag  IN VARCHAR2
42279  ,p_calculate_g_l_flag    IN VARCHAR2
42280  ,p_actual_flag           IN OUT VARCHAR2
42281  ,p_balance_type_code     OUT VARCHAR2
42282  ,p_gain_or_loss_ref      OUT VARCHAR2
42283  
42284 --Transaction Distribution GL Account
42285  , p_source_38            IN NUMBER
42286 --Bill To Customer Account Identifier
42287  , p_source_49            IN NUMBER
42288 --Bill To Customer Site Use Identifier
42289  , p_source_50            IN NUMBER
42290 --SLA Party Type
42291  , p_source_51            IN VARCHAR2
42292 --Transaction Distribution Account Class
42293  , p_source_55            IN VARCHAR2
42294 --Transaction Distribution Identifier
42295  , p_source_56            IN NUMBER
42296 --Transaction Distribution Type
42297  , p_source_57            IN VARCHAR2
42298 --Transaction Distribution Entered Amount
42299  , p_source_58            IN NUMBER
42300 --Transaction Currency Code
42301  , p_source_59            IN VARCHAR2
42302 --Transaction Exchange Date
42303  , p_source_60            IN DATE
42304 --Transaction Exchange Rate
42305  , p_source_61            IN NUMBER
42306 --Transaction Exchange Rate Type
42307  , p_source_62            IN VARCHAR2
42308 --Transaction Accounting Amount
42309  , p_source_63            IN NUMBER
42310 --Transaction Tax Line Identifier
42311  , p_source_97            IN NUMBER
42312 --Rounding Correction Flag
42313  , p_source_98            IN VARCHAR2
42314 )
42315 IS
42316 
42317 l_component_type              VARCHAR2(80);
42318 l_component_code              VARCHAR2(30);
42319 l_component_type_code         VARCHAR2(1);
42320 l_component_appl_id           INTEGER;
42321 l_amb_context_code            VARCHAR2(30);
42322 l_entity_code                 VARCHAR2(30);
42323 l_event_class_code            VARCHAR2(30);
42324 l_ae_header_id                NUMBER;
42325 l_event_type_code             VARCHAR2(30);
42326 l_line_definition_code        VARCHAR2(30);
42327 l_line_definition_owner_code  VARCHAR2(1);
42328 --
42329 -- adr variables
42330 l_segment                     VARCHAR2(30);
42331 l_ccid                        NUMBER;
42332 l_adr_transaction_coa_id      NUMBER;
42333 l_adr_accounting_coa_id       NUMBER;
42334 l_adr_flexfield_segment_code  VARCHAR2(30);
42335 l_adr_flex_value_set_id       NUMBER;
42336 l_adr_value_type_code         VARCHAR2(30);
42337 l_adr_value_combination_id    NUMBER;
42338 l_adr_value_segment_code      VARCHAR2(30);
42339 
42340 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42341 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42342 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42343 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42344 
42345 -- 4262811 Variables ------------------------------------------------------------------------------------------
42346 l_entered_amt_idx             NUMBER;
42347 l_accted_amt_idx              NUMBER;
42348 l_acc_rev_flag                VARCHAR2(1);
42349 l_accrual_line_num            NUMBER;
42350 l_tmp_amt                     NUMBER;
42351 l_acc_rev_natural_side_code   VARCHAR2(1);
42352 
42353 l_num_entries                 NUMBER;
42354 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42355 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42356 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42357 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42358 l_recog_line_1                NUMBER;
42359 l_recog_line_2                NUMBER;
42360 
42361 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42362 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42363 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42364 
42365 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42366 
42367 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42368 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42369 
42370 ---------------------------------------------------------------------------------------------------------------
42371 
42372 
42373 --
42374 -- bulk performance
42375 --
42376 l_balance_type_code           VARCHAR2(1);
42377 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42378 l_log_module                  VARCHAR2(240);
42379 
42380 --
42381 -- Upgrade strategy
42382 --
42383 l_actual_upg_option           VARCHAR2(1);
42384 l_enc_upg_option           VARCHAR2(1);
42385 
42386 --
42387 BEGIN
42388 --
42389 IF g_log_enabled THEN
42390       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_102';
42391 END IF;
42392 --
42393 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42394 
42395       trace
42396          (p_msg      => 'BEGIN of AcctLineType_102'
42397          ,p_level    => C_LEVEL_PROCEDURE
42398          ,p_module   => l_log_module);
42399 
42400 END IF;
42401 --
42402 l_component_type             := 'AMB_JLT';
42403 l_component_code             := 'INV_UNBILL_ROUND';
42404 l_component_type_code        := 'S';
42408 l_event_class_code           := 'INVOICE';
42405 l_component_appl_id          :=  222;
42406 l_amb_context_code           := 'DEFAULT';
42407 l_entity_code                := 'TRANSACTIONS';
42409 l_event_type_code            := 'INVOICE_ALL';
42410 l_line_definition_owner_code := 'S';
42411 l_line_definition_code       := 'AR_INV_DEFAULT_ACCRUAL';
42412 --
42413 l_balance_type_code          := 'A';
42414 l_segment                     := NULL;
42415 l_ccid                        := NULL;
42416 l_adr_transaction_coa_id      := NULL;
42417 l_adr_accounting_coa_id       := NULL;
42418 l_adr_flexfield_segment_code  := NULL;
42419 l_adr_flex_value_set_id       := NULL;
42420 l_adr_value_type_code         := NULL;
42421 l_adr_value_combination_id    := NULL;
42422 l_adr_value_segment_code      := NULL;
42423 
42424 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
42425 l_bflow_class_code           := '';    -- 4219869 Business Flow
42426 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
42427 l_budgetary_control_flag     := 'N';
42428 
42429 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
42430 l_bflow_applied_to_amt       := NULL; -- 5132302
42431 l_entered_amt_idx            := NULL;          -- 4262811
42432 l_accted_amt_idx             := NULL;          -- 4262811
42433 l_acc_rev_flag               := NULL;          -- 4262811
42434 l_accrual_line_num           := NULL;          -- 4262811
42435 l_tmp_amt                    := NULL;          -- 4262811
42436 --
42437  
42438 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
42439     l_balance_type_code <> 'B' THEN
42440 IF NVL(p_source_55,'
42441 ') =  'UNBILL' AND 
42442 NVL(p_source_98,'
42443 ') =  'Y'
42444  THEN 
42445 
42446    --
42447    XLA_AE_LINES_PKG.SetNewLine;
42448 
42449    p_balance_type_code          := l_balance_type_code;
42450    -- set the flag so later we will know whether the gain loss line needs to be created
42451    
42452    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
42453      p_actual_flag :='A';
42454    END IF;
42455 
42456    --
42457    -- bulk performance
42458    --
42459    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
42460                                       p_header_num   => 0); -- 4262811
42461    --
42462    -- set accounting line options
42463    --
42464    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
42465            p_natural_side_code          => 'C'
42466          , p_gain_or_loss_flag          => 'N'
42467          , p_gl_transfer_mode_code      => 'S'
42468          , p_acct_entry_type_code       => 'A'
42469          , p_switch_side_flag           => 'Y'
42470          , p_merge_duplicate_code       => 'N'
42471          );
42472    --
42473    l_acc_rev_natural_side_code := 'D';  -- 4262811
42474    -- 
42475    --
42476    -- set accounting line type info
42477    --
42478    xla_ae_lines_pkg.SetAcctLineType
42479       (p_component_type             => l_component_type
42480       ,p_event_type_code            => l_event_type_code
42481       ,p_line_definition_owner_code => l_line_definition_owner_code
42482       ,p_line_definition_code       => l_line_definition_code
42483       ,p_accounting_line_code       => l_component_code
42484       ,p_accounting_line_type_code  => l_component_type_code
42485       ,p_accounting_line_appl_id    => l_component_appl_id
42486       ,p_amb_context_code           => l_amb_context_code
42487       ,p_entity_code                => l_entity_code
42488       ,p_event_class_code           => l_event_class_code);
42489    --
42490    -- set accounting class
42491    --
42492    xla_ae_lines_pkg.SetAcctClass(
42493            p_accounting_class_code  => 'UNBILL'
42494          , p_ae_header_id           => l_ae_header_id
42495          );
42496 
42497    --
42498    -- set rounding class
42499    --
42500    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
42501                       'UNBILL';
42502 
42503    --
42504    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
42505    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
42506    --
42507    -- bulk performance
42508    --
42509    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
42510 
42511    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
42512       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
42513 
42514    -- 4955764
42515    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42516       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
42517 
42518    -- 4458381 Public Sector Enh
42519    
42520    --
42521    -- set accounting attributes for the line type
42522    --
42523    l_entered_amt_idx := 3;
42524    l_accted_amt_idx  := 8;
42525    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
42526    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
42527    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
42528    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
42529    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
42530    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
42534    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
42531    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
42532    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
42533    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
42535    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
42536    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
42537    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
42538    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
42539    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
42540    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
42541    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
42542    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
42543    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
42544    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
42545    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
42546    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
42547    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
42548    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
42549    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
42550 
42551    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
42552    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
42553 
42554    ---------------------------------------------------------------------------------------------------------------
42555    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
42556    ---------------------------------------------------------------------------------------------------------------
42557    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
42558 
42559    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42560    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
42561 
42562    IF xla_accounting_cache_pkg.GetValueChar
42563          (p_source_code         => 'LEDGER_CATEGORY_CODE'
42564          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
42565    AND l_bflow_method_code = 'PRIOR_ENTRY'
42566 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
42567    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
42568          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
42569        )
42570    THEN
42571          xla_ae_lines_pkg.BflowUpgEntry
42572            (p_business_method_code    => l_bflow_method_code
42573            ,p_business_class_code     => l_bflow_class_code
42574            ,p_balance_type            => l_balance_type_code);
42575    ELSE
42576       NULL;
42577 -- No business flow processing for business flow method of NONE.
42578    END IF;
42579 
42580    --
42581    -- call analytical criteria
42582    --
42583    
42584    --
42585    -- call description
42586    --
42587    -- No description or it is inherited.
42588    --
42589    -- call ADRs
42590    -- Bug 4922099
42591    --
42592    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42593         (NVL(l_actual_upg_option, 'N') = 'O') OR
42594         (NVL(l_enc_upg_option, 'N') = 'O')
42595       )
42596    THEN
42597    NULL;
42598    --
42599    --
42600    
42601   l_ccid := AcctDerRule_36(
42602            p_application_id           => p_application_id
42603          , p_ae_header_id             => l_ae_header_id 
42604 , p_source_38 => p_source_38
42605          , x_transaction_coa_id       => l_adr_transaction_coa_id
42606          , x_accounting_coa_id        => l_adr_accounting_coa_id
42607          , x_value_type_code          => l_adr_value_type_code
42608          , p_side                     => 'NA'
42609    );
42610 
42611    xla_ae_lines_pkg.set_ccid(
42612     p_code_combination_id          => l_ccid
42613   , p_value_type_code              => l_adr_value_type_code
42614   , p_transaction_coa_id           => l_adr_transaction_coa_id
42615   , p_accounting_coa_id            => l_adr_accounting_coa_id
42616   , p_adr_code                     => 'TRX_DIST_CCID'
42617   , p_adr_type_code                => 'S'
42618   , p_component_type               => l_component_type
42619   , p_component_code               => l_component_code
42620   , p_component_type_code          => l_component_type_code
42621   , p_component_appl_id            => l_component_appl_id
42622   , p_amb_context_code             => l_amb_context_code
42623   , p_side                         => 'NA'
42624   );
42625 
42626 
42627    --
42628    --
42629    END IF;
42630    --
42631    -- Bug 4922099
42632    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
42633           (NVL(l_enc_upg_option, 'N') = 'O')
42634         ) AND
42635         (l_bflow_method_code = 'PRIOR_ENTRY')
42636       )
42637    THEN
42638       IF
42639       --
42640       1 = 2
42641       --
42642       THEN
42643       xla_accounting_err_pkg.build_message
42644                                     (p_appli_s_name            => 'XLA'
42645                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42646                                     ,p_token_1                 => 'LINE_NUMBER'
42647                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
42651                                                                             ,l_component_code
42648                                     ,p_token_2                 => 'LINE_TYPE_NAME'
42649                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
42650                                                                              l_component_type
42652                                                                             ,l_component_type_code
42653                                                                             ,l_component_appl_id
42654                                                                             ,l_amb_context_code
42655                                                                             ,l_entity_code
42656                                                                             ,l_event_class_code
42657                                                                            )
42658                                     ,p_token_3                 => 'OWNER'
42659                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
42660                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
42661                                                                           ,p_lookup_code    => l_component_type_code
42662                                                                          )
42663                                     ,p_token_4                 => 'PRODUCT_NAME'
42664                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
42665                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
42666                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
42667                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
42668                                     ,p_ae_header_id            =>  NULL
42669                                        );
42670 
42671         IF (C_LEVEL_ERROR>= g_log_level) THEN
42672                  trace
42673                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
42674                       ,p_level    => C_LEVEL_ERROR
42675                       ,p_module   => l_log_module);
42676         END IF;
42677       END IF;
42678    END IF;
42679    --
42680    --
42681    ------------------------------------------------------------------------------------------------
42682    -- 4219869 Business Flow
42683    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
42684    -- Prior Entry.  Currently, the following code is always generated.
42685    ------------------------------------------------------------------------------------------------
42686    XLA_AE_LINES_PKG.ValidateCurrentLine;
42687 
42688    ------------------------------------------------------------------------------------
42689    -- 4219869 Business Flow
42690    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
42691    ------------------------------------------------------------------------------------
42692    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42693 
42694    ----------------------------------------------------------------------------------
42695    -- 4219869 Business Flow
42696    -- Update journal entry status -- Need to generate this within IF <condition>
42697    ----------------------------------------------------------------------------------
42698    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42699          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
42700          ,p_balance_type_code => l_balance_type_code
42701          );
42702 
42703    -------------------------------------------------------------------------------------------
42704    -- 4262811 - Generate the Accrual Reversal lines
42705    -------------------------------------------------------------------------------------------
42706    BEGIN
42707       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
42708                               (g_array_event(p_event_id).array_value_num('header_index'));
42709       IF l_acc_rev_flag IS NULL THEN
42710          l_acc_rev_flag := 'N';
42711       END IF;
42712    EXCEPTION
42713       WHEN OTHERS THEN
42714          l_acc_rev_flag := 'N';
42715    END;
42716    --
42717    IF (l_acc_rev_flag = 'Y') THEN
42718 
42719        -- 4645092  ------------------------------------------------------------------------------
42720        -- To allow MPA report to determine if it should generate report process
42721        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
42722        ------------------------------------------------------------------------------------------
42723 
42724        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
42725        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
42726    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
42727    -- call ADRs
42728    -- Bug 4922099
42729    --
42730    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
42731         (NVL(l_actual_upg_option, 'N') = 'O') OR
42732         (NVL(l_enc_upg_option, 'N') = 'O')
42733       )
42734    THEN
42735    NULL;
42736    --
42737    --
42738    
42739   l_ccid := AcctDerRule_36(
42740            p_application_id           => p_application_id
42741          , p_ae_header_id             => l_ae_header_id 
42742 , p_source_38 => p_source_38
42746          , p_side                     => 'NA'
42743          , x_transaction_coa_id       => l_adr_transaction_coa_id
42744          , x_accounting_coa_id        => l_adr_accounting_coa_id
42745          , x_value_type_code          => l_adr_value_type_code
42747    );
42748 
42749    xla_ae_lines_pkg.set_ccid(
42750     p_code_combination_id          => l_ccid
42751   , p_value_type_code              => l_adr_value_type_code
42752   , p_transaction_coa_id           => l_adr_transaction_coa_id
42753   , p_accounting_coa_id            => l_adr_accounting_coa_id
42754   , p_adr_code                     => 'TRX_DIST_CCID'
42755   , p_adr_type_code                => 'S'
42756   , p_component_type               => l_component_type
42757   , p_component_code               => l_component_code
42758   , p_component_type_code          => l_component_type_code
42759   , p_component_appl_id            => l_component_appl_id
42760   , p_amb_context_code             => l_amb_context_code
42761   , p_side                         => 'NA'
42762   );
42763 
42764 
42765    --
42766    --
42767    END IF;
42768 
42769        --
42770        -- Update the line information that should be overwritten
42771        --
42772        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
42773                                          p_header_num   => 1);
42774        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
42775 
42776        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
42777 
42778        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
42779           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
42780        END IF;
42781 
42782       --
42783       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
42784       --
42785       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
42786           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
42787       ELSE
42788           ---------------------------------------------------------------------------------------------------
42789           -- 4262811a Switch Sign
42790           ---------------------------------------------------------------------------------------------------
42791           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
42792           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42793                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42794           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
42795                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42796           -- 5132302
42797           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
42798                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
42799 
42800       END IF;
42801 
42802       -- 4955764
42803       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
42804       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
42805 
42806 
42807       XLA_AE_LINES_PKG.ValidateCurrentLine;
42808       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
42809 
42810       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
42811                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
42812                ,p_balance_type_code => l_balance_type_code);
42813 
42814    END IF;
42815 
42816    -----------------------------------------------------------------------------------------
42817    -- 4262811 Multiperiod Accounting
42818    -----------------------------------------------------------------------------------------
42819      -- No MPA option is assigned.
42820 
42821 
42822 END IF;
42823 END IF;
42824 --
42825 
42826 --
42827 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42828    trace
42829       (p_msg      => 'END of AcctLineType_102'
42830       ,p_level    => C_LEVEL_PROCEDURE
42831       ,p_module   => l_log_module);
42832 END IF;
42833 --
42834 EXCEPTION
42835   WHEN xla_exceptions_pkg.application_exception THEN
42836       RAISE;
42837   WHEN OTHERS THEN
42838        xla_exceptions_pkg.raise_message
42839            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_102');
42840 END AcctLineType_102;
42841 --
42842 
42843 ---------------------------------------
42844 --
42845 -- PRIVATE FUNCTION
42846 --         AcctLineType_103
42847 --
42848 ---------------------------------------
42849 PROCEDURE AcctLineType_103 (
42850   p_application_id        IN NUMBER
42851  ,p_event_id              IN NUMBER
42852  ,p_calculate_acctd_flag  IN VARCHAR2
42853  ,p_calculate_g_l_flag    IN VARCHAR2
42854  ,p_actual_flag           IN OUT VARCHAR2
42855  ,p_balance_type_code     OUT VARCHAR2
42856  ,p_gain_or_loss_ref      OUT VARCHAR2
42857  
42858 --Transaction Distribution GL Account
42859  , p_source_38            IN NUMBER
42860 --Bill To Customer Account Identifier
42861  , p_source_49            IN NUMBER
42862 --Bill To Customer Site Use Identifier
42863  , p_source_50            IN NUMBER
42864 --SLA Party Type
42868 --Transaction Distribution Identifier
42865  , p_source_51            IN VARCHAR2
42866 --Transaction Distribution Account Class
42867  , p_source_55            IN VARCHAR2
42869  , p_source_56            IN NUMBER
42870 --Transaction Distribution Type
42871  , p_source_57            IN VARCHAR2
42872 --Transaction Distribution Entered Amount
42873  , p_source_58            IN NUMBER
42874 --Transaction Currency Code
42875  , p_source_59            IN VARCHAR2
42876 --Transaction Exchange Date
42877  , p_source_60            IN DATE
42878 --Transaction Exchange Rate
42879  , p_source_61            IN NUMBER
42880 --Transaction Exchange Rate Type
42881  , p_source_62            IN VARCHAR2
42882 --Transaction Accounting Amount
42883  , p_source_63            IN NUMBER
42884 --Transaction Tax Line Identifier
42885  , p_source_97            IN NUMBER
42886 --Rounding Correction Flag
42887  , p_source_98            IN VARCHAR2
42888 )
42889 IS
42890 
42891 l_component_type              VARCHAR2(80);
42892 l_component_code              VARCHAR2(30);
42893 l_component_type_code         VARCHAR2(1);
42894 l_component_appl_id           INTEGER;
42895 l_amb_context_code            VARCHAR2(30);
42896 l_entity_code                 VARCHAR2(30);
42897 l_event_class_code            VARCHAR2(30);
42898 l_ae_header_id                NUMBER;
42899 l_event_type_code             VARCHAR2(30);
42900 l_line_definition_code        VARCHAR2(30);
42901 l_line_definition_owner_code  VARCHAR2(1);
42902 --
42903 -- adr variables
42904 l_segment                     VARCHAR2(30);
42905 l_ccid                        NUMBER;
42906 l_adr_transaction_coa_id      NUMBER;
42907 l_adr_accounting_coa_id       NUMBER;
42908 l_adr_flexfield_segment_code  VARCHAR2(30);
42909 l_adr_flex_value_set_id       NUMBER;
42910 l_adr_value_type_code         VARCHAR2(30);
42911 l_adr_value_combination_id    NUMBER;
42912 l_adr_value_segment_code      VARCHAR2(30);
42913 
42914 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
42915 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
42916 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
42917 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
42918 
42919 -- 4262811 Variables ------------------------------------------------------------------------------------------
42920 l_entered_amt_idx             NUMBER;
42921 l_accted_amt_idx              NUMBER;
42922 l_acc_rev_flag                VARCHAR2(1);
42923 l_accrual_line_num            NUMBER;
42924 l_tmp_amt                     NUMBER;
42925 l_acc_rev_natural_side_code   VARCHAR2(1);
42926 
42927 l_num_entries                 NUMBER;
42928 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
42929 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
42930 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
42931 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
42932 l_recog_line_1                NUMBER;
42933 l_recog_line_2                NUMBER;
42934 
42935 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
42936 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
42937 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
42938 
42939 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
42940 
42941 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
42942 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
42943 
42944 ---------------------------------------------------------------------------------------------------------------
42945 
42946 
42947 --
42948 -- bulk performance
42949 --
42950 l_balance_type_code           VARCHAR2(1);
42951 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
42952 l_log_module                  VARCHAR2(240);
42953 
42954 --
42955 -- Upgrade strategy
42956 --
42957 l_actual_upg_option           VARCHAR2(1);
42958 l_enc_upg_option           VARCHAR2(1);
42959 
42960 --
42961 BEGIN
42962 --
42963 IF g_log_enabled THEN
42964       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_103';
42965 END IF;
42966 --
42967 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
42968 
42969       trace
42970          (p_msg      => 'BEGIN of AcctLineType_103'
42971          ,p_level    => C_LEVEL_PROCEDURE
42972          ,p_module   => l_log_module);
42973 
42974 END IF;
42975 --
42976 l_component_type             := 'AMB_JLT';
42977 l_component_code             := 'INV_UNEARN';
42978 l_component_type_code        := 'S';
42979 l_component_appl_id          :=  222;
42980 l_amb_context_code           := 'DEFAULT';
42981 l_entity_code                := 'TRANSACTIONS';
42982 l_event_class_code           := 'INVOICE';
42983 l_event_type_code            := 'INVOICE_ALL';
42984 l_line_definition_owner_code := 'S';
42985 l_line_definition_code       := 'AR_INV_DEFAULT_ACCRUAL';
42986 --
42987 l_balance_type_code          := 'A';
42988 l_segment                     := NULL;
42989 l_ccid                        := NULL;
42990 l_adr_transaction_coa_id      := NULL;
42991 l_adr_accounting_coa_id       := NULL;
42992 l_adr_flexfield_segment_code  := NULL;
42993 l_adr_flex_value_set_id       := NULL;
42994 l_adr_value_type_code         := NULL;
42995 l_adr_value_combination_id    := NULL;
42999 l_bflow_class_code           := '';    -- 4219869 Business Flow
42996 l_adr_value_segment_code      := NULL;
42997 
42998 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
43000 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
43001 l_budgetary_control_flag     := 'N';
43002 
43003 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43004 l_bflow_applied_to_amt       := NULL; -- 5132302
43005 l_entered_amt_idx            := NULL;          -- 4262811
43006 l_accted_amt_idx             := NULL;          -- 4262811
43007 l_acc_rev_flag               := NULL;          -- 4262811
43008 l_accrual_line_num           := NULL;          -- 4262811
43009 l_tmp_amt                    := NULL;          -- 4262811
43010 --
43011  
43012 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43013     l_balance_type_code <> 'B' THEN
43014 IF NVL(p_source_55,'
43015 ') =  'UNEARN' AND 
43016 p_source_98 IS NULL 
43017  THEN 
43018 
43019    --
43020    XLA_AE_LINES_PKG.SetNewLine;
43021 
43022    p_balance_type_code          := l_balance_type_code;
43023    -- set the flag so later we will know whether the gain loss line needs to be created
43024    
43025    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43026      p_actual_flag :='A';
43027    END IF;
43028 
43029    --
43030    -- bulk performance
43031    --
43032    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43033                                       p_header_num   => 0); -- 4262811
43034    --
43035    -- set accounting line options
43036    --
43037    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43038            p_natural_side_code          => 'C'
43039          , p_gain_or_loss_flag          => 'N'
43040          , p_gl_transfer_mode_code      => 'S'
43041          , p_acct_entry_type_code       => 'A'
43042          , p_switch_side_flag           => 'Y'
43043          , p_merge_duplicate_code       => 'A'
43044          );
43045    --
43046    l_acc_rev_natural_side_code := 'D';  -- 4262811
43047    -- 
43048    --
43049    -- set accounting line type info
43050    --
43051    xla_ae_lines_pkg.SetAcctLineType
43052       (p_component_type             => l_component_type
43053       ,p_event_type_code            => l_event_type_code
43054       ,p_line_definition_owner_code => l_line_definition_owner_code
43055       ,p_line_definition_code       => l_line_definition_code
43056       ,p_accounting_line_code       => l_component_code
43057       ,p_accounting_line_type_code  => l_component_type_code
43058       ,p_accounting_line_appl_id    => l_component_appl_id
43059       ,p_amb_context_code           => l_amb_context_code
43060       ,p_entity_code                => l_entity_code
43061       ,p_event_class_code           => l_event_class_code);
43062    --
43063    -- set accounting class
43064    --
43065    xla_ae_lines_pkg.SetAcctClass(
43066            p_accounting_class_code  => 'UNEARNED_REVENUE'
43067          , p_ae_header_id           => l_ae_header_id
43068          );
43069 
43070    --
43071    -- set rounding class
43072    --
43073    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43074                       'RECEIVABLE';
43075 
43076    --
43077    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43078    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43079    --
43080    -- bulk performance
43081    --
43082    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43083 
43084    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43085       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43086 
43087    -- 4955764
43088    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43089       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43090 
43091    -- 4458381 Public Sector Enh
43092    
43093    --
43094    -- set accounting attributes for the line type
43095    --
43096    l_entered_amt_idx := 3;
43097    l_accted_amt_idx  := 8;
43098    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43099    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
43100    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
43101    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
43102    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
43103    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
43104    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
43105    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
43106    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
43107    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
43108    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
43109    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
43110    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
43111    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
43112    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
43113    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
43114    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
43118    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
43115    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
43116    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
43117    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
43119    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
43120    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
43121    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
43122    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
43123 
43124    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43125    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43126 
43127    ---------------------------------------------------------------------------------------------------------------
43128    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43129    ---------------------------------------------------------------------------------------------------------------
43130    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43131 
43132    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43133    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43134 
43135    IF xla_accounting_cache_pkg.GetValueChar
43136          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43137          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43138    AND l_bflow_method_code = 'PRIOR_ENTRY'
43139 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43140    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43141          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43142        )
43143    THEN
43144          xla_ae_lines_pkg.BflowUpgEntry
43145            (p_business_method_code    => l_bflow_method_code
43146            ,p_business_class_code     => l_bflow_class_code
43147            ,p_balance_type            => l_balance_type_code);
43148    ELSE
43149       NULL;
43150 -- No business flow processing for business flow method of NONE.
43151    END IF;
43152 
43153    --
43154    -- call analytical criteria
43155    --
43156    
43157    --
43158    -- call description
43159    --
43160    -- No description or it is inherited.
43161    --
43162    -- call ADRs
43163    -- Bug 4922099
43164    --
43165    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43166         (NVL(l_actual_upg_option, 'N') = 'O') OR
43167         (NVL(l_enc_upg_option, 'N') = 'O')
43168       )
43169    THEN
43170    NULL;
43171    --
43172    --
43173    
43174   l_ccid := AcctDerRule_36(
43175            p_application_id           => p_application_id
43176          , p_ae_header_id             => l_ae_header_id 
43177 , p_source_38 => p_source_38
43178          , x_transaction_coa_id       => l_adr_transaction_coa_id
43179          , x_accounting_coa_id        => l_adr_accounting_coa_id
43180          , x_value_type_code          => l_adr_value_type_code
43181          , p_side                     => 'NA'
43182    );
43183 
43184    xla_ae_lines_pkg.set_ccid(
43185     p_code_combination_id          => l_ccid
43186   , p_value_type_code              => l_adr_value_type_code
43187   , p_transaction_coa_id           => l_adr_transaction_coa_id
43188   , p_accounting_coa_id            => l_adr_accounting_coa_id
43189   , p_adr_code                     => 'TRX_DIST_CCID'
43190   , p_adr_type_code                => 'S'
43191   , p_component_type               => l_component_type
43192   , p_component_code               => l_component_code
43193   , p_component_type_code          => l_component_type_code
43194   , p_component_appl_id            => l_component_appl_id
43195   , p_amb_context_code             => l_amb_context_code
43196   , p_side                         => 'NA'
43197   );
43198 
43199 
43200    --
43201    --
43202    END IF;
43203    --
43204    -- Bug 4922099
43205    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43206           (NVL(l_enc_upg_option, 'N') = 'O')
43207         ) AND
43208         (l_bflow_method_code = 'PRIOR_ENTRY')
43209       )
43210    THEN
43211       IF
43212       --
43213       1 = 2
43214       --
43215       THEN
43216       xla_accounting_err_pkg.build_message
43217                                     (p_appli_s_name            => 'XLA'
43218                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43219                                     ,p_token_1                 => 'LINE_NUMBER'
43220                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43221                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43222                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43223                                                                              l_component_type
43224                                                                             ,l_component_code
43225                                                                             ,l_component_type_code
43226                                                                             ,l_component_appl_id
43227                                                                             ,l_amb_context_code
43231                                     ,p_token_3                 => 'OWNER'
43228                                                                             ,l_entity_code
43229                                                                             ,l_event_class_code
43230                                                                            )
43232                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43233                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43234                                                                           ,p_lookup_code    => l_component_type_code
43235                                                                          )
43236                                     ,p_token_4                 => 'PRODUCT_NAME'
43237                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43238                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43239                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43240                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43241                                     ,p_ae_header_id            =>  NULL
43242                                        );
43243 
43244         IF (C_LEVEL_ERROR>= g_log_level) THEN
43245                  trace
43246                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43247                       ,p_level    => C_LEVEL_ERROR
43248                       ,p_module   => l_log_module);
43249         END IF;
43250       END IF;
43251    END IF;
43252    --
43253    --
43254    ------------------------------------------------------------------------------------------------
43255    -- 4219869 Business Flow
43256    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43257    -- Prior Entry.  Currently, the following code is always generated.
43258    ------------------------------------------------------------------------------------------------
43259    XLA_AE_LINES_PKG.ValidateCurrentLine;
43260 
43261    ------------------------------------------------------------------------------------
43262    -- 4219869 Business Flow
43263    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43264    ------------------------------------------------------------------------------------
43265    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43266 
43267    ----------------------------------------------------------------------------------
43268    -- 4219869 Business Flow
43269    -- Update journal entry status -- Need to generate this within IF <condition>
43270    ----------------------------------------------------------------------------------
43271    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43272          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43273          ,p_balance_type_code => l_balance_type_code
43274          );
43275 
43276    -------------------------------------------------------------------------------------------
43277    -- 4262811 - Generate the Accrual Reversal lines
43278    -------------------------------------------------------------------------------------------
43279    BEGIN
43280       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43281                               (g_array_event(p_event_id).array_value_num('header_index'));
43282       IF l_acc_rev_flag IS NULL THEN
43283          l_acc_rev_flag := 'N';
43284       END IF;
43285    EXCEPTION
43286       WHEN OTHERS THEN
43287          l_acc_rev_flag := 'N';
43288    END;
43289    --
43290    IF (l_acc_rev_flag = 'Y') THEN
43291 
43292        -- 4645092  ------------------------------------------------------------------------------
43293        -- To allow MPA report to determine if it should generate report process
43294        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43295        ------------------------------------------------------------------------------------------
43296 
43297        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43298        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43299    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
43300    -- call ADRs
43301    -- Bug 4922099
43302    --
43303    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43304         (NVL(l_actual_upg_option, 'N') = 'O') OR
43305         (NVL(l_enc_upg_option, 'N') = 'O')
43306       )
43307    THEN
43308    NULL;
43309    --
43310    --
43311    
43312   l_ccid := AcctDerRule_36(
43313            p_application_id           => p_application_id
43314          , p_ae_header_id             => l_ae_header_id 
43315 , p_source_38 => p_source_38
43316          , x_transaction_coa_id       => l_adr_transaction_coa_id
43317          , x_accounting_coa_id        => l_adr_accounting_coa_id
43318          , x_value_type_code          => l_adr_value_type_code
43319          , p_side                     => 'NA'
43320    );
43321 
43322    xla_ae_lines_pkg.set_ccid(
43323     p_code_combination_id          => l_ccid
43324   , p_value_type_code              => l_adr_value_type_code
43325   , p_transaction_coa_id           => l_adr_transaction_coa_id
43326   , p_accounting_coa_id            => l_adr_accounting_coa_id
43327   , p_adr_code                     => 'TRX_DIST_CCID'
43328   , p_adr_type_code                => 'S'
43332   , p_component_appl_id            => l_component_appl_id
43329   , p_component_type               => l_component_type
43330   , p_component_code               => l_component_code
43331   , p_component_type_code          => l_component_type_code
43333   , p_amb_context_code             => l_amb_context_code
43334   , p_side                         => 'NA'
43335   );
43336 
43337 
43338    --
43339    --
43340    END IF;
43341 
43342        --
43343        -- Update the line information that should be overwritten
43344        --
43345        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43346                                          p_header_num   => 1);
43347        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43348 
43349        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43350 
43351        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43352           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43353        END IF;
43354 
43355       --
43356       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43357       --
43358       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43359           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43360       ELSE
43361           ---------------------------------------------------------------------------------------------------
43362           -- 4262811a Switch Sign
43363           ---------------------------------------------------------------------------------------------------
43364           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43365           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43366                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43367           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43368                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43369           -- 5132302
43370           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43371                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43372 
43373       END IF;
43374 
43375       -- 4955764
43376       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43377       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43378 
43379 
43380       XLA_AE_LINES_PKG.ValidateCurrentLine;
43381       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43382 
43383       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43384                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43385                ,p_balance_type_code => l_balance_type_code);
43386 
43387    END IF;
43388 
43389    -----------------------------------------------------------------------------------------
43390    -- 4262811 Multiperiod Accounting
43391    -----------------------------------------------------------------------------------------
43392      -- No MPA option is assigned.
43393 
43394 
43395 END IF;
43396 END IF;
43397 --
43398 
43399 --
43400 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43401    trace
43402       (p_msg      => 'END of AcctLineType_103'
43403       ,p_level    => C_LEVEL_PROCEDURE
43404       ,p_module   => l_log_module);
43405 END IF;
43406 --
43407 EXCEPTION
43408   WHEN xla_exceptions_pkg.application_exception THEN
43409       RAISE;
43410   WHEN OTHERS THEN
43411        xla_exceptions_pkg.raise_message
43412            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_103');
43413 END AcctLineType_103;
43414 --
43415 
43416 ---------------------------------------
43417 --
43418 -- PRIVATE FUNCTION
43419 --         AcctLineType_104
43420 --
43421 ---------------------------------------
43422 PROCEDURE AcctLineType_104 (
43423   p_application_id        IN NUMBER
43427  ,p_actual_flag           IN OUT VARCHAR2
43424  ,p_event_id              IN NUMBER
43425  ,p_calculate_acctd_flag  IN VARCHAR2
43426  ,p_calculate_g_l_flag    IN VARCHAR2
43428  ,p_balance_type_code     OUT VARCHAR2
43429  ,p_gain_or_loss_ref      OUT VARCHAR2
43430  
43431 --Transaction Distribution GL Account
43432  , p_source_38            IN NUMBER
43433 --Bill To Customer Account Identifier
43434  , p_source_49            IN NUMBER
43435 --Bill To Customer Site Use Identifier
43436  , p_source_50            IN NUMBER
43437 --SLA Party Type
43438  , p_source_51            IN VARCHAR2
43439 --Transaction Distribution Account Class
43440  , p_source_55            IN VARCHAR2
43441 --Transaction Distribution Identifier
43442  , p_source_56            IN NUMBER
43443 --Transaction Distribution Type
43444  , p_source_57            IN VARCHAR2
43445 --Transaction Distribution Entered Amount
43446  , p_source_58            IN NUMBER
43447 --Transaction Currency Code
43448  , p_source_59            IN VARCHAR2
43449 --Transaction Exchange Date
43450  , p_source_60            IN DATE
43451 --Transaction Exchange Rate
43452  , p_source_61            IN NUMBER
43453 --Transaction Exchange Rate Type
43454  , p_source_62            IN VARCHAR2
43455 --Transaction Accounting Amount
43456  , p_source_63            IN NUMBER
43457 --Transaction Tax Line Identifier
43458  , p_source_97            IN NUMBER
43459 --Rounding Correction Flag
43460  , p_source_98            IN VARCHAR2
43461 )
43462 IS
43463 
43464 l_component_type              VARCHAR2(80);
43465 l_component_code              VARCHAR2(30);
43466 l_component_type_code         VARCHAR2(1);
43467 l_component_appl_id           INTEGER;
43468 l_amb_context_code            VARCHAR2(30);
43469 l_entity_code                 VARCHAR2(30);
43470 l_event_class_code            VARCHAR2(30);
43471 l_ae_header_id                NUMBER;
43472 l_event_type_code             VARCHAR2(30);
43473 l_line_definition_code        VARCHAR2(30);
43474 l_line_definition_owner_code  VARCHAR2(1);
43475 --
43476 -- adr variables
43477 l_segment                     VARCHAR2(30);
43478 l_ccid                        NUMBER;
43479 l_adr_transaction_coa_id      NUMBER;
43480 l_adr_accounting_coa_id       NUMBER;
43481 l_adr_flexfield_segment_code  VARCHAR2(30);
43482 l_adr_flex_value_set_id       NUMBER;
43483 l_adr_value_type_code         VARCHAR2(30);
43484 l_adr_value_combination_id    NUMBER;
43485 l_adr_value_segment_code      VARCHAR2(30);
43486 
43487 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
43488 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
43489 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
43490 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
43491 
43492 -- 4262811 Variables ------------------------------------------------------------------------------------------
43493 l_entered_amt_idx             NUMBER;
43494 l_accted_amt_idx              NUMBER;
43495 l_acc_rev_flag                VARCHAR2(1);
43496 l_accrual_line_num            NUMBER;
43497 l_tmp_amt                     NUMBER;
43498 l_acc_rev_natural_side_code   VARCHAR2(1);
43499 
43500 l_num_entries                 NUMBER;
43501 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
43502 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
43503 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
43504 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
43505 l_recog_line_1                NUMBER;
43506 l_recog_line_2                NUMBER;
43507 
43508 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
43509 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
43510 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
43511 
43512 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
43513 
43514 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
43515 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
43516 
43517 ---------------------------------------------------------------------------------------------------------------
43518 
43519 
43520 --
43521 -- bulk performance
43522 --
43523 l_balance_type_code           VARCHAR2(1);
43524 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
43525 l_log_module                  VARCHAR2(240);
43526 
43527 --
43528 -- Upgrade strategy
43529 --
43530 l_actual_upg_option           VARCHAR2(1);
43531 l_enc_upg_option           VARCHAR2(1);
43532 
43533 --
43534 BEGIN
43535 --
43536 IF g_log_enabled THEN
43537       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_104';
43538 END IF;
43539 --
43540 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43541 
43542       trace
43543          (p_msg      => 'BEGIN of AcctLineType_104'
43544          ,p_level    => C_LEVEL_PROCEDURE
43545          ,p_module   => l_log_module);
43546 
43547 END IF;
43548 --
43549 l_component_type             := 'AMB_JLT';
43550 l_component_code             := 'INV_UNEARN_ROUND';
43551 l_component_type_code        := 'S';
43552 l_component_appl_id          :=  222;
43553 l_amb_context_code           := 'DEFAULT';
43554 l_entity_code                := 'TRANSACTIONS';
43555 l_event_class_code           := 'INVOICE';
43559 --
43556 l_event_type_code            := 'INVOICE_ALL';
43557 l_line_definition_owner_code := 'S';
43558 l_line_definition_code       := 'AR_INV_DEFAULT_ACCRUAL';
43560 l_balance_type_code          := 'A';
43561 l_segment                     := NULL;
43562 l_ccid                        := NULL;
43563 l_adr_transaction_coa_id      := NULL;
43564 l_adr_accounting_coa_id       := NULL;
43565 l_adr_flexfield_segment_code  := NULL;
43566 l_adr_flex_value_set_id       := NULL;
43567 l_adr_value_type_code         := NULL;
43568 l_adr_value_combination_id    := NULL;
43569 l_adr_value_segment_code      := NULL;
43570 
43571 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
43572 l_bflow_class_code           := '';    -- 4219869 Business Flow
43573 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
43574 l_budgetary_control_flag     := 'N';
43575 
43576 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
43577 l_bflow_applied_to_amt       := NULL; -- 5132302
43578 l_entered_amt_idx            := NULL;          -- 4262811
43579 l_accted_amt_idx             := NULL;          -- 4262811
43580 l_acc_rev_flag               := NULL;          -- 4262811
43581 l_accrual_line_num           := NULL;          -- 4262811
43582 l_tmp_amt                    := NULL;          -- 4262811
43583 --
43584  
43585 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
43586     l_balance_type_code <> 'B' THEN
43587 IF NVL(p_source_55,'
43588 ') =  'UNEARN' AND 
43589 NVL(p_source_98,'
43590 ') =  'Y'
43591  THEN 
43592 
43593    --
43594    XLA_AE_LINES_PKG.SetNewLine;
43595 
43596    p_balance_type_code          := l_balance_type_code;
43597    -- set the flag so later we will know whether the gain loss line needs to be created
43598    
43599    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
43600      p_actual_flag :='A';
43601    END IF;
43602 
43603    --
43604    -- bulk performance
43605    --
43606    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
43607                                       p_header_num   => 0); -- 4262811
43608    --
43609    -- set accounting line options
43610    --
43611    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
43612            p_natural_side_code          => 'C'
43613          , p_gain_or_loss_flag          => 'N'
43614          , p_gl_transfer_mode_code      => 'S'
43615          , p_acct_entry_type_code       => 'A'
43616          , p_switch_side_flag           => 'Y'
43617          , p_merge_duplicate_code       => 'N'
43618          );
43619    --
43620    l_acc_rev_natural_side_code := 'D';  -- 4262811
43621    -- 
43622    --
43623    -- set accounting line type info
43624    --
43625    xla_ae_lines_pkg.SetAcctLineType
43626       (p_component_type             => l_component_type
43627       ,p_event_type_code            => l_event_type_code
43628       ,p_line_definition_owner_code => l_line_definition_owner_code
43629       ,p_line_definition_code       => l_line_definition_code
43630       ,p_accounting_line_code       => l_component_code
43631       ,p_accounting_line_type_code  => l_component_type_code
43632       ,p_accounting_line_appl_id    => l_component_appl_id
43633       ,p_amb_context_code           => l_amb_context_code
43634       ,p_entity_code                => l_entity_code
43635       ,p_event_class_code           => l_event_class_code);
43636    --
43637    -- set accounting class
43638    --
43639    xla_ae_lines_pkg.SetAcctClass(
43640            p_accounting_class_code  => 'UNEARNED_REVENUE'
43641          , p_ae_header_id           => l_ae_header_id
43642          );
43643 
43644    --
43645    -- set rounding class
43646    --
43647    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
43648                       'RECEIVABLE';
43649 
43650    --
43651    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
43652    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
43653    --
43654    -- bulk performance
43655    --
43656    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
43657 
43658    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
43659       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
43660 
43661    -- 4955764
43662    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43663       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
43664 
43665    -- 4458381 Public Sector Enh
43666    
43667    --
43668    -- set accounting attributes for the line type
43669    --
43670    l_entered_amt_idx := 3;
43671    l_accted_amt_idx  := 8;
43672    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
43673    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
43674    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_56);
43675    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
43676    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
43677    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
43678    l_rec_acct_attrs.array_num_value(3)  := p_source_58;
43679    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
43683    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
43680    l_rec_acct_attrs.array_char_value(4)  := p_source_59;
43681    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
43682    l_rec_acct_attrs.array_date_value(5)  := p_source_60;
43684    l_rec_acct_attrs.array_num_value(6)  := p_source_61;
43685    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
43686    l_rec_acct_attrs.array_char_value(7)  := p_source_62;
43687    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
43688    l_rec_acct_attrs.array_num_value(8)  := p_source_63;
43689    l_rec_acct_attrs.array_acct_attr_code(9) := 'PARTY_ID';
43690    l_rec_acct_attrs.array_num_value(9)  := p_source_49;
43691    l_rec_acct_attrs.array_acct_attr_code(10) := 'PARTY_SITE_ID';
43692    l_rec_acct_attrs.array_num_value(10)  := p_source_50;
43693    l_rec_acct_attrs.array_acct_attr_code(11) := 'PARTY_TYPE';
43694    l_rec_acct_attrs.array_char_value(11)  := p_source_51;
43695    l_rec_acct_attrs.array_acct_attr_code(12) := 'TAX_LINE_REF_ID';
43696    l_rec_acct_attrs.array_num_value(12)  := p_source_97;
43697 
43698    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
43699    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
43700 
43701    ---------------------------------------------------------------------------------------------------------------
43702    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
43703    ---------------------------------------------------------------------------------------------------------------
43704    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
43705 
43706    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43707    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
43708 
43709    IF xla_accounting_cache_pkg.GetValueChar
43710          (p_source_code         => 'LEDGER_CATEGORY_CODE'
43711          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
43712    AND l_bflow_method_code = 'PRIOR_ENTRY'
43713 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
43714    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
43715          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
43716        )
43717    THEN
43718          xla_ae_lines_pkg.BflowUpgEntry
43719            (p_business_method_code    => l_bflow_method_code
43720            ,p_business_class_code     => l_bflow_class_code
43721            ,p_balance_type            => l_balance_type_code);
43722    ELSE
43723       NULL;
43724 -- No business flow processing for business flow method of NONE.
43725    END IF;
43726 
43727    --
43728    -- call analytical criteria
43729    --
43730    
43731    --
43732    -- call description
43733    --
43734    -- No description or it is inherited.
43735    --
43736    -- call ADRs
43737    -- Bug 4922099
43738    --
43739    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43740         (NVL(l_actual_upg_option, 'N') = 'O') OR
43741         (NVL(l_enc_upg_option, 'N') = 'O')
43742       )
43743    THEN
43744    NULL;
43745    --
43746    --
43747    
43748   l_ccid := AcctDerRule_36(
43749            p_application_id           => p_application_id
43750          , p_ae_header_id             => l_ae_header_id 
43751 , p_source_38 => p_source_38
43752          , x_transaction_coa_id       => l_adr_transaction_coa_id
43753          , x_accounting_coa_id        => l_adr_accounting_coa_id
43754          , x_value_type_code          => l_adr_value_type_code
43755          , p_side                     => 'NA'
43756    );
43757 
43758    xla_ae_lines_pkg.set_ccid(
43759     p_code_combination_id          => l_ccid
43760   , p_value_type_code              => l_adr_value_type_code
43761   , p_transaction_coa_id           => l_adr_transaction_coa_id
43762   , p_accounting_coa_id            => l_adr_accounting_coa_id
43763   , p_adr_code                     => 'TRX_DIST_CCID'
43764   , p_adr_type_code                => 'S'
43765   , p_component_type               => l_component_type
43766   , p_component_code               => l_component_code
43767   , p_component_type_code          => l_component_type_code
43768   , p_component_appl_id            => l_component_appl_id
43769   , p_amb_context_code             => l_amb_context_code
43770   , p_side                         => 'NA'
43771   );
43772 
43773 
43774    --
43775    --
43776    END IF;
43777    --
43778    -- Bug 4922099
43779    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
43780           (NVL(l_enc_upg_option, 'N') = 'O')
43781         ) AND
43782         (l_bflow_method_code = 'PRIOR_ENTRY')
43783       )
43784    THEN
43785       IF
43786       --
43787       1 = 2
43788       --
43789       THEN
43790       xla_accounting_err_pkg.build_message
43791                                     (p_appli_s_name            => 'XLA'
43792                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43793                                     ,p_token_1                 => 'LINE_NUMBER'
43794                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
43795                                     ,p_token_2                 => 'LINE_TYPE_NAME'
43799                                                                             ,l_component_type_code
43796                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
43797                                                                              l_component_type
43798                                                                             ,l_component_code
43800                                                                             ,l_component_appl_id
43801                                                                             ,l_amb_context_code
43802                                                                             ,l_entity_code
43803                                                                             ,l_event_class_code
43804                                                                            )
43805                                     ,p_token_3                 => 'OWNER'
43806                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
43807                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
43808                                                                           ,p_lookup_code    => l_component_type_code
43809                                                                          )
43810                                     ,p_token_4                 => 'PRODUCT_NAME'
43811                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
43812                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
43813                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
43814                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
43815                                     ,p_ae_header_id            =>  NULL
43816                                        );
43817 
43818         IF (C_LEVEL_ERROR>= g_log_level) THEN
43819                  trace
43820                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
43821                       ,p_level    => C_LEVEL_ERROR
43822                       ,p_module   => l_log_module);
43823         END IF;
43824       END IF;
43825    END IF;
43826    --
43827    --
43828    ------------------------------------------------------------------------------------------------
43829    -- 4219869 Business Flow
43830    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
43831    -- Prior Entry.  Currently, the following code is always generated.
43832    ------------------------------------------------------------------------------------------------
43833    XLA_AE_LINES_PKG.ValidateCurrentLine;
43834 
43835    ------------------------------------------------------------------------------------
43836    -- 4219869 Business Flow
43837    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
43838    ------------------------------------------------------------------------------------
43839    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43840 
43841    ----------------------------------------------------------------------------------
43842    -- 4219869 Business Flow
43843    -- Update journal entry status -- Need to generate this within IF <condition>
43844    ----------------------------------------------------------------------------------
43845    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43846          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
43847          ,p_balance_type_code => l_balance_type_code
43848          );
43849 
43850    -------------------------------------------------------------------------------------------
43851    -- 4262811 - Generate the Accrual Reversal lines
43852    -------------------------------------------------------------------------------------------
43853    BEGIN
43854       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
43855                               (g_array_event(p_event_id).array_value_num('header_index'));
43856       IF l_acc_rev_flag IS NULL THEN
43857          l_acc_rev_flag := 'N';
43858       END IF;
43859    EXCEPTION
43860       WHEN OTHERS THEN
43861          l_acc_rev_flag := 'N';
43862    END;
43863    --
43864    IF (l_acc_rev_flag = 'Y') THEN
43865 
43866        -- 4645092  ------------------------------------------------------------------------------
43867        -- To allow MPA report to determine if it should generate report process
43868        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
43869        ------------------------------------------------------------------------------------------
43870 
43871        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
43872        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
43873    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
43874    -- call ADRs
43875    -- Bug 4922099
43876    --
43877    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
43878         (NVL(l_actual_upg_option, 'N') = 'O') OR
43879         (NVL(l_enc_upg_option, 'N') = 'O')
43880       )
43881    THEN
43882    NULL;
43883    --
43884    --
43885    
43886   l_ccid := AcctDerRule_36(
43887            p_application_id           => p_application_id
43888          , p_ae_header_id             => l_ae_header_id 
43889 , p_source_38 => p_source_38
43890          , x_transaction_coa_id       => l_adr_transaction_coa_id
43891          , x_accounting_coa_id        => l_adr_accounting_coa_id
43892          , x_value_type_code          => l_adr_value_type_code
43896    xla_ae_lines_pkg.set_ccid(
43893          , p_side                     => 'NA'
43894    );
43895 
43897     p_code_combination_id          => l_ccid
43898   , p_value_type_code              => l_adr_value_type_code
43899   , p_transaction_coa_id           => l_adr_transaction_coa_id
43900   , p_accounting_coa_id            => l_adr_accounting_coa_id
43901   , p_adr_code                     => 'TRX_DIST_CCID'
43902   , p_adr_type_code                => 'S'
43903   , p_component_type               => l_component_type
43904   , p_component_code               => l_component_code
43905   , p_component_type_code          => l_component_type_code
43906   , p_component_appl_id            => l_component_appl_id
43907   , p_amb_context_code             => l_amb_context_code
43908   , p_side                         => 'NA'
43909   );
43910 
43911 
43912    --
43913    --
43914    END IF;
43915 
43916        --
43917        -- Update the line information that should be overwritten
43918        --
43919        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
43920                                          p_header_num   => 1);
43921        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
43922 
43923        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
43924 
43925        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
43926           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
43927        END IF;
43928 
43929       --
43930       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
43931       --
43932       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
43933           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
43934       ELSE
43935           ---------------------------------------------------------------------------------------------------
43936           -- 4262811a Switch Sign
43937           ---------------------------------------------------------------------------------------------------
43938           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
43939           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43940                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43941           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
43942                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43943           -- 5132302
43944           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
43945                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
43946 
43947       END IF;
43948 
43949       -- 4955764
43950       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
43951       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
43952 
43953 
43954       XLA_AE_LINES_PKG.ValidateCurrentLine;
43955       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
43956 
43957       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
43958                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
43959                ,p_balance_type_code => l_balance_type_code);
43960 
43961    END IF;
43962 
43963    -----------------------------------------------------------------------------------------
43964    -- 4262811 Multiperiod Accounting
43965    -----------------------------------------------------------------------------------------
43966      -- No MPA option is assigned.
43967 
43968 
43969 END IF;
43970 END IF;
43971 --
43972 
43973 --
43974 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
43975    trace
43976       (p_msg      => 'END of AcctLineType_104'
43977       ,p_level    => C_LEVEL_PROCEDURE
43978       ,p_module   => l_log_module);
43979 END IF;
43980 --
43981 EXCEPTION
43982   WHEN xla_exceptions_pkg.application_exception THEN
43983       RAISE;
43984   WHEN OTHERS THEN
43985        xla_exceptions_pkg.raise_message
43986            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_104');
43987 END AcctLineType_104;
43988 --
43989 
43990 ---------------------------------------
43991 --
43992 -- PRIVATE FUNCTION
43993 --         AcctLineType_105
43994 --
43995 ---------------------------------------
43996 PROCEDURE AcctLineType_105 (
43997   p_application_id        IN NUMBER
43998  ,p_event_id              IN NUMBER
43999  ,p_calculate_acctd_flag  IN VARCHAR2
44000  ,p_calculate_g_l_flag    IN VARCHAR2
44001  ,p_actual_flag           IN OUT VARCHAR2
44002  ,p_balance_type_code     OUT VARCHAR2
44003  ,p_gain_or_loss_ref      OUT VARCHAR2
44004  
44005 --Distribution GL Account
44006  , p_source_32            IN NUMBER
44007 --Distribution Source Type
44008  , p_source_39            IN VARCHAR2
44009 --Distribution Line Identifier
44010  , p_source_41            IN NUMBER
44011 --Distribution Type
44012  , p_source_42            IN VARCHAR2
44013 --Entered Amount
44014  , p_source_43            IN NUMBER
44015 --Currency Code
44016  , p_source_44            IN VARCHAR2
44020  , p_source_47            IN VARCHAR2
44017 --Exchange Rate
44018  , p_source_46            IN NUMBER
44019 --Exchange Rate Type
44021 --Applied To Document Accounting Amount
44022  , p_source_48            IN NUMBER
44023 --Distribution Multi Fund Additional Entry
44024  , p_source_99            IN VARCHAR2
44025 --Applied To Document Exchange Date
44026  , p_source_100            IN DATE
44027 )
44028 IS
44029 
44030 l_component_type              VARCHAR2(80);
44031 l_component_code              VARCHAR2(30);
44032 l_component_type_code         VARCHAR2(1);
44033 l_component_appl_id           INTEGER;
44034 l_amb_context_code            VARCHAR2(30);
44035 l_entity_code                 VARCHAR2(30);
44036 l_event_class_code            VARCHAR2(30);
44037 l_ae_header_id                NUMBER;
44038 l_event_type_code             VARCHAR2(30);
44039 l_line_definition_code        VARCHAR2(30);
44040 l_line_definition_owner_code  VARCHAR2(1);
44041 --
44042 -- adr variables
44043 l_segment                     VARCHAR2(30);
44044 l_ccid                        NUMBER;
44045 l_adr_transaction_coa_id      NUMBER;
44046 l_adr_accounting_coa_id       NUMBER;
44047 l_adr_flexfield_segment_code  VARCHAR2(30);
44048 l_adr_flex_value_set_id       NUMBER;
44049 l_adr_value_type_code         VARCHAR2(30);
44050 l_adr_value_combination_id    NUMBER;
44051 l_adr_value_segment_code      VARCHAR2(30);
44052 
44053 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44054 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44055 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44056 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44057 
44058 -- 4262811 Variables ------------------------------------------------------------------------------------------
44059 l_entered_amt_idx             NUMBER;
44060 l_accted_amt_idx              NUMBER;
44061 l_acc_rev_flag                VARCHAR2(1);
44062 l_accrual_line_num            NUMBER;
44063 l_tmp_amt                     NUMBER;
44064 l_acc_rev_natural_side_code   VARCHAR2(1);
44065 
44066 l_num_entries                 NUMBER;
44067 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44068 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44069 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44070 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44071 l_recog_line_1                NUMBER;
44072 l_recog_line_2                NUMBER;
44073 
44074 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44075 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44076 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44077 
44078 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44079 
44080 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44081 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44082 
44083 ---------------------------------------------------------------------------------------------------------------
44084 
44085 
44086 --
44087 -- bulk performance
44088 --
44089 l_balance_type_code           VARCHAR2(1);
44090 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44091 l_log_module                  VARCHAR2(240);
44092 
44093 --
44094 -- Upgrade strategy
44095 --
44096 l_actual_upg_option           VARCHAR2(1);
44097 l_enc_upg_option           VARCHAR2(1);
44098 
44099 --
44100 BEGIN
44101 --
44102 IF g_log_enabled THEN
44103       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_105';
44104 END IF;
44105 --
44106 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44107 
44108       trace
44109          (p_msg      => 'BEGIN of AcctLineType_105'
44110          ,p_level    => C_LEVEL_PROCEDURE
44111          ,p_module   => l_log_module);
44112 
44113 END IF;
44114 --
44115 l_component_type             := 'AMB_JLT';
44116 l_component_code             := 'MISC_RCT_BNK_CHG';
44117 l_component_type_code        := 'S';
44118 l_component_appl_id          :=  222;
44119 l_amb_context_code           := 'DEFAULT';
44120 l_entity_code                := 'RECEIPTS';
44121 l_event_class_code           := 'MISC_RECEIPT';
44122 l_event_type_code            := 'MISC_RECEIPT_ALL';
44123 l_line_definition_owner_code := 'S';
44124 l_line_definition_code       := 'AR_MISC_RECEIPTS';
44125 --
44126 l_balance_type_code          := 'A';
44127 l_segment                     := NULL;
44128 l_ccid                        := NULL;
44129 l_adr_transaction_coa_id      := NULL;
44130 l_adr_accounting_coa_id       := NULL;
44131 l_adr_flexfield_segment_code  := NULL;
44132 l_adr_flex_value_set_id       := NULL;
44133 l_adr_value_type_code         := NULL;
44134 l_adr_value_combination_id    := NULL;
44135 l_adr_value_segment_code      := NULL;
44136 
44137 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44138 l_bflow_class_code           := '';    -- 4219869 Business Flow
44139 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44140 l_budgetary_control_flag     := 'N';
44141 
44142 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44143 l_bflow_applied_to_amt       := NULL; -- 5132302
44144 l_entered_amt_idx            := NULL;          -- 4262811
44148 l_tmp_amt                    := NULL;          -- 4262811
44145 l_accted_amt_idx             := NULL;          -- 4262811
44146 l_acc_rev_flag               := NULL;          -- 4262811
44147 l_accrual_line_num           := NULL;          -- 4262811
44149 --
44150  
44151 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44152     l_balance_type_code <> 'B' THEN
44153 IF NVL(p_source_39,'
44154 ') =  'BANK_CHARGES' AND 
44155 NVL(p_source_99,'
44156 ') =  'N'
44157  THEN 
44158 
44159    --
44160    XLA_AE_LINES_PKG.SetNewLine;
44161 
44162    p_balance_type_code          := l_balance_type_code;
44163    -- set the flag so later we will know whether the gain loss line needs to be created
44164    
44165    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44166      p_actual_flag :='A';
44167    END IF;
44168 
44169    --
44170    -- bulk performance
44171    --
44172    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44173                                       p_header_num   => 0); -- 4262811
44174    --
44175    -- set accounting line options
44176    --
44177    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44178            p_natural_side_code          => 'C'
44179          , p_gain_or_loss_flag          => 'N'
44180          , p_gl_transfer_mode_code      => 'S'
44181          , p_acct_entry_type_code       => 'A'
44182          , p_switch_side_flag           => 'Y'
44183          , p_merge_duplicate_code       => 'A'
44184          );
44185    --
44186    l_acc_rev_natural_side_code := 'D';  -- 4262811
44187    -- 
44188    --
44189    -- set accounting line type info
44190    --
44191    xla_ae_lines_pkg.SetAcctLineType
44192       (p_component_type             => l_component_type
44193       ,p_event_type_code            => l_event_type_code
44194       ,p_line_definition_owner_code => l_line_definition_owner_code
44195       ,p_line_definition_code       => l_line_definition_code
44196       ,p_accounting_line_code       => l_component_code
44197       ,p_accounting_line_type_code  => l_component_type_code
44198       ,p_accounting_line_appl_id    => l_component_appl_id
44199       ,p_amb_context_code           => l_amb_context_code
44200       ,p_entity_code                => l_entity_code
44201       ,p_event_class_code           => l_event_class_code);
44202    --
44203    -- set accounting class
44204    --
44205    xla_ae_lines_pkg.SetAcctClass(
44206            p_accounting_class_code  => 'BANK_CHG'
44207          , p_ae_header_id           => l_ae_header_id
44208          );
44209 
44210    --
44211    -- set rounding class
44212    --
44213    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44214                       'RECEIVABLE';
44215 
44216    --
44217    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44218    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44219    --
44220    -- bulk performance
44221    --
44222    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44223 
44224    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44225       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44226 
44227    -- 4955764
44228    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44229       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44230 
44231    -- 4458381 Public Sector Enh
44232    
44233    --
44234    -- set accounting attributes for the line type
44235    --
44236    l_entered_amt_idx := 3;
44237    l_accted_amt_idx  := 8;
44238    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44239    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44240    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
44241    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44242    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
44243    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44244    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
44245    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44246    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
44247    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44248    l_rec_acct_attrs.array_date_value(5)  := p_source_100;
44249    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44250    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
44251    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44252    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
44253    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44254    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
44255 
44256    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44257    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44258 
44259    ---------------------------------------------------------------------------------------------------------------
44260    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44264    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44261    ---------------------------------------------------------------------------------------------------------------
44262    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44263 
44265    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44266 
44267    IF xla_accounting_cache_pkg.GetValueChar
44268          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44269          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44270    AND l_bflow_method_code = 'PRIOR_ENTRY'
44271 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44272    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44273          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44274        )
44275    THEN
44276          xla_ae_lines_pkg.BflowUpgEntry
44277            (p_business_method_code    => l_bflow_method_code
44278            ,p_business_class_code     => l_bflow_class_code
44279            ,p_balance_type            => l_balance_type_code);
44280    ELSE
44281       NULL;
44282 -- No business flow processing for business flow method of NONE.
44283    END IF;
44284 
44285    --
44286    -- call analytical criteria
44287    --
44288    
44289    --
44290    -- call description
44291    --
44292    -- No description or it is inherited.
44293    --
44294    -- call ADRs
44295    -- Bug 4922099
44296    --
44297    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44298         (NVL(l_actual_upg_option, 'N') = 'O') OR
44299         (NVL(l_enc_upg_option, 'N') = 'O')
44300       )
44301    THEN
44302    NULL;
44303    --
44304    --
44305    
44306   l_ccid := AcctDerRule_29(
44307            p_application_id           => p_application_id
44308          , p_ae_header_id             => l_ae_header_id 
44309 , p_source_32 => p_source_32
44310          , x_transaction_coa_id       => l_adr_transaction_coa_id
44311          , x_accounting_coa_id        => l_adr_accounting_coa_id
44312          , x_value_type_code          => l_adr_value_type_code
44313          , p_side                     => 'NA'
44314    );
44315 
44316    xla_ae_lines_pkg.set_ccid(
44317     p_code_combination_id          => l_ccid
44318   , p_value_type_code              => l_adr_value_type_code
44319   , p_transaction_coa_id           => l_adr_transaction_coa_id
44320   , p_accounting_coa_id            => l_adr_accounting_coa_id
44321   , p_adr_code                     => 'DIST_CCID'
44322   , p_adr_type_code                => 'S'
44323   , p_component_type               => l_component_type
44324   , p_component_code               => l_component_code
44325   , p_component_type_code          => l_component_type_code
44326   , p_component_appl_id            => l_component_appl_id
44327   , p_amb_context_code             => l_amb_context_code
44328   , p_side                         => 'NA'
44329   );
44330 
44331 
44332    --
44333    --
44334    END IF;
44335    --
44336    -- Bug 4922099
44337    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44338           (NVL(l_enc_upg_option, 'N') = 'O')
44339         ) AND
44340         (l_bflow_method_code = 'PRIOR_ENTRY')
44341       )
44342    THEN
44343       IF
44344       --
44345       1 = 2
44346       --
44347       THEN
44348       xla_accounting_err_pkg.build_message
44349                                     (p_appli_s_name            => 'XLA'
44350                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44351                                     ,p_token_1                 => 'LINE_NUMBER'
44352                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44353                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44354                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44355                                                                              l_component_type
44356                                                                             ,l_component_code
44357                                                                             ,l_component_type_code
44358                                                                             ,l_component_appl_id
44359                                                                             ,l_amb_context_code
44360                                                                             ,l_entity_code
44361                                                                             ,l_event_class_code
44362                                                                            )
44363                                     ,p_token_3                 => 'OWNER'
44364                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44365                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44366                                                                           ,p_lookup_code    => l_component_type_code
44367                                                                          )
44368                                     ,p_token_4                 => 'PRODUCT_NAME'
44369                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44373                                     ,p_ae_header_id            =>  NULL
44370                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44371                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44372                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44374                                        );
44375 
44376         IF (C_LEVEL_ERROR>= g_log_level) THEN
44377                  trace
44378                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44379                       ,p_level    => C_LEVEL_ERROR
44380                       ,p_module   => l_log_module);
44381         END IF;
44382       END IF;
44383    END IF;
44384    --
44385    --
44386    ------------------------------------------------------------------------------------------------
44387    -- 4219869 Business Flow
44388    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44389    -- Prior Entry.  Currently, the following code is always generated.
44390    ------------------------------------------------------------------------------------------------
44391    XLA_AE_LINES_PKG.ValidateCurrentLine;
44392 
44393    ------------------------------------------------------------------------------------
44394    -- 4219869 Business Flow
44395    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44396    ------------------------------------------------------------------------------------
44397    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44398 
44399    ----------------------------------------------------------------------------------
44400    -- 4219869 Business Flow
44401    -- Update journal entry status -- Need to generate this within IF <condition>
44402    ----------------------------------------------------------------------------------
44403    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44404          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44405          ,p_balance_type_code => l_balance_type_code
44406          );
44407 
44408    -------------------------------------------------------------------------------------------
44409    -- 4262811 - Generate the Accrual Reversal lines
44410    -------------------------------------------------------------------------------------------
44411    BEGIN
44412       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44413                               (g_array_event(p_event_id).array_value_num('header_index'));
44414       IF l_acc_rev_flag IS NULL THEN
44415          l_acc_rev_flag := 'N';
44416       END IF;
44417    EXCEPTION
44418       WHEN OTHERS THEN
44419          l_acc_rev_flag := 'N';
44420    END;
44421    --
44422    IF (l_acc_rev_flag = 'Y') THEN
44423 
44424        -- 4645092  ------------------------------------------------------------------------------
44425        -- To allow MPA report to determine if it should generate report process
44426        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44427        ------------------------------------------------------------------------------------------
44428 
44429        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44430        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44431    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
44432    -- call ADRs
44433    -- Bug 4922099
44434    --
44435    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44436         (NVL(l_actual_upg_option, 'N') = 'O') OR
44437         (NVL(l_enc_upg_option, 'N') = 'O')
44438       )
44439    THEN
44440    NULL;
44441    --
44442    --
44443    
44444   l_ccid := AcctDerRule_29(
44445            p_application_id           => p_application_id
44446          , p_ae_header_id             => l_ae_header_id 
44447 , p_source_32 => p_source_32
44448          , x_transaction_coa_id       => l_adr_transaction_coa_id
44449          , x_accounting_coa_id        => l_adr_accounting_coa_id
44450          , x_value_type_code          => l_adr_value_type_code
44451          , p_side                     => 'NA'
44452    );
44453 
44454    xla_ae_lines_pkg.set_ccid(
44455     p_code_combination_id          => l_ccid
44456   , p_value_type_code              => l_adr_value_type_code
44457   , p_transaction_coa_id           => l_adr_transaction_coa_id
44458   , p_accounting_coa_id            => l_adr_accounting_coa_id
44459   , p_adr_code                     => 'DIST_CCID'
44460   , p_adr_type_code                => 'S'
44461   , p_component_type               => l_component_type
44462   , p_component_code               => l_component_code
44463   , p_component_type_code          => l_component_type_code
44464   , p_component_appl_id            => l_component_appl_id
44465   , p_amb_context_code             => l_amb_context_code
44466   , p_side                         => 'NA'
44467   );
44468 
44469 
44470    --
44471    --
44472    END IF;
44473 
44474        --
44475        -- Update the line information that should be overwritten
44476        --
44477        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
44478                                          p_header_num   => 1);
44479        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
44480 
44481        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
44482 
44486 
44483        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
44484           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
44485        END IF;
44487       --
44488       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
44489       --
44490       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
44491           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
44492       ELSE
44493           ---------------------------------------------------------------------------------------------------
44494           -- 4262811a Switch Sign
44495           ---------------------------------------------------------------------------------------------------
44496           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
44497           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44498                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44499           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
44500                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44501           -- 5132302
44502           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
44503                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
44504 
44505       END IF;
44506 
44507       -- 4955764
44508       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44509       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
44510 
44511 
44512       XLA_AE_LINES_PKG.ValidateCurrentLine;
44513       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44514 
44515       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44516                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
44517                ,p_balance_type_code => l_balance_type_code);
44518 
44519    END IF;
44520 
44521    -----------------------------------------------------------------------------------------
44522    -- 4262811 Multiperiod Accounting
44523    -----------------------------------------------------------------------------------------
44524      -- No MPA option is assigned.
44525 
44526 
44527 END IF;
44528 END IF;
44529 --
44530 
44531 --
44532 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44533    trace
44534       (p_msg      => 'END of AcctLineType_105'
44535       ,p_level    => C_LEVEL_PROCEDURE
44536       ,p_module   => l_log_module);
44537 END IF;
44538 --
44539 EXCEPTION
44540   WHEN xla_exceptions_pkg.application_exception THEN
44541       RAISE;
44542   WHEN OTHERS THEN
44543        xla_exceptions_pkg.raise_message
44544            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_105');
44545 END AcctLineType_105;
44546 --
44547 
44548 ---------------------------------------
44549 --
44550 -- PRIVATE FUNCTION
44551 --         AcctLineType_106
44552 --
44553 ---------------------------------------
44554 PROCEDURE AcctLineType_106 (
44555   p_application_id        IN NUMBER
44556  ,p_event_id              IN NUMBER
44557  ,p_calculate_acctd_flag  IN VARCHAR2
44558  ,p_calculate_g_l_flag    IN VARCHAR2
44559  ,p_actual_flag           IN OUT VARCHAR2
44560  ,p_balance_type_code     OUT VARCHAR2
44561  ,p_gain_or_loss_ref      OUT VARCHAR2
44562  
44563 --Distribution GL Account
44564  , p_source_32            IN NUMBER
44565 --Distribution Source Type
44566  , p_source_39            IN VARCHAR2
44567 --Distribution Line Identifier
44568  , p_source_41            IN NUMBER
44569 --Distribution Type
44570  , p_source_42            IN VARCHAR2
44571 --Entered Amount
44572  , p_source_43            IN NUMBER
44573 --Currency Code
44574  , p_source_44            IN VARCHAR2
44575 --Exchange Rate
44576  , p_source_46            IN NUMBER
44577 --Exchange Rate Type
44578  , p_source_47            IN VARCHAR2
44579 --Applied To Document Accounting Amount
44580  , p_source_48            IN NUMBER
44581 --Distribution Multi Fund Additional Entry
44582  , p_source_99            IN VARCHAR2
44583 --Applied To Document Exchange Date
44584  , p_source_100            IN DATE
44585 )
44586 IS
44587 
44588 l_component_type              VARCHAR2(80);
44589 l_component_code              VARCHAR2(30);
44590 l_component_type_code         VARCHAR2(1);
44591 l_component_appl_id           INTEGER;
44592 l_amb_context_code            VARCHAR2(30);
44593 l_entity_code                 VARCHAR2(30);
44594 l_event_class_code            VARCHAR2(30);
44595 l_ae_header_id                NUMBER;
44596 l_event_type_code             VARCHAR2(30);
44597 l_line_definition_code        VARCHAR2(30);
44598 l_line_definition_owner_code  VARCHAR2(1);
44599 --
44600 -- adr variables
44601 l_segment                     VARCHAR2(30);
44602 l_ccid                        NUMBER;
44603 l_adr_transaction_coa_id      NUMBER;
44604 l_adr_accounting_coa_id       NUMBER;
44605 l_adr_flexfield_segment_code  VARCHAR2(30);
44606 l_adr_flex_value_set_id       NUMBER;
44607 l_adr_value_type_code         VARCHAR2(30);
44608 l_adr_value_combination_id    NUMBER;
44609 l_adr_value_segment_code      VARCHAR2(30);
44610 
44614 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
44611 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
44612 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
44613 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
44615 
44616 -- 4262811 Variables ------------------------------------------------------------------------------------------
44617 l_entered_amt_idx             NUMBER;
44618 l_accted_amt_idx              NUMBER;
44619 l_acc_rev_flag                VARCHAR2(1);
44620 l_accrual_line_num            NUMBER;
44621 l_tmp_amt                     NUMBER;
44622 l_acc_rev_natural_side_code   VARCHAR2(1);
44623 
44624 l_num_entries                 NUMBER;
44625 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
44626 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
44627 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
44628 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
44629 l_recog_line_1                NUMBER;
44630 l_recog_line_2                NUMBER;
44631 
44632 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
44633 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
44634 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
44635 
44636 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
44637 
44638 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
44639 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
44640 
44641 ---------------------------------------------------------------------------------------------------------------
44642 
44643 
44644 --
44645 -- bulk performance
44646 --
44647 l_balance_type_code           VARCHAR2(1);
44648 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
44649 l_log_module                  VARCHAR2(240);
44650 
44651 --
44652 -- Upgrade strategy
44653 --
44654 l_actual_upg_option           VARCHAR2(1);
44655 l_enc_upg_option           VARCHAR2(1);
44656 
44657 --
44658 BEGIN
44659 --
44660 IF g_log_enabled THEN
44661       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_106';
44662 END IF;
44663 --
44664 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
44665 
44666       trace
44667          (p_msg      => 'BEGIN of AcctLineType_106'
44668          ,p_level    => C_LEVEL_PROCEDURE
44669          ,p_module   => l_log_module);
44670 
44671 END IF;
44672 --
44673 l_component_type             := 'AMB_JLT';
44674 l_component_code             := 'MISC_RCT_CASH';
44675 l_component_type_code        := 'S';
44676 l_component_appl_id          :=  222;
44677 l_amb_context_code           := 'DEFAULT';
44678 l_entity_code                := 'RECEIPTS';
44679 l_event_class_code           := 'MISC_RECEIPT';
44680 l_event_type_code            := 'MISC_RECEIPT_ALL';
44681 l_line_definition_owner_code := 'S';
44682 l_line_definition_code       := 'AR_MISC_RECEIPTS';
44683 --
44684 l_balance_type_code          := 'A';
44685 l_segment                     := NULL;
44686 l_ccid                        := NULL;
44687 l_adr_transaction_coa_id      := NULL;
44688 l_adr_accounting_coa_id       := NULL;
44689 l_adr_flexfield_segment_code  := NULL;
44690 l_adr_flex_value_set_id       := NULL;
44691 l_adr_value_type_code         := NULL;
44692 l_adr_value_combination_id    := NULL;
44693 l_adr_value_segment_code      := NULL;
44694 
44695 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
44696 l_bflow_class_code           := '';    -- 4219869 Business Flow
44697 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
44698 l_budgetary_control_flag     := 'N';
44699 
44700 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
44701 l_bflow_applied_to_amt       := NULL; -- 5132302
44702 l_entered_amt_idx            := NULL;          -- 4262811
44703 l_accted_amt_idx             := NULL;          -- 4262811
44704 l_acc_rev_flag               := NULL;          -- 4262811
44705 l_accrual_line_num           := NULL;          -- 4262811
44706 l_tmp_amt                    := NULL;          -- 4262811
44707 --
44708  
44709 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
44710     l_balance_type_code <> 'B' THEN
44711 IF NVL(p_source_39,'
44712 ') =  'CASH' AND 
44713 NVL(p_source_99,'
44714 ') =  'N'
44715  THEN 
44716 
44717    --
44718    XLA_AE_LINES_PKG.SetNewLine;
44719 
44720    p_balance_type_code          := l_balance_type_code;
44721    -- set the flag so later we will know whether the gain loss line needs to be created
44722    
44723    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
44724      p_actual_flag :='A';
44725    END IF;
44726 
44727    --
44728    -- bulk performance
44729    --
44730    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
44731                                       p_header_num   => 0); -- 4262811
44732    --
44733    -- set accounting line options
44734    --
44735    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
44736            p_natural_side_code          => 'C'
44737          , p_gain_or_loss_flag          => 'N'
44738          , p_gl_transfer_mode_code      => 'S'
44742          );
44739          , p_acct_entry_type_code       => 'A'
44740          , p_switch_side_flag           => 'Y'
44741          , p_merge_duplicate_code       => 'A'
44743    --
44744    l_acc_rev_natural_side_code := 'D';  -- 4262811
44745    -- 
44746    --
44747    -- set accounting line type info
44748    --
44749    xla_ae_lines_pkg.SetAcctLineType
44750       (p_component_type             => l_component_type
44751       ,p_event_type_code            => l_event_type_code
44752       ,p_line_definition_owner_code => l_line_definition_owner_code
44753       ,p_line_definition_code       => l_line_definition_code
44754       ,p_accounting_line_code       => l_component_code
44755       ,p_accounting_line_type_code  => l_component_type_code
44756       ,p_accounting_line_appl_id    => l_component_appl_id
44757       ,p_amb_context_code           => l_amb_context_code
44758       ,p_entity_code                => l_entity_code
44759       ,p_event_class_code           => l_event_class_code);
44760    --
44761    -- set accounting class
44762    --
44763    xla_ae_lines_pkg.SetAcctClass(
44764            p_accounting_class_code  => 'CASH'
44765          , p_ae_header_id           => l_ae_header_id
44766          );
44767 
44768    --
44769    -- set rounding class
44770    --
44771    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
44772                       'RECEIVABLE';
44773 
44774    --
44775    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
44776    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
44777    --
44778    -- bulk performance
44779    --
44780    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
44781 
44782    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
44783       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
44784 
44785    -- 4955764
44786    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
44787       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
44788 
44789    -- 4458381 Public Sector Enh
44790    
44791    --
44792    -- set accounting attributes for the line type
44793    --
44794    l_entered_amt_idx := 3;
44795    l_accted_amt_idx  := 8;
44796    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
44797    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
44798    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
44799    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
44800    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
44801    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
44802    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
44803    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
44804    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
44805    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
44806    l_rec_acct_attrs.array_date_value(5)  := p_source_100;
44807    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
44808    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
44809    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
44810    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
44811    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
44812    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
44813 
44814    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
44815    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
44816 
44817    ---------------------------------------------------------------------------------------------------------------
44818    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
44819    ---------------------------------------------------------------------------------------------------------------
44820    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
44821 
44822    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44823    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
44824 
44825    IF xla_accounting_cache_pkg.GetValueChar
44826          (p_source_code         => 'LEDGER_CATEGORY_CODE'
44827          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
44828    AND l_bflow_method_code = 'PRIOR_ENTRY'
44829 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
44830    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
44831          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
44832        )
44836            ,p_business_class_code     => l_bflow_class_code
44833    THEN
44834          xla_ae_lines_pkg.BflowUpgEntry
44835            (p_business_method_code    => l_bflow_method_code
44837            ,p_balance_type            => l_balance_type_code);
44838    ELSE
44839       NULL;
44840 -- No business flow processing for business flow method of NONE.
44841    END IF;
44842 
44843    --
44844    -- call analytical criteria
44845    --
44846    
44847    --
44848    -- call description
44849    --
44850    -- No description or it is inherited.
44851    --
44852    -- call ADRs
44853    -- Bug 4922099
44854    --
44855    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44856         (NVL(l_actual_upg_option, 'N') = 'O') OR
44857         (NVL(l_enc_upg_option, 'N') = 'O')
44858       )
44859    THEN
44860    NULL;
44861    --
44862    --
44863    
44864   l_ccid := AcctDerRule_29(
44865            p_application_id           => p_application_id
44866          , p_ae_header_id             => l_ae_header_id 
44867 , p_source_32 => p_source_32
44868          , x_transaction_coa_id       => l_adr_transaction_coa_id
44869          , x_accounting_coa_id        => l_adr_accounting_coa_id
44870          , x_value_type_code          => l_adr_value_type_code
44871          , p_side                     => 'NA'
44872    );
44873 
44874    xla_ae_lines_pkg.set_ccid(
44875     p_code_combination_id          => l_ccid
44876   , p_value_type_code              => l_adr_value_type_code
44877   , p_transaction_coa_id           => l_adr_transaction_coa_id
44878   , p_accounting_coa_id            => l_adr_accounting_coa_id
44879   , p_adr_code                     => 'DIST_CCID'
44880   , p_adr_type_code                => 'S'
44881   , p_component_type               => l_component_type
44882   , p_component_code               => l_component_code
44883   , p_component_type_code          => l_component_type_code
44884   , p_component_appl_id            => l_component_appl_id
44885   , p_amb_context_code             => l_amb_context_code
44886   , p_side                         => 'NA'
44887   );
44888 
44889 
44890    --
44891    --
44892    END IF;
44893    --
44894    -- Bug 4922099
44895    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
44896           (NVL(l_enc_upg_option, 'N') = 'O')
44897         ) AND
44898         (l_bflow_method_code = 'PRIOR_ENTRY')
44899       )
44900    THEN
44901       IF
44902       --
44903       1 = 2
44904       --
44905       THEN
44906       xla_accounting_err_pkg.build_message
44907                                     (p_appli_s_name            => 'XLA'
44908                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44909                                     ,p_token_1                 => 'LINE_NUMBER'
44910                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
44911                                     ,p_token_2                 => 'LINE_TYPE_NAME'
44912                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
44913                                                                              l_component_type
44914                                                                             ,l_component_code
44915                                                                             ,l_component_type_code
44916                                                                             ,l_component_appl_id
44917                                                                             ,l_amb_context_code
44918                                                                             ,l_entity_code
44919                                                                             ,l_event_class_code
44920                                                                            )
44921                                     ,p_token_3                 => 'OWNER'
44922                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
44923                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
44924                                                                           ,p_lookup_code    => l_component_type_code
44925                                                                          )
44926                                     ,p_token_4                 => 'PRODUCT_NAME'
44927                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
44928                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
44929                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
44930                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
44931                                     ,p_ae_header_id            =>  NULL
44932                                        );
44933 
44937                       ,p_level    => C_LEVEL_ERROR
44934         IF (C_LEVEL_ERROR>= g_log_level) THEN
44935                  trace
44936                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
44938                       ,p_module   => l_log_module);
44939         END IF;
44940       END IF;
44941    END IF;
44942    --
44943    --
44944    ------------------------------------------------------------------------------------------------
44945    -- 4219869 Business Flow
44946    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
44947    -- Prior Entry.  Currently, the following code is always generated.
44948    ------------------------------------------------------------------------------------------------
44949    XLA_AE_LINES_PKG.ValidateCurrentLine;
44950 
44951    ------------------------------------------------------------------------------------
44952    -- 4219869 Business Flow
44953    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
44954    ------------------------------------------------------------------------------------
44955    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
44956 
44957    ----------------------------------------------------------------------------------
44958    -- 4219869 Business Flow
44959    -- Update journal entry status -- Need to generate this within IF <condition>
44960    ----------------------------------------------------------------------------------
44961    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
44962          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
44963          ,p_balance_type_code => l_balance_type_code
44964          );
44965 
44966    -------------------------------------------------------------------------------------------
44967    -- 4262811 - Generate the Accrual Reversal lines
44968    -------------------------------------------------------------------------------------------
44969    BEGIN
44970       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
44971                               (g_array_event(p_event_id).array_value_num('header_index'));
44972       IF l_acc_rev_flag IS NULL THEN
44973          l_acc_rev_flag := 'N';
44974       END IF;
44975    EXCEPTION
44976       WHEN OTHERS THEN
44977          l_acc_rev_flag := 'N';
44978    END;
44979    --
44980    IF (l_acc_rev_flag = 'Y') THEN
44981 
44982        -- 4645092  ------------------------------------------------------------------------------
44983        -- To allow MPA report to determine if it should generate report process
44984        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
44985        ------------------------------------------------------------------------------------------
44986 
44987        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
44988        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
44989    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
44990    -- call ADRs
44991    -- Bug 4922099
44992    --
44993    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
44994         (NVL(l_actual_upg_option, 'N') = 'O') OR
44995         (NVL(l_enc_upg_option, 'N') = 'O')
44996       )
44997    THEN
44998    NULL;
44999    --
45000    --
45001    
45002   l_ccid := AcctDerRule_29(
45003            p_application_id           => p_application_id
45004          , p_ae_header_id             => l_ae_header_id 
45005 , p_source_32 => p_source_32
45006          , x_transaction_coa_id       => l_adr_transaction_coa_id
45007          , x_accounting_coa_id        => l_adr_accounting_coa_id
45008          , x_value_type_code          => l_adr_value_type_code
45009          , p_side                     => 'NA'
45010    );
45011 
45012    xla_ae_lines_pkg.set_ccid(
45013     p_code_combination_id          => l_ccid
45014   , p_value_type_code              => l_adr_value_type_code
45015   , p_transaction_coa_id           => l_adr_transaction_coa_id
45016   , p_accounting_coa_id            => l_adr_accounting_coa_id
45017   , p_adr_code                     => 'DIST_CCID'
45018   , p_adr_type_code                => 'S'
45019   , p_component_type               => l_component_type
45020   , p_component_code               => l_component_code
45021   , p_component_type_code          => l_component_type_code
45022   , p_component_appl_id            => l_component_appl_id
45023   , p_amb_context_code             => l_amb_context_code
45024   , p_side                         => 'NA'
45025   );
45026 
45027 
45028    --
45029    --
45030    END IF;
45031 
45032        --
45033        -- Update the line information that should be overwritten
45034        --
45035        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45036                                          p_header_num   => 1);
45037        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45038 
45039        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45040 
45041        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45042           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45043        END IF;
45044 
45045       --
45046       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45047       --
45048       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45049           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45053           ---------------------------------------------------------------------------------------------------
45050       ELSE
45051           ---------------------------------------------------------------------------------------------------
45052           -- 4262811a Switch Sign
45054           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45055           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45056                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45057           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45058                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45059           -- 5132302
45060           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45061                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45062 
45063       END IF;
45064 
45065       -- 4955764
45066       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45067       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45068 
45069 
45070       XLA_AE_LINES_PKG.ValidateCurrentLine;
45071       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45072 
45073       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45074                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45075                ,p_balance_type_code => l_balance_type_code);
45076 
45077    END IF;
45078 
45079    -----------------------------------------------------------------------------------------
45080    -- 4262811 Multiperiod Accounting
45081    -----------------------------------------------------------------------------------------
45082      -- No MPA option is assigned.
45083 
45084 
45085 END IF;
45086 END IF;
45087 --
45088 
45089 --
45090 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45091    trace
45092       (p_msg      => 'END of AcctLineType_106'
45093       ,p_level    => C_LEVEL_PROCEDURE
45094       ,p_module   => l_log_module);
45095 END IF;
45096 --
45097 EXCEPTION
45098   WHEN xla_exceptions_pkg.application_exception THEN
45099       RAISE;
45100   WHEN OTHERS THEN
45101        xla_exceptions_pkg.raise_message
45102            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_106');
45103 END AcctLineType_106;
45104 --
45105 
45106 ---------------------------------------
45107 --
45108 -- PRIVATE FUNCTION
45109 --         AcctLineType_107
45110 --
45111 ---------------------------------------
45112 PROCEDURE AcctLineType_107 (
45113   p_application_id        IN NUMBER
45114  ,p_event_id              IN NUMBER
45115  ,p_calculate_acctd_flag  IN VARCHAR2
45116  ,p_calculate_g_l_flag    IN VARCHAR2
45117  ,p_actual_flag           IN OUT VARCHAR2
45118  ,p_balance_type_code     OUT VARCHAR2
45119  ,p_gain_or_loss_ref      OUT VARCHAR2
45120  
45121 --Distribution GL Account
45122  , p_source_32            IN NUMBER
45123 --Distribution Source Type
45124  , p_source_39            IN VARCHAR2
45125 --Distribution Line Identifier
45126  , p_source_41            IN NUMBER
45127 --Distribution Type
45128  , p_source_42            IN VARCHAR2
45129 --Entered Amount
45130  , p_source_43            IN NUMBER
45131 --Currency Code
45132  , p_source_44            IN VARCHAR2
45133 --Exchange Rate
45134  , p_source_46            IN NUMBER
45135 --Exchange Rate Type
45136  , p_source_47            IN VARCHAR2
45137 --Applied To Document Accounting Amount
45138  , p_source_48            IN NUMBER
45139 --Distribution Multi Fund Additional Entry
45140  , p_source_99            IN VARCHAR2
45141 --Applied To Document Exchange Date
45142  , p_source_100            IN DATE
45143 )
45144 IS
45145 
45146 l_component_type              VARCHAR2(80);
45147 l_component_code              VARCHAR2(30);
45148 l_component_type_code         VARCHAR2(1);
45149 l_component_appl_id           INTEGER;
45150 l_amb_context_code            VARCHAR2(30);
45151 l_entity_code                 VARCHAR2(30);
45152 l_event_class_code            VARCHAR2(30);
45153 l_ae_header_id                NUMBER;
45154 l_event_type_code             VARCHAR2(30);
45155 l_line_definition_code        VARCHAR2(30);
45156 l_line_definition_owner_code  VARCHAR2(1);
45157 --
45158 -- adr variables
45159 l_segment                     VARCHAR2(30);
45160 l_ccid                        NUMBER;
45161 l_adr_transaction_coa_id      NUMBER;
45162 l_adr_accounting_coa_id       NUMBER;
45163 l_adr_flexfield_segment_code  VARCHAR2(30);
45164 l_adr_flex_value_set_id       NUMBER;
45165 l_adr_value_type_code         VARCHAR2(30);
45166 l_adr_value_combination_id    NUMBER;
45167 l_adr_value_segment_code      VARCHAR2(30);
45168 
45169 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45170 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45171 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45172 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45173 
45174 -- 4262811 Variables ------------------------------------------------------------------------------------------
45175 l_entered_amt_idx             NUMBER;
45176 l_accted_amt_idx              NUMBER;
45177 l_acc_rev_flag                VARCHAR2(1);
45181 
45178 l_accrual_line_num            NUMBER;
45179 l_tmp_amt                     NUMBER;
45180 l_acc_rev_natural_side_code   VARCHAR2(1);
45182 l_num_entries                 NUMBER;
45183 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45184 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45185 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45186 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45187 l_recog_line_1                NUMBER;
45188 l_recog_line_2                NUMBER;
45189 
45190 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45191 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45192 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45193 
45194 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45195 
45196 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45197 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45198 
45199 ---------------------------------------------------------------------------------------------------------------
45200 
45201 
45202 --
45203 -- bulk performance
45204 --
45205 l_balance_type_code           VARCHAR2(1);
45206 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45207 l_log_module                  VARCHAR2(240);
45208 
45209 --
45210 -- Upgrade strategy
45211 --
45212 l_actual_upg_option           VARCHAR2(1);
45213 l_enc_upg_option           VARCHAR2(1);
45214 
45215 --
45216 BEGIN
45217 --
45218 IF g_log_enabled THEN
45219       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_107';
45220 END IF;
45221 --
45222 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45223 
45224       trace
45225          (p_msg      => 'BEGIN of AcctLineType_107'
45226          ,p_level    => C_LEVEL_PROCEDURE
45227          ,p_module   => l_log_module);
45228 
45229 END IF;
45230 --
45231 l_component_type             := 'AMB_JLT';
45232 l_component_code             := 'MISC_RCT_CONFIRM';
45233 l_component_type_code        := 'S';
45234 l_component_appl_id          :=  222;
45235 l_amb_context_code           := 'DEFAULT';
45236 l_entity_code                := 'RECEIPTS';
45237 l_event_class_code           := 'MISC_RECEIPT';
45238 l_event_type_code            := 'MISC_RECEIPT_ALL';
45239 l_line_definition_owner_code := 'S';
45240 l_line_definition_code       := 'AR_MISC_RECEIPTS';
45241 --
45242 l_balance_type_code          := 'A';
45243 l_segment                     := NULL;
45244 l_ccid                        := NULL;
45245 l_adr_transaction_coa_id      := NULL;
45246 l_adr_accounting_coa_id       := NULL;
45247 l_adr_flexfield_segment_code  := NULL;
45248 l_adr_flex_value_set_id       := NULL;
45249 l_adr_value_type_code         := NULL;
45250 l_adr_value_combination_id    := NULL;
45251 l_adr_value_segment_code      := NULL;
45252 
45253 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45254 l_bflow_class_code           := '';    -- 4219869 Business Flow
45255 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45256 l_budgetary_control_flag     := 'N';
45257 
45258 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45259 l_bflow_applied_to_amt       := NULL; -- 5132302
45260 l_entered_amt_idx            := NULL;          -- 4262811
45261 l_accted_amt_idx             := NULL;          -- 4262811
45262 l_acc_rev_flag               := NULL;          -- 4262811
45263 l_accrual_line_num           := NULL;          -- 4262811
45264 l_tmp_amt                    := NULL;          -- 4262811
45265 --
45266  
45267 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45268     l_balance_type_code <> 'B' THEN
45269 IF NVL(p_source_39,'
45270 ') =  'CONFIRMATION' AND 
45271 NVL(p_source_99,'
45272 ') =  'N'
45273  THEN 
45274 
45275    --
45276    XLA_AE_LINES_PKG.SetNewLine;
45277 
45278    p_balance_type_code          := l_balance_type_code;
45279    -- set the flag so later we will know whether the gain loss line needs to be created
45280    
45281    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45282      p_actual_flag :='A';
45283    END IF;
45284 
45285    --
45286    -- bulk performance
45287    --
45288    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45289                                       p_header_num   => 0); -- 4262811
45290    --
45291    -- set accounting line options
45292    --
45293    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45294            p_natural_side_code          => 'C'
45295          , p_gain_or_loss_flag          => 'N'
45296          , p_gl_transfer_mode_code      => 'S'
45297          , p_acct_entry_type_code       => 'A'
45298          , p_switch_side_flag           => 'Y'
45299          , p_merge_duplicate_code       => 'A'
45300          );
45301    --
45302    l_acc_rev_natural_side_code := 'D';  -- 4262811
45303    -- 
45304    --
45305    -- set accounting line type info
45306    --
45307    xla_ae_lines_pkg.SetAcctLineType
45308       (p_component_type             => l_component_type
45309       ,p_event_type_code            => l_event_type_code
45310       ,p_line_definition_owner_code => l_line_definition_owner_code
45314       ,p_accounting_line_appl_id    => l_component_appl_id
45311       ,p_line_definition_code       => l_line_definition_code
45312       ,p_accounting_line_code       => l_component_code
45313       ,p_accounting_line_type_code  => l_component_type_code
45315       ,p_amb_context_code           => l_amb_context_code
45316       ,p_entity_code                => l_entity_code
45317       ,p_event_class_code           => l_event_class_code);
45318    --
45319    -- set accounting class
45320    --
45321    xla_ae_lines_pkg.SetAcctClass(
45322            p_accounting_class_code  => 'CONFIRMATION'
45323          , p_ae_header_id           => l_ae_header_id
45324          );
45325 
45326    --
45327    -- set rounding class
45328    --
45329    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45330                       'RECEIVABLE';
45331 
45332    --
45333    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45334    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45335    --
45336    -- bulk performance
45337    --
45338    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45339 
45340    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45341       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45342 
45343    -- 4955764
45344    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45345       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45346 
45347    -- 4458381 Public Sector Enh
45348    
45349    --
45350    -- set accounting attributes for the line type
45351    --
45352    l_entered_amt_idx := 3;
45353    l_accted_amt_idx  := 8;
45354    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45355    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45356    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
45357    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45358    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
45359    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45360    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
45361    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45362    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
45363    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45364    l_rec_acct_attrs.array_date_value(5)  := p_source_100;
45365    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45366    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
45367    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45368    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
45369    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45370    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
45371 
45372    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45373    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45374 
45375    ---------------------------------------------------------------------------------------------------------------
45376    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45377    ---------------------------------------------------------------------------------------------------------------
45378    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45379 
45380    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45381    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45382 
45383    IF xla_accounting_cache_pkg.GetValueChar
45384          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45385          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45386    AND l_bflow_method_code = 'PRIOR_ENTRY'
45387 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45388    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45389          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45390        )
45391    THEN
45392          xla_ae_lines_pkg.BflowUpgEntry
45393            (p_business_method_code    => l_bflow_method_code
45394            ,p_business_class_code     => l_bflow_class_code
45395            ,p_balance_type            => l_balance_type_code);
45396    ELSE
45397       NULL;
45398 -- No business flow processing for business flow method of NONE.
45399    END IF;
45400 
45401    --
45402    -- call analytical criteria
45403    --
45404    
45405    --
45406    -- call description
45407    --
45408    -- No description or it is inherited.
45409    --
45410    -- call ADRs
45411    -- Bug 4922099
45412    --
45413    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45414         (NVL(l_actual_upg_option, 'N') = 'O') OR
45415         (NVL(l_enc_upg_option, 'N') = 'O')
45416       )
45417    THEN
45418    NULL;
45419    --
45420    --
45421    
45422   l_ccid := AcctDerRule_29(
45423            p_application_id           => p_application_id
45424          , p_ae_header_id             => l_ae_header_id 
45425 , p_source_32 => p_source_32
45429          , p_side                     => 'NA'
45426          , x_transaction_coa_id       => l_adr_transaction_coa_id
45427          , x_accounting_coa_id        => l_adr_accounting_coa_id
45428          , x_value_type_code          => l_adr_value_type_code
45430    );
45431 
45432    xla_ae_lines_pkg.set_ccid(
45433     p_code_combination_id          => l_ccid
45434   , p_value_type_code              => l_adr_value_type_code
45435   , p_transaction_coa_id           => l_adr_transaction_coa_id
45436   , p_accounting_coa_id            => l_adr_accounting_coa_id
45437   , p_adr_code                     => 'DIST_CCID'
45438   , p_adr_type_code                => 'S'
45439   , p_component_type               => l_component_type
45440   , p_component_code               => l_component_code
45441   , p_component_type_code          => l_component_type_code
45442   , p_component_appl_id            => l_component_appl_id
45443   , p_amb_context_code             => l_amb_context_code
45444   , p_side                         => 'NA'
45445   );
45446 
45447 
45448    --
45449    --
45450    END IF;
45451    --
45452    -- Bug 4922099
45453    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
45454           (NVL(l_enc_upg_option, 'N') = 'O')
45455         ) AND
45456         (l_bflow_method_code = 'PRIOR_ENTRY')
45457       )
45458    THEN
45459       IF
45460       --
45461       1 = 2
45462       --
45463       THEN
45464       xla_accounting_err_pkg.build_message
45465                                     (p_appli_s_name            => 'XLA'
45466                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45467                                     ,p_token_1                 => 'LINE_NUMBER'
45468                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
45469                                     ,p_token_2                 => 'LINE_TYPE_NAME'
45470                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
45471                                                                              l_component_type
45472                                                                             ,l_component_code
45473                                                                             ,l_component_type_code
45474                                                                             ,l_component_appl_id
45475                                                                             ,l_amb_context_code
45476                                                                             ,l_entity_code
45477                                                                             ,l_event_class_code
45478                                                                            )
45479                                     ,p_token_3                 => 'OWNER'
45480                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
45481                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
45482                                                                           ,p_lookup_code    => l_component_type_code
45483                                                                          )
45484                                     ,p_token_4                 => 'PRODUCT_NAME'
45485                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
45486                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
45487                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
45488                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
45489                                     ,p_ae_header_id            =>  NULL
45490                                        );
45491 
45492         IF (C_LEVEL_ERROR>= g_log_level) THEN
45493                  trace
45494                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
45495                       ,p_level    => C_LEVEL_ERROR
45496                       ,p_module   => l_log_module);
45497         END IF;
45498       END IF;
45499    END IF;
45500    --
45501    --
45502    ------------------------------------------------------------------------------------------------
45503    -- 4219869 Business Flow
45504    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
45505    -- Prior Entry.  Currently, the following code is always generated.
45506    ------------------------------------------------------------------------------------------------
45507    XLA_AE_LINES_PKG.ValidateCurrentLine;
45508 
45509    ------------------------------------------------------------------------------------
45510    -- 4219869 Business Flow
45511    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
45512    ------------------------------------------------------------------------------------
45513    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45514 
45515    ----------------------------------------------------------------------------------
45516    -- 4219869 Business Flow
45517    -- Update journal entry status -- Need to generate this within IF <condition>
45518    ----------------------------------------------------------------------------------
45519    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45520          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
45521          ,p_balance_type_code => l_balance_type_code
45522          );
45523 
45527    BEGIN
45524    -------------------------------------------------------------------------------------------
45525    -- 4262811 - Generate the Accrual Reversal lines
45526    -------------------------------------------------------------------------------------------
45528       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
45529                               (g_array_event(p_event_id).array_value_num('header_index'));
45530       IF l_acc_rev_flag IS NULL THEN
45531          l_acc_rev_flag := 'N';
45532       END IF;
45533    EXCEPTION
45534       WHEN OTHERS THEN
45535          l_acc_rev_flag := 'N';
45536    END;
45537    --
45538    IF (l_acc_rev_flag = 'Y') THEN
45539 
45540        -- 4645092  ------------------------------------------------------------------------------
45541        -- To allow MPA report to determine if it should generate report process
45542        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
45543        ------------------------------------------------------------------------------------------
45544 
45545        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
45546        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
45547    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
45548    -- call ADRs
45549    -- Bug 4922099
45550    --
45551    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45552         (NVL(l_actual_upg_option, 'N') = 'O') OR
45553         (NVL(l_enc_upg_option, 'N') = 'O')
45554       )
45555    THEN
45556    NULL;
45557    --
45558    --
45559    
45560   l_ccid := AcctDerRule_29(
45561            p_application_id           => p_application_id
45562          , p_ae_header_id             => l_ae_header_id 
45563 , p_source_32 => p_source_32
45564          , x_transaction_coa_id       => l_adr_transaction_coa_id
45565          , x_accounting_coa_id        => l_adr_accounting_coa_id
45566          , x_value_type_code          => l_adr_value_type_code
45567          , p_side                     => 'NA'
45568    );
45569 
45570    xla_ae_lines_pkg.set_ccid(
45571     p_code_combination_id          => l_ccid
45572   , p_value_type_code              => l_adr_value_type_code
45573   , p_transaction_coa_id           => l_adr_transaction_coa_id
45574   , p_accounting_coa_id            => l_adr_accounting_coa_id
45575   , p_adr_code                     => 'DIST_CCID'
45576   , p_adr_type_code                => 'S'
45577   , p_component_type               => l_component_type
45578   , p_component_code               => l_component_code
45579   , p_component_type_code          => l_component_type_code
45580   , p_component_appl_id            => l_component_appl_id
45581   , p_amb_context_code             => l_amb_context_code
45582   , p_side                         => 'NA'
45583   );
45584 
45585 
45586    --
45587    --
45588    END IF;
45589 
45590        --
45591        -- Update the line information that should be overwritten
45592        --
45593        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
45594                                          p_header_num   => 1);
45595        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
45596 
45597        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
45598 
45599        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
45600           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
45601        END IF;
45602 
45603       --
45604       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
45605       --
45606       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
45607           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
45608       ELSE
45609           ---------------------------------------------------------------------------------------------------
45610           -- 4262811a Switch Sign
45611           ---------------------------------------------------------------------------------------------------
45612           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
45613           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45614                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45615           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
45616                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45617           -- 5132302
45618           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
45619                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
45620 
45621       END IF;
45622 
45623       -- 4955764
45624       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45625       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
45626 
45627 
45628       XLA_AE_LINES_PKG.ValidateCurrentLine;
45629       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
45630 
45631       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
45632                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
45633                ,p_balance_type_code => l_balance_type_code);
45634 
45638    -- 4262811 Multiperiod Accounting
45635    END IF;
45636 
45637    -----------------------------------------------------------------------------------------
45639    -----------------------------------------------------------------------------------------
45640      -- No MPA option is assigned.
45641 
45642 
45643 END IF;
45644 END IF;
45645 --
45646 
45647 --
45648 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45649    trace
45650       (p_msg      => 'END of AcctLineType_107'
45651       ,p_level    => C_LEVEL_PROCEDURE
45652       ,p_module   => l_log_module);
45653 END IF;
45654 --
45655 EXCEPTION
45656   WHEN xla_exceptions_pkg.application_exception THEN
45657       RAISE;
45658   WHEN OTHERS THEN
45659        xla_exceptions_pkg.raise_message
45660            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_107');
45661 END AcctLineType_107;
45662 --
45663 
45664 ---------------------------------------
45665 --
45666 -- PRIVATE FUNCTION
45667 --         AcctLineType_108
45668 --
45669 ---------------------------------------
45670 PROCEDURE AcctLineType_108 (
45671   p_application_id        IN NUMBER
45672  ,p_event_id              IN NUMBER
45673  ,p_calculate_acctd_flag  IN VARCHAR2
45674  ,p_calculate_g_l_flag    IN VARCHAR2
45675  ,p_actual_flag           IN OUT VARCHAR2
45676  ,p_balance_type_code     OUT VARCHAR2
45677  ,p_gain_or_loss_ref      OUT VARCHAR2
45678  
45679 --Distribution GL Account
45680  , p_source_32            IN NUMBER
45681 --Distribution Source Type
45682  , p_source_39            IN VARCHAR2
45683 --Distribution Line Identifier
45684  , p_source_41            IN NUMBER
45685 --Distribution Type
45686  , p_source_42            IN VARCHAR2
45687 --Entered Amount
45688  , p_source_43            IN NUMBER
45689 --Currency Code
45690  , p_source_44            IN VARCHAR2
45691 --Exchange Rate
45692  , p_source_46            IN NUMBER
45693 --Exchange Rate Type
45694  , p_source_47            IN VARCHAR2
45695 --Applied To Document Accounting Amount
45696  , p_source_48            IN NUMBER
45697 --Distribution Multi Fund Additional Entry
45698  , p_source_99            IN VARCHAR2
45699 --Applied To Document Exchange Date
45700  , p_source_100            IN DATE
45701 )
45702 IS
45703 
45704 l_component_type              VARCHAR2(80);
45705 l_component_code              VARCHAR2(30);
45706 l_component_type_code         VARCHAR2(1);
45707 l_component_appl_id           INTEGER;
45708 l_amb_context_code            VARCHAR2(30);
45709 l_entity_code                 VARCHAR2(30);
45710 l_event_class_code            VARCHAR2(30);
45711 l_ae_header_id                NUMBER;
45712 l_event_type_code             VARCHAR2(30);
45713 l_line_definition_code        VARCHAR2(30);
45714 l_line_definition_owner_code  VARCHAR2(1);
45715 --
45716 -- adr variables
45717 l_segment                     VARCHAR2(30);
45718 l_ccid                        NUMBER;
45719 l_adr_transaction_coa_id      NUMBER;
45720 l_adr_accounting_coa_id       NUMBER;
45721 l_adr_flexfield_segment_code  VARCHAR2(30);
45722 l_adr_flex_value_set_id       NUMBER;
45723 l_adr_value_type_code         VARCHAR2(30);
45724 l_adr_value_combination_id    NUMBER;
45725 l_adr_value_segment_code      VARCHAR2(30);
45726 
45727 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
45728 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
45729 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
45730 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
45731 
45732 -- 4262811 Variables ------------------------------------------------------------------------------------------
45733 l_entered_amt_idx             NUMBER;
45734 l_accted_amt_idx              NUMBER;
45735 l_acc_rev_flag                VARCHAR2(1);
45736 l_accrual_line_num            NUMBER;
45737 l_tmp_amt                     NUMBER;
45738 l_acc_rev_natural_side_code   VARCHAR2(1);
45739 
45740 l_num_entries                 NUMBER;
45741 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
45742 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
45743 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
45744 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
45745 l_recog_line_1                NUMBER;
45746 l_recog_line_2                NUMBER;
45747 
45748 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
45749 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
45750 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
45751 
45752 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
45753 
45754 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
45755 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
45756 
45757 ---------------------------------------------------------------------------------------------------------------
45758 
45759 
45760 --
45761 -- bulk performance
45762 --
45763 l_balance_type_code           VARCHAR2(1);
45764 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
45765 l_log_module                  VARCHAR2(240);
45766 
45767 --
45768 -- Upgrade strategy
45769 --
45770 l_actual_upg_option           VARCHAR2(1);
45771 l_enc_upg_option           VARCHAR2(1);
45775 --
45772 
45773 --
45774 BEGIN
45776 IF g_log_enabled THEN
45777       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_108';
45778 END IF;
45779 --
45780 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
45781 
45782       trace
45783          (p_msg      => 'BEGIN of AcctLineType_108'
45784          ,p_level    => C_LEVEL_PROCEDURE
45785          ,p_module   => l_log_module);
45786 
45787 END IF;
45788 --
45789 l_component_type             := 'AMB_JLT';
45790 l_component_code             := 'MISC_RCT_DEBT';
45791 l_component_type_code        := 'S';
45792 l_component_appl_id          :=  222;
45793 l_amb_context_code           := 'DEFAULT';
45794 l_entity_code                := 'RECEIPTS';
45795 l_event_class_code           := 'MISC_RECEIPT';
45796 l_event_type_code            := 'MISC_RECEIPT_ALL';
45797 l_line_definition_owner_code := 'S';
45798 l_line_definition_code       := 'AR_MISC_RECEIPTS';
45799 --
45800 l_balance_type_code          := 'A';
45801 l_segment                     := NULL;
45802 l_ccid                        := NULL;
45803 l_adr_transaction_coa_id      := NULL;
45804 l_adr_accounting_coa_id       := NULL;
45805 l_adr_flexfield_segment_code  := NULL;
45806 l_adr_flex_value_set_id       := NULL;
45807 l_adr_value_type_code         := NULL;
45808 l_adr_value_combination_id    := NULL;
45809 l_adr_value_segment_code      := NULL;
45810 
45811 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
45812 l_bflow_class_code           := '';    -- 4219869 Business Flow
45813 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
45814 l_budgetary_control_flag     := 'N';
45815 
45816 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
45817 l_bflow_applied_to_amt       := NULL; -- 5132302
45818 l_entered_amt_idx            := NULL;          -- 4262811
45819 l_accted_amt_idx             := NULL;          -- 4262811
45820 l_acc_rev_flag               := NULL;          -- 4262811
45821 l_accrual_line_num           := NULL;          -- 4262811
45822 l_tmp_amt                    := NULL;          -- 4262811
45823 --
45824  
45825 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
45826     l_balance_type_code <> 'B' THEN
45827 IF NVL(p_source_39,'
45828 ') =  'SHORT_TERM_DEBT' AND 
45829 NVL(p_source_99,'
45830 ') =  'N'
45831  THEN 
45832 
45833    --
45834    XLA_AE_LINES_PKG.SetNewLine;
45835 
45836    p_balance_type_code          := l_balance_type_code;
45837    -- set the flag so later we will know whether the gain loss line needs to be created
45838    
45839    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
45840      p_actual_flag :='A';
45841    END IF;
45842 
45843    --
45844    -- bulk performance
45845    --
45846    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
45847                                       p_header_num   => 0); -- 4262811
45848    --
45849    -- set accounting line options
45850    --
45851    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
45852            p_natural_side_code          => 'C'
45853          , p_gain_or_loss_flag          => 'N'
45854          , p_gl_transfer_mode_code      => 'S'
45855          , p_acct_entry_type_code       => 'A'
45856          , p_switch_side_flag           => 'Y'
45857          , p_merge_duplicate_code       => 'A'
45858          );
45859    --
45860    l_acc_rev_natural_side_code := 'D';  -- 4262811
45861    -- 
45862    --
45863    -- set accounting line type info
45864    --
45865    xla_ae_lines_pkg.SetAcctLineType
45866       (p_component_type             => l_component_type
45867       ,p_event_type_code            => l_event_type_code
45868       ,p_line_definition_owner_code => l_line_definition_owner_code
45869       ,p_line_definition_code       => l_line_definition_code
45870       ,p_accounting_line_code       => l_component_code
45871       ,p_accounting_line_type_code  => l_component_type_code
45872       ,p_accounting_line_appl_id    => l_component_appl_id
45873       ,p_amb_context_code           => l_amb_context_code
45874       ,p_entity_code                => l_entity_code
45875       ,p_event_class_code           => l_event_class_code);
45876    --
45877    -- set accounting class
45878    --
45879    xla_ae_lines_pkg.SetAcctClass(
45880            p_accounting_class_code  => 'SHORT_TERM_DEBT'
45881          , p_ae_header_id           => l_ae_header_id
45882          );
45883 
45884    --
45885    -- set rounding class
45886    --
45887    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
45888                       'RECEIVABLE';
45889 
45890    --
45891    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
45892    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
45893    --
45894    -- bulk performance
45895    --
45896    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
45897 
45898    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
45899       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
45900 
45901    -- 4955764
45902    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
45906    
45903       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
45904 
45905    -- 4458381 Public Sector Enh
45907    --
45908    -- set accounting attributes for the line type
45909    --
45910    l_entered_amt_idx := 3;
45911    l_accted_amt_idx  := 8;
45912    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
45913    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
45914    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
45915    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
45916    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
45917    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
45918    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
45919    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
45920    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
45921    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
45922    l_rec_acct_attrs.array_date_value(5)  := p_source_100;
45923    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
45924    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
45925    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
45926    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
45927    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
45928    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
45929 
45930    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
45931    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
45932 
45933    ---------------------------------------------------------------------------------------------------------------
45934    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
45935    ---------------------------------------------------------------------------------------------------------------
45936    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
45937 
45938    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45939    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
45940 
45941    IF xla_accounting_cache_pkg.GetValueChar
45942          (p_source_code         => 'LEDGER_CATEGORY_CODE'
45943          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
45944    AND l_bflow_method_code = 'PRIOR_ENTRY'
45945 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
45946    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
45947          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
45948        )
45949    THEN
45950          xla_ae_lines_pkg.BflowUpgEntry
45951            (p_business_method_code    => l_bflow_method_code
45952            ,p_business_class_code     => l_bflow_class_code
45953            ,p_balance_type            => l_balance_type_code);
45954    ELSE
45955       NULL;
45956 -- No business flow processing for business flow method of NONE.
45957    END IF;
45958 
45959    --
45960    -- call analytical criteria
45961    --
45962    
45963    --
45964    -- call description
45965    --
45966    -- No description or it is inherited.
45967    --
45968    -- call ADRs
45969    -- Bug 4922099
45970    --
45971    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
45972         (NVL(l_actual_upg_option, 'N') = 'O') OR
45973         (NVL(l_enc_upg_option, 'N') = 'O')
45974       )
45975    THEN
45976    NULL;
45977    --
45978    --
45979    
45980   l_ccid := AcctDerRule_29(
45981            p_application_id           => p_application_id
45982          , p_ae_header_id             => l_ae_header_id 
45983 , p_source_32 => p_source_32
45984          , x_transaction_coa_id       => l_adr_transaction_coa_id
45985          , x_accounting_coa_id        => l_adr_accounting_coa_id
45986          , x_value_type_code          => l_adr_value_type_code
45987          , p_side                     => 'NA'
45988    );
45989 
45990    xla_ae_lines_pkg.set_ccid(
45991     p_code_combination_id          => l_ccid
45992   , p_value_type_code              => l_adr_value_type_code
45993   , p_transaction_coa_id           => l_adr_transaction_coa_id
45994   , p_accounting_coa_id            => l_adr_accounting_coa_id
45995   , p_adr_code                     => 'DIST_CCID'
45996   , p_adr_type_code                => 'S'
45997   , p_component_type               => l_component_type
45998   , p_component_code               => l_component_code
45999   , p_component_type_code          => l_component_type_code
46000   , p_component_appl_id            => l_component_appl_id
46001   , p_amb_context_code             => l_amb_context_code
46002   , p_side                         => 'NA'
46003   );
46004 
46005 
46006    --
46007    --
46008    END IF;
46009    --
46010    -- Bug 4922099
46011    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46012           (NVL(l_enc_upg_option, 'N') = 'O')
46013         ) AND
46014         (l_bflow_method_code = 'PRIOR_ENTRY')
46015       )
46016    THEN
46017       IF
46018       --
46019       1 = 2
46020       --
46021       THEN
46022       xla_accounting_err_pkg.build_message
46023                                     (p_appli_s_name            => 'XLA'
46027                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46024                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46025                                     ,p_token_1                 => 'LINE_NUMBER'
46026                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46028                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46029                                                                              l_component_type
46030                                                                             ,l_component_code
46031                                                                             ,l_component_type_code
46032                                                                             ,l_component_appl_id
46033                                                                             ,l_amb_context_code
46034                                                                             ,l_entity_code
46035                                                                             ,l_event_class_code
46036                                                                            )
46037                                     ,p_token_3                 => 'OWNER'
46038                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46039                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46040                                                                           ,p_lookup_code    => l_component_type_code
46041                                                                          )
46042                                     ,p_token_4                 => 'PRODUCT_NAME'
46043                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46044                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46045                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46046                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46047                                     ,p_ae_header_id            =>  NULL
46048                                        );
46049 
46050         IF (C_LEVEL_ERROR>= g_log_level) THEN
46051                  trace
46052                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46053                       ,p_level    => C_LEVEL_ERROR
46054                       ,p_module   => l_log_module);
46055         END IF;
46056       END IF;
46057    END IF;
46058    --
46059    --
46060    ------------------------------------------------------------------------------------------------
46061    -- 4219869 Business Flow
46062    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46063    -- Prior Entry.  Currently, the following code is always generated.
46064    ------------------------------------------------------------------------------------------------
46065    XLA_AE_LINES_PKG.ValidateCurrentLine;
46066 
46067    ------------------------------------------------------------------------------------
46068    -- 4219869 Business Flow
46069    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46070    ------------------------------------------------------------------------------------
46071    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46072 
46073    ----------------------------------------------------------------------------------
46074    -- 4219869 Business Flow
46075    -- Update journal entry status -- Need to generate this within IF <condition>
46076    ----------------------------------------------------------------------------------
46077    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46078          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46079          ,p_balance_type_code => l_balance_type_code
46080          );
46081 
46082    -------------------------------------------------------------------------------------------
46083    -- 4262811 - Generate the Accrual Reversal lines
46084    -------------------------------------------------------------------------------------------
46085    BEGIN
46086       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46087                               (g_array_event(p_event_id).array_value_num('header_index'));
46088       IF l_acc_rev_flag IS NULL THEN
46089          l_acc_rev_flag := 'N';
46090       END IF;
46091    EXCEPTION
46092       WHEN OTHERS THEN
46093          l_acc_rev_flag := 'N';
46094    END;
46095    --
46096    IF (l_acc_rev_flag = 'Y') THEN
46097 
46098        -- 4645092  ------------------------------------------------------------------------------
46099        -- To allow MPA report to determine if it should generate report process
46100        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46101        ------------------------------------------------------------------------------------------
46102 
46103        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46104        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46105    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
46106    -- call ADRs
46107    -- Bug 4922099
46108    --
46109    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46110         (NVL(l_actual_upg_option, 'N') = 'O') OR
46111         (NVL(l_enc_upg_option, 'N') = 'O')
46112       )
46113    THEN
46114    NULL;
46118   l_ccid := AcctDerRule_29(
46115    --
46116    --
46117    
46119            p_application_id           => p_application_id
46120          , p_ae_header_id             => l_ae_header_id 
46121 , p_source_32 => p_source_32
46122          , x_transaction_coa_id       => l_adr_transaction_coa_id
46123          , x_accounting_coa_id        => l_adr_accounting_coa_id
46124          , x_value_type_code          => l_adr_value_type_code
46125          , p_side                     => 'NA'
46126    );
46127 
46128    xla_ae_lines_pkg.set_ccid(
46129     p_code_combination_id          => l_ccid
46130   , p_value_type_code              => l_adr_value_type_code
46131   , p_transaction_coa_id           => l_adr_transaction_coa_id
46132   , p_accounting_coa_id            => l_adr_accounting_coa_id
46133   , p_adr_code                     => 'DIST_CCID'
46134   , p_adr_type_code                => 'S'
46135   , p_component_type               => l_component_type
46136   , p_component_code               => l_component_code
46137   , p_component_type_code          => l_component_type_code
46138   , p_component_appl_id            => l_component_appl_id
46139   , p_amb_context_code             => l_amb_context_code
46140   , p_side                         => 'NA'
46141   );
46142 
46143 
46144    --
46145    --
46146    END IF;
46147 
46148        --
46149        -- Update the line information that should be overwritten
46150        --
46151        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46152                                          p_header_num   => 1);
46153        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
46154 
46155        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46156 
46157        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46158           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46159        END IF;
46160 
46161       --
46162       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46163       --
46164       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46165           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46166       ELSE
46167           ---------------------------------------------------------------------------------------------------
46168           -- 4262811a Switch Sign
46169           ---------------------------------------------------------------------------------------------------
46170           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46171           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46172                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46173           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46174                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46175           -- 5132302
46176           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46177                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46178 
46179       END IF;
46180 
46181       -- 4955764
46182       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46183       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46184 
46185 
46186       XLA_AE_LINES_PKG.ValidateCurrentLine;
46187       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46188 
46189       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46190                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46191                ,p_balance_type_code => l_balance_type_code);
46192 
46193    END IF;
46194 
46195    -----------------------------------------------------------------------------------------
46196    -- 4262811 Multiperiod Accounting
46197    -----------------------------------------------------------------------------------------
46198      -- No MPA option is assigned.
46199 
46200 
46201 END IF;
46202 END IF;
46203 --
46204 
46205 --
46206 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46207    trace
46208       (p_msg      => 'END of AcctLineType_108'
46209       ,p_level    => C_LEVEL_PROCEDURE
46210       ,p_module   => l_log_module);
46211 END IF;
46212 --
46213 EXCEPTION
46214   WHEN xla_exceptions_pkg.application_exception THEN
46215       RAISE;
46216   WHEN OTHERS THEN
46217        xla_exceptions_pkg.raise_message
46218            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_108');
46219 END AcctLineType_108;
46220 --
46221 
46222 ---------------------------------------
46223 --
46224 -- PRIVATE FUNCTION
46225 --         AcctLineType_109
46226 --
46227 ---------------------------------------
46228 PROCEDURE AcctLineType_109 (
46229   p_application_id        IN NUMBER
46230  ,p_event_id              IN NUMBER
46231  ,p_calculate_acctd_flag  IN VARCHAR2
46232  ,p_calculate_g_l_flag    IN VARCHAR2
46233  ,p_actual_flag           IN OUT VARCHAR2
46234  ,p_balance_type_code     OUT VARCHAR2
46235  ,p_gain_or_loss_ref      OUT VARCHAR2
46236  
46237 --Distribution GL Account
46241 --Distribution Line Identifier
46238  , p_source_32            IN NUMBER
46239 --Distribution Source Type
46240  , p_source_39            IN VARCHAR2
46242  , p_source_41            IN NUMBER
46243 --Distribution Type
46244  , p_source_42            IN VARCHAR2
46245 --Entered Amount
46246  , p_source_43            IN NUMBER
46247 --Currency Code
46248  , p_source_44            IN VARCHAR2
46249 --Exchange Rate
46250  , p_source_46            IN NUMBER
46251 --Exchange Rate Type
46252  , p_source_47            IN VARCHAR2
46253 --Applied To Document Accounting Amount
46254  , p_source_48            IN NUMBER
46255 --Distribution Multi Fund Additional Entry
46256  , p_source_99            IN VARCHAR2
46257 --Applied To Document Exchange Date
46258  , p_source_100            IN DATE
46259 )
46260 IS
46261 
46262 l_component_type              VARCHAR2(80);
46263 l_component_code              VARCHAR2(30);
46264 l_component_type_code         VARCHAR2(1);
46265 l_component_appl_id           INTEGER;
46266 l_amb_context_code            VARCHAR2(30);
46267 l_entity_code                 VARCHAR2(30);
46268 l_event_class_code            VARCHAR2(30);
46269 l_ae_header_id                NUMBER;
46270 l_event_type_code             VARCHAR2(30);
46271 l_line_definition_code        VARCHAR2(30);
46272 l_line_definition_owner_code  VARCHAR2(1);
46273 --
46274 -- adr variables
46275 l_segment                     VARCHAR2(30);
46276 l_ccid                        NUMBER;
46277 l_adr_transaction_coa_id      NUMBER;
46278 l_adr_accounting_coa_id       NUMBER;
46279 l_adr_flexfield_segment_code  VARCHAR2(30);
46280 l_adr_flex_value_set_id       NUMBER;
46281 l_adr_value_type_code         VARCHAR2(30);
46282 l_adr_value_combination_id    NUMBER;
46283 l_adr_value_segment_code      VARCHAR2(30);
46284 
46285 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46286 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46287 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46288 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46289 
46290 -- 4262811 Variables ------------------------------------------------------------------------------------------
46291 l_entered_amt_idx             NUMBER;
46292 l_accted_amt_idx              NUMBER;
46293 l_acc_rev_flag                VARCHAR2(1);
46294 l_accrual_line_num            NUMBER;
46295 l_tmp_amt                     NUMBER;
46296 l_acc_rev_natural_side_code   VARCHAR2(1);
46297 
46298 l_num_entries                 NUMBER;
46299 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46300 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46301 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46302 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46303 l_recog_line_1                NUMBER;
46304 l_recog_line_2                NUMBER;
46305 
46306 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46307 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46308 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46309 
46310 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46311 
46312 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46313 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46314 
46315 ---------------------------------------------------------------------------------------------------------------
46316 
46317 
46318 --
46319 -- bulk performance
46320 --
46321 l_balance_type_code           VARCHAR2(1);
46322 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46323 l_log_module                  VARCHAR2(240);
46324 
46325 --
46326 -- Upgrade strategy
46327 --
46328 l_actual_upg_option           VARCHAR2(1);
46329 l_enc_upg_option           VARCHAR2(1);
46330 
46331 --
46332 BEGIN
46333 --
46334 IF g_log_enabled THEN
46335       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_109';
46336 END IF;
46337 --
46338 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46339 
46340       trace
46341          (p_msg      => 'BEGIN of AcctLineType_109'
46342          ,p_level    => C_LEVEL_PROCEDURE
46343          ,p_module   => l_log_module);
46344 
46345 END IF;
46346 --
46347 l_component_type             := 'AMB_JLT';
46348 l_component_code             := 'MISC_RCT_FACTOR';
46349 l_component_type_code        := 'S';
46350 l_component_appl_id          :=  222;
46351 l_amb_context_code           := 'DEFAULT';
46352 l_entity_code                := 'RECEIPTS';
46353 l_event_class_code           := 'MISC_RECEIPT';
46354 l_event_type_code            := 'MISC_RECEIPT_ALL';
46355 l_line_definition_owner_code := 'S';
46356 l_line_definition_code       := 'AR_MISC_RECEIPTS';
46357 --
46358 l_balance_type_code          := 'A';
46359 l_segment                     := NULL;
46360 l_ccid                        := NULL;
46361 l_adr_transaction_coa_id      := NULL;
46362 l_adr_accounting_coa_id       := NULL;
46363 l_adr_flexfield_segment_code  := NULL;
46364 l_adr_flex_value_set_id       := NULL;
46365 l_adr_value_type_code         := NULL;
46366 l_adr_value_combination_id    := NULL;
46367 l_adr_value_segment_code      := NULL;
46368 
46369 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46373 
46370 l_bflow_class_code           := '';    -- 4219869 Business Flow
46371 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46372 l_budgetary_control_flag     := 'N';
46374 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46375 l_bflow_applied_to_amt       := NULL; -- 5132302
46376 l_entered_amt_idx            := NULL;          -- 4262811
46377 l_accted_amt_idx             := NULL;          -- 4262811
46378 l_acc_rev_flag               := NULL;          -- 4262811
46379 l_accrual_line_num           := NULL;          -- 4262811
46380 l_tmp_amt                    := NULL;          -- 4262811
46381 --
46382  
46383 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46384     l_balance_type_code <> 'B' THEN
46385 IF NVL(p_source_39,'
46386 ') =  'FACTOR' AND 
46387 NVL(p_source_99,'
46388 ') =  'N'
46389  THEN 
46390 
46391    --
46392    XLA_AE_LINES_PKG.SetNewLine;
46393 
46394    p_balance_type_code          := l_balance_type_code;
46395    -- set the flag so later we will know whether the gain loss line needs to be created
46396    
46397    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46398      p_actual_flag :='A';
46399    END IF;
46400 
46401    --
46402    -- bulk performance
46403    --
46404    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46405                                       p_header_num   => 0); -- 4262811
46406    --
46407    -- set accounting line options
46408    --
46409    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46410            p_natural_side_code          => 'C'
46411          , p_gain_or_loss_flag          => 'N'
46412          , p_gl_transfer_mode_code      => 'S'
46413          , p_acct_entry_type_code       => 'A'
46414          , p_switch_side_flag           => 'Y'
46415          , p_merge_duplicate_code       => 'A'
46416          );
46417    --
46418    l_acc_rev_natural_side_code := 'D';  -- 4262811
46419    -- 
46420    --
46421    -- set accounting line type info
46422    --
46423    xla_ae_lines_pkg.SetAcctLineType
46424       (p_component_type             => l_component_type
46425       ,p_event_type_code            => l_event_type_code
46426       ,p_line_definition_owner_code => l_line_definition_owner_code
46427       ,p_line_definition_code       => l_line_definition_code
46428       ,p_accounting_line_code       => l_component_code
46429       ,p_accounting_line_type_code  => l_component_type_code
46430       ,p_accounting_line_appl_id    => l_component_appl_id
46431       ,p_amb_context_code           => l_amb_context_code
46432       ,p_entity_code                => l_entity_code
46433       ,p_event_class_code           => l_event_class_code);
46434    --
46435    -- set accounting class
46436    --
46437    xla_ae_lines_pkg.SetAcctClass(
46438            p_accounting_class_code  => 'FACTOR'
46439          , p_ae_header_id           => l_ae_header_id
46440          );
46441 
46442    --
46443    -- set rounding class
46444    --
46445    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
46446                       'RECEIVABLE';
46447 
46448    --
46449    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
46450    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
46451    --
46452    -- bulk performance
46453    --
46454    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
46455 
46456    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
46457       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
46458 
46459    -- 4955764
46460    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46461       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
46462 
46463    -- 4458381 Public Sector Enh
46464    
46465    --
46466    -- set accounting attributes for the line type
46467    --
46468    l_entered_amt_idx := 3;
46469    l_accted_amt_idx  := 8;
46470    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
46471    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
46472    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
46473    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
46474    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
46475    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
46476    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
46477    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
46478    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
46479    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
46480    l_rec_acct_attrs.array_date_value(5)  := p_source_100;
46481    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
46482    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
46483    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
46484    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
46485    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
46486    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
46487 
46488    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
46489    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
46493    ---------------------------------------------------------------------------------------------------------------
46490 
46491    ---------------------------------------------------------------------------------------------------------------
46492    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
46494    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
46495 
46496    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46497    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
46498 
46499    IF xla_accounting_cache_pkg.GetValueChar
46500          (p_source_code         => 'LEDGER_CATEGORY_CODE'
46501          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
46502    AND l_bflow_method_code = 'PRIOR_ENTRY'
46503 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
46504    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
46505          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
46506        )
46507    THEN
46508          xla_ae_lines_pkg.BflowUpgEntry
46509            (p_business_method_code    => l_bflow_method_code
46510            ,p_business_class_code     => l_bflow_class_code
46511            ,p_balance_type            => l_balance_type_code);
46512    ELSE
46513       NULL;
46514 -- No business flow processing for business flow method of NONE.
46515    END IF;
46516 
46517    --
46518    -- call analytical criteria
46519    --
46520    
46521    --
46522    -- call description
46523    --
46524    -- No description or it is inherited.
46525    --
46526    -- call ADRs
46527    -- Bug 4922099
46528    --
46529    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46530         (NVL(l_actual_upg_option, 'N') = 'O') OR
46531         (NVL(l_enc_upg_option, 'N') = 'O')
46532       )
46533    THEN
46534    NULL;
46535    --
46536    --
46537    
46538   l_ccid := AcctDerRule_29(
46539            p_application_id           => p_application_id
46540          , p_ae_header_id             => l_ae_header_id 
46541 , p_source_32 => p_source_32
46542          , x_transaction_coa_id       => l_adr_transaction_coa_id
46543          , x_accounting_coa_id        => l_adr_accounting_coa_id
46544          , x_value_type_code          => l_adr_value_type_code
46545          , p_side                     => 'NA'
46546    );
46547 
46548    xla_ae_lines_pkg.set_ccid(
46549     p_code_combination_id          => l_ccid
46550   , p_value_type_code              => l_adr_value_type_code
46551   , p_transaction_coa_id           => l_adr_transaction_coa_id
46552   , p_accounting_coa_id            => l_adr_accounting_coa_id
46553   , p_adr_code                     => 'DIST_CCID'
46554   , p_adr_type_code                => 'S'
46555   , p_component_type               => l_component_type
46556   , p_component_code               => l_component_code
46557   , p_component_type_code          => l_component_type_code
46558   , p_component_appl_id            => l_component_appl_id
46559   , p_amb_context_code             => l_amb_context_code
46560   , p_side                         => 'NA'
46561   );
46562 
46563 
46564    --
46565    --
46566    END IF;
46567    --
46568    -- Bug 4922099
46569    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
46570           (NVL(l_enc_upg_option, 'N') = 'O')
46571         ) AND
46572         (l_bflow_method_code = 'PRIOR_ENTRY')
46573       )
46574    THEN
46575       IF
46576       --
46577       1 = 2
46578       --
46579       THEN
46580       xla_accounting_err_pkg.build_message
46581                                     (p_appli_s_name            => 'XLA'
46582                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46583                                     ,p_token_1                 => 'LINE_NUMBER'
46584                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
46585                                     ,p_token_2                 => 'LINE_TYPE_NAME'
46586                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
46587                                                                              l_component_type
46588                                                                             ,l_component_code
46589                                                                             ,l_component_type_code
46590                                                                             ,l_component_appl_id
46591                                                                             ,l_amb_context_code
46592                                                                             ,l_entity_code
46593                                                                             ,l_event_class_code
46594                                                                            )
46595                                     ,p_token_3                 => 'OWNER'
46596                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
46597                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
46598                                                                           ,p_lookup_code    => l_component_type_code
46599                                                                          )
46603                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
46600                                     ,p_token_4                 => 'PRODUCT_NAME'
46601                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
46602                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
46604                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
46605                                     ,p_ae_header_id            =>  NULL
46606                                        );
46607 
46608         IF (C_LEVEL_ERROR>= g_log_level) THEN
46609                  trace
46610                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
46611                       ,p_level    => C_LEVEL_ERROR
46612                       ,p_module   => l_log_module);
46613         END IF;
46614       END IF;
46615    END IF;
46616    --
46617    --
46618    ------------------------------------------------------------------------------------------------
46619    -- 4219869 Business Flow
46620    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
46621    -- Prior Entry.  Currently, the following code is always generated.
46622    ------------------------------------------------------------------------------------------------
46623    XLA_AE_LINES_PKG.ValidateCurrentLine;
46624 
46625    ------------------------------------------------------------------------------------
46626    -- 4219869 Business Flow
46627    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
46628    ------------------------------------------------------------------------------------
46629    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46630 
46631    ----------------------------------------------------------------------------------
46632    -- 4219869 Business Flow
46633    -- Update journal entry status -- Need to generate this within IF <condition>
46634    ----------------------------------------------------------------------------------
46635    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46636          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
46637          ,p_balance_type_code => l_balance_type_code
46638          );
46639 
46640    -------------------------------------------------------------------------------------------
46641    -- 4262811 - Generate the Accrual Reversal lines
46642    -------------------------------------------------------------------------------------------
46643    BEGIN
46644       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
46645                               (g_array_event(p_event_id).array_value_num('header_index'));
46646       IF l_acc_rev_flag IS NULL THEN
46647          l_acc_rev_flag := 'N';
46648       END IF;
46649    EXCEPTION
46650       WHEN OTHERS THEN
46651          l_acc_rev_flag := 'N';
46652    END;
46653    --
46654    IF (l_acc_rev_flag = 'Y') THEN
46655 
46656        -- 4645092  ------------------------------------------------------------------------------
46657        -- To allow MPA report to determine if it should generate report process
46658        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
46659        ------------------------------------------------------------------------------------------
46660 
46661        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
46662        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
46663    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
46664    -- call ADRs
46665    -- Bug 4922099
46666    --
46667    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
46668         (NVL(l_actual_upg_option, 'N') = 'O') OR
46669         (NVL(l_enc_upg_option, 'N') = 'O')
46670       )
46671    THEN
46672    NULL;
46673    --
46674    --
46675    
46676   l_ccid := AcctDerRule_29(
46677            p_application_id           => p_application_id
46678          , p_ae_header_id             => l_ae_header_id 
46679 , p_source_32 => p_source_32
46680          , x_transaction_coa_id       => l_adr_transaction_coa_id
46681          , x_accounting_coa_id        => l_adr_accounting_coa_id
46682          , x_value_type_code          => l_adr_value_type_code
46683          , p_side                     => 'NA'
46684    );
46685 
46686    xla_ae_lines_pkg.set_ccid(
46687     p_code_combination_id          => l_ccid
46688   , p_value_type_code              => l_adr_value_type_code
46689   , p_transaction_coa_id           => l_adr_transaction_coa_id
46690   , p_accounting_coa_id            => l_adr_accounting_coa_id
46691   , p_adr_code                     => 'DIST_CCID'
46692   , p_adr_type_code                => 'S'
46693   , p_component_type               => l_component_type
46694   , p_component_code               => l_component_code
46695   , p_component_type_code          => l_component_type_code
46696   , p_component_appl_id            => l_component_appl_id
46697   , p_amb_context_code             => l_amb_context_code
46698   , p_side                         => 'NA'
46699   );
46700 
46701 
46702    --
46703    --
46704    END IF;
46705 
46706        --
46707        -- Update the line information that should be overwritten
46708        --
46709        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
46710                                          p_header_num   => 1);
46714 
46711        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
46712 
46713        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
46715        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
46716           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
46717        END IF;
46718 
46719       --
46720       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
46721       --
46722       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
46723           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
46724       ELSE
46725           ---------------------------------------------------------------------------------------------------
46726           -- 4262811a Switch Sign
46727           ---------------------------------------------------------------------------------------------------
46728           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
46729           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46730                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46731           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
46732                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46733           -- 5132302
46734           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
46735                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
46736 
46737       END IF;
46738 
46739       -- 4955764
46740       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
46741       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
46742 
46743 
46744       XLA_AE_LINES_PKG.ValidateCurrentLine;
46745       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
46746 
46747       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
46748                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
46749                ,p_balance_type_code => l_balance_type_code);
46750 
46751    END IF;
46752 
46753    -----------------------------------------------------------------------------------------
46754    -- 4262811 Multiperiod Accounting
46755    -----------------------------------------------------------------------------------------
46756      -- No MPA option is assigned.
46757 
46758 
46759 END IF;
46760 END IF;
46761 --
46762 
46763 --
46764 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46765    trace
46766       (p_msg      => 'END of AcctLineType_109'
46767       ,p_level    => C_LEVEL_PROCEDURE
46768       ,p_module   => l_log_module);
46769 END IF;
46770 --
46771 EXCEPTION
46772   WHEN xla_exceptions_pkg.application_exception THEN
46773       RAISE;
46774   WHEN OTHERS THEN
46775        xla_exceptions_pkg.raise_message
46776            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_109');
46777 END AcctLineType_109;
46778 --
46779 
46780 ---------------------------------------
46781 --
46782 -- PRIVATE FUNCTION
46783 --         AcctLineType_110
46784 --
46785 ---------------------------------------
46786 PROCEDURE AcctLineType_110 (
46787   p_application_id        IN NUMBER
46788  ,p_event_id              IN NUMBER
46789  ,p_calculate_acctd_flag  IN VARCHAR2
46790  ,p_calculate_g_l_flag    IN VARCHAR2
46791  ,p_actual_flag           IN OUT VARCHAR2
46792  ,p_balance_type_code     OUT VARCHAR2
46793  ,p_gain_or_loss_ref      OUT VARCHAR2
46794  
46795 --Distribution GL Account
46796  , p_source_32            IN NUMBER
46797 --Distribution Source Type
46798  , p_source_39            IN VARCHAR2
46799 --Distribution Line Identifier
46800  , p_source_41            IN NUMBER
46801 --Distribution Type
46802  , p_source_42            IN VARCHAR2
46803 --Entered Amount
46804  , p_source_43            IN NUMBER
46805 --Currency Code
46806  , p_source_44            IN VARCHAR2
46807 --Exchange Rate
46808  , p_source_46            IN NUMBER
46809 --Exchange Rate Type
46810  , p_source_47            IN VARCHAR2
46811 --Applied To Document Accounting Amount
46812  , p_source_48            IN NUMBER
46813 --Distribution Multi Fund Additional Entry
46814  , p_source_99            IN VARCHAR2
46815 --Applied To Document Exchange Date
46816  , p_source_100            IN DATE
46817 )
46818 IS
46819 
46820 l_component_type              VARCHAR2(80);
46821 l_component_code              VARCHAR2(30);
46822 l_component_type_code         VARCHAR2(1);
46823 l_component_appl_id           INTEGER;
46824 l_amb_context_code            VARCHAR2(30);
46825 l_entity_code                 VARCHAR2(30);
46826 l_event_class_code            VARCHAR2(30);
46827 l_ae_header_id                NUMBER;
46828 l_event_type_code             VARCHAR2(30);
46829 l_line_definition_code        VARCHAR2(30);
46830 l_line_definition_owner_code  VARCHAR2(1);
46831 --
46832 -- adr variables
46833 l_segment                     VARCHAR2(30);
46834 l_ccid                        NUMBER;
46835 l_adr_transaction_coa_id      NUMBER;
46836 l_adr_accounting_coa_id       NUMBER;
46840 l_adr_value_combination_id    NUMBER;
46837 l_adr_flexfield_segment_code  VARCHAR2(30);
46838 l_adr_flex_value_set_id       NUMBER;
46839 l_adr_value_type_code         VARCHAR2(30);
46841 l_adr_value_segment_code      VARCHAR2(30);
46842 
46843 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
46844 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
46845 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
46846 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
46847 
46848 -- 4262811 Variables ------------------------------------------------------------------------------------------
46849 l_entered_amt_idx             NUMBER;
46850 l_accted_amt_idx              NUMBER;
46851 l_acc_rev_flag                VARCHAR2(1);
46852 l_accrual_line_num            NUMBER;
46853 l_tmp_amt                     NUMBER;
46854 l_acc_rev_natural_side_code   VARCHAR2(1);
46855 
46856 l_num_entries                 NUMBER;
46857 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
46858 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
46859 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
46860 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
46861 l_recog_line_1                NUMBER;
46862 l_recog_line_2                NUMBER;
46863 
46864 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
46865 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
46866 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
46867 
46868 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
46869 
46870 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
46871 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
46872 
46873 ---------------------------------------------------------------------------------------------------------------
46874 
46875 
46876 --
46877 -- bulk performance
46878 --
46879 l_balance_type_code           VARCHAR2(1);
46880 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
46881 l_log_module                  VARCHAR2(240);
46882 
46883 --
46884 -- Upgrade strategy
46885 --
46886 l_actual_upg_option           VARCHAR2(1);
46887 l_enc_upg_option           VARCHAR2(1);
46888 
46889 --
46890 BEGIN
46891 --
46892 IF g_log_enabled THEN
46893       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_110';
46894 END IF;
46895 --
46896 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
46897 
46898       trace
46899          (p_msg      => 'BEGIN of AcctLineType_110'
46900          ,p_level    => C_LEVEL_PROCEDURE
46901          ,p_module   => l_log_module);
46902 
46903 END IF;
46904 --
46905 l_component_type             := 'AMB_JLT';
46906 l_component_code             := 'MISC_RCT_MISCCASH';
46907 l_component_type_code        := 'S';
46908 l_component_appl_id          :=  222;
46909 l_amb_context_code           := 'DEFAULT';
46910 l_entity_code                := 'RECEIPTS';
46911 l_event_class_code           := 'MISC_RECEIPT';
46912 l_event_type_code            := 'MISC_RECEIPT_ALL';
46913 l_line_definition_owner_code := 'S';
46914 l_line_definition_code       := 'AR_MISC_RECEIPTS';
46915 --
46916 l_balance_type_code          := 'A';
46917 l_segment                     := NULL;
46918 l_ccid                        := NULL;
46919 l_adr_transaction_coa_id      := NULL;
46920 l_adr_accounting_coa_id       := NULL;
46921 l_adr_flexfield_segment_code  := NULL;
46922 l_adr_flex_value_set_id       := NULL;
46923 l_adr_value_type_code         := NULL;
46924 l_adr_value_combination_id    := NULL;
46925 l_adr_value_segment_code      := NULL;
46926 
46927 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
46928 l_bflow_class_code           := '';    -- 4219869 Business Flow
46929 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
46930 l_budgetary_control_flag     := 'N';
46931 
46932 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
46933 l_bflow_applied_to_amt       := NULL; -- 5132302
46934 l_entered_amt_idx            := NULL;          -- 4262811
46935 l_accted_amt_idx             := NULL;          -- 4262811
46936 l_acc_rev_flag               := NULL;          -- 4262811
46937 l_accrual_line_num           := NULL;          -- 4262811
46938 l_tmp_amt                    := NULL;          -- 4262811
46939 --
46940  
46941 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
46942     l_balance_type_code <> 'B' THEN
46943 IF NVL(p_source_39,'
46944 ') =  'MISCCASH' AND 
46945 NVL(p_source_99,'
46946 ') =  'N'
46947  THEN 
46948 
46949    --
46950    XLA_AE_LINES_PKG.SetNewLine;
46951 
46952    p_balance_type_code          := l_balance_type_code;
46953    -- set the flag so later we will know whether the gain loss line needs to be created
46954    
46955    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
46956      p_actual_flag :='A';
46957    END IF;
46958 
46959    --
46960    -- bulk performance
46961    --
46962    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
46963                                       p_header_num   => 0); -- 4262811
46964    --
46965    -- set accounting line options
46966    --
46970          , p_gl_transfer_mode_code      => 'S'
46967    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
46968            p_natural_side_code          => 'C'
46969          , p_gain_or_loss_flag          => 'N'
46971          , p_acct_entry_type_code       => 'A'
46972          , p_switch_side_flag           => 'Y'
46973          , p_merge_duplicate_code       => 'A'
46974          );
46975    --
46976    l_acc_rev_natural_side_code := 'D';  -- 4262811
46977    -- 
46978    --
46979    -- set accounting line type info
46980    --
46981    xla_ae_lines_pkg.SetAcctLineType
46982       (p_component_type             => l_component_type
46983       ,p_event_type_code            => l_event_type_code
46984       ,p_line_definition_owner_code => l_line_definition_owner_code
46985       ,p_line_definition_code       => l_line_definition_code
46986       ,p_accounting_line_code       => l_component_code
46987       ,p_accounting_line_type_code  => l_component_type_code
46988       ,p_accounting_line_appl_id    => l_component_appl_id
46989       ,p_amb_context_code           => l_amb_context_code
46990       ,p_entity_code                => l_entity_code
46991       ,p_event_class_code           => l_event_class_code);
46992    --
46993    -- set accounting class
46994    --
46995    xla_ae_lines_pkg.SetAcctClass(
46996            p_accounting_class_code  => 'MISC_CASH'
46997          , p_ae_header_id           => l_ae_header_id
46998          );
46999 
47000    --
47001    -- set rounding class
47002    --
47003    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47004                       'RECEIVABLE';
47005 
47006    --
47007    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47008    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47009    --
47010    -- bulk performance
47011    --
47012    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47013 
47014    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47015       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47016 
47017    -- 4955764
47018    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47019       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47020 
47021    -- 4458381 Public Sector Enh
47022    
47023    --
47024    -- set accounting attributes for the line type
47025    --
47026    l_entered_amt_idx := 3;
47027    l_accted_amt_idx  := 8;
47028    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
47029    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
47030    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
47031    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
47032    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
47033    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
47034    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
47035    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
47036    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
47037    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
47038    l_rec_acct_attrs.array_date_value(5)  := p_source_100;
47039    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
47040    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
47041    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
47042    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
47043    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
47044    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
47045 
47046    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47047    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47048 
47049    ---------------------------------------------------------------------------------------------------------------
47050    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47051    ---------------------------------------------------------------------------------------------------------------
47052    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47053 
47054    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47055    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47056 
47057    IF xla_accounting_cache_pkg.GetValueChar
47058          (p_source_code         => 'LEDGER_CATEGORY_CODE'
47059          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47060    AND l_bflow_method_code = 'PRIOR_ENTRY'
47061 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47062    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47063          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47064        )
47065    THEN
47066          xla_ae_lines_pkg.BflowUpgEntry
47067            (p_business_method_code    => l_bflow_method_code
47068            ,p_business_class_code     => l_bflow_class_code
47069            ,p_balance_type            => l_balance_type_code);
47070    ELSE
47071       NULL;
47072 -- No business flow processing for business flow method of NONE.
47073    END IF;
47074 
47075    --
47076    -- call analytical criteria
47077    --
47078    
47082    -- No description or it is inherited.
47079    --
47080    -- call description
47081    --
47083    --
47084    -- call ADRs
47085    -- Bug 4922099
47086    --
47087    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47088         (NVL(l_actual_upg_option, 'N') = 'O') OR
47089         (NVL(l_enc_upg_option, 'N') = 'O')
47090       )
47091    THEN
47092    NULL;
47093    --
47094    --
47095    
47096   l_ccid := AcctDerRule_29(
47097            p_application_id           => p_application_id
47098          , p_ae_header_id             => l_ae_header_id 
47099 , p_source_32 => p_source_32
47100          , x_transaction_coa_id       => l_adr_transaction_coa_id
47101          , x_accounting_coa_id        => l_adr_accounting_coa_id
47102          , x_value_type_code          => l_adr_value_type_code
47103          , p_side                     => 'NA'
47104    );
47105 
47106    xla_ae_lines_pkg.set_ccid(
47107     p_code_combination_id          => l_ccid
47108   , p_value_type_code              => l_adr_value_type_code
47109   , p_transaction_coa_id           => l_adr_transaction_coa_id
47110   , p_accounting_coa_id            => l_adr_accounting_coa_id
47111   , p_adr_code                     => 'DIST_CCID'
47112   , p_adr_type_code                => 'S'
47113   , p_component_type               => l_component_type
47114   , p_component_code               => l_component_code
47115   , p_component_type_code          => l_component_type_code
47116   , p_component_appl_id            => l_component_appl_id
47117   , p_amb_context_code             => l_amb_context_code
47118   , p_side                         => 'NA'
47119   );
47120 
47121 
47122    --
47123    --
47124    END IF;
47125    --
47126    -- Bug 4922099
47127    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47128           (NVL(l_enc_upg_option, 'N') = 'O')
47129         ) AND
47130         (l_bflow_method_code = 'PRIOR_ENTRY')
47131       )
47132    THEN
47133       IF
47134       --
47135       1 = 2
47136       --
47137       THEN
47138       xla_accounting_err_pkg.build_message
47139                                     (p_appli_s_name            => 'XLA'
47140                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47141                                     ,p_token_1                 => 'LINE_NUMBER'
47142                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47143                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47144                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47145                                                                              l_component_type
47146                                                                             ,l_component_code
47147                                                                             ,l_component_type_code
47148                                                                             ,l_component_appl_id
47149                                                                             ,l_amb_context_code
47150                                                                             ,l_entity_code
47151                                                                             ,l_event_class_code
47152                                                                            )
47153                                     ,p_token_3                 => 'OWNER'
47154                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47155                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47156                                                                           ,p_lookup_code    => l_component_type_code
47157                                                                          )
47158                                     ,p_token_4                 => 'PRODUCT_NAME'
47159                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47160                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47161                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47162                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47166         IF (C_LEVEL_ERROR>= g_log_level) THEN
47163                                     ,p_ae_header_id            =>  NULL
47164                                        );
47165 
47167                  trace
47168                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47169                       ,p_level    => C_LEVEL_ERROR
47170                       ,p_module   => l_log_module);
47171         END IF;
47172       END IF;
47173    END IF;
47174    --
47175    --
47176    ------------------------------------------------------------------------------------------------
47177    -- 4219869 Business Flow
47178    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47179    -- Prior Entry.  Currently, the following code is always generated.
47180    ------------------------------------------------------------------------------------------------
47181    XLA_AE_LINES_PKG.ValidateCurrentLine;
47182 
47183    ------------------------------------------------------------------------------------
47184    -- 4219869 Business Flow
47185    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47186    ------------------------------------------------------------------------------------
47187    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47188 
47189    ----------------------------------------------------------------------------------
47190    -- 4219869 Business Flow
47191    -- Update journal entry status -- Need to generate this within IF <condition>
47192    ----------------------------------------------------------------------------------
47193    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47194          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47195          ,p_balance_type_code => l_balance_type_code
47196          );
47197 
47198    -------------------------------------------------------------------------------------------
47199    -- 4262811 - Generate the Accrual Reversal lines
47200    -------------------------------------------------------------------------------------------
47201    BEGIN
47202       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47203                               (g_array_event(p_event_id).array_value_num('header_index'));
47204       IF l_acc_rev_flag IS NULL THEN
47205          l_acc_rev_flag := 'N';
47206       END IF;
47207    EXCEPTION
47208       WHEN OTHERS THEN
47209          l_acc_rev_flag := 'N';
47210    END;
47211    --
47212    IF (l_acc_rev_flag = 'Y') THEN
47213 
47214        -- 4645092  ------------------------------------------------------------------------------
47215        -- To allow MPA report to determine if it should generate report process
47216        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47217        ------------------------------------------------------------------------------------------
47218 
47219        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47220        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47221    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
47222    -- call ADRs
47223    -- Bug 4922099
47224    --
47225    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47226         (NVL(l_actual_upg_option, 'N') = 'O') OR
47227         (NVL(l_enc_upg_option, 'N') = 'O')
47228       )
47229    THEN
47230    NULL;
47231    --
47232    --
47233    
47234   l_ccid := AcctDerRule_29(
47235            p_application_id           => p_application_id
47236          , p_ae_header_id             => l_ae_header_id 
47237 , p_source_32 => p_source_32
47238          , x_transaction_coa_id       => l_adr_transaction_coa_id
47239          , x_accounting_coa_id        => l_adr_accounting_coa_id
47240          , x_value_type_code          => l_adr_value_type_code
47241          , p_side                     => 'NA'
47242    );
47243 
47244    xla_ae_lines_pkg.set_ccid(
47245     p_code_combination_id          => l_ccid
47246   , p_value_type_code              => l_adr_value_type_code
47247   , p_transaction_coa_id           => l_adr_transaction_coa_id
47248   , p_accounting_coa_id            => l_adr_accounting_coa_id
47249   , p_adr_code                     => 'DIST_CCID'
47250   , p_adr_type_code                => 'S'
47251   , p_component_type               => l_component_type
47252   , p_component_code               => l_component_code
47253   , p_component_type_code          => l_component_type_code
47254   , p_component_appl_id            => l_component_appl_id
47255   , p_amb_context_code             => l_amb_context_code
47256   , p_side                         => 'NA'
47257   );
47258 
47259 
47260    --
47261    --
47262    END IF;
47263 
47264        --
47265        -- Update the line information that should be overwritten
47266        --
47267        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47268                                          p_header_num   => 1);
47269        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47270 
47271        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47272 
47273        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47274           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47275        END IF;
47276 
47277       --
47281           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47278       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47279       --
47280       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47282       ELSE
47283           ---------------------------------------------------------------------------------------------------
47284           -- 4262811a Switch Sign
47285           ---------------------------------------------------------------------------------------------------
47286           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47287           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47288                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47289           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47290                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47291           -- 5132302
47292           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47293                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47294 
47295       END IF;
47296 
47297       -- 4955764
47298       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47299       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47300 
47301 
47302       XLA_AE_LINES_PKG.ValidateCurrentLine;
47303       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47304 
47305       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47306                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47307                ,p_balance_type_code => l_balance_type_code);
47308 
47309    END IF;
47310 
47311    -----------------------------------------------------------------------------------------
47312    -- 4262811 Multiperiod Accounting
47313    -----------------------------------------------------------------------------------------
47314      -- No MPA option is assigned.
47315 
47316 
47317 END IF;
47318 END IF;
47319 --
47320 
47321 --
47322 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47323    trace
47324       (p_msg      => 'END of AcctLineType_110'
47325       ,p_level    => C_LEVEL_PROCEDURE
47326       ,p_module   => l_log_module);
47327 END IF;
47328 --
47329 EXCEPTION
47330   WHEN xla_exceptions_pkg.application_exception THEN
47331       RAISE;
47332   WHEN OTHERS THEN
47333        xla_exceptions_pkg.raise_message
47334            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_110');
47335 END AcctLineType_110;
47336 --
47337 
47338 ---------------------------------------
47339 --
47340 -- PRIVATE FUNCTION
47341 --         AcctLineType_111
47342 --
47343 ---------------------------------------
47344 PROCEDURE AcctLineType_111 (
47345   p_application_id        IN NUMBER
47346  ,p_event_id              IN NUMBER
47347  ,p_calculate_acctd_flag  IN VARCHAR2
47348  ,p_calculate_g_l_flag    IN VARCHAR2
47349  ,p_actual_flag           IN OUT VARCHAR2
47350  ,p_balance_type_code     OUT VARCHAR2
47351  ,p_gain_or_loss_ref      OUT VARCHAR2
47352  
47353 --Distribution GL Account
47354  , p_source_32            IN NUMBER
47355 --Distribution Source Type
47356  , p_source_39            IN VARCHAR2
47357 --Distribution Line Identifier
47358  , p_source_41            IN NUMBER
47359 --Distribution Type
47360  , p_source_42            IN VARCHAR2
47361 --Entered Amount
47362  , p_source_43            IN NUMBER
47363 --Currency Code
47364  , p_source_44            IN VARCHAR2
47365 --Exchange Rate
47366  , p_source_46            IN NUMBER
47367 --Exchange Rate Type
47368  , p_source_47            IN VARCHAR2
47369 --Applied To Document Accounting Amount
47370  , p_source_48            IN NUMBER
47371 --Distribution Multi Fund Additional Entry
47372  , p_source_99            IN VARCHAR2
47373 --Applied To Document Exchange Date
47374  , p_source_100            IN DATE
47375 )
47376 IS
47377 
47378 l_component_type              VARCHAR2(80);
47379 l_component_code              VARCHAR2(30);
47380 l_component_type_code         VARCHAR2(1);
47381 l_component_appl_id           INTEGER;
47382 l_amb_context_code            VARCHAR2(30);
47383 l_entity_code                 VARCHAR2(30);
47384 l_event_class_code            VARCHAR2(30);
47385 l_ae_header_id                NUMBER;
47386 l_event_type_code             VARCHAR2(30);
47387 l_line_definition_code        VARCHAR2(30);
47388 l_line_definition_owner_code  VARCHAR2(1);
47389 --
47390 -- adr variables
47391 l_segment                     VARCHAR2(30);
47392 l_ccid                        NUMBER;
47393 l_adr_transaction_coa_id      NUMBER;
47394 l_adr_accounting_coa_id       NUMBER;
47395 l_adr_flexfield_segment_code  VARCHAR2(30);
47396 l_adr_flex_value_set_id       NUMBER;
47397 l_adr_value_type_code         VARCHAR2(30);
47398 l_adr_value_combination_id    NUMBER;
47399 l_adr_value_segment_code      VARCHAR2(30);
47400 
47401 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47402 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47403 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47407 l_entered_amt_idx             NUMBER;
47404 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47405 
47406 -- 4262811 Variables ------------------------------------------------------------------------------------------
47408 l_accted_amt_idx              NUMBER;
47409 l_acc_rev_flag                VARCHAR2(1);
47410 l_accrual_line_num            NUMBER;
47411 l_tmp_amt                     NUMBER;
47412 l_acc_rev_natural_side_code   VARCHAR2(1);
47413 
47414 l_num_entries                 NUMBER;
47415 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47416 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47417 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47418 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47419 l_recog_line_1                NUMBER;
47420 l_recog_line_2                NUMBER;
47421 
47422 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47423 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47424 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47425 
47426 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47427 
47428 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47429 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47430 
47431 ---------------------------------------------------------------------------------------------------------------
47432 
47433 
47434 --
47435 -- bulk performance
47436 --
47437 l_balance_type_code           VARCHAR2(1);
47438 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47439 l_log_module                  VARCHAR2(240);
47440 
47441 --
47442 -- Upgrade strategy
47443 --
47444 l_actual_upg_option           VARCHAR2(1);
47445 l_enc_upg_option           VARCHAR2(1);
47446 
47447 --
47448 BEGIN
47449 --
47450 IF g_log_enabled THEN
47451       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_111';
47452 END IF;
47453 --
47454 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47455 
47456       trace
47457          (p_msg      => 'BEGIN of AcctLineType_111'
47458          ,p_level    => C_LEVEL_PROCEDURE
47459          ,p_module   => l_log_module);
47460 
47461 END IF;
47462 --
47463 l_component_type             := 'AMB_JLT';
47464 l_component_code             := 'MISC_RCT_REMIT';
47465 l_component_type_code        := 'S';
47466 l_component_appl_id          :=  222;
47467 l_amb_context_code           := 'DEFAULT';
47468 l_entity_code                := 'RECEIPTS';
47469 l_event_class_code           := 'MISC_RECEIPT';
47470 l_event_type_code            := 'MISC_RECEIPT_ALL';
47471 l_line_definition_owner_code := 'S';
47472 l_line_definition_code       := 'AR_MISC_RECEIPTS';
47473 --
47474 l_balance_type_code          := 'A';
47475 l_segment                     := NULL;
47476 l_ccid                        := NULL;
47477 l_adr_transaction_coa_id      := NULL;
47478 l_adr_accounting_coa_id       := NULL;
47479 l_adr_flexfield_segment_code  := NULL;
47480 l_adr_flex_value_set_id       := NULL;
47481 l_adr_value_type_code         := NULL;
47482 l_adr_value_combination_id    := NULL;
47483 l_adr_value_segment_code      := NULL;
47484 
47485 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
47486 l_bflow_class_code           := '';    -- 4219869 Business Flow
47487 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
47488 l_budgetary_control_flag     := 'N';
47489 
47490 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
47491 l_bflow_applied_to_amt       := NULL; -- 5132302
47492 l_entered_amt_idx            := NULL;          -- 4262811
47493 l_accted_amt_idx             := NULL;          -- 4262811
47494 l_acc_rev_flag               := NULL;          -- 4262811
47495 l_accrual_line_num           := NULL;          -- 4262811
47496 l_tmp_amt                    := NULL;          -- 4262811
47497 --
47498  
47499 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
47500     l_balance_type_code <> 'B' THEN
47501 IF NVL(p_source_39,'
47502 ') =  'REMITTANCE' AND 
47503 NVL(p_source_99,'
47504 ') =  'N'
47505  THEN 
47506 
47507    --
47508    XLA_AE_LINES_PKG.SetNewLine;
47509 
47510    p_balance_type_code          := l_balance_type_code;
47511    -- set the flag so later we will know whether the gain loss line needs to be created
47512    
47513    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
47514      p_actual_flag :='A';
47518    -- bulk performance
47515    END IF;
47516 
47517    --
47519    --
47520    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
47521                                       p_header_num   => 0); -- 4262811
47522    --
47523    -- set accounting line options
47524    --
47525    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
47526            p_natural_side_code          => 'C'
47527          , p_gain_or_loss_flag          => 'N'
47528          , p_gl_transfer_mode_code      => 'S'
47529          , p_acct_entry_type_code       => 'A'
47530          , p_switch_side_flag           => 'Y'
47531          , p_merge_duplicate_code       => 'A'
47532          );
47533    --
47534    l_acc_rev_natural_side_code := 'D';  -- 4262811
47535    -- 
47536    --
47537    -- set accounting line type info
47538    --
47539    xla_ae_lines_pkg.SetAcctLineType
47540       (p_component_type             => l_component_type
47541       ,p_event_type_code            => l_event_type_code
47542       ,p_line_definition_owner_code => l_line_definition_owner_code
47543       ,p_line_definition_code       => l_line_definition_code
47544       ,p_accounting_line_code       => l_component_code
47545       ,p_accounting_line_type_code  => l_component_type_code
47546       ,p_accounting_line_appl_id    => l_component_appl_id
47547       ,p_amb_context_code           => l_amb_context_code
47548       ,p_entity_code                => l_entity_code
47549       ,p_event_class_code           => l_event_class_code);
47550    --
47551    -- set accounting class
47552    --
47553    xla_ae_lines_pkg.SetAcctClass(
47554            p_accounting_class_code  => 'REMITTANCE'
47555          , p_ae_header_id           => l_ae_header_id
47556          );
47557 
47558    --
47559    -- set rounding class
47560    --
47561    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
47562                       'RECEIVABLE';
47563 
47564    --
47565    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
47566    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
47567    --
47568    -- bulk performance
47569    --
47570    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
47571 
47572    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
47573       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
47574 
47575    -- 4955764
47576    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47577       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
47578 
47579    -- 4458381 Public Sector Enh
47580    
47581    --
47582    -- set accounting attributes for the line type
47583    --
47584    l_entered_amt_idx := 3;
47585    l_accted_amt_idx  := 8;
47586    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
47587    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
47588    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
47589    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
47590    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
47591    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
47592    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
47593    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
47594    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
47595    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
47596    l_rec_acct_attrs.array_date_value(5)  := p_source_100;
47597    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
47598    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
47599    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
47600    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
47601    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
47602    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
47603 
47604    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
47605    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
47606 
47607    ---------------------------------------------------------------------------------------------------------------
47608    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
47609    ---------------------------------------------------------------------------------------------------------------
47610    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
47611 
47612    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47613    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
47617          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
47614 
47615    IF xla_accounting_cache_pkg.GetValueChar
47616          (p_source_code         => 'LEDGER_CATEGORY_CODE'
47618    AND l_bflow_method_code = 'PRIOR_ENTRY'
47619 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
47620    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
47621          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
47622        )
47623    THEN
47624          xla_ae_lines_pkg.BflowUpgEntry
47625            (p_business_method_code    => l_bflow_method_code
47626            ,p_business_class_code     => l_bflow_class_code
47627            ,p_balance_type            => l_balance_type_code);
47628    ELSE
47629       NULL;
47630 -- No business flow processing for business flow method of NONE.
47631    END IF;
47632 
47633    --
47634    -- call analytical criteria
47635    --
47636    
47637    --
47638    -- call description
47639    --
47640    -- No description or it is inherited.
47641    --
47642    -- call ADRs
47643    -- Bug 4922099
47644    --
47645    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47646         (NVL(l_actual_upg_option, 'N') = 'O') OR
47647         (NVL(l_enc_upg_option, 'N') = 'O')
47648       )
47649    THEN
47650    NULL;
47651    --
47652    --
47653    
47654   l_ccid := AcctDerRule_29(
47655            p_application_id           => p_application_id
47656          , p_ae_header_id             => l_ae_header_id 
47657 , p_source_32 => p_source_32
47658          , x_transaction_coa_id       => l_adr_transaction_coa_id
47659          , x_accounting_coa_id        => l_adr_accounting_coa_id
47660          , x_value_type_code          => l_adr_value_type_code
47661          , p_side                     => 'NA'
47662    );
47663 
47664    xla_ae_lines_pkg.set_ccid(
47665     p_code_combination_id          => l_ccid
47666   , p_value_type_code              => l_adr_value_type_code
47667   , p_transaction_coa_id           => l_adr_transaction_coa_id
47668   , p_accounting_coa_id            => l_adr_accounting_coa_id
47669   , p_adr_code                     => 'DIST_CCID'
47670   , p_adr_type_code                => 'S'
47671   , p_component_type               => l_component_type
47672   , p_component_code               => l_component_code
47673   , p_component_type_code          => l_component_type_code
47674   , p_component_appl_id            => l_component_appl_id
47675   , p_amb_context_code             => l_amb_context_code
47676   , p_side                         => 'NA'
47677   );
47678 
47679 
47680    --
47681    --
47682    END IF;
47683    --
47684    -- Bug 4922099
47685    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
47686           (NVL(l_enc_upg_option, 'N') = 'O')
47687         ) AND
47688         (l_bflow_method_code = 'PRIOR_ENTRY')
47689       )
47690    THEN
47691       IF
47692       --
47693       1 = 2
47694       --
47695       THEN
47696       xla_accounting_err_pkg.build_message
47697                                     (p_appli_s_name            => 'XLA'
47698                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47699                                     ,p_token_1                 => 'LINE_NUMBER'
47700                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
47701                                     ,p_token_2                 => 'LINE_TYPE_NAME'
47702                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
47703                                                                              l_component_type
47704                                                                             ,l_component_code
47705                                                                             ,l_component_type_code
47706                                                                             ,l_component_appl_id
47707                                                                             ,l_amb_context_code
47708                                                                             ,l_entity_code
47709                                                                             ,l_event_class_code
47710                                                                            )
47711                                     ,p_token_3                 => 'OWNER'
47712                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
47713                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
47714                                                                           ,p_lookup_code    => l_component_type_code
47715                                                                          )
47716                                     ,p_token_4                 => 'PRODUCT_NAME'
47717                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
47718                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
47719                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
47720                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
47721                                     ,p_ae_header_id            =>  NULL
47722                                        );
47726                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
47723 
47724         IF (C_LEVEL_ERROR>= g_log_level) THEN
47725                  trace
47727                       ,p_level    => C_LEVEL_ERROR
47728                       ,p_module   => l_log_module);
47729         END IF;
47730       END IF;
47731    END IF;
47732    --
47733    --
47734    ------------------------------------------------------------------------------------------------
47735    -- 4219869 Business Flow
47736    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
47737    -- Prior Entry.  Currently, the following code is always generated.
47738    ------------------------------------------------------------------------------------------------
47739    XLA_AE_LINES_PKG.ValidateCurrentLine;
47740 
47741    ------------------------------------------------------------------------------------
47742    -- 4219869 Business Flow
47743    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
47744    ------------------------------------------------------------------------------------
47745    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47746 
47747    ----------------------------------------------------------------------------------
47748    -- 4219869 Business Flow
47749    -- Update journal entry status -- Need to generate this within IF <condition>
47750    ----------------------------------------------------------------------------------
47751    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47752          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
47753          ,p_balance_type_code => l_balance_type_code
47754          );
47755 
47756    -------------------------------------------------------------------------------------------
47757    -- 4262811 - Generate the Accrual Reversal lines
47758    -------------------------------------------------------------------------------------------
47759    BEGIN
47760       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
47761                               (g_array_event(p_event_id).array_value_num('header_index'));
47762       IF l_acc_rev_flag IS NULL THEN
47763          l_acc_rev_flag := 'N';
47764       END IF;
47765    EXCEPTION
47766       WHEN OTHERS THEN
47767          l_acc_rev_flag := 'N';
47768    END;
47769    --
47770    IF (l_acc_rev_flag = 'Y') THEN
47771 
47772        -- 4645092  ------------------------------------------------------------------------------
47773        -- To allow MPA report to determine if it should generate report process
47774        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
47775        ------------------------------------------------------------------------------------------
47776 
47777        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
47778        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
47779    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
47780    -- call ADRs
47781    -- Bug 4922099
47782    --
47783    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
47784         (NVL(l_actual_upg_option, 'N') = 'O') OR
47785         (NVL(l_enc_upg_option, 'N') = 'O')
47786       )
47787    THEN
47788    NULL;
47789    --
47790    --
47791    
47792   l_ccid := AcctDerRule_29(
47793            p_application_id           => p_application_id
47794          , p_ae_header_id             => l_ae_header_id 
47795 , p_source_32 => p_source_32
47796          , x_transaction_coa_id       => l_adr_transaction_coa_id
47797          , x_accounting_coa_id        => l_adr_accounting_coa_id
47798          , x_value_type_code          => l_adr_value_type_code
47799          , p_side                     => 'NA'
47800    );
47801 
47802    xla_ae_lines_pkg.set_ccid(
47803     p_code_combination_id          => l_ccid
47804   , p_value_type_code              => l_adr_value_type_code
47805   , p_transaction_coa_id           => l_adr_transaction_coa_id
47806   , p_accounting_coa_id            => l_adr_accounting_coa_id
47807   , p_adr_code                     => 'DIST_CCID'
47808   , p_adr_type_code                => 'S'
47809   , p_component_type               => l_component_type
47810   , p_component_code               => l_component_code
47811   , p_component_type_code          => l_component_type_code
47812   , p_component_appl_id            => l_component_appl_id
47813   , p_amb_context_code             => l_amb_context_code
47814   , p_side                         => 'NA'
47815   );
47816 
47817 
47818    --
47819    --
47820    END IF;
47821 
47822        --
47823        -- Update the line information that should be overwritten
47824        --
47825        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
47826                                          p_header_num   => 1);
47827        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
47828 
47829        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
47830 
47831        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
47832           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
47833        END IF;
47834 
47835       --
47836       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
47837       --
47841           ---------------------------------------------------------------------------------------------------
47838       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
47839           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
47840       ELSE
47842           -- 4262811a Switch Sign
47843           ---------------------------------------------------------------------------------------------------
47844           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
47845           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47846                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47847           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
47848                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47849           -- 5132302
47850           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
47851                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
47852 
47853       END IF;
47854 
47855       -- 4955764
47856       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
47857       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
47858 
47859 
47860       XLA_AE_LINES_PKG.ValidateCurrentLine;
47861       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
47862 
47863       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
47864                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
47865                ,p_balance_type_code => l_balance_type_code);
47866 
47867    END IF;
47868 
47869    -----------------------------------------------------------------------------------------
47870    -- 4262811 Multiperiod Accounting
47871    -----------------------------------------------------------------------------------------
47872      -- No MPA option is assigned.
47873 
47874 
47875 END IF;
47876 END IF;
47877 --
47878 
47879 --
47880 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
47881    trace
47882       (p_msg      => 'END of AcctLineType_111'
47883       ,p_level    => C_LEVEL_PROCEDURE
47884       ,p_module   => l_log_module);
47885 END IF;
47886 --
47887 EXCEPTION
47888   WHEN xla_exceptions_pkg.application_exception THEN
47889       RAISE;
47890   WHEN OTHERS THEN
47891        xla_exceptions_pkg.raise_message
47892            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_111');
47893 END AcctLineType_111;
47894 --
47895 
47896 ---------------------------------------
47897 --
47898 -- PRIVATE FUNCTION
47899 --         AcctLineType_112
47900 --
47901 ---------------------------------------
47902 PROCEDURE AcctLineType_112 (
47903   p_application_id        IN NUMBER
47904  ,p_event_id              IN NUMBER
47905  ,p_calculate_acctd_flag  IN VARCHAR2
47906  ,p_calculate_g_l_flag    IN VARCHAR2
47907  ,p_actual_flag           IN OUT VARCHAR2
47908  ,p_balance_type_code     OUT VARCHAR2
47909  ,p_gain_or_loss_ref      OUT VARCHAR2
47910  
47911 --Distribution GL Account
47912  , p_source_32            IN NUMBER
47913 --Distribution Source Type
47914  , p_source_39            IN VARCHAR2
47915 --Distribution Line Identifier
47916  , p_source_41            IN NUMBER
47917 --Distribution Type
47918  , p_source_42            IN VARCHAR2
47919 --Entered Amount
47920  , p_source_43            IN NUMBER
47921 --Currency Code
47922  , p_source_44            IN VARCHAR2
47923 --Exchange Rate
47924  , p_source_46            IN NUMBER
47925 --Exchange Rate Type
47926  , p_source_47            IN VARCHAR2
47927 --Applied To Document Accounting Amount
47928  , p_source_48            IN NUMBER
47929 --Distribution Multi Fund Additional Entry
47930  , p_source_99            IN VARCHAR2
47931 --Applied To Document Exchange Date
47932  , p_source_100            IN DATE
47933 )
47934 IS
47935 
47936 l_component_type              VARCHAR2(80);
47937 l_component_code              VARCHAR2(30);
47938 l_component_type_code         VARCHAR2(1);
47939 l_component_appl_id           INTEGER;
47940 l_amb_context_code            VARCHAR2(30);
47941 l_entity_code                 VARCHAR2(30);
47942 l_event_class_code            VARCHAR2(30);
47943 l_ae_header_id                NUMBER;
47944 l_event_type_code             VARCHAR2(30);
47945 l_line_definition_code        VARCHAR2(30);
47946 l_line_definition_owner_code  VARCHAR2(1);
47947 --
47948 -- adr variables
47949 l_segment                     VARCHAR2(30);
47950 l_ccid                        NUMBER;
47951 l_adr_transaction_coa_id      NUMBER;
47952 l_adr_accounting_coa_id       NUMBER;
47953 l_adr_flexfield_segment_code  VARCHAR2(30);
47954 l_adr_flex_value_set_id       NUMBER;
47955 l_adr_value_type_code         VARCHAR2(30);
47956 l_adr_value_combination_id    NUMBER;
47957 l_adr_value_segment_code      VARCHAR2(30);
47958 
47959 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
47960 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
47961 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
47962 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
47963 
47967 l_acc_rev_flag                VARCHAR2(1);
47964 -- 4262811 Variables ------------------------------------------------------------------------------------------
47965 l_entered_amt_idx             NUMBER;
47966 l_accted_amt_idx              NUMBER;
47968 l_accrual_line_num            NUMBER;
47969 l_tmp_amt                     NUMBER;
47970 l_acc_rev_natural_side_code   VARCHAR2(1);
47971 
47972 l_num_entries                 NUMBER;
47973 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
47974 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
47975 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
47976 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
47977 l_recog_line_1                NUMBER;
47978 l_recog_line_2                NUMBER;
47979 
47980 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
47981 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
47982 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
47983 
47984 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
47985 
47986 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
47987 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
47988 
47989 ---------------------------------------------------------------------------------------------------------------
47990 
47991 
47992 --
47993 -- bulk performance
47994 --
47995 l_balance_type_code           VARCHAR2(1);
47996 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
47997 l_log_module                  VARCHAR2(240);
47998 
47999 --
48000 -- Upgrade strategy
48001 --
48002 l_actual_upg_option           VARCHAR2(1);
48003 l_enc_upg_option           VARCHAR2(1);
48004 
48005 --
48006 BEGIN
48007 --
48008 IF g_log_enabled THEN
48009       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_112';
48010 END IF;
48011 --
48012 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48013 
48014       trace
48015          (p_msg      => 'BEGIN of AcctLineType_112'
48016          ,p_level    => C_LEVEL_PROCEDURE
48017          ,p_module   => l_log_module);
48018 
48019 END IF;
48020 --
48021 l_component_type             := 'AMB_JLT';
48022 l_component_code             := 'MISC_RCT_TAX';
48023 l_component_type_code        := 'S';
48024 l_component_appl_id          :=  222;
48025 l_amb_context_code           := 'DEFAULT';
48026 l_entity_code                := 'RECEIPTS';
48027 l_event_class_code           := 'MISC_RECEIPT';
48028 l_event_type_code            := 'MISC_RECEIPT_ALL';
48029 l_line_definition_owner_code := 'S';
48030 l_line_definition_code       := 'AR_MISC_RECEIPTS';
48031 --
48032 l_balance_type_code          := 'A';
48033 l_segment                     := NULL;
48034 l_ccid                        := NULL;
48035 l_adr_transaction_coa_id      := NULL;
48036 l_adr_accounting_coa_id       := NULL;
48037 l_adr_flexfield_segment_code  := NULL;
48038 l_adr_flex_value_set_id       := NULL;
48039 l_adr_value_type_code         := NULL;
48040 l_adr_value_combination_id    := NULL;
48041 l_adr_value_segment_code      := NULL;
48042 
48043 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
48044 l_bflow_class_code           := '';    -- 4219869 Business Flow
48045 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
48046 l_budgetary_control_flag     := 'N';
48047 
48048 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
48049 l_bflow_applied_to_amt       := NULL; -- 5132302
48050 l_entered_amt_idx            := NULL;          -- 4262811
48051 l_accted_amt_idx             := NULL;          -- 4262811
48052 l_acc_rev_flag               := NULL;          -- 4262811
48053 l_accrual_line_num           := NULL;          -- 4262811
48054 l_tmp_amt                    := NULL;          -- 4262811
48055 --
48056  
48057 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48058     l_balance_type_code <> 'B' THEN
48059 IF NVL(p_source_39,'
48060 ') =  'TAX' AND 
48061 NVL(p_source_99,'
48062 ') =  'N'
48063  THEN 
48064 
48065    --
48066    XLA_AE_LINES_PKG.SetNewLine;
48067 
48068    p_balance_type_code          := l_balance_type_code;
48069    -- set the flag so later we will know whether the gain loss line needs to be created
48070    
48071    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48072      p_actual_flag :='A';
48073    END IF;
48074 
48075    --
48076    -- bulk performance
48077    --
48078    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48079                                       p_header_num   => 0); -- 4262811
48080    --
48081    -- set accounting line options
48082    --
48083    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48084            p_natural_side_code          => 'C'
48085          , p_gain_or_loss_flag          => 'N'
48086          , p_gl_transfer_mode_code      => 'S'
48087          , p_acct_entry_type_code       => 'A'
48088          , p_switch_side_flag           => 'Y'
48089          , p_merge_duplicate_code       => 'A'
48090          );
48091    --
48092    l_acc_rev_natural_side_code := 'D';  -- 4262811
48093    -- 
48094    --
48095    -- set accounting line type info
48096    --
48097    xla_ae_lines_pkg.SetAcctLineType
48101       ,p_line_definition_code       => l_line_definition_code
48098       (p_component_type             => l_component_type
48099       ,p_event_type_code            => l_event_type_code
48100       ,p_line_definition_owner_code => l_line_definition_owner_code
48102       ,p_accounting_line_code       => l_component_code
48103       ,p_accounting_line_type_code  => l_component_type_code
48104       ,p_accounting_line_appl_id    => l_component_appl_id
48105       ,p_amb_context_code           => l_amb_context_code
48106       ,p_entity_code                => l_entity_code
48107       ,p_event_class_code           => l_event_class_code);
48108    --
48109    -- set accounting class
48110    --
48111    xla_ae_lines_pkg.SetAcctClass(
48112            p_accounting_class_code  => 'TAX'
48113          , p_ae_header_id           => l_ae_header_id
48114          );
48115 
48116    --
48117    -- set rounding class
48118    --
48119    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48120                       'RECEIVABLE';
48121 
48122    --
48123    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48124    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48125    --
48126    -- bulk performance
48127    --
48128    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48129 
48130    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48131       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48132 
48133    -- 4955764
48134    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48135       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48136 
48137    -- 4458381 Public Sector Enh
48138    
48139    --
48140    -- set accounting attributes for the line type
48141    --
48142    l_entered_amt_idx := 3;
48143    l_accted_amt_idx  := 8;
48144    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
48145    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
48146    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
48147    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
48148    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
48149    l_rec_acct_attrs.array_acct_attr_code(3) := 'ENTERED_CURRENCY_AMOUNT';
48150    l_rec_acct_attrs.array_num_value(3)  := p_source_43;
48151    l_rec_acct_attrs.array_acct_attr_code(4) := 'ENTERED_CURRENCY_CODE';
48152    l_rec_acct_attrs.array_char_value(4)  := p_source_44;
48153    l_rec_acct_attrs.array_acct_attr_code(5) := 'EXCHANGE_DATE';
48154    l_rec_acct_attrs.array_date_value(5)  := p_source_100;
48155    l_rec_acct_attrs.array_acct_attr_code(6) := 'EXCHANGE_RATE';
48156    l_rec_acct_attrs.array_num_value(6)  := p_source_46;
48157    l_rec_acct_attrs.array_acct_attr_code(7) := 'EXCHANGE_RATE_TYPE';
48158    l_rec_acct_attrs.array_char_value(7)  := p_source_47;
48159    l_rec_acct_attrs.array_acct_attr_code(8) := 'LEDGER_AMOUNT';
48160    l_rec_acct_attrs.array_num_value(8)  := p_source_48;
48161 
48162    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48163    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48164 
48165    ---------------------------------------------------------------------------------------------------------------
48166    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48167    ---------------------------------------------------------------------------------------------------------------
48168    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48169 
48170    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48171    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48172 
48173    IF xla_accounting_cache_pkg.GetValueChar
48174          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48175          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48176    AND l_bflow_method_code = 'PRIOR_ENTRY'
48177 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48178    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48179          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48180        )
48181    THEN
48182          xla_ae_lines_pkg.BflowUpgEntry
48183            (p_business_method_code    => l_bflow_method_code
48184            ,p_business_class_code     => l_bflow_class_code
48185            ,p_balance_type            => l_balance_type_code);
48186    ELSE
48187       NULL;
48188 -- No business flow processing for business flow method of NONE.
48189    END IF;
48190 
48191    --
48192    -- call analytical criteria
48193    --
48194    
48195    --
48196    -- call description
48197    --
48198    -- No description or it is inherited.
48199    --
48200    -- call ADRs
48201    -- Bug 4922099
48202    --
48203    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48204         (NVL(l_actual_upg_option, 'N') = 'O') OR
48205         (NVL(l_enc_upg_option, 'N') = 'O')
48206       )
48207    THEN
48208    NULL;
48209    --
48210    --
48211    
48212   l_ccid := AcctDerRule_29(
48213            p_application_id           => p_application_id
48214          , p_ae_header_id             => l_ae_header_id 
48218          , x_value_type_code          => l_adr_value_type_code
48215 , p_source_32 => p_source_32
48216          , x_transaction_coa_id       => l_adr_transaction_coa_id
48217          , x_accounting_coa_id        => l_adr_accounting_coa_id
48219          , p_side                     => 'NA'
48220    );
48221 
48222    xla_ae_lines_pkg.set_ccid(
48223     p_code_combination_id          => l_ccid
48224   , p_value_type_code              => l_adr_value_type_code
48225   , p_transaction_coa_id           => l_adr_transaction_coa_id
48226   , p_accounting_coa_id            => l_adr_accounting_coa_id
48227   , p_adr_code                     => 'DIST_CCID'
48228   , p_adr_type_code                => 'S'
48229   , p_component_type               => l_component_type
48230   , p_component_code               => l_component_code
48231   , p_component_type_code          => l_component_type_code
48232   , p_component_appl_id            => l_component_appl_id
48233   , p_amb_context_code             => l_amb_context_code
48234   , p_side                         => 'NA'
48235   );
48236 
48237 
48238    --
48239    --
48240    END IF;
48241    --
48242    -- Bug 4922099
48243    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48244           (NVL(l_enc_upg_option, 'N') = 'O')
48245         ) AND
48246         (l_bflow_method_code = 'PRIOR_ENTRY')
48247       )
48248    THEN
48249       IF
48250       --
48251       1 = 2
48252       --
48253       THEN
48254       xla_accounting_err_pkg.build_message
48255                                     (p_appli_s_name            => 'XLA'
48256                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48257                                     ,p_token_1                 => 'LINE_NUMBER'
48258                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48259                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48260                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48261                                                                              l_component_type
48262                                                                             ,l_component_code
48263                                                                             ,l_component_type_code
48264                                                                             ,l_component_appl_id
48265                                                                             ,l_amb_context_code
48266                                                                             ,l_entity_code
48267                                                                             ,l_event_class_code
48268                                                                            )
48269                                     ,p_token_3                 => 'OWNER'
48270                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48271                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48272                                                                           ,p_lookup_code    => l_component_type_code
48273                                                                          )
48274                                     ,p_token_4                 => 'PRODUCT_NAME'
48275                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48276                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48277                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48278                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48279                                     ,p_ae_header_id            =>  NULL
48280                                        );
48281 
48282         IF (C_LEVEL_ERROR>= g_log_level) THEN
48283                  trace
48284                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48285                       ,p_level    => C_LEVEL_ERROR
48286                       ,p_module   => l_log_module);
48287         END IF;
48288       END IF;
48289    END IF;
48290    --
48291    --
48292    ------------------------------------------------------------------------------------------------
48293    -- 4219869 Business Flow
48294    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48295    -- Prior Entry.  Currently, the following code is always generated.
48296    ------------------------------------------------------------------------------------------------
48297    XLA_AE_LINES_PKG.ValidateCurrentLine;
48298 
48299    ------------------------------------------------------------------------------------
48300    -- 4219869 Business Flow
48301    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48302    ------------------------------------------------------------------------------------
48303    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48304 
48305    ----------------------------------------------------------------------------------
48306    -- 4219869 Business Flow
48307    -- Update journal entry status -- Need to generate this within IF <condition>
48308    ----------------------------------------------------------------------------------
48309    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48313 
48310          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48311          ,p_balance_type_code => l_balance_type_code
48312          );
48314    -------------------------------------------------------------------------------------------
48315    -- 4262811 - Generate the Accrual Reversal lines
48316    -------------------------------------------------------------------------------------------
48317    BEGIN
48318       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48319                               (g_array_event(p_event_id).array_value_num('header_index'));
48320       IF l_acc_rev_flag IS NULL THEN
48321          l_acc_rev_flag := 'N';
48322       END IF;
48323    EXCEPTION
48324       WHEN OTHERS THEN
48325          l_acc_rev_flag := 'N';
48326    END;
48327    --
48328    IF (l_acc_rev_flag = 'Y') THEN
48329 
48330        -- 4645092  ------------------------------------------------------------------------------
48331        -- To allow MPA report to determine if it should generate report process
48332        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48333        ------------------------------------------------------------------------------------------
48334 
48335        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48336        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48337    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
48338    -- call ADRs
48339    -- Bug 4922099
48340    --
48341    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48342         (NVL(l_actual_upg_option, 'N') = 'O') OR
48343         (NVL(l_enc_upg_option, 'N') = 'O')
48344       )
48345    THEN
48346    NULL;
48347    --
48348    --
48349    
48350   l_ccid := AcctDerRule_29(
48351            p_application_id           => p_application_id
48352          , p_ae_header_id             => l_ae_header_id 
48353 , p_source_32 => p_source_32
48354          , x_transaction_coa_id       => l_adr_transaction_coa_id
48355          , x_accounting_coa_id        => l_adr_accounting_coa_id
48356          , x_value_type_code          => l_adr_value_type_code
48357          , p_side                     => 'NA'
48358    );
48359 
48360    xla_ae_lines_pkg.set_ccid(
48361     p_code_combination_id          => l_ccid
48362   , p_value_type_code              => l_adr_value_type_code
48363   , p_transaction_coa_id           => l_adr_transaction_coa_id
48364   , p_accounting_coa_id            => l_adr_accounting_coa_id
48365   , p_adr_code                     => 'DIST_CCID'
48366   , p_adr_type_code                => 'S'
48367   , p_component_type               => l_component_type
48368   , p_component_code               => l_component_code
48369   , p_component_type_code          => l_component_type_code
48370   , p_component_appl_id            => l_component_appl_id
48371   , p_amb_context_code             => l_amb_context_code
48372   , p_side                         => 'NA'
48373   );
48374 
48375 
48376    --
48377    --
48378    END IF;
48379 
48380        --
48381        -- Update the line information that should be overwritten
48382        --
48383        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48384                                          p_header_num   => 1);
48385        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48386 
48387        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48388 
48389        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48390           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48391        END IF;
48392 
48393       --
48394       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48395       --
48396       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48397           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48398       ELSE
48399           ---------------------------------------------------------------------------------------------------
48400           -- 4262811a Switch Sign
48401           ---------------------------------------------------------------------------------------------------
48402           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48403           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48404                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48405           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48406                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48407           -- 5132302
48408           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48409                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48410 
48411       END IF;
48412 
48413       -- 4955764
48414       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48415       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
48416 
48417 
48418       XLA_AE_LINES_PKG.ValidateCurrentLine;
48422                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
48419       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48420 
48421       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48423                ,p_balance_type_code => l_balance_type_code);
48424 
48425    END IF;
48426 
48427    -----------------------------------------------------------------------------------------
48428    -- 4262811 Multiperiod Accounting
48429    -----------------------------------------------------------------------------------------
48430      -- No MPA option is assigned.
48431 
48432 
48433 END IF;
48434 END IF;
48435 --
48436 
48437 --
48438 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48439    trace
48440       (p_msg      => 'END of AcctLineType_112'
48441       ,p_level    => C_LEVEL_PROCEDURE
48442       ,p_module   => l_log_module);
48443 END IF;
48444 --
48445 EXCEPTION
48446   WHEN xla_exceptions_pkg.application_exception THEN
48447       RAISE;
48448   WHEN OTHERS THEN
48449        xla_exceptions_pkg.raise_message
48450            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_112');
48451 END AcctLineType_112;
48452 --
48453 
48454 ---------------------------------------
48455 --
48456 -- PRIVATE FUNCTION
48457 --         AcctLineType_113
48458 --
48459 ---------------------------------------
48460 PROCEDURE AcctLineType_113 (
48461   p_application_id        IN NUMBER
48462  ,p_event_id              IN NUMBER
48463  ,p_calculate_acctd_flag  IN VARCHAR2
48464  ,p_calculate_g_l_flag    IN VARCHAR2
48465  ,p_actual_flag           IN OUT VARCHAR2
48466  ,p_balance_type_code     OUT VARCHAR2
48467  ,p_gain_or_loss_ref      OUT VARCHAR2
48468  
48469 --Distribution GL Account
48470  , p_source_32            IN NUMBER
48471 --Distribution Source Type
48472  , p_source_39            IN VARCHAR2
48473 --Distribution Line Identifier
48474  , p_source_41            IN NUMBER
48475 --Distribution Type
48476  , p_source_42            IN VARCHAR2
48477 --Exchange Date
48478  , p_source_45            IN DATE
48479 --Exchange Rate
48480  , p_source_46            IN NUMBER
48481 --Exchange Rate Type
48482  , p_source_47            IN VARCHAR2
48483 --Accounting Amount
48484  , p_source_52            IN NUMBER
48485 --Transaction Distribution Identifier
48486  , p_source_56            IN NUMBER
48487 --Transaction Distribution Type
48488  , p_source_57            IN VARCHAR2
48489 --Distribution Multi Fund Additional Entry
48490  , p_source_99            IN VARCHAR2
48491 --Receipt Applied To Application Identifier
48492  , p_source_101            IN NUMBER
48493 --Transaction Entity Code
48494  , p_source_102            IN VARCHAR2
48495 --Transaction Identifier
48496  , p_source_103            IN NUMBER
48497 --DIST_ENT_AMT_FROM
48498  , p_source_104            IN NUMBER
48499 --Applying Document Currency Code
48500  , p_source_105            IN VARCHAR2
48501 --Distribution Party Identifier
48502  , p_source_106            IN NUMBER
48503 --Distribution Party Site Id
48504  , p_source_107            IN NUMBER
48505 --Distribution Party Type
48506  , p_source_108            IN VARCHAR2
48507 )
48508 IS
48509 
48510 l_component_type              VARCHAR2(80);
48511 l_component_code              VARCHAR2(30);
48512 l_component_type_code         VARCHAR2(1);
48513 l_component_appl_id           INTEGER;
48514 l_amb_context_code            VARCHAR2(30);
48515 l_entity_code                 VARCHAR2(30);
48516 l_event_class_code            VARCHAR2(30);
48517 l_ae_header_id                NUMBER;
48518 l_event_type_code             VARCHAR2(30);
48519 l_line_definition_code        VARCHAR2(30);
48520 l_line_definition_owner_code  VARCHAR2(1);
48521 --
48522 -- adr variables
48523 l_segment                     VARCHAR2(30);
48524 l_ccid                        NUMBER;
48525 l_adr_transaction_coa_id      NUMBER;
48526 l_adr_accounting_coa_id       NUMBER;
48527 l_adr_flexfield_segment_code  VARCHAR2(30);
48528 l_adr_flex_value_set_id       NUMBER;
48529 l_adr_value_type_code         VARCHAR2(30);
48530 l_adr_value_combination_id    NUMBER;
48531 l_adr_value_segment_code      VARCHAR2(30);
48532 
48533 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
48534 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
48535 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
48536 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
48537 
48538 -- 4262811 Variables ------------------------------------------------------------------------------------------
48539 l_entered_amt_idx             NUMBER;
48540 l_accted_amt_idx              NUMBER;
48541 l_acc_rev_flag                VARCHAR2(1);
48542 l_accrual_line_num            NUMBER;
48543 l_tmp_amt                     NUMBER;
48544 l_acc_rev_natural_side_code   VARCHAR2(1);
48545 
48546 l_num_entries                 NUMBER;
48547 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
48548 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
48549 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
48550 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
48551 l_recog_line_1                NUMBER;
48552 l_recog_line_2                NUMBER;
48553 
48554 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
48558 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
48555 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
48556 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
48557 
48559 
48560 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
48561 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
48562 
48563 ---------------------------------------------------------------------------------------------------------------
48564 
48565 
48566 --
48567 -- bulk performance
48568 --
48569 l_balance_type_code           VARCHAR2(1);
48570 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
48571 l_log_module                  VARCHAR2(240);
48572 
48573 --
48574 -- Upgrade strategy
48575 --
48576 l_actual_upg_option           VARCHAR2(1);
48577 l_enc_upg_option           VARCHAR2(1);
48578 
48579 --
48580 BEGIN
48581 --
48582 IF g_log_enabled THEN
48583       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_113';
48584 END IF;
48585 --
48586 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
48587 
48588       trace
48589          (p_msg      => 'BEGIN of AcctLineType_113'
48590          ,p_level    => C_LEVEL_PROCEDURE
48591          ,p_module   => l_log_module);
48592 
48593 END IF;
48594 --
48595 l_component_type             := 'AMB_JLT';
48596 l_component_code             := 'RCT_ACC';
48597 l_component_type_code        := 'S';
48598 l_component_appl_id          :=  222;
48599 l_amb_context_code           := 'DEFAULT';
48600 l_entity_code                := 'RECEIPTS';
48601 l_event_class_code           := 'RECEIPT';
48602 l_event_type_code            := 'RECEIPT_ALL';
48603 l_line_definition_owner_code := 'S';
48604 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
48605 --
48606 l_balance_type_code          := 'A';
48607 l_segment                     := NULL;
48608 l_ccid                        := NULL;
48609 l_adr_transaction_coa_id      := NULL;
48610 l_adr_accounting_coa_id       := NULL;
48611 l_adr_flexfield_segment_code  := NULL;
48612 l_adr_flex_value_set_id       := NULL;
48613 l_adr_value_type_code         := NULL;
48614 l_adr_value_combination_id    := NULL;
48615 l_adr_value_segment_code      := NULL;
48616 
48617 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
48618 l_bflow_class_code           := '';    -- 4219869 Business Flow
48619 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
48620 l_budgetary_control_flag     := 'N';
48621 
48622 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
48623 l_bflow_applied_to_amt       := NULL; -- 5132302
48624 l_entered_amt_idx            := NULL;          -- 4262811
48625 l_accted_amt_idx             := NULL;          -- 4262811
48626 l_acc_rev_flag               := NULL;          -- 4262811
48627 l_accrual_line_num           := NULL;          -- 4262811
48628 l_tmp_amt                    := NULL;          -- 4262811
48629 --
48630  
48631 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
48632     l_balance_type_code <> 'B' THEN
48633 IF NVL(p_source_39,'
48634 ') =  'ACC' AND 
48635 NVL(p_source_99,'
48636 ') =  'N'
48637  THEN 
48638 
48639    --
48640    XLA_AE_LINES_PKG.SetNewLine;
48641 
48642    p_balance_type_code          := l_balance_type_code;
48643    -- set the flag so later we will know whether the gain loss line needs to be created
48644    
48645    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
48646      p_actual_flag :='A';
48647    END IF;
48648 
48649    --
48650    -- bulk performance
48651    --
48652    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
48653                                       p_header_num   => 0); -- 4262811
48654    --
48655    -- set accounting line options
48656    --
48657    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
48658            p_natural_side_code          => 'C'
48659          , p_gain_or_loss_flag          => 'N'
48660          , p_gl_transfer_mode_code      => 'S'
48661          , p_acct_entry_type_code       => 'A'
48662          , p_switch_side_flag           => 'Y'
48663          , p_merge_duplicate_code       => 'A'
48664          );
48665    --
48666    l_acc_rev_natural_side_code := 'D';  -- 4262811
48667    -- 
48668    --
48669    -- set accounting line type info
48670    --
48671    xla_ae_lines_pkg.SetAcctLineType
48672       (p_component_type             => l_component_type
48673       ,p_event_type_code            => l_event_type_code
48674       ,p_line_definition_owner_code => l_line_definition_owner_code
48675       ,p_line_definition_code       => l_line_definition_code
48676       ,p_accounting_line_code       => l_component_code
48677       ,p_accounting_line_type_code  => l_component_type_code
48678       ,p_accounting_line_appl_id    => l_component_appl_id
48679       ,p_amb_context_code           => l_amb_context_code
48680       ,p_entity_code                => l_entity_code
48681       ,p_event_class_code           => l_event_class_code);
48682    --
48683    -- set accounting class
48684    --
48685    xla_ae_lines_pkg.SetAcctClass(
48686            p_accounting_class_code  => 'ACC'
48687          , p_ae_header_id           => l_ae_header_id
48688          );
48689 
48690    --
48691    -- set rounding class
48692    --
48696    --
48693    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
48694                       'RECEIVABLE';
48695 
48697    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
48698    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
48699    --
48700    -- bulk performance
48701    --
48702    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
48703 
48704    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
48705       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
48706 
48707    -- 4955764
48708    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
48709       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
48710 
48711    -- 4458381 Public Sector Enh
48712    
48713    --
48714    -- set accounting attributes for the line type
48715    --
48716    l_entered_amt_idx := 8;
48717    l_accted_amt_idx  := 13;
48718    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
48719    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
48720    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
48721    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
48722    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
48723    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
48724    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
48725    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
48726    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
48727    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
48728    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
48729    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
48730    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
48731    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
48732    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
48733    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
48734    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
48735    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
48736    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
48737    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
48738    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
48739    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
48740    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
48741    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
48742    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
48743    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
48744    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
48745    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
48746    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
48747    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
48748    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
48749    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
48750    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
48751 
48752    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
48753    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
48754 
48755    ---------------------------------------------------------------------------------------------------------------
48756    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
48757    ---------------------------------------------------------------------------------------------------------------
48758    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
48759 
48760    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48761    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
48762 
48763    IF xla_accounting_cache_pkg.GetValueChar
48764          (p_source_code         => 'LEDGER_CATEGORY_CODE'
48765          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
48766    AND l_bflow_method_code = 'PRIOR_ENTRY'
48767 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
48768    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
48769          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
48770        )
48771    THEN
48772          xla_ae_lines_pkg.BflowUpgEntry
48773            (p_business_method_code    => l_bflow_method_code
48774            ,p_business_class_code     => l_bflow_class_code
48775            ,p_balance_type            => l_balance_type_code);
48776    ELSE
48777       NULL;
48778 -- No business flow processing for business flow method of NONE.
48779    END IF;
48780 
48781    --
48782    -- call analytical criteria
48783    --
48784    
48785    --
48786    -- call description
48787    --
48788    -- No description or it is inherited.
48789    --
48790    -- call ADRs
48791    -- Bug 4922099
48792    --
48793    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48794         (NVL(l_actual_upg_option, 'N') = 'O') OR
48795         (NVL(l_enc_upg_option, 'N') = 'O')
48796       )
48797    THEN
48798    NULL;
48802   l_ccid := AcctDerRule_29(
48799    --
48800    --
48801    
48803            p_application_id           => p_application_id
48804          , p_ae_header_id             => l_ae_header_id 
48805 , p_source_32 => p_source_32
48806          , x_transaction_coa_id       => l_adr_transaction_coa_id
48807          , x_accounting_coa_id        => l_adr_accounting_coa_id
48808          , x_value_type_code          => l_adr_value_type_code
48809          , p_side                     => 'NA'
48810    );
48811 
48812    xla_ae_lines_pkg.set_ccid(
48813     p_code_combination_id          => l_ccid
48814   , p_value_type_code              => l_adr_value_type_code
48815   , p_transaction_coa_id           => l_adr_transaction_coa_id
48816   , p_accounting_coa_id            => l_adr_accounting_coa_id
48817   , p_adr_code                     => 'DIST_CCID'
48818   , p_adr_type_code                => 'S'
48819   , p_component_type               => l_component_type
48820   , p_component_code               => l_component_code
48821   , p_component_type_code          => l_component_type_code
48822   , p_component_appl_id            => l_component_appl_id
48823   , p_amb_context_code             => l_amb_context_code
48824   , p_side                         => 'NA'
48825   );
48826 
48827 
48828    --
48829    --
48830    END IF;
48831    --
48832    -- Bug 4922099
48833    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
48834           (NVL(l_enc_upg_option, 'N') = 'O')
48835         ) AND
48836         (l_bflow_method_code = 'PRIOR_ENTRY')
48837       )
48838    THEN
48839       IF
48840       --
48841       1 = 2
48842       --
48843       THEN
48844       xla_accounting_err_pkg.build_message
48845                                     (p_appli_s_name            => 'XLA'
48846                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48847                                     ,p_token_1                 => 'LINE_NUMBER'
48848                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
48849                                     ,p_token_2                 => 'LINE_TYPE_NAME'
48850                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
48851                                                                              l_component_type
48852                                                                             ,l_component_code
48853                                                                             ,l_component_type_code
48854                                                                             ,l_component_appl_id
48855                                                                             ,l_amb_context_code
48856                                                                             ,l_entity_code
48857                                                                             ,l_event_class_code
48858                                                                            )
48859                                     ,p_token_3                 => 'OWNER'
48860                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
48861                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
48862                                                                           ,p_lookup_code    => l_component_type_code
48863                                                                          )
48864                                     ,p_token_4                 => 'PRODUCT_NAME'
48865                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
48866                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
48867                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
48868                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
48869                                     ,p_ae_header_id            =>  NULL
48870                                        );
48871 
48872         IF (C_LEVEL_ERROR>= g_log_level) THEN
48873                  trace
48874                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
48875                       ,p_level    => C_LEVEL_ERROR
48876                       ,p_module   => l_log_module);
48877         END IF;
48878       END IF;
48879    END IF;
48880    --
48881    --
48882    ------------------------------------------------------------------------------------------------
48883    -- 4219869 Business Flow
48884    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
48885    -- Prior Entry.  Currently, the following code is always generated.
48886    ------------------------------------------------------------------------------------------------
48887    XLA_AE_LINES_PKG.ValidateCurrentLine;
48888 
48889    ------------------------------------------------------------------------------------
48890    -- 4219869 Business Flow
48891    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
48892    ------------------------------------------------------------------------------------
48893    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
48894 
48895    ----------------------------------------------------------------------------------
48896    -- 4219869 Business Flow
48900          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
48897    -- Update journal entry status -- Need to generate this within IF <condition>
48898    ----------------------------------------------------------------------------------
48899    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
48901          ,p_balance_type_code => l_balance_type_code
48902          );
48903 
48904    -------------------------------------------------------------------------------------------
48905    -- 4262811 - Generate the Accrual Reversal lines
48906    -------------------------------------------------------------------------------------------
48907    BEGIN
48908       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
48909                               (g_array_event(p_event_id).array_value_num('header_index'));
48910       IF l_acc_rev_flag IS NULL THEN
48911          l_acc_rev_flag := 'N';
48912       END IF;
48913    EXCEPTION
48914       WHEN OTHERS THEN
48915          l_acc_rev_flag := 'N';
48916    END;
48917    --
48918    IF (l_acc_rev_flag = 'Y') THEN
48919 
48920        -- 4645092  ------------------------------------------------------------------------------
48921        -- To allow MPA report to determine if it should generate report process
48922        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
48923        ------------------------------------------------------------------------------------------
48924 
48925        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
48926        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
48927    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
48928    -- call ADRs
48929    -- Bug 4922099
48930    --
48931    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
48932         (NVL(l_actual_upg_option, 'N') = 'O') OR
48933         (NVL(l_enc_upg_option, 'N') = 'O')
48934       )
48935    THEN
48936    NULL;
48937    --
48938    --
48939    
48940   l_ccid := AcctDerRule_29(
48941            p_application_id           => p_application_id
48942          , p_ae_header_id             => l_ae_header_id 
48943 , p_source_32 => p_source_32
48944          , x_transaction_coa_id       => l_adr_transaction_coa_id
48945          , x_accounting_coa_id        => l_adr_accounting_coa_id
48946          , x_value_type_code          => l_adr_value_type_code
48947          , p_side                     => 'NA'
48948    );
48949 
48950    xla_ae_lines_pkg.set_ccid(
48951     p_code_combination_id          => l_ccid
48952   , p_value_type_code              => l_adr_value_type_code
48953   , p_transaction_coa_id           => l_adr_transaction_coa_id
48954   , p_accounting_coa_id            => l_adr_accounting_coa_id
48955   , p_adr_code                     => 'DIST_CCID'
48956   , p_adr_type_code                => 'S'
48957   , p_component_type               => l_component_type
48958   , p_component_code               => l_component_code
48959   , p_component_type_code          => l_component_type_code
48960   , p_component_appl_id            => l_component_appl_id
48961   , p_amb_context_code             => l_amb_context_code
48962   , p_side                         => 'NA'
48963   );
48964 
48965 
48966    --
48967    --
48968    END IF;
48969 
48970        --
48971        -- Update the line information that should be overwritten
48972        --
48973        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
48974                                          p_header_num   => 1);
48975        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
48976 
48977        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
48978 
48979        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
48980           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
48981        END IF;
48982 
48983       --
48984       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
48985       --
48986       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
48987           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
48988       ELSE
48989           ---------------------------------------------------------------------------------------------------
48990           -- 4262811a Switch Sign
48991           ---------------------------------------------------------------------------------------------------
48992           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
48993           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48994                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48995           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
48996                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
48997           -- 5132302
48998           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
48999                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49000 
49001       END IF;
49002 
49003       -- 4955764
49007 
49004       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49005       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49006 
49008       XLA_AE_LINES_PKG.ValidateCurrentLine;
49009       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49010 
49011       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49012                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49013                ,p_balance_type_code => l_balance_type_code);
49014 
49015    END IF;
49016 
49017    -----------------------------------------------------------------------------------------
49018    -- 4262811 Multiperiod Accounting
49019    -----------------------------------------------------------------------------------------
49020      -- No MPA option is assigned.
49021 
49022 
49023 END IF;
49024 END IF;
49025 --
49026 
49027 --
49028 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49029    trace
49030       (p_msg      => 'END of AcctLineType_113'
49031       ,p_level    => C_LEVEL_PROCEDURE
49032       ,p_module   => l_log_module);
49033 END IF;
49034 --
49035 EXCEPTION
49036   WHEN xla_exceptions_pkg.application_exception THEN
49037       RAISE;
49038   WHEN OTHERS THEN
49039        xla_exceptions_pkg.raise_message
49040            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_113');
49041 END AcctLineType_113;
49042 --
49043 
49044 ---------------------------------------
49045 --
49046 -- PRIVATE FUNCTION
49047 --         AcctLineType_114
49048 --
49049 ---------------------------------------
49050 PROCEDURE AcctLineType_114 (
49051   p_application_id        IN NUMBER
49052  ,p_event_id              IN NUMBER
49053  ,p_calculate_acctd_flag  IN VARCHAR2
49054  ,p_calculate_g_l_flag    IN VARCHAR2
49055  ,p_actual_flag           IN OUT VARCHAR2
49056  ,p_balance_type_code     OUT VARCHAR2
49057  ,p_gain_or_loss_ref      OUT VARCHAR2
49058  
49059 --Distribution GL Account
49060  , p_source_32            IN NUMBER
49061 --Distribution Source Type
49062  , p_source_39            IN VARCHAR2
49063 --Distribution Line Identifier
49064  , p_source_41            IN NUMBER
49065 --Distribution Type
49066  , p_source_42            IN VARCHAR2
49067 --Exchange Date
49068  , p_source_45            IN DATE
49069 --Exchange Rate
49070  , p_source_46            IN NUMBER
49071 --Exchange Rate Type
49072  , p_source_47            IN VARCHAR2
49073 --Accounting Amount
49074  , p_source_52            IN NUMBER
49075 --Transaction Distribution Identifier
49076  , p_source_56            IN NUMBER
49077 --Transaction Distribution Type
49078  , p_source_57            IN VARCHAR2
49079 --Distribution Multi Fund Additional Entry
49080  , p_source_99            IN VARCHAR2
49081 --Receipt Applied To Application Identifier
49082  , p_source_101            IN NUMBER
49083 --Transaction Entity Code
49084  , p_source_102            IN VARCHAR2
49085 --Transaction Identifier
49086  , p_source_103            IN NUMBER
49087 --DIST_ENT_AMT_FROM
49088  , p_source_104            IN NUMBER
49089 --Applying Document Currency Code
49090  , p_source_105            IN VARCHAR2
49091 --Distribution Party Identifier
49092  , p_source_106            IN NUMBER
49093 --Distribution Party Site Id
49094  , p_source_107            IN NUMBER
49095 --Distribution Party Type
49096  , p_source_108            IN VARCHAR2
49097 )
49098 IS
49099 
49100 l_component_type              VARCHAR2(80);
49101 l_component_code              VARCHAR2(30);
49102 l_component_type_code         VARCHAR2(1);
49103 l_component_appl_id           INTEGER;
49104 l_amb_context_code            VARCHAR2(30);
49105 l_entity_code                 VARCHAR2(30);
49106 l_event_class_code            VARCHAR2(30);
49107 l_ae_header_id                NUMBER;
49108 l_event_type_code             VARCHAR2(30);
49109 l_line_definition_code        VARCHAR2(30);
49110 l_line_definition_owner_code  VARCHAR2(1);
49111 --
49112 -- adr variables
49113 l_segment                     VARCHAR2(30);
49114 l_ccid                        NUMBER;
49115 l_adr_transaction_coa_id      NUMBER;
49116 l_adr_accounting_coa_id       NUMBER;
49117 l_adr_flexfield_segment_code  VARCHAR2(30);
49118 l_adr_flex_value_set_id       NUMBER;
49119 l_adr_value_type_code         VARCHAR2(30);
49120 l_adr_value_combination_id    NUMBER;
49121 l_adr_value_segment_code      VARCHAR2(30);
49122 
49123 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
49124 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
49125 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
49126 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
49127 
49128 -- 4262811 Variables ------------------------------------------------------------------------------------------
49129 l_entered_amt_idx             NUMBER;
49130 l_accted_amt_idx              NUMBER;
49131 l_acc_rev_flag                VARCHAR2(1);
49132 l_accrual_line_num            NUMBER;
49133 l_tmp_amt                     NUMBER;
49134 l_acc_rev_natural_side_code   VARCHAR2(1);
49135 
49136 l_num_entries                 NUMBER;
49137 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
49138 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
49139 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
49143 
49140 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
49141 l_recog_line_1                NUMBER;
49142 l_recog_line_2                NUMBER;
49144 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
49145 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
49146 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
49147 
49148 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49149 
49150 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
49151 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
49152 
49153 ---------------------------------------------------------------------------------------------------------------
49154 
49155 
49156 --
49157 -- bulk performance
49158 --
49159 l_balance_type_code           VARCHAR2(1);
49160 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
49161 l_log_module                  VARCHAR2(240);
49162 
49163 --
49164 -- Upgrade strategy
49165 --
49166 l_actual_upg_option           VARCHAR2(1);
49167 l_enc_upg_option           VARCHAR2(1);
49168 
49169 --
49170 BEGIN
49171 --
49172 IF g_log_enabled THEN
49173       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_114';
49174 END IF;
49175 --
49176 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49177 
49178       trace
49179          (p_msg      => 'BEGIN of AcctLineType_114'
49180          ,p_level    => C_LEVEL_PROCEDURE
49181          ,p_module   => l_log_module);
49182 
49183 END IF;
49184 --
49185 l_component_type             := 'AMB_JLT';
49186 l_component_code             := 'RCT_BNK_CHG';
49187 l_component_type_code        := 'S';
49188 l_component_appl_id          :=  222;
49189 l_amb_context_code           := 'DEFAULT';
49190 l_entity_code                := 'RECEIPTS';
49191 l_event_class_code           := 'RECEIPT';
49192 l_event_type_code            := 'RECEIPT_ALL';
49193 l_line_definition_owner_code := 'S';
49194 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
49195 --
49196 l_balance_type_code          := 'A';
49197 l_segment                     := NULL;
49198 l_ccid                        := NULL;
49199 l_adr_transaction_coa_id      := NULL;
49200 l_adr_accounting_coa_id       := NULL;
49201 l_adr_flexfield_segment_code  := NULL;
49202 l_adr_flex_value_set_id       := NULL;
49203 l_adr_value_type_code         := NULL;
49204 l_adr_value_combination_id    := NULL;
49205 l_adr_value_segment_code      := NULL;
49206 
49207 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
49208 l_bflow_class_code           := '';    -- 4219869 Business Flow
49209 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49210 l_budgetary_control_flag     := 'N';
49211 
49212 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49213 l_bflow_applied_to_amt       := NULL; -- 5132302
49214 l_entered_amt_idx            := NULL;          -- 4262811
49215 l_accted_amt_idx             := NULL;          -- 4262811
49216 l_acc_rev_flag               := NULL;          -- 4262811
49217 l_accrual_line_num           := NULL;          -- 4262811
49218 l_tmp_amt                    := NULL;          -- 4262811
49219 --
49220  
49221 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49222     l_balance_type_code <> 'B' THEN
49223 IF NVL(p_source_39,'
49224 ') =  'BANK_CHARGES' AND 
49225 NVL(p_source_99,'
49226 ') =  'N'
49227  THEN 
49228 
49229    --
49230    XLA_AE_LINES_PKG.SetNewLine;
49231 
49232    p_balance_type_code          := l_balance_type_code;
49233    -- set the flag so later we will know whether the gain loss line needs to be created
49234    
49235    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49236      p_actual_flag :='A';
49237    END IF;
49238 
49239    --
49240    -- bulk performance
49241    --
49242    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49243                                       p_header_num   => 0); -- 4262811
49244    --
49245    -- set accounting line options
49246    --
49247    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49248            p_natural_side_code          => 'C'
49249          , p_gain_or_loss_flag          => 'N'
49250          , p_gl_transfer_mode_code      => 'S'
49251          , p_acct_entry_type_code       => 'A'
49252          , p_switch_side_flag           => 'Y'
49253          , p_merge_duplicate_code       => 'A'
49254          );
49255    --
49256    l_acc_rev_natural_side_code := 'D';  -- 4262811
49257    -- 
49258    --
49259    -- set accounting line type info
49260    --
49261    xla_ae_lines_pkg.SetAcctLineType
49262       (p_component_type             => l_component_type
49263       ,p_event_type_code            => l_event_type_code
49264       ,p_line_definition_owner_code => l_line_definition_owner_code
49265       ,p_line_definition_code       => l_line_definition_code
49266       ,p_accounting_line_code       => l_component_code
49267       ,p_accounting_line_type_code  => l_component_type_code
49268       ,p_accounting_line_appl_id    => l_component_appl_id
49269       ,p_amb_context_code           => l_amb_context_code
49270       ,p_entity_code                => l_entity_code
49271       ,p_event_class_code           => l_event_class_code);
49272    --
49276            p_accounting_class_code  => 'BANK_CHG'
49273    -- set accounting class
49274    --
49275    xla_ae_lines_pkg.SetAcctClass(
49277          , p_ae_header_id           => l_ae_header_id
49278          );
49279 
49280    --
49281    -- set rounding class
49282    --
49283    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49284                       'RECEIVABLE';
49285 
49286    --
49287    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49288    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49289    --
49290    -- bulk performance
49291    --
49292    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49293 
49294    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49295       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49296 
49297    -- 4955764
49298    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49299       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49300 
49301    -- 4458381 Public Sector Enh
49302    
49303    --
49304    -- set accounting attributes for the line type
49305    --
49306    l_entered_amt_idx := 8;
49307    l_accted_amt_idx  := 13;
49308    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
49309    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
49310    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
49311    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
49312    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
49313    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
49314    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
49315    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
49316    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
49317    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
49318    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
49319    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
49320    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
49321    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
49322    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
49323    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
49324    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
49325    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
49326    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
49327    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
49328    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
49329    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
49330    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
49331    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
49332    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
49333    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
49334    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
49335    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
49336    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
49337    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
49338    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
49339    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
49340    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
49341 
49342    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49343    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49344 
49345    ---------------------------------------------------------------------------------------------------------------
49346    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49347    ---------------------------------------------------------------------------------------------------------------
49348    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49349 
49350    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49351    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49352 
49353    IF xla_accounting_cache_pkg.GetValueChar
49354          (p_source_code         => 'LEDGER_CATEGORY_CODE'
49355          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49359          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49356    AND l_bflow_method_code = 'PRIOR_ENTRY'
49357 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49358    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49360        )
49361    THEN
49362          xla_ae_lines_pkg.BflowUpgEntry
49363            (p_business_method_code    => l_bflow_method_code
49364            ,p_business_class_code     => l_bflow_class_code
49365            ,p_balance_type            => l_balance_type_code);
49366    ELSE
49367       NULL;
49368 -- No business flow processing for business flow method of NONE.
49369    END IF;
49370 
49371    --
49372    -- call analytical criteria
49373    --
49374    
49375    --
49376    -- call description
49377    --
49378    -- No description or it is inherited.
49379    --
49380    -- call ADRs
49381    -- Bug 4922099
49382    --
49383    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49384         (NVL(l_actual_upg_option, 'N') = 'O') OR
49385         (NVL(l_enc_upg_option, 'N') = 'O')
49386       )
49387    THEN
49388    NULL;
49389    --
49390    --
49391    
49392   l_ccid := AcctDerRule_29(
49393            p_application_id           => p_application_id
49394          , p_ae_header_id             => l_ae_header_id 
49395 , p_source_32 => p_source_32
49396          , x_transaction_coa_id       => l_adr_transaction_coa_id
49397          , x_accounting_coa_id        => l_adr_accounting_coa_id
49398          , x_value_type_code          => l_adr_value_type_code
49399          , p_side                     => 'NA'
49400    );
49401 
49402    xla_ae_lines_pkg.set_ccid(
49403     p_code_combination_id          => l_ccid
49404   , p_value_type_code              => l_adr_value_type_code
49405   , p_transaction_coa_id           => l_adr_transaction_coa_id
49406   , p_accounting_coa_id            => l_adr_accounting_coa_id
49407   , p_adr_code                     => 'DIST_CCID'
49408   , p_adr_type_code                => 'S'
49409   , p_component_type               => l_component_type
49410   , p_component_code               => l_component_code
49411   , p_component_type_code          => l_component_type_code
49412   , p_component_appl_id            => l_component_appl_id
49413   , p_amb_context_code             => l_amb_context_code
49414   , p_side                         => 'NA'
49415   );
49416 
49417 
49418    --
49419    --
49420    END IF;
49421    --
49422    -- Bug 4922099
49423    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
49424           (NVL(l_enc_upg_option, 'N') = 'O')
49425         ) AND
49426         (l_bflow_method_code = 'PRIOR_ENTRY')
49427       )
49428    THEN
49429       IF
49430       --
49431       1 = 2
49432       --
49433       THEN
49434       xla_accounting_err_pkg.build_message
49435                                     (p_appli_s_name            => 'XLA'
49436                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49437                                     ,p_token_1                 => 'LINE_NUMBER'
49438                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
49439                                     ,p_token_2                 => 'LINE_TYPE_NAME'
49440                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
49441                                                                              l_component_type
49442                                                                             ,l_component_code
49443                                                                             ,l_component_type_code
49444                                                                             ,l_component_appl_id
49445                                                                             ,l_amb_context_code
49446                                                                             ,l_entity_code
49447                                                                             ,l_event_class_code
49448                                                                            )
49449                                     ,p_token_3                 => 'OWNER'
49453                                                                          )
49450                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
49451                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
49452                                                                           ,p_lookup_code    => l_component_type_code
49454                                     ,p_token_4                 => 'PRODUCT_NAME'
49455                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
49456                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
49457                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
49458                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
49459                                     ,p_ae_header_id            =>  NULL
49460                                        );
49461 
49462         IF (C_LEVEL_ERROR>= g_log_level) THEN
49463                  trace
49464                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
49465                       ,p_level    => C_LEVEL_ERROR
49466                       ,p_module   => l_log_module);
49467         END IF;
49468       END IF;
49469    END IF;
49470    --
49471    --
49472    ------------------------------------------------------------------------------------------------
49473    -- 4219869 Business Flow
49474    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
49475    -- Prior Entry.  Currently, the following code is always generated.
49476    ------------------------------------------------------------------------------------------------
49477    XLA_AE_LINES_PKG.ValidateCurrentLine;
49478 
49479    ------------------------------------------------------------------------------------
49480    -- 4219869 Business Flow
49481    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
49482    ------------------------------------------------------------------------------------
49483    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49484 
49485    ----------------------------------------------------------------------------------
49486    -- 4219869 Business Flow
49487    -- Update journal entry status -- Need to generate this within IF <condition>
49488    ----------------------------------------------------------------------------------
49489    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49490          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
49491          ,p_balance_type_code => l_balance_type_code
49492          );
49493 
49494    -------------------------------------------------------------------------------------------
49495    -- 4262811 - Generate the Accrual Reversal lines
49496    -------------------------------------------------------------------------------------------
49497    BEGIN
49498       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
49499                               (g_array_event(p_event_id).array_value_num('header_index'));
49500       IF l_acc_rev_flag IS NULL THEN
49501          l_acc_rev_flag := 'N';
49502       END IF;
49503    EXCEPTION
49504       WHEN OTHERS THEN
49505          l_acc_rev_flag := 'N';
49506    END;
49507    --
49508    IF (l_acc_rev_flag = 'Y') THEN
49509 
49510        -- 4645092  ------------------------------------------------------------------------------
49511        -- To allow MPA report to determine if it should generate report process
49512        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
49513        ------------------------------------------------------------------------------------------
49514 
49515        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
49516        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
49517    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
49518    -- call ADRs
49519    -- Bug 4922099
49520    --
49521    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49522         (NVL(l_actual_upg_option, 'N') = 'O') OR
49523         (NVL(l_enc_upg_option, 'N') = 'O')
49524       )
49525    THEN
49526    NULL;
49527    --
49528    --
49529    
49530   l_ccid := AcctDerRule_29(
49531            p_application_id           => p_application_id
49532          , p_ae_header_id             => l_ae_header_id 
49533 , p_source_32 => p_source_32
49534          , x_transaction_coa_id       => l_adr_transaction_coa_id
49535          , x_accounting_coa_id        => l_adr_accounting_coa_id
49536          , x_value_type_code          => l_adr_value_type_code
49537          , p_side                     => 'NA'
49538    );
49539 
49540    xla_ae_lines_pkg.set_ccid(
49541     p_code_combination_id          => l_ccid
49542   , p_value_type_code              => l_adr_value_type_code
49543   , p_transaction_coa_id           => l_adr_transaction_coa_id
49544   , p_accounting_coa_id            => l_adr_accounting_coa_id
49545   , p_adr_code                     => 'DIST_CCID'
49546   , p_adr_type_code                => 'S'
49547   , p_component_type               => l_component_type
49548   , p_component_code               => l_component_code
49549   , p_component_type_code          => l_component_type_code
49550   , p_component_appl_id            => l_component_appl_id
49551   , p_amb_context_code             => l_amb_context_code
49555 
49552   , p_side                         => 'NA'
49553   );
49554 
49556    --
49557    --
49558    END IF;
49559 
49560        --
49561        -- Update the line information that should be overwritten
49562        --
49563        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
49564                                          p_header_num   => 1);
49565        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
49566 
49567        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
49568 
49569        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
49570           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
49571        END IF;
49572 
49573       --
49574       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
49575       --
49576       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
49577           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
49578       ELSE
49579           ---------------------------------------------------------------------------------------------------
49580           -- 4262811a Switch Sign
49581           ---------------------------------------------------------------------------------------------------
49582           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
49583           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49584                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49585           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
49586                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49587           -- 5132302
49588           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
49589                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
49590 
49591       END IF;
49592 
49593       -- 4955764
49594       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49595       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
49596 
49597 
49598       XLA_AE_LINES_PKG.ValidateCurrentLine;
49599       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
49600 
49601       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
49602                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
49603                ,p_balance_type_code => l_balance_type_code);
49604 
49605    END IF;
49606 
49607    -----------------------------------------------------------------------------------------
49608    -- 4262811 Multiperiod Accounting
49609    -----------------------------------------------------------------------------------------
49610      -- No MPA option is assigned.
49611 
49612 
49613 END IF;
49614 END IF;
49615 --
49616 
49617 --
49618 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49619    trace
49620       (p_msg      => 'END of AcctLineType_114'
49621       ,p_level    => C_LEVEL_PROCEDURE
49622       ,p_module   => l_log_module);
49623 END IF;
49624 --
49625 EXCEPTION
49626   WHEN xla_exceptions_pkg.application_exception THEN
49627       RAISE;
49628   WHEN OTHERS THEN
49629        xla_exceptions_pkg.raise_message
49630            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_114');
49631 END AcctLineType_114;
49632 --
49633 
49634 ---------------------------------------
49635 --
49636 -- PRIVATE FUNCTION
49637 --         AcctLineType_115
49638 --
49639 ---------------------------------------
49640 PROCEDURE AcctLineType_115 (
49641   p_application_id        IN NUMBER
49642  ,p_event_id              IN NUMBER
49643  ,p_calculate_acctd_flag  IN VARCHAR2
49644  ,p_calculate_g_l_flag    IN VARCHAR2
49645  ,p_actual_flag           IN OUT VARCHAR2
49646  ,p_balance_type_code     OUT VARCHAR2
49647  ,p_gain_or_loss_ref      OUT VARCHAR2
49648  
49649 --Distribution GL Account
49650  , p_source_32            IN NUMBER
49651 --Distribution Source Type
49652  , p_source_39            IN VARCHAR2
49653 --Distribution Line Identifier
49654  , p_source_41            IN NUMBER
49655 --Distribution Type
49656  , p_source_42            IN VARCHAR2
49657 --Exchange Date
49658  , p_source_45            IN DATE
49659 --Exchange Rate
49660  , p_source_46            IN NUMBER
49661 --Exchange Rate Type
49662  , p_source_47            IN VARCHAR2
49663 --Accounting Amount
49664  , p_source_52            IN NUMBER
49665 --Transaction Distribution Identifier
49666  , p_source_56            IN NUMBER
49667 --Transaction Distribution Type
49668  , p_source_57            IN VARCHAR2
49669 --Distribution Multi Fund Additional Entry
49670  , p_source_99            IN VARCHAR2
49671 --Receipt Applied To Application Identifier
49672  , p_source_101            IN NUMBER
49673 --Transaction Entity Code
49674  , p_source_102            IN VARCHAR2
49675 --Transaction Identifier
49676  , p_source_103            IN NUMBER
49677 --DIST_ENT_AMT_FROM
49678  , p_source_104            IN NUMBER
49679 --Applying Document Currency Code
49680  , p_source_105            IN VARCHAR2
49684  , p_source_107            IN NUMBER
49681 --Distribution Party Identifier
49682  , p_source_106            IN NUMBER
49683 --Distribution Party Site Id
49685 --Distribution Party Type
49686  , p_source_108            IN VARCHAR2
49687 )
49688 IS
49689 
49690 l_component_type              VARCHAR2(80);
49691 l_component_code              VARCHAR2(30);
49692 l_component_type_code         VARCHAR2(1);
49693 l_component_appl_id           INTEGER;
49694 l_amb_context_code            VARCHAR2(30);
49695 l_entity_code                 VARCHAR2(30);
49696 l_event_class_code            VARCHAR2(30);
49697 l_ae_header_id                NUMBER;
49698 l_event_type_code             VARCHAR2(30);
49699 l_line_definition_code        VARCHAR2(30);
49700 l_line_definition_owner_code  VARCHAR2(1);
49701 --
49702 -- adr variables
49703 l_segment                     VARCHAR2(30);
49704 l_ccid                        NUMBER;
49705 l_adr_transaction_coa_id      NUMBER;
49706 l_adr_accounting_coa_id       NUMBER;
49707 l_adr_flexfield_segment_code  VARCHAR2(30);
49708 l_adr_flex_value_set_id       NUMBER;
49709 l_adr_value_type_code         VARCHAR2(30);
49710 l_adr_value_combination_id    NUMBER;
49711 l_adr_value_segment_code      VARCHAR2(30);
49712 
49713 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
49714 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
49715 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
49716 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
49717 
49718 -- 4262811 Variables ------------------------------------------------------------------------------------------
49719 l_entered_amt_idx             NUMBER;
49720 l_accted_amt_idx              NUMBER;
49721 l_acc_rev_flag                VARCHAR2(1);
49722 l_accrual_line_num            NUMBER;
49723 l_tmp_amt                     NUMBER;
49724 l_acc_rev_natural_side_code   VARCHAR2(1);
49725 
49726 l_num_entries                 NUMBER;
49727 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
49728 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
49729 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
49730 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
49731 l_recog_line_1                NUMBER;
49732 l_recog_line_2                NUMBER;
49733 
49734 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
49735 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
49736 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
49737 
49738 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
49739 
49740 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
49741 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
49742 
49743 ---------------------------------------------------------------------------------------------------------------
49744 
49745 
49746 --
49747 -- bulk performance
49748 --
49749 l_balance_type_code           VARCHAR2(1);
49750 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
49751 l_log_module                  VARCHAR2(240);
49752 
49753 --
49754 -- Upgrade strategy
49755 --
49756 l_actual_upg_option           VARCHAR2(1);
49757 l_enc_upg_option           VARCHAR2(1);
49758 
49759 --
49760 BEGIN
49761 --
49762 IF g_log_enabled THEN
49763       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_115';
49764 END IF;
49765 --
49766 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
49767 
49768       trace
49769          (p_msg      => 'BEGIN of AcctLineType_115'
49770          ,p_level    => C_LEVEL_PROCEDURE
49771          ,p_module   => l_log_module);
49772 
49773 END IF;
49774 --
49775 l_component_type             := 'AMB_JLT';
49776 l_component_code             := 'RCT_CASH';
49777 l_component_type_code        := 'S';
49778 l_component_appl_id          :=  222;
49779 l_amb_context_code           := 'DEFAULT';
49780 l_entity_code                := 'RECEIPTS';
49781 l_event_class_code           := 'RECEIPT';
49782 l_event_type_code            := 'RECEIPT_ALL';
49783 l_line_definition_owner_code := 'S';
49784 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
49785 --
49786 l_balance_type_code          := 'A';
49787 l_segment                     := NULL;
49788 l_ccid                        := NULL;
49789 l_adr_transaction_coa_id      := NULL;
49790 l_adr_accounting_coa_id       := NULL;
49791 l_adr_flexfield_segment_code  := NULL;
49792 l_adr_flex_value_set_id       := NULL;
49793 l_adr_value_type_code         := NULL;
49794 l_adr_value_combination_id    := NULL;
49795 l_adr_value_segment_code      := NULL;
49796 
49797 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
49798 l_bflow_class_code           := '';    -- 4219869 Business Flow
49799 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
49800 l_budgetary_control_flag     := 'N';
49801 
49802 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
49803 l_bflow_applied_to_amt       := NULL; -- 5132302
49804 l_entered_amt_idx            := NULL;          -- 4262811
49805 l_accted_amt_idx             := NULL;          -- 4262811
49806 l_acc_rev_flag               := NULL;          -- 4262811
49807 l_accrual_line_num           := NULL;          -- 4262811
49808 l_tmp_amt                    := NULL;          -- 4262811
49812     l_balance_type_code <> 'B' THEN
49809 --
49810  
49811 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
49813 IF NVL(p_source_39,'
49814 ') =  'CASH' AND 
49815 NVL(p_source_99,'
49816 ') =  'N'
49817  THEN 
49818 
49819    --
49820    XLA_AE_LINES_PKG.SetNewLine;
49821 
49822    p_balance_type_code          := l_balance_type_code;
49823    -- set the flag so later we will know whether the gain loss line needs to be created
49824    
49825    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
49826      p_actual_flag :='A';
49827    END IF;
49828 
49829    --
49830    -- bulk performance
49831    --
49832    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
49833                                       p_header_num   => 0); -- 4262811
49834    --
49835    -- set accounting line options
49836    --
49837    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
49838            p_natural_side_code          => 'C'
49839          , p_gain_or_loss_flag          => 'N'
49840          , p_gl_transfer_mode_code      => 'S'
49841          , p_acct_entry_type_code       => 'A'
49842          , p_switch_side_flag           => 'Y'
49843          , p_merge_duplicate_code       => 'A'
49844          );
49845    --
49846    l_acc_rev_natural_side_code := 'D';  -- 4262811
49847    -- 
49848    --
49849    -- set accounting line type info
49850    --
49851    xla_ae_lines_pkg.SetAcctLineType
49852       (p_component_type             => l_component_type
49853       ,p_event_type_code            => l_event_type_code
49854       ,p_line_definition_owner_code => l_line_definition_owner_code
49855       ,p_line_definition_code       => l_line_definition_code
49856       ,p_accounting_line_code       => l_component_code
49857       ,p_accounting_line_type_code  => l_component_type_code
49858       ,p_accounting_line_appl_id    => l_component_appl_id
49859       ,p_amb_context_code           => l_amb_context_code
49860       ,p_entity_code                => l_entity_code
49861       ,p_event_class_code           => l_event_class_code);
49862    --
49863    -- set accounting class
49864    --
49865    xla_ae_lines_pkg.SetAcctClass(
49866            p_accounting_class_code  => 'CASH'
49867          , p_ae_header_id           => l_ae_header_id
49868          );
49869 
49870    --
49871    -- set rounding class
49872    --
49873    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
49874                       'RECEIVABLE';
49875 
49876    --
49877    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
49878    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
49879    --
49880    -- bulk performance
49881    --
49882    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
49883 
49884    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
49885       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
49886 
49887    -- 4955764
49888    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
49889       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
49890 
49891    -- 4458381 Public Sector Enh
49892    
49893    --
49894    -- set accounting attributes for the line type
49895    --
49896    l_entered_amt_idx := 8;
49897    l_accted_amt_idx  := 13;
49898    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
49899    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
49900    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
49901    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
49902    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
49903    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
49904    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
49905    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
49906    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
49907    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
49908    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
49909    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
49910    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
49911    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
49912    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
49913    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
49914    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
49915    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
49916    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
49917    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
49918    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
49919    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
49920    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
49921    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
49922    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
49923    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
49924    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
49928    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
49925    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
49926    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
49927    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
49929    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
49930    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
49931 
49932    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
49933    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
49934 
49935    ---------------------------------------------------------------------------------------------------------------
49936    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
49937    ---------------------------------------------------------------------------------------------------------------
49938    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
49939 
49940    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49941    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
49942 
49943    IF xla_accounting_cache_pkg.GetValueChar
49944          (p_source_code         => 'LEDGER_CATEGORY_CODE'
49945          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
49946    AND l_bflow_method_code = 'PRIOR_ENTRY'
49947 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
49948    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
49949          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
49950        )
49951    THEN
49952          xla_ae_lines_pkg.BflowUpgEntry
49953            (p_business_method_code    => l_bflow_method_code
49954            ,p_business_class_code     => l_bflow_class_code
49955            ,p_balance_type            => l_balance_type_code);
49956    ELSE
49957       NULL;
49958 -- No business flow processing for business flow method of NONE.
49959    END IF;
49960 
49961    --
49962    -- call analytical criteria
49963    --
49964    
49965    --
49966    -- call description
49967    --
49968    -- No description or it is inherited.
49969    --
49970    -- call ADRs
49971    -- Bug 4922099
49972    --
49973    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
49974         (NVL(l_actual_upg_option, 'N') = 'O') OR
49975         (NVL(l_enc_upg_option, 'N') = 'O')
49976       )
49977    THEN
49978    NULL;
49979    --
49980    --
49981    
49982   l_ccid := AcctDerRule_29(
49983            p_application_id           => p_application_id
49984          , p_ae_header_id             => l_ae_header_id 
49985 , p_source_32 => p_source_32
49986          , x_transaction_coa_id       => l_adr_transaction_coa_id
49987          , x_accounting_coa_id        => l_adr_accounting_coa_id
49988          , x_value_type_code          => l_adr_value_type_code
49989          , p_side                     => 'NA'
49990    );
49991 
49992    xla_ae_lines_pkg.set_ccid(
49993     p_code_combination_id          => l_ccid
49994   , p_value_type_code              => l_adr_value_type_code
49995   , p_transaction_coa_id           => l_adr_transaction_coa_id
49996   , p_accounting_coa_id            => l_adr_accounting_coa_id
49997   , p_adr_code                     => 'DIST_CCID'
49998   , p_adr_type_code                => 'S'
49999   , p_component_type               => l_component_type
50000   , p_component_code               => l_component_code
50001   , p_component_type_code          => l_component_type_code
50002   , p_component_appl_id            => l_component_appl_id
50003   , p_amb_context_code             => l_amb_context_code
50004   , p_side                         => 'NA'
50005   );
50006 
50007 
50008    --
50009    --
50010    END IF;
50011    --
50012    -- Bug 4922099
50013    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50014           (NVL(l_enc_upg_option, 'N') = 'O')
50015         ) AND
50016         (l_bflow_method_code = 'PRIOR_ENTRY')
50017       )
50018    THEN
50019       IF
50020       --
50021       1 = 2
50022       --
50023       THEN
50024       xla_accounting_err_pkg.build_message
50025                                     (p_appli_s_name            => 'XLA'
50026                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50027                                     ,p_token_1                 => 'LINE_NUMBER'
50028                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50029                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50030                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50031                                                                              l_component_type
50032                                                                             ,l_component_code
50033                                                                             ,l_component_type_code
50034                                                                             ,l_component_appl_id
50035                                                                             ,l_amb_context_code
50036                                                                             ,l_entity_code
50040                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50037                                                                             ,l_event_class_code
50038                                                                            )
50039                                     ,p_token_3                 => 'OWNER'
50041                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50042                                                                           ,p_lookup_code    => l_component_type_code
50043                                                                          )
50044                                     ,p_token_4                 => 'PRODUCT_NAME'
50045                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50046                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50047                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50048                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50049                                     ,p_ae_header_id            =>  NULL
50050                                        );
50051 
50052         IF (C_LEVEL_ERROR>= g_log_level) THEN
50053                  trace
50054                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50055                       ,p_level    => C_LEVEL_ERROR
50056                       ,p_module   => l_log_module);
50057         END IF;
50058       END IF;
50059    END IF;
50060    --
50061    --
50062    ------------------------------------------------------------------------------------------------
50063    -- 4219869 Business Flow
50064    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50065    -- Prior Entry.  Currently, the following code is always generated.
50066    ------------------------------------------------------------------------------------------------
50067    XLA_AE_LINES_PKG.ValidateCurrentLine;
50068 
50069    ------------------------------------------------------------------------------------
50070    -- 4219869 Business Flow
50071    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50072    ------------------------------------------------------------------------------------
50073    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50074 
50075    ----------------------------------------------------------------------------------
50076    -- 4219869 Business Flow
50077    -- Update journal entry status -- Need to generate this within IF <condition>
50078    ----------------------------------------------------------------------------------
50079    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50080          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50081          ,p_balance_type_code => l_balance_type_code
50082          );
50083 
50084    -------------------------------------------------------------------------------------------
50085    -- 4262811 - Generate the Accrual Reversal lines
50086    -------------------------------------------------------------------------------------------
50087    BEGIN
50088       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50089                               (g_array_event(p_event_id).array_value_num('header_index'));
50090       IF l_acc_rev_flag IS NULL THEN
50091          l_acc_rev_flag := 'N';
50092       END IF;
50093    EXCEPTION
50094       WHEN OTHERS THEN
50095          l_acc_rev_flag := 'N';
50096    END;
50097    --
50098    IF (l_acc_rev_flag = 'Y') THEN
50099 
50100        -- 4645092  ------------------------------------------------------------------------------
50101        -- To allow MPA report to determine if it should generate report process
50102        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50103        ------------------------------------------------------------------------------------------
50104 
50105        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50106        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50107    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
50108    -- call ADRs
50109    -- Bug 4922099
50110    --
50111    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50112         (NVL(l_actual_upg_option, 'N') = 'O') OR
50113         (NVL(l_enc_upg_option, 'N') = 'O')
50114       )
50115    THEN
50116    NULL;
50117    --
50118    --
50119    
50120   l_ccid := AcctDerRule_29(
50121            p_application_id           => p_application_id
50122          , p_ae_header_id             => l_ae_header_id 
50123 , p_source_32 => p_source_32
50124          , x_transaction_coa_id       => l_adr_transaction_coa_id
50125          , x_accounting_coa_id        => l_adr_accounting_coa_id
50126          , x_value_type_code          => l_adr_value_type_code
50127          , p_side                     => 'NA'
50128    );
50129 
50130    xla_ae_lines_pkg.set_ccid(
50131     p_code_combination_id          => l_ccid
50132   , p_value_type_code              => l_adr_value_type_code
50133   , p_transaction_coa_id           => l_adr_transaction_coa_id
50134   , p_accounting_coa_id            => l_adr_accounting_coa_id
50135   , p_adr_code                     => 'DIST_CCID'
50136   , p_adr_type_code                => 'S'
50137   , p_component_type               => l_component_type
50141   , p_amb_context_code             => l_amb_context_code
50138   , p_component_code               => l_component_code
50139   , p_component_type_code          => l_component_type_code
50140   , p_component_appl_id            => l_component_appl_id
50142   , p_side                         => 'NA'
50143   );
50144 
50145 
50146    --
50147    --
50148    END IF;
50149 
50150        --
50151        -- Update the line information that should be overwritten
50152        --
50153        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50154                                          p_header_num   => 1);
50155        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50156 
50157        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50158 
50159        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50160           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50161        END IF;
50162 
50163       --
50164       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50165       --
50166       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50167           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
50168       ELSE
50169           ---------------------------------------------------------------------------------------------------
50170           -- 4262811a Switch Sign
50171           ---------------------------------------------------------------------------------------------------
50172           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
50173           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50174                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50175           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50176                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50177           -- 5132302
50178           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50179                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50180 
50181       END IF;
50182 
50183       -- 4955764
50184       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50185       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50186 
50187 
50188       XLA_AE_LINES_PKG.ValidateCurrentLine;
50189       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50190 
50191       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50192                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50193                ,p_balance_type_code => l_balance_type_code);
50194 
50195    END IF;
50196 
50197    -----------------------------------------------------------------------------------------
50198    -- 4262811 Multiperiod Accounting
50199    -----------------------------------------------------------------------------------------
50200      -- No MPA option is assigned.
50201 
50202 
50203 END IF;
50204 END IF;
50205 --
50206 
50207 --
50208 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50209    trace
50210       (p_msg      => 'END of AcctLineType_115'
50211       ,p_level    => C_LEVEL_PROCEDURE
50212       ,p_module   => l_log_module);
50213 END IF;
50214 --
50215 EXCEPTION
50216   WHEN xla_exceptions_pkg.application_exception THEN
50217       RAISE;
50218   WHEN OTHERS THEN
50219        xla_exceptions_pkg.raise_message
50220            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_115');
50221 END AcctLineType_115;
50222 --
50223 
50224 ---------------------------------------
50225 --
50226 -- PRIVATE FUNCTION
50227 --         AcctLineType_116
50228 --
50229 ---------------------------------------
50230 PROCEDURE AcctLineType_116 (
50231   p_application_id        IN NUMBER
50232  ,p_event_id              IN NUMBER
50233  ,p_calculate_acctd_flag  IN VARCHAR2
50234  ,p_calculate_g_l_flag    IN VARCHAR2
50235  ,p_actual_flag           IN OUT VARCHAR2
50236  ,p_balance_type_code     OUT VARCHAR2
50237  ,p_gain_or_loss_ref      OUT VARCHAR2
50238  
50239 --Distribution GL Account
50240  , p_source_32            IN NUMBER
50241 --Distribution Source Type
50242  , p_source_39            IN VARCHAR2
50243 --Receivable Activity Type
50244  , p_source_40            IN VARCHAR2
50245 --Distribution Line Identifier
50246  , p_source_41            IN NUMBER
50247 --Distribution Type
50248  , p_source_42            IN VARCHAR2
50249 --Exchange Date
50250  , p_source_45            IN DATE
50251 --Exchange Rate
50252  , p_source_46            IN NUMBER
50253 --Accounting Amount
50254  , p_source_52            IN NUMBER
50255 --Transaction Distribution Identifier
50256  , p_source_56            IN NUMBER
50257 --Transaction Distribution Type
50258  , p_source_57            IN VARCHAR2
50259 --Distribution Multi Fund Additional Entry
50260  , p_source_99            IN VARCHAR2
50261 --Receipt Applied To Application Identifier
50262  , p_source_101            IN NUMBER
50263 --Transaction Entity Code
50264  , p_source_102            IN VARCHAR2
50268  , p_source_104            IN NUMBER
50265 --Transaction Identifier
50266  , p_source_103            IN NUMBER
50267 --DIST_ENT_AMT_FROM
50269 --Applying Document Currency Code
50270  , p_source_105            IN VARCHAR2
50271 --Distribution Party Identifier
50272  , p_source_106            IN NUMBER
50273 --Distribution Party Site Id
50274  , p_source_107            IN NUMBER
50275 --Distribution Party Type
50276  , p_source_108            IN VARCHAR2
50277 --Applied To Document Exchange Rate Type
50278  , p_source_109            IN VARCHAR2
50279 )
50280 IS
50281 
50282 l_component_type              VARCHAR2(80);
50283 l_component_code              VARCHAR2(30);
50284 l_component_type_code         VARCHAR2(1);
50285 l_component_appl_id           INTEGER;
50286 l_amb_context_code            VARCHAR2(30);
50287 l_entity_code                 VARCHAR2(30);
50288 l_event_class_code            VARCHAR2(30);
50289 l_ae_header_id                NUMBER;
50290 l_event_type_code             VARCHAR2(30);
50291 l_line_definition_code        VARCHAR2(30);
50292 l_line_definition_owner_code  VARCHAR2(1);
50293 --
50294 -- adr variables
50295 l_segment                     VARCHAR2(30);
50296 l_ccid                        NUMBER;
50297 l_adr_transaction_coa_id      NUMBER;
50298 l_adr_accounting_coa_id       NUMBER;
50299 l_adr_flexfield_segment_code  VARCHAR2(30);
50300 l_adr_flex_value_set_id       NUMBER;
50301 l_adr_value_type_code         VARCHAR2(30);
50302 l_adr_value_combination_id    NUMBER;
50303 l_adr_value_segment_code      VARCHAR2(30);
50304 
50305 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
50306 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
50307 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
50308 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
50309 
50310 -- 4262811 Variables ------------------------------------------------------------------------------------------
50311 l_entered_amt_idx             NUMBER;
50312 l_accted_amt_idx              NUMBER;
50313 l_acc_rev_flag                VARCHAR2(1);
50314 l_accrual_line_num            NUMBER;
50315 l_tmp_amt                     NUMBER;
50316 l_acc_rev_natural_side_code   VARCHAR2(1);
50317 
50318 l_num_entries                 NUMBER;
50319 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
50320 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
50321 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
50322 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
50323 l_recog_line_1                NUMBER;
50324 l_recog_line_2                NUMBER;
50325 
50326 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
50327 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
50328 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
50329 
50330 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50331 
50332 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
50333 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
50334 
50335 ---------------------------------------------------------------------------------------------------------------
50336 
50337 
50338 --
50339 -- bulk performance
50340 --
50341 l_balance_type_code           VARCHAR2(1);
50342 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
50343 l_log_module                  VARCHAR2(240);
50344 
50345 --
50346 -- Upgrade strategy
50347 --
50348 l_actual_upg_option           VARCHAR2(1);
50349 l_enc_upg_option           VARCHAR2(1);
50350 
50351 --
50352 BEGIN
50353 --
50354 IF g_log_enabled THEN
50355       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_116';
50356 END IF;
50357 --
50358 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50359 
50360       trace
50361          (p_msg      => 'BEGIN of AcctLineType_116'
50362          ,p_level    => C_LEVEL_PROCEDURE
50363          ,p_module   => l_log_module);
50364 
50365 END IF;
50366 --
50367 l_component_type             := 'AMB_JLT';
50368 l_component_code             := 'RCT_CC_CHARGEBACK';
50369 l_component_type_code        := 'S';
50370 l_component_appl_id          :=  222;
50371 l_amb_context_code           := 'DEFAULT';
50372 l_entity_code                := 'RECEIPTS';
50373 l_event_class_code           := 'RECEIPT';
50374 l_event_type_code            := 'RECEIPT_ALL';
50375 l_line_definition_owner_code := 'S';
50376 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
50377 --
50378 l_balance_type_code          := 'A';
50379 l_segment                     := NULL;
50380 l_ccid                        := NULL;
50381 l_adr_transaction_coa_id      := NULL;
50382 l_adr_accounting_coa_id       := NULL;
50383 l_adr_flexfield_segment_code  := NULL;
50384 l_adr_flex_value_set_id       := NULL;
50385 l_adr_value_type_code         := NULL;
50386 l_adr_value_combination_id    := NULL;
50387 l_adr_value_segment_code      := NULL;
50388 
50389 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
50390 l_bflow_class_code           := '';    -- 4219869 Business Flow
50391 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
50392 l_budgetary_control_flag     := 'N';
50393 
50394 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
50398 l_acc_rev_flag               := NULL;          -- 4262811
50395 l_bflow_applied_to_amt       := NULL; -- 5132302
50396 l_entered_amt_idx            := NULL;          -- 4262811
50397 l_accted_amt_idx             := NULL;          -- 4262811
50399 l_accrual_line_num           := NULL;          -- 4262811
50400 l_tmp_amt                    := NULL;          -- 4262811
50401 --
50402  
50403 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50404     l_balance_type_code <> 'B' THEN
50405 IF NVL(p_source_39,'
50406 ') =  'ACTIVITY' AND 
50407 NVL(p_source_40,'
50408 ') =  'CC_CHARGEBACK' AND 
50409 NVL(p_source_99,'
50410 ') =  'N'
50411  THEN 
50412 
50413    --
50414    XLA_AE_LINES_PKG.SetNewLine;
50415 
50416    p_balance_type_code          := l_balance_type_code;
50417    -- set the flag so later we will know whether the gain loss line needs to be created
50418    
50419    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
50420      p_actual_flag :='A';
50421    END IF;
50422 
50423    --
50424    -- bulk performance
50425    --
50426    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
50427                                       p_header_num   => 0); -- 4262811
50428    --
50429    -- set accounting line options
50430    --
50431    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
50432            p_natural_side_code          => 'C'
50433          , p_gain_or_loss_flag          => 'N'
50434          , p_gl_transfer_mode_code      => 'S'
50435          , p_acct_entry_type_code       => 'A'
50436          , p_switch_side_flag           => 'Y'
50437          , p_merge_duplicate_code       => 'A'
50438          );
50439    --
50440    l_acc_rev_natural_side_code := 'D';  -- 4262811
50441    -- 
50442    --
50443    -- set accounting line type info
50444    --
50445    xla_ae_lines_pkg.SetAcctLineType
50446       (p_component_type             => l_component_type
50447       ,p_event_type_code            => l_event_type_code
50448       ,p_line_definition_owner_code => l_line_definition_owner_code
50449       ,p_line_definition_code       => l_line_definition_code
50450       ,p_accounting_line_code       => l_component_code
50451       ,p_accounting_line_type_code  => l_component_type_code
50452       ,p_accounting_line_appl_id    => l_component_appl_id
50453       ,p_amb_context_code           => l_amb_context_code
50454       ,p_entity_code                => l_entity_code
50455       ,p_event_class_code           => l_event_class_code);
50456    --
50457    -- set accounting class
50458    --
50459    xla_ae_lines_pkg.SetAcctClass(
50460            p_accounting_class_code  => 'CLAIM'
50461          , p_ae_header_id           => l_ae_header_id
50462          );
50463 
50464    --
50465    -- set rounding class
50466    --
50467    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
50468                       'RECEIVABLE';
50469 
50470    --
50471    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
50472    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
50473    --
50474    -- bulk performance
50475    --
50476    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
50477 
50478    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
50479       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
50480 
50481    -- 4955764
50482    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50483       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
50484 
50485    -- 4458381 Public Sector Enh
50486    
50487    --
50488    -- set accounting attributes for the line type
50489    --
50490    l_entered_amt_idx := 8;
50491    l_accted_amt_idx  := 13;
50492    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
50493    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
50494    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
50495    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
50496    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
50497    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
50498    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
50499    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
50500    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
50501    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
50502    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
50503    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
50504    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
50505    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
50506    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
50507    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
50508    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
50509    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
50510    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
50511    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
50515    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
50512    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
50513    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
50514    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
50516    l_rec_acct_attrs.array_char_value(12)  := p_source_109;
50517    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
50518    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
50519    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
50520    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
50521    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
50522    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
50523    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
50524    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
50525 
50526    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
50527    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
50528 
50529    ---------------------------------------------------------------------------------------------------------------
50530    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
50531    ---------------------------------------------------------------------------------------------------------------
50532    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
50533 
50534    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50535    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
50536 
50537    IF xla_accounting_cache_pkg.GetValueChar
50538          (p_source_code         => 'LEDGER_CATEGORY_CODE'
50539          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
50540    AND l_bflow_method_code = 'PRIOR_ENTRY'
50541 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
50542    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
50543          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
50544        )
50545    THEN
50546          xla_ae_lines_pkg.BflowUpgEntry
50547            (p_business_method_code    => l_bflow_method_code
50548            ,p_business_class_code     => l_bflow_class_code
50549            ,p_balance_type            => l_balance_type_code);
50550    ELSE
50551       NULL;
50552 -- No business flow processing for business flow method of NONE.
50553    END IF;
50554 
50555    --
50556    -- call analytical criteria
50557    --
50558    
50559    --
50560    -- call description
50561    --
50562    -- No description or it is inherited.
50563    --
50564    -- call ADRs
50565    -- Bug 4922099
50566    --
50567    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50568         (NVL(l_actual_upg_option, 'N') = 'O') OR
50569         (NVL(l_enc_upg_option, 'N') = 'O')
50570       )
50571    THEN
50572    NULL;
50573    --
50574    --
50575    
50576   l_ccid := AcctDerRule_29(
50577            p_application_id           => p_application_id
50578          , p_ae_header_id             => l_ae_header_id 
50579 , p_source_32 => p_source_32
50580          , x_transaction_coa_id       => l_adr_transaction_coa_id
50581          , x_accounting_coa_id        => l_adr_accounting_coa_id
50582          , x_value_type_code          => l_adr_value_type_code
50583          , p_side                     => 'NA'
50584    );
50585 
50586    xla_ae_lines_pkg.set_ccid(
50587     p_code_combination_id          => l_ccid
50588   , p_value_type_code              => l_adr_value_type_code
50589   , p_transaction_coa_id           => l_adr_transaction_coa_id
50590   , p_accounting_coa_id            => l_adr_accounting_coa_id
50591   , p_adr_code                     => 'DIST_CCID'
50592   , p_adr_type_code                => 'S'
50593   , p_component_type               => l_component_type
50594   , p_component_code               => l_component_code
50595   , p_component_type_code          => l_component_type_code
50596   , p_component_appl_id            => l_component_appl_id
50597   , p_amb_context_code             => l_amb_context_code
50598   , p_side                         => 'NA'
50599   );
50600 
50601 
50602    --
50603    --
50604    END IF;
50605    --
50606    -- Bug 4922099
50607    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
50608           (NVL(l_enc_upg_option, 'N') = 'O')
50609         ) AND
50610         (l_bflow_method_code = 'PRIOR_ENTRY')
50611       )
50612    THEN
50613       IF
50614       --
50615       1 = 2
50616       --
50617       THEN
50618       xla_accounting_err_pkg.build_message
50619                                     (p_appli_s_name            => 'XLA'
50620                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50621                                     ,p_token_1                 => 'LINE_NUMBER'
50622                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
50623                                     ,p_token_2                 => 'LINE_TYPE_NAME'
50624                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
50625                                                                              l_component_type
50629                                                                             ,l_amb_context_code
50626                                                                             ,l_component_code
50627                                                                             ,l_component_type_code
50628                                                                             ,l_component_appl_id
50630                                                                             ,l_entity_code
50631                                                                             ,l_event_class_code
50632                                                                            )
50633                                     ,p_token_3                 => 'OWNER'
50634                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
50635                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
50636                                                                           ,p_lookup_code    => l_component_type_code
50637                                                                          )
50638                                     ,p_token_4                 => 'PRODUCT_NAME'
50639                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
50640                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
50641                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
50642                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
50643                                     ,p_ae_header_id            =>  NULL
50644                                        );
50645 
50646         IF (C_LEVEL_ERROR>= g_log_level) THEN
50647                  trace
50648                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
50649                       ,p_level    => C_LEVEL_ERROR
50650                       ,p_module   => l_log_module);
50651         END IF;
50652       END IF;
50653    END IF;
50654    --
50655    --
50656    ------------------------------------------------------------------------------------------------
50657    -- 4219869 Business Flow
50658    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
50659    -- Prior Entry.  Currently, the following code is always generated.
50660    ------------------------------------------------------------------------------------------------
50661    XLA_AE_LINES_PKG.ValidateCurrentLine;
50662 
50663    ------------------------------------------------------------------------------------
50664    -- 4219869 Business Flow
50665    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
50666    ------------------------------------------------------------------------------------
50667    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50668 
50669    ----------------------------------------------------------------------------------
50670    -- 4219869 Business Flow
50671    -- Update journal entry status -- Need to generate this within IF <condition>
50672    ----------------------------------------------------------------------------------
50673    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50674          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
50675          ,p_balance_type_code => l_balance_type_code
50676          );
50677 
50678    -------------------------------------------------------------------------------------------
50679    -- 4262811 - Generate the Accrual Reversal lines
50680    -------------------------------------------------------------------------------------------
50681    BEGIN
50682       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
50683                               (g_array_event(p_event_id).array_value_num('header_index'));
50684       IF l_acc_rev_flag IS NULL THEN
50685          l_acc_rev_flag := 'N';
50686       END IF;
50687    EXCEPTION
50688       WHEN OTHERS THEN
50689          l_acc_rev_flag := 'N';
50690    END;
50691    --
50692    IF (l_acc_rev_flag = 'Y') THEN
50693 
50694        -- 4645092  ------------------------------------------------------------------------------
50695        -- To allow MPA report to determine if it should generate report process
50696        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
50697        ------------------------------------------------------------------------------------------
50698 
50699        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
50700        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
50701    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
50702    -- call ADRs
50703    -- Bug 4922099
50704    --
50705    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
50706         (NVL(l_actual_upg_option, 'N') = 'O') OR
50707         (NVL(l_enc_upg_option, 'N') = 'O')
50708       )
50709    THEN
50710    NULL;
50711    --
50712    --
50713    
50714   l_ccid := AcctDerRule_29(
50715            p_application_id           => p_application_id
50716          , p_ae_header_id             => l_ae_header_id 
50717 , p_source_32 => p_source_32
50718          , x_transaction_coa_id       => l_adr_transaction_coa_id
50719          , x_accounting_coa_id        => l_adr_accounting_coa_id
50720          , x_value_type_code          => l_adr_value_type_code
50721          , p_side                     => 'NA'
50722    );
50723 
50724    xla_ae_lines_pkg.set_ccid(
50725     p_code_combination_id          => l_ccid
50729   , p_adr_code                     => 'DIST_CCID'
50726   , p_value_type_code              => l_adr_value_type_code
50727   , p_transaction_coa_id           => l_adr_transaction_coa_id
50728   , p_accounting_coa_id            => l_adr_accounting_coa_id
50730   , p_adr_type_code                => 'S'
50731   , p_component_type               => l_component_type
50732   , p_component_code               => l_component_code
50733   , p_component_type_code          => l_component_type_code
50734   , p_component_appl_id            => l_component_appl_id
50735   , p_amb_context_code             => l_amb_context_code
50736   , p_side                         => 'NA'
50737   );
50738 
50739 
50740    --
50741    --
50742    END IF;
50743 
50744        --
50745        -- Update the line information that should be overwritten
50746        --
50747        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
50748                                          p_header_num   => 1);
50749        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
50750 
50751        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
50752 
50753        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
50754           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
50755        END IF;
50756 
50757       --
50758       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
50759       --
50760       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
50761           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
50762       ELSE
50763           ---------------------------------------------------------------------------------------------------
50764           -- 4262811a Switch Sign
50765           ---------------------------------------------------------------------------------------------------
50766           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
50767           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50768                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50769           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
50770                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50771           -- 5132302
50772           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
50773                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
50774 
50775       END IF;
50776 
50777       -- 4955764
50778       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
50779       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
50780 
50781 
50782       XLA_AE_LINES_PKG.ValidateCurrentLine;
50783       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
50784 
50785       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
50786                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
50787                ,p_balance_type_code => l_balance_type_code);
50788 
50789    END IF;
50790 
50791    -----------------------------------------------------------------------------------------
50792    -- 4262811 Multiperiod Accounting
50793    -----------------------------------------------------------------------------------------
50794      -- No MPA option is assigned.
50795 
50796 
50797 END IF;
50798 END IF;
50799 --
50800 
50801 --
50802 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50803    trace
50804       (p_msg      => 'END of AcctLineType_116'
50805       ,p_level    => C_LEVEL_PROCEDURE
50806       ,p_module   => l_log_module);
50807 END IF;
50808 --
50809 EXCEPTION
50810   WHEN xla_exceptions_pkg.application_exception THEN
50811       RAISE;
50812   WHEN OTHERS THEN
50813        xla_exceptions_pkg.raise_message
50814            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_116');
50815 END AcctLineType_116;
50816 --
50817 
50818 ---------------------------------------
50819 --
50820 -- PRIVATE FUNCTION
50821 --         AcctLineType_117
50822 --
50823 ---------------------------------------
50824 PROCEDURE AcctLineType_117 (
50825   p_application_id        IN NUMBER
50826  ,p_event_id              IN NUMBER
50827  ,p_calculate_acctd_flag  IN VARCHAR2
50828  ,p_calculate_g_l_flag    IN VARCHAR2
50829  ,p_actual_flag           IN OUT VARCHAR2
50830  ,p_balance_type_code     OUT VARCHAR2
50831  ,p_gain_or_loss_ref      OUT VARCHAR2
50832  
50833 --Distribution GL Account
50834  , p_source_32            IN NUMBER
50835 --Distribution Source Type
50836  , p_source_39            IN VARCHAR2
50837 --Receivable Activity Type
50838  , p_source_40            IN VARCHAR2
50839 --Distribution Line Identifier
50840  , p_source_41            IN NUMBER
50841 --Distribution Type
50842  , p_source_42            IN VARCHAR2
50843 --Exchange Date
50844  , p_source_45            IN DATE
50845 --Exchange Rate
50846  , p_source_46            IN NUMBER
50847 --Accounting Amount
50848  , p_source_52            IN NUMBER
50849 --Transaction Distribution Identifier
50853 --Distribution Multi Fund Additional Entry
50850  , p_source_56            IN NUMBER
50851 --Transaction Distribution Type
50852  , p_source_57            IN VARCHAR2
50854  , p_source_99            IN VARCHAR2
50855 --Receipt Applied To Application Identifier
50856  , p_source_101            IN NUMBER
50857 --Transaction Entity Code
50858  , p_source_102            IN VARCHAR2
50859 --Transaction Identifier
50860  , p_source_103            IN NUMBER
50861 --DIST_ENT_AMT_FROM
50862  , p_source_104            IN NUMBER
50863 --Applying Document Currency Code
50864  , p_source_105            IN VARCHAR2
50865 --Distribution Party Identifier
50866  , p_source_106            IN NUMBER
50867 --Distribution Party Site Id
50868  , p_source_107            IN NUMBER
50869 --Distribution Party Type
50870  , p_source_108            IN VARCHAR2
50871 --Applied To Document Exchange Rate Type
50872  , p_source_109            IN VARCHAR2
50873 )
50874 IS
50875 
50876 l_component_type              VARCHAR2(80);
50877 l_component_code              VARCHAR2(30);
50878 l_component_type_code         VARCHAR2(1);
50879 l_component_appl_id           INTEGER;
50880 l_amb_context_code            VARCHAR2(30);
50881 l_entity_code                 VARCHAR2(30);
50882 l_event_class_code            VARCHAR2(30);
50883 l_ae_header_id                NUMBER;
50884 l_event_type_code             VARCHAR2(30);
50885 l_line_definition_code        VARCHAR2(30);
50886 l_line_definition_owner_code  VARCHAR2(1);
50887 --
50888 -- adr variables
50889 l_segment                     VARCHAR2(30);
50890 l_ccid                        NUMBER;
50891 l_adr_transaction_coa_id      NUMBER;
50892 l_adr_accounting_coa_id       NUMBER;
50893 l_adr_flexfield_segment_code  VARCHAR2(30);
50894 l_adr_flex_value_set_id       NUMBER;
50895 l_adr_value_type_code         VARCHAR2(30);
50896 l_adr_value_combination_id    NUMBER;
50897 l_adr_value_segment_code      VARCHAR2(30);
50898 
50899 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
50900 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
50901 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
50902 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
50903 
50904 -- 4262811 Variables ------------------------------------------------------------------------------------------
50905 l_entered_amt_idx             NUMBER;
50906 l_accted_amt_idx              NUMBER;
50907 l_acc_rev_flag                VARCHAR2(1);
50908 l_accrual_line_num            NUMBER;
50909 l_tmp_amt                     NUMBER;
50910 l_acc_rev_natural_side_code   VARCHAR2(1);
50911 
50912 l_num_entries                 NUMBER;
50913 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
50914 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
50915 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
50916 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
50917 l_recog_line_1                NUMBER;
50918 l_recog_line_2                NUMBER;
50919 
50920 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
50921 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
50922 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
50923 
50924 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
50925 
50926 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
50927 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
50928 
50929 ---------------------------------------------------------------------------------------------------------------
50930 
50931 
50932 --
50933 -- bulk performance
50934 --
50935 l_balance_type_code           VARCHAR2(1);
50936 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
50937 l_log_module                  VARCHAR2(240);
50938 
50939 --
50940 -- Upgrade strategy
50941 --
50942 l_actual_upg_option           VARCHAR2(1);
50943 l_enc_upg_option           VARCHAR2(1);
50944 
50945 --
50946 BEGIN
50947 --
50948 IF g_log_enabled THEN
50949       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_117';
50950 END IF;
50951 --
50952 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
50953 
50954       trace
50955          (p_msg      => 'BEGIN of AcctLineType_117'
50956          ,p_level    => C_LEVEL_PROCEDURE
50957          ,p_module   => l_log_module);
50958 
50959 END IF;
50960 --
50961 l_component_type             := 'AMB_JLT';
50962 l_component_code             := 'RCT_CHARGEBACK';
50963 l_component_type_code        := 'S';
50964 l_component_appl_id          :=  222;
50965 l_amb_context_code           := 'DEFAULT';
50966 l_entity_code                := 'RECEIPTS';
50967 l_event_class_code           := 'RECEIPT';
50968 l_event_type_code            := 'RECEIPT_ALL';
50969 l_line_definition_owner_code := 'S';
50970 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
50971 --
50972 l_balance_type_code          := 'A';
50973 l_segment                     := NULL;
50974 l_ccid                        := NULL;
50975 l_adr_transaction_coa_id      := NULL;
50976 l_adr_accounting_coa_id       := NULL;
50977 l_adr_flexfield_segment_code  := NULL;
50978 l_adr_flex_value_set_id       := NULL;
50979 l_adr_value_type_code         := NULL;
50983 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
50980 l_adr_value_combination_id    := NULL;
50981 l_adr_value_segment_code      := NULL;
50982 
50984 l_bflow_class_code           := '';    -- 4219869 Business Flow
50985 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
50986 l_budgetary_control_flag     := 'N';
50987 
50988 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
50989 l_bflow_applied_to_amt       := NULL; -- 5132302
50990 l_entered_amt_idx            := NULL;          -- 4262811
50991 l_accted_amt_idx             := NULL;          -- 4262811
50992 l_acc_rev_flag               := NULL;          -- 4262811
50993 l_accrual_line_num           := NULL;          -- 4262811
50994 l_tmp_amt                    := NULL;          -- 4262811
50995 --
50996  
50997 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
50998     l_balance_type_code <> 'B' THEN
50999 IF NVL(p_source_39,'
51000 ') =  'ACTIVITY' AND 
51001 NVL(p_source_40,'
51002 ') =  'ADJUST' AND 
51003 NVL(p_source_99,'
51004 ') =  'N'
51005  THEN 
51006 
51007    --
51008    XLA_AE_LINES_PKG.SetNewLine;
51009 
51010    p_balance_type_code          := l_balance_type_code;
51011    -- set the flag so later we will know whether the gain loss line needs to be created
51012    
51013    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51014      p_actual_flag :='A';
51015    END IF;
51016 
51017    --
51018    -- bulk performance
51019    --
51020    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51021                                       p_header_num   => 0); -- 4262811
51022    --
51023    -- set accounting line options
51024    --
51025    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51026            p_natural_side_code          => 'C'
51027          , p_gain_or_loss_flag          => 'N'
51028          , p_gl_transfer_mode_code      => 'S'
51029          , p_acct_entry_type_code       => 'A'
51030          , p_switch_side_flag           => 'Y'
51031          , p_merge_duplicate_code       => 'A'
51032          );
51033    --
51034    l_acc_rev_natural_side_code := 'D';  -- 4262811
51035    -- 
51036    --
51037    -- set accounting line type info
51038    --
51039    xla_ae_lines_pkg.SetAcctLineType
51040       (p_component_type             => l_component_type
51041       ,p_event_type_code            => l_event_type_code
51042       ,p_line_definition_owner_code => l_line_definition_owner_code
51043       ,p_line_definition_code       => l_line_definition_code
51044       ,p_accounting_line_code       => l_component_code
51045       ,p_accounting_line_type_code  => l_component_type_code
51046       ,p_accounting_line_appl_id    => l_component_appl_id
51047       ,p_amb_context_code           => l_amb_context_code
51048       ,p_entity_code                => l_entity_code
51049       ,p_event_class_code           => l_event_class_code);
51050    --
51051    -- set accounting class
51052    --
51053    xla_ae_lines_pkg.SetAcctClass(
51054            p_accounting_class_code  => 'CLAIM'
51055          , p_ae_header_id           => l_ae_header_id
51056          );
51057 
51058    --
51059    -- set rounding class
51060    --
51061    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51062                       'RECEIVABLE';
51063 
51064    --
51065    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51066    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51067    --
51068    -- bulk performance
51069    --
51070    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51071 
51072    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51073       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51074 
51075    -- 4955764
51076    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51077       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51078 
51079    -- 4458381 Public Sector Enh
51080    
51081    --
51082    -- set accounting attributes for the line type
51083    --
51084    l_entered_amt_idx := 8;
51085    l_accted_amt_idx  := 13;
51086    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
51087    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
51088    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
51089    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
51090    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
51091    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
51092    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
51093    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
51094    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
51095    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
51096    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
51097    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
51098    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
51099    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
51103    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
51100    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
51101    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
51102    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
51104    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
51105    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
51106    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
51107    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
51108    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
51109    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
51110    l_rec_acct_attrs.array_char_value(12)  := p_source_109;
51111    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
51112    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
51113    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
51114    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
51115    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
51116    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
51117    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
51118    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
51119 
51120    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51121    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51122 
51123    ---------------------------------------------------------------------------------------------------------------
51124    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51125    ---------------------------------------------------------------------------------------------------------------
51126    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51127 
51128    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51129    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51130 
51131    IF xla_accounting_cache_pkg.GetValueChar
51132          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51133          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51134    AND l_bflow_method_code = 'PRIOR_ENTRY'
51135 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51136    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51137          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51138        )
51139    THEN
51140          xla_ae_lines_pkg.BflowUpgEntry
51141            (p_business_method_code    => l_bflow_method_code
51142            ,p_business_class_code     => l_bflow_class_code
51143            ,p_balance_type            => l_balance_type_code);
51144    ELSE
51145       NULL;
51146 -- No business flow processing for business flow method of NONE.
51147    END IF;
51148 
51149    --
51150    -- call analytical criteria
51151    --
51152    
51153    --
51154    -- call description
51155    --
51156    -- No description or it is inherited.
51157    --
51158    -- call ADRs
51159    -- Bug 4922099
51160    --
51161    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51162         (NVL(l_actual_upg_option, 'N') = 'O') OR
51163         (NVL(l_enc_upg_option, 'N') = 'O')
51164       )
51165    THEN
51166    NULL;
51167    --
51168    --
51169    
51170   l_ccid := AcctDerRule_29(
51171            p_application_id           => p_application_id
51172          , p_ae_header_id             => l_ae_header_id 
51173 , p_source_32 => p_source_32
51174          , x_transaction_coa_id       => l_adr_transaction_coa_id
51175          , x_accounting_coa_id        => l_adr_accounting_coa_id
51176          , x_value_type_code          => l_adr_value_type_code
51177          , p_side                     => 'NA'
51178    );
51179 
51180    xla_ae_lines_pkg.set_ccid(
51181     p_code_combination_id          => l_ccid
51182   , p_value_type_code              => l_adr_value_type_code
51183   , p_transaction_coa_id           => l_adr_transaction_coa_id
51184   , p_accounting_coa_id            => l_adr_accounting_coa_id
51185   , p_adr_code                     => 'DIST_CCID'
51186   , p_adr_type_code                => 'S'
51187   , p_component_type               => l_component_type
51188   , p_component_code               => l_component_code
51189   , p_component_type_code          => l_component_type_code
51190   , p_component_appl_id            => l_component_appl_id
51191   , p_amb_context_code             => l_amb_context_code
51192   , p_side                         => 'NA'
51193   );
51194 
51195 
51196    --
51197    --
51198    END IF;
51199    --
51200    -- Bug 4922099
51201    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51202           (NVL(l_enc_upg_option, 'N') = 'O')
51203         ) AND
51204         (l_bflow_method_code = 'PRIOR_ENTRY')
51205       )
51206    THEN
51207       IF
51208       --
51209       1 = 2
51210       --
51211       THEN
51212       xla_accounting_err_pkg.build_message
51213                                     (p_appli_s_name            => 'XLA'
51214                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51215                                     ,p_token_1                 => 'LINE_NUMBER'
51216                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
51220                                                                             ,l_component_code
51217                                     ,p_token_2                 => 'LINE_TYPE_NAME'
51218                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
51219                                                                              l_component_type
51221                                                                             ,l_component_type_code
51222                                                                             ,l_component_appl_id
51223                                                                             ,l_amb_context_code
51224                                                                             ,l_entity_code
51225                                                                             ,l_event_class_code
51226                                                                            )
51227                                     ,p_token_3                 => 'OWNER'
51228                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
51229                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
51230                                                                           ,p_lookup_code    => l_component_type_code
51231                                                                          )
51232                                     ,p_token_4                 => 'PRODUCT_NAME'
51233                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51234                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51235                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51236                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51237                                     ,p_ae_header_id            =>  NULL
51238                                        );
51239 
51240         IF (C_LEVEL_ERROR>= g_log_level) THEN
51241                  trace
51242                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51243                       ,p_level    => C_LEVEL_ERROR
51244                       ,p_module   => l_log_module);
51245         END IF;
51246       END IF;
51247    END IF;
51248    --
51249    --
51250    ------------------------------------------------------------------------------------------------
51251    -- 4219869 Business Flow
51252    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
51253    -- Prior Entry.  Currently, the following code is always generated.
51254    ------------------------------------------------------------------------------------------------
51255    XLA_AE_LINES_PKG.ValidateCurrentLine;
51256 
51257    ------------------------------------------------------------------------------------
51258    -- 4219869 Business Flow
51259    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
51260    ------------------------------------------------------------------------------------
51261    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51262 
51263    ----------------------------------------------------------------------------------
51264    -- 4219869 Business Flow
51265    -- Update journal entry status -- Need to generate this within IF <condition>
51266    ----------------------------------------------------------------------------------
51267    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51268          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
51269          ,p_balance_type_code => l_balance_type_code
51270          );
51271 
51272    -------------------------------------------------------------------------------------------
51273    -- 4262811 - Generate the Accrual Reversal lines
51274    -------------------------------------------------------------------------------------------
51275    BEGIN
51276       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
51277                               (g_array_event(p_event_id).array_value_num('header_index'));
51278       IF l_acc_rev_flag IS NULL THEN
51279          l_acc_rev_flag := 'N';
51280       END IF;
51281    EXCEPTION
51282       WHEN OTHERS THEN
51283          l_acc_rev_flag := 'N';
51284    END;
51285    --
51286    IF (l_acc_rev_flag = 'Y') THEN
51287 
51288        -- 4645092  ------------------------------------------------------------------------------
51289        -- To allow MPA report to determine if it should generate report process
51290        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
51291        ------------------------------------------------------------------------------------------
51292 
51293        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
51294        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
51295    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
51296    -- call ADRs
51297    -- Bug 4922099
51298    --
51299    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51300         (NVL(l_actual_upg_option, 'N') = 'O') OR
51301         (NVL(l_enc_upg_option, 'N') = 'O')
51302       )
51303    THEN
51304    NULL;
51305    --
51306    --
51307    
51308   l_ccid := AcctDerRule_29(
51309            p_application_id           => p_application_id
51310          , p_ae_header_id             => l_ae_header_id 
51311 , p_source_32 => p_source_32
51312          , x_transaction_coa_id       => l_adr_transaction_coa_id
51316    );
51313          , x_accounting_coa_id        => l_adr_accounting_coa_id
51314          , x_value_type_code          => l_adr_value_type_code
51315          , p_side                     => 'NA'
51317 
51318    xla_ae_lines_pkg.set_ccid(
51319     p_code_combination_id          => l_ccid
51320   , p_value_type_code              => l_adr_value_type_code
51321   , p_transaction_coa_id           => l_adr_transaction_coa_id
51322   , p_accounting_coa_id            => l_adr_accounting_coa_id
51323   , p_adr_code                     => 'DIST_CCID'
51324   , p_adr_type_code                => 'S'
51325   , p_component_type               => l_component_type
51326   , p_component_code               => l_component_code
51327   , p_component_type_code          => l_component_type_code
51328   , p_component_appl_id            => l_component_appl_id
51329   , p_amb_context_code             => l_amb_context_code
51330   , p_side                         => 'NA'
51331   );
51332 
51333 
51334    --
51335    --
51336    END IF;
51337 
51338        --
51339        -- Update the line information that should be overwritten
51340        --
51341        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
51342                                          p_header_num   => 1);
51343        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
51344 
51345        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
51346 
51347        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
51348           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
51349        END IF;
51350 
51351       --
51352       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51353       --
51354       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51355           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
51356       ELSE
51357           ---------------------------------------------------------------------------------------------------
51358           -- 4262811a Switch Sign
51359           ---------------------------------------------------------------------------------------------------
51360           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
51361           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51362                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51363           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51364                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51365           -- 5132302
51366           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51367                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51368 
51369       END IF;
51370 
51371       -- 4955764
51372       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51373       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51374 
51375 
51376       XLA_AE_LINES_PKG.ValidateCurrentLine;
51377       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51378 
51379       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51380                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51381                ,p_balance_type_code => l_balance_type_code);
51382 
51383    END IF;
51384 
51385    -----------------------------------------------------------------------------------------
51386    -- 4262811 Multiperiod Accounting
51387    -----------------------------------------------------------------------------------------
51388      -- No MPA option is assigned.
51389 
51390 
51391 END IF;
51392 END IF;
51393 --
51394 
51395 --
51396 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51397    trace
51401 END IF;
51398       (p_msg      => 'END of AcctLineType_117'
51399       ,p_level    => C_LEVEL_PROCEDURE
51400       ,p_module   => l_log_module);
51402 --
51403 EXCEPTION
51404   WHEN xla_exceptions_pkg.application_exception THEN
51405       RAISE;
51406   WHEN OTHERS THEN
51407        xla_exceptions_pkg.raise_message
51408            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_117');
51409 END AcctLineType_117;
51410 --
51411 
51412 ---------------------------------------
51413 --
51414 -- PRIVATE FUNCTION
51415 --         AcctLineType_118
51416 --
51417 ---------------------------------------
51418 PROCEDURE AcctLineType_118 (
51419   p_application_id        IN NUMBER
51420  ,p_event_id              IN NUMBER
51421  ,p_calculate_acctd_flag  IN VARCHAR2
51422  ,p_calculate_g_l_flag    IN VARCHAR2
51423  ,p_actual_flag           IN OUT VARCHAR2
51424  ,p_balance_type_code     OUT VARCHAR2
51425  ,p_gain_or_loss_ref      OUT VARCHAR2
51426  
51427 --Distribution GL Account
51428  , p_source_32            IN NUMBER
51429 --Distribution Source Type
51430  , p_source_39            IN VARCHAR2
51431 --Receivable Activity Type
51432  , p_source_40            IN VARCHAR2
51433 --Distribution Line Identifier
51434  , p_source_41            IN NUMBER
51435 --Distribution Type
51436  , p_source_42            IN VARCHAR2
51437 --Exchange Date
51438  , p_source_45            IN DATE
51439 --Exchange Rate
51440  , p_source_46            IN NUMBER
51441 --Accounting Amount
51442  , p_source_52            IN NUMBER
51443 --Transaction Distribution Identifier
51444  , p_source_56            IN NUMBER
51445 --Transaction Distribution Type
51446  , p_source_57            IN VARCHAR2
51447 --Distribution Multi Fund Additional Entry
51448  , p_source_99            IN VARCHAR2
51449 --Receipt Applied To Application Identifier
51450  , p_source_101            IN NUMBER
51451 --Transaction Entity Code
51452  , p_source_102            IN VARCHAR2
51453 --Transaction Identifier
51454  , p_source_103            IN NUMBER
51455 --DIST_ENT_AMT_FROM
51456  , p_source_104            IN NUMBER
51457 --Applying Document Currency Code
51458  , p_source_105            IN VARCHAR2
51459 --Distribution Party Identifier
51460  , p_source_106            IN NUMBER
51461 --Distribution Party Site Id
51462  , p_source_107            IN NUMBER
51463 --Distribution Party Type
51464  , p_source_108            IN VARCHAR2
51465 --Applied To Document Exchange Rate Type
51466  , p_source_109            IN VARCHAR2
51467 )
51468 IS
51469 
51470 l_component_type              VARCHAR2(80);
51471 l_component_code              VARCHAR2(30);
51472 l_component_type_code         VARCHAR2(1);
51473 l_component_appl_id           INTEGER;
51474 l_amb_context_code            VARCHAR2(30);
51475 l_entity_code                 VARCHAR2(30);
51476 l_event_class_code            VARCHAR2(30);
51477 l_ae_header_id                NUMBER;
51478 l_event_type_code             VARCHAR2(30);
51479 l_line_definition_code        VARCHAR2(30);
51480 l_line_definition_owner_code  VARCHAR2(1);
51481 --
51482 -- adr variables
51483 l_segment                     VARCHAR2(30);
51484 l_ccid                        NUMBER;
51485 l_adr_transaction_coa_id      NUMBER;
51486 l_adr_accounting_coa_id       NUMBER;
51487 l_adr_flexfield_segment_code  VARCHAR2(30);
51488 l_adr_flex_value_set_id       NUMBER;
51489 l_adr_value_type_code         VARCHAR2(30);
51490 l_adr_value_combination_id    NUMBER;
51491 l_adr_value_segment_code      VARCHAR2(30);
51492 
51493 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
51494 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
51495 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
51496 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
51497 
51498 -- 4262811 Variables ------------------------------------------------------------------------------------------
51499 l_entered_amt_idx             NUMBER;
51500 l_accted_amt_idx              NUMBER;
51501 l_acc_rev_flag                VARCHAR2(1);
51502 l_accrual_line_num            NUMBER;
51503 l_tmp_amt                     NUMBER;
51504 l_acc_rev_natural_side_code   VARCHAR2(1);
51505 
51506 l_num_entries                 NUMBER;
51507 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
51508 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
51509 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
51510 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
51511 l_recog_line_1                NUMBER;
51512 l_recog_line_2                NUMBER;
51513 
51514 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
51515 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
51516 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
51517 
51518 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
51519 
51520 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
51521 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
51522 
51523 ---------------------------------------------------------------------------------------------------------------
51524 
51525 
51526 --
51530 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
51527 -- bulk performance
51528 --
51529 l_balance_type_code           VARCHAR2(1);
51531 l_log_module                  VARCHAR2(240);
51532 
51533 --
51534 -- Upgrade strategy
51535 --
51536 l_actual_upg_option           VARCHAR2(1);
51537 l_enc_upg_option           VARCHAR2(1);
51538 
51539 --
51540 BEGIN
51541 --
51542 IF g_log_enabled THEN
51543       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_118';
51544 END IF;
51545 --
51546 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51547 
51548       trace
51549          (p_msg      => 'BEGIN of AcctLineType_118'
51550          ,p_level    => C_LEVEL_PROCEDURE
51551          ,p_module   => l_log_module);
51552 
51553 END IF;
51554 --
51555 l_component_type             := 'AMB_JLT';
51556 l_component_code             := 'RCT_CLAIM';
51557 l_component_type_code        := 'S';
51558 l_component_appl_id          :=  222;
51559 l_amb_context_code           := 'DEFAULT';
51560 l_entity_code                := 'RECEIPTS';
51561 l_event_class_code           := 'RECEIPT';
51562 l_event_type_code            := 'RECEIPT_ALL';
51563 l_line_definition_owner_code := 'S';
51564 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
51565 --
51566 l_balance_type_code          := 'A';
51567 l_segment                     := NULL;
51568 l_ccid                        := NULL;
51569 l_adr_transaction_coa_id      := NULL;
51570 l_adr_accounting_coa_id       := NULL;
51571 l_adr_flexfield_segment_code  := NULL;
51572 l_adr_flex_value_set_id       := NULL;
51573 l_adr_value_type_code         := NULL;
51574 l_adr_value_combination_id    := NULL;
51575 l_adr_value_segment_code      := NULL;
51576 
51577 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
51578 l_bflow_class_code           := '';    -- 4219869 Business Flow
51579 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
51580 l_budgetary_control_flag     := 'N';
51581 
51582 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
51583 l_bflow_applied_to_amt       := NULL; -- 5132302
51584 l_entered_amt_idx            := NULL;          -- 4262811
51585 l_accted_amt_idx             := NULL;          -- 4262811
51586 l_acc_rev_flag               := NULL;          -- 4262811
51587 l_accrual_line_num           := NULL;          -- 4262811
51588 l_tmp_amt                    := NULL;          -- 4262811
51589 --
51590  
51591 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
51592     l_balance_type_code <> 'B' THEN
51593 IF NVL(p_source_39,'
51594 ') =  'OTHER ACC' AND 
51595 NVL(p_source_40,'
51596 ') =  'CLAIM_INVESTIGATION' AND 
51597 NVL(p_source_99,'
51598 ') =  'N'
51599  THEN 
51600 
51601    --
51602    XLA_AE_LINES_PKG.SetNewLine;
51603 
51604    p_balance_type_code          := l_balance_type_code;
51605    -- set the flag so later we will know whether the gain loss line needs to be created
51606    
51607    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
51608      p_actual_flag :='A';
51609    END IF;
51610 
51611    --
51612    -- bulk performance
51613    --
51614    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
51615                                       p_header_num   => 0); -- 4262811
51616    --
51617    -- set accounting line options
51618    --
51619    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
51620            p_natural_side_code          => 'C'
51621          , p_gain_or_loss_flag          => 'N'
51622          , p_gl_transfer_mode_code      => 'S'
51623          , p_acct_entry_type_code       => 'A'
51624          , p_switch_side_flag           => 'Y'
51625          , p_merge_duplicate_code       => 'A'
51626          );
51627    --
51628    l_acc_rev_natural_side_code := 'D';  -- 4262811
51629    -- 
51630    --
51631    -- set accounting line type info
51632    --
51633    xla_ae_lines_pkg.SetAcctLineType
51634       (p_component_type             => l_component_type
51635       ,p_event_type_code            => l_event_type_code
51636       ,p_line_definition_owner_code => l_line_definition_owner_code
51637       ,p_line_definition_code       => l_line_definition_code
51638       ,p_accounting_line_code       => l_component_code
51639       ,p_accounting_line_type_code  => l_component_type_code
51643       ,p_event_class_code           => l_event_class_code);
51640       ,p_accounting_line_appl_id    => l_component_appl_id
51641       ,p_amb_context_code           => l_amb_context_code
51642       ,p_entity_code                => l_entity_code
51644    --
51645    -- set accounting class
51646    --
51647    xla_ae_lines_pkg.SetAcctClass(
51648            p_accounting_class_code  => 'CLAIM'
51649          , p_ae_header_id           => l_ae_header_id
51650          );
51651 
51652    --
51653    -- set rounding class
51654    --
51655    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
51656                       'RECEIVABLE';
51657 
51658    --
51659    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
51660    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
51661    --
51662    -- bulk performance
51663    --
51664    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
51665 
51666    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
51667       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
51668 
51669    -- 4955764
51670    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51671       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
51672 
51673    -- 4458381 Public Sector Enh
51674    
51675    --
51676    -- set accounting attributes for the line type
51677    --
51678    l_entered_amt_idx := 8;
51679    l_accted_amt_idx  := 13;
51680    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
51681    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
51682    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
51683    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
51684    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
51685    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
51686    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
51687    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
51688    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
51689    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
51690    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
51691    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
51692    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
51693    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
51694    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
51695    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
51696    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
51697    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
51698    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
51699    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
51700    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
51701    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
51702    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
51703    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
51704    l_rec_acct_attrs.array_char_value(12)  := p_source_109;
51705    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
51706    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
51707    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
51708    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
51709    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
51710    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
51711    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
51712    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
51713 
51714    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
51715    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
51716 
51717    ---------------------------------------------------------------------------------------------------------------
51718    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
51719    ---------------------------------------------------------------------------------------------------------------
51720    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
51721 
51722    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51723    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
51724 
51725    IF xla_accounting_cache_pkg.GetValueChar
51726          (p_source_code         => 'LEDGER_CATEGORY_CODE'
51727          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
51728    AND l_bflow_method_code = 'PRIOR_ENTRY'
51729 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
51730    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
51731          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
51732        )
51733    THEN
51734          xla_ae_lines_pkg.BflowUpgEntry
51735            (p_business_method_code    => l_bflow_method_code
51736            ,p_business_class_code     => l_bflow_class_code
51737            ,p_balance_type            => l_balance_type_code);
51738    ELSE
51739       NULL;
51743    --
51740 -- No business flow processing for business flow method of NONE.
51741    END IF;
51742 
51744    -- call analytical criteria
51745    --
51746    
51747    --
51748    -- call description
51749    --
51750    -- No description or it is inherited.
51751    --
51752    -- call ADRs
51753    -- Bug 4922099
51754    --
51755    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51756         (NVL(l_actual_upg_option, 'N') = 'O') OR
51757         (NVL(l_enc_upg_option, 'N') = 'O')
51758       )
51759    THEN
51760    NULL;
51761    --
51762    --
51763    
51764   l_ccid := AcctDerRule_29(
51765            p_application_id           => p_application_id
51766          , p_ae_header_id             => l_ae_header_id 
51767 , p_source_32 => p_source_32
51768          , x_transaction_coa_id       => l_adr_transaction_coa_id
51769          , x_accounting_coa_id        => l_adr_accounting_coa_id
51770          , x_value_type_code          => l_adr_value_type_code
51771          , p_side                     => 'NA'
51772    );
51773 
51774    xla_ae_lines_pkg.set_ccid(
51775     p_code_combination_id          => l_ccid
51776   , p_value_type_code              => l_adr_value_type_code
51777   , p_transaction_coa_id           => l_adr_transaction_coa_id
51778   , p_accounting_coa_id            => l_adr_accounting_coa_id
51779   , p_adr_code                     => 'DIST_CCID'
51780   , p_adr_type_code                => 'S'
51781   , p_component_type               => l_component_type
51782   , p_component_code               => l_component_code
51783   , p_component_type_code          => l_component_type_code
51784   , p_component_appl_id            => l_component_appl_id
51785   , p_amb_context_code             => l_amb_context_code
51786   , p_side                         => 'NA'
51787   );
51788 
51789 
51790    --
51791    --
51792    END IF;
51793    --
51794    -- Bug 4922099
51795    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
51796           (NVL(l_enc_upg_option, 'N') = 'O')
51797         ) AND
51798         (l_bflow_method_code = 'PRIOR_ENTRY')
51799       )
51800    THEN
51801       IF
51802       --
51803       1 = 2
51804       --
51805       THEN
51806       xla_accounting_err_pkg.build_message
51807                                     (p_appli_s_name            => 'XLA'
51808                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51809                                     ,p_token_1                 => 'LINE_NUMBER'
51810                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
51811                                     ,p_token_2                 => 'LINE_TYPE_NAME'
51812                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
51813                                                                              l_component_type
51814                                                                             ,l_component_code
51815                                                                             ,l_component_type_code
51816                                                                             ,l_component_appl_id
51817                                                                             ,l_amb_context_code
51818                                                                             ,l_entity_code
51819                                                                             ,l_event_class_code
51820                                                                            )
51821                                     ,p_token_3                 => 'OWNER'
51822                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
51823                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
51824                                                                           ,p_lookup_code    => l_component_type_code
51825                                                                          )
51826                                     ,p_token_4                 => 'PRODUCT_NAME'
51827                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
51828                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
51829                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
51830                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
51831                                     ,p_ae_header_id            =>  NULL
51832                                        );
51833 
51834         IF (C_LEVEL_ERROR>= g_log_level) THEN
51835                  trace
51836                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
51837                       ,p_level    => C_LEVEL_ERROR
51838                       ,p_module   => l_log_module);
51839         END IF;
51840       END IF;
51841    END IF;
51842    --
51843    --
51844    ------------------------------------------------------------------------------------------------
51845    -- 4219869 Business Flow
51846    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
51847    -- Prior Entry.  Currently, the following code is always generated.
51848    ------------------------------------------------------------------------------------------------
51849    XLA_AE_LINES_PKG.ValidateCurrentLine;
51850 
51851    ------------------------------------------------------------------------------------
51855    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51852    -- 4219869 Business Flow
51853    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
51854    ------------------------------------------------------------------------------------
51856 
51857    ----------------------------------------------------------------------------------
51858    -- 4219869 Business Flow
51859    -- Update journal entry status -- Need to generate this within IF <condition>
51860    ----------------------------------------------------------------------------------
51861    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51862          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
51863          ,p_balance_type_code => l_balance_type_code
51864          );
51865 
51866    -------------------------------------------------------------------------------------------
51867    -- 4262811 - Generate the Accrual Reversal lines
51868    -------------------------------------------------------------------------------------------
51869    BEGIN
51870       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
51871                               (g_array_event(p_event_id).array_value_num('header_index'));
51872       IF l_acc_rev_flag IS NULL THEN
51873          l_acc_rev_flag := 'N';
51874       END IF;
51875    EXCEPTION
51876       WHEN OTHERS THEN
51877          l_acc_rev_flag := 'N';
51878    END;
51879    --
51880    IF (l_acc_rev_flag = 'Y') THEN
51881 
51882        -- 4645092  ------------------------------------------------------------------------------
51883        -- To allow MPA report to determine if it should generate report process
51884        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
51885        ------------------------------------------------------------------------------------------
51886 
51887        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
51888        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
51889    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
51890    -- call ADRs
51891    -- Bug 4922099
51892    --
51893    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
51894         (NVL(l_actual_upg_option, 'N') = 'O') OR
51895         (NVL(l_enc_upg_option, 'N') = 'O')
51896       )
51897    THEN
51898    NULL;
51899    --
51900    --
51901    
51902   l_ccid := AcctDerRule_29(
51903            p_application_id           => p_application_id
51904          , p_ae_header_id             => l_ae_header_id 
51905 , p_source_32 => p_source_32
51906          , x_transaction_coa_id       => l_adr_transaction_coa_id
51907          , x_accounting_coa_id        => l_adr_accounting_coa_id
51908          , x_value_type_code          => l_adr_value_type_code
51909          , p_side                     => 'NA'
51910    );
51911 
51912    xla_ae_lines_pkg.set_ccid(
51913     p_code_combination_id          => l_ccid
51914   , p_value_type_code              => l_adr_value_type_code
51915   , p_transaction_coa_id           => l_adr_transaction_coa_id
51916   , p_accounting_coa_id            => l_adr_accounting_coa_id
51917   , p_adr_code                     => 'DIST_CCID'
51918   , p_adr_type_code                => 'S'
51919   , p_component_type               => l_component_type
51920   , p_component_code               => l_component_code
51921   , p_component_type_code          => l_component_type_code
51922   , p_component_appl_id            => l_component_appl_id
51923   , p_amb_context_code             => l_amb_context_code
51924   , p_side                         => 'NA'
51925   );
51926 
51927 
51928    --
51929    --
51930    END IF;
51931 
51932        --
51933        -- Update the line information that should be overwritten
51934        --
51935        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
51936                                          p_header_num   => 1);
51937        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
51938 
51939        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
51940 
51941        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
51942           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
51943        END IF;
51944 
51945       --
51946       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
51947       --
51948       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
51949           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
51950       ELSE
51951           ---------------------------------------------------------------------------------------------------
51952           -- 4262811a Switch Sign
51953           ---------------------------------------------------------------------------------------------------
51954           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
51955           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51956                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51957           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
51958                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51959           -- 5132302
51963       END IF;
51960           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
51961                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
51962 
51964 
51965       -- 4955764
51966       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
51967       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
51968 
51969 
51970       XLA_AE_LINES_PKG.ValidateCurrentLine;
51971       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
51972 
51973       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
51974                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
51975                ,p_balance_type_code => l_balance_type_code);
51976 
51977    END IF;
51978 
51979    -----------------------------------------------------------------------------------------
51980    -- 4262811 Multiperiod Accounting
51981    -----------------------------------------------------------------------------------------
51982      -- No MPA option is assigned.
51983 
51984 
51985 END IF;
51986 END IF;
51987 --
51988 
51989 --
51990 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
51991    trace
51992       (p_msg      => 'END of AcctLineType_118'
51993       ,p_level    => C_LEVEL_PROCEDURE
51994       ,p_module   => l_log_module);
51995 END IF;
51996 --
51997 EXCEPTION
51998   WHEN xla_exceptions_pkg.application_exception THEN
51999       RAISE;
52000   WHEN OTHERS THEN
52001        xla_exceptions_pkg.raise_message
52002            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_118');
52003 END AcctLineType_118;
52004 --
52005 
52006 ---------------------------------------
52007 --
52008 -- PRIVATE FUNCTION
52009 --         AcctLineType_119
52010 --
52011 ---------------------------------------
52012 PROCEDURE AcctLineType_119 (
52013   p_application_id        IN NUMBER
52014  ,p_event_id              IN NUMBER
52015  ,p_calculate_acctd_flag  IN VARCHAR2
52016  ,p_calculate_g_l_flag    IN VARCHAR2
52017  ,p_actual_flag           IN OUT VARCHAR2
52018  ,p_balance_type_code     OUT VARCHAR2
52019  ,p_gain_or_loss_ref      OUT VARCHAR2
52020  
52021 --Distribution GL Account
52022  , p_source_32            IN NUMBER
52023 --Distribution Source Type
52024  , p_source_39            IN VARCHAR2
52025 --Distribution Line Identifier
52026  , p_source_41            IN NUMBER
52027 --Distribution Type
52028  , p_source_42            IN VARCHAR2
52029 --Exchange Date
52030  , p_source_45            IN DATE
52031 --Exchange Rate
52032  , p_source_46            IN NUMBER
52033 --Exchange Rate Type
52034  , p_source_47            IN VARCHAR2
52035 --Accounting Amount
52036  , p_source_52            IN NUMBER
52037 --Transaction Distribution Identifier
52038  , p_source_56            IN NUMBER
52039 --Transaction Distribution Type
52040  , p_source_57            IN VARCHAR2
52041 --Distribution Multi Fund Additional Entry
52042  , p_source_99            IN VARCHAR2
52043 --Receipt Applied To Application Identifier
52044  , p_source_101            IN NUMBER
52045 --Transaction Entity Code
52046  , p_source_102            IN VARCHAR2
52047 --Transaction Identifier
52048  , p_source_103            IN NUMBER
52049 --DIST_ENT_AMT_FROM
52050  , p_source_104            IN NUMBER
52051 --Applying Document Currency Code
52052  , p_source_105            IN VARCHAR2
52053 --Distribution Party Identifier
52054  , p_source_106            IN NUMBER
52055 --Distribution Party Site Id
52056  , p_source_107            IN NUMBER
52057 --Distribution Party Type
52058  , p_source_108            IN VARCHAR2
52059 )
52060 IS
52061 
52062 l_component_type              VARCHAR2(80);
52063 l_component_code              VARCHAR2(30);
52064 l_component_type_code         VARCHAR2(1);
52065 l_component_appl_id           INTEGER;
52066 l_amb_context_code            VARCHAR2(30);
52067 l_entity_code                 VARCHAR2(30);
52068 l_event_class_code            VARCHAR2(30);
52069 l_ae_header_id                NUMBER;
52070 l_event_type_code             VARCHAR2(30);
52071 l_line_definition_code        VARCHAR2(30);
52072 l_line_definition_owner_code  VARCHAR2(1);
52073 --
52074 -- adr variables
52075 l_segment                     VARCHAR2(30);
52076 l_ccid                        NUMBER;
52077 l_adr_transaction_coa_id      NUMBER;
52078 l_adr_accounting_coa_id       NUMBER;
52079 l_adr_flexfield_segment_code  VARCHAR2(30);
52080 l_adr_flex_value_set_id       NUMBER;
52081 l_adr_value_type_code         VARCHAR2(30);
52082 l_adr_value_combination_id    NUMBER;
52083 l_adr_value_segment_code      VARCHAR2(30);
52084 
52085 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52086 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52087 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52088 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52089 
52090 -- 4262811 Variables ------------------------------------------------------------------------------------------
52091 l_entered_amt_idx             NUMBER;
52092 l_accted_amt_idx              NUMBER;
52093 l_acc_rev_flag                VARCHAR2(1);
52094 l_accrual_line_num            NUMBER;
52098 l_num_entries                 NUMBER;
52095 l_tmp_amt                     NUMBER;
52096 l_acc_rev_natural_side_code   VARCHAR2(1);
52097 
52099 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52100 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52101 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52102 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52103 l_recog_line_1                NUMBER;
52104 l_recog_line_2                NUMBER;
52105 
52106 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52107 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52108 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52109 
52110 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52111 
52112 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52113 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52114 
52115 ---------------------------------------------------------------------------------------------------------------
52116 
52117 
52118 --
52119 -- bulk performance
52120 --
52121 l_balance_type_code           VARCHAR2(1);
52122 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52123 l_log_module                  VARCHAR2(240);
52124 
52125 --
52126 -- Upgrade strategy
52127 --
52128 l_actual_upg_option           VARCHAR2(1);
52129 l_enc_upg_option           VARCHAR2(1);
52130 
52131 --
52132 BEGIN
52133 --
52134 IF g_log_enabled THEN
52135       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_119';
52136 END IF;
52137 --
52138 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52139 
52140       trace
52141          (p_msg      => 'BEGIN of AcctLineType_119'
52142          ,p_level    => C_LEVEL_PROCEDURE
52143          ,p_module   => l_log_module);
52144 
52145 END IF;
52146 --
52147 l_component_type             := 'AMB_JLT';
52148 l_component_code             := 'RCT_CONFIRM';
52149 l_component_type_code        := 'S';
52150 l_component_appl_id          :=  222;
52151 l_amb_context_code           := 'DEFAULT';
52152 l_entity_code                := 'RECEIPTS';
52153 l_event_class_code           := 'RECEIPT';
52154 l_event_type_code            := 'RECEIPT_ALL';
52155 l_line_definition_owner_code := 'S';
52156 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
52157 --
52158 l_balance_type_code          := 'A';
52159 l_segment                     := NULL;
52160 l_ccid                        := NULL;
52161 l_adr_transaction_coa_id      := NULL;
52162 l_adr_accounting_coa_id       := NULL;
52163 l_adr_flexfield_segment_code  := NULL;
52164 l_adr_flex_value_set_id       := NULL;
52165 l_adr_value_type_code         := NULL;
52166 l_adr_value_combination_id    := NULL;
52167 l_adr_value_segment_code      := NULL;
52168 
52169 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
52170 l_bflow_class_code           := '';    -- 4219869 Business Flow
52171 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52172 l_budgetary_control_flag     := 'N';
52173 
52174 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52175 l_bflow_applied_to_amt       := NULL; -- 5132302
52176 l_entered_amt_idx            := NULL;          -- 4262811
52177 l_accted_amt_idx             := NULL;          -- 4262811
52178 l_acc_rev_flag               := NULL;          -- 4262811
52179 l_accrual_line_num           := NULL;          -- 4262811
52180 l_tmp_amt                    := NULL;          -- 4262811
52181 --
52182  
52183 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52184     l_balance_type_code <> 'B' THEN
52185 IF NVL(p_source_39,'
52186 ') =  'CONFIRMATION' AND 
52187 NVL(p_source_99,'
52188 ') =  'N'
52189  THEN 
52190 
52191    --
52192    XLA_AE_LINES_PKG.SetNewLine;
52193 
52194    p_balance_type_code          := l_balance_type_code;
52195    -- set the flag so later we will know whether the gain loss line needs to be created
52196    
52197    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52198      p_actual_flag :='A';
52199    END IF;
52200 
52201    --
52202    -- bulk performance
52203    --
52204    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52205                                       p_header_num   => 0); -- 4262811
52206    --
52207    -- set accounting line options
52208    --
52209    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52210            p_natural_side_code          => 'C'
52211          , p_gain_or_loss_flag          => 'N'
52212          , p_gl_transfer_mode_code      => 'S'
52213          , p_acct_entry_type_code       => 'A'
52214          , p_switch_side_flag           => 'Y'
52215          , p_merge_duplicate_code       => 'A'
52216          );
52217    --
52218    l_acc_rev_natural_side_code := 'D';  -- 4262811
52219    -- 
52220    --
52221    -- set accounting line type info
52222    --
52223    xla_ae_lines_pkg.SetAcctLineType
52224       (p_component_type             => l_component_type
52225       ,p_event_type_code            => l_event_type_code
52226       ,p_line_definition_owner_code => l_line_definition_owner_code
52230       ,p_accounting_line_appl_id    => l_component_appl_id
52227       ,p_line_definition_code       => l_line_definition_code
52228       ,p_accounting_line_code       => l_component_code
52229       ,p_accounting_line_type_code  => l_component_type_code
52231       ,p_amb_context_code           => l_amb_context_code
52232       ,p_entity_code                => l_entity_code
52233       ,p_event_class_code           => l_event_class_code);
52234    --
52235    -- set accounting class
52236    --
52237    xla_ae_lines_pkg.SetAcctClass(
52238            p_accounting_class_code  => 'CONFIRMATION'
52239          , p_ae_header_id           => l_ae_header_id
52240          );
52241 
52242    --
52243    -- set rounding class
52244    --
52245    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52246                       'RECEIVABLE';
52247 
52248    --
52249    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52250    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52251    --
52252    -- bulk performance
52253    --
52254    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52255 
52256    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52257       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52258 
52259    -- 4955764
52260    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52261       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52262 
52263    -- 4458381 Public Sector Enh
52264    
52265    --
52266    -- set accounting attributes for the line type
52267    --
52268    l_entered_amt_idx := 8;
52269    l_accted_amt_idx  := 13;
52270    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
52271    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
52272    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
52273    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
52274    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
52275    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
52276    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
52277    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
52278    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
52279    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
52280    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
52281    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
52282    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
52283    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
52284    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
52285    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
52286    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
52287    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
52288    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
52289    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
52290    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
52291    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
52292    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
52293    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
52294    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
52295    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
52296    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
52297    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
52298    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
52299    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
52300    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
52301    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
52302    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
52303 
52304    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
52305    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
52306 
52307    ---------------------------------------------------------------------------------------------------------------
52308    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
52309    ---------------------------------------------------------------------------------------------------------------
52310    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52311 
52312    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52313    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52314 
52315    IF xla_accounting_cache_pkg.GetValueChar
52316          (p_source_code         => 'LEDGER_CATEGORY_CODE'
52317          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
52318    AND l_bflow_method_code = 'PRIOR_ENTRY'
52319 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
52320    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
52321          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
52322        )
52323    THEN
52324          xla_ae_lines_pkg.BflowUpgEntry
52325            (p_business_method_code    => l_bflow_method_code
52326            ,p_business_class_code     => l_bflow_class_code
52330 -- No business flow processing for business flow method of NONE.
52327            ,p_balance_type            => l_balance_type_code);
52328    ELSE
52329       NULL;
52331    END IF;
52332 
52333    --
52334    -- call analytical criteria
52335    --
52336    
52337    --
52338    -- call description
52339    --
52340    -- No description or it is inherited.
52341    --
52342    -- call ADRs
52343    -- Bug 4922099
52344    --
52345    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52346         (NVL(l_actual_upg_option, 'N') = 'O') OR
52347         (NVL(l_enc_upg_option, 'N') = 'O')
52348       )
52349    THEN
52350    NULL;
52351    --
52352    --
52353    
52354   l_ccid := AcctDerRule_29(
52355            p_application_id           => p_application_id
52356          , p_ae_header_id             => l_ae_header_id 
52357 , p_source_32 => p_source_32
52358          , x_transaction_coa_id       => l_adr_transaction_coa_id
52359          , x_accounting_coa_id        => l_adr_accounting_coa_id
52360          , x_value_type_code          => l_adr_value_type_code
52361          , p_side                     => 'NA'
52362    );
52363 
52364    xla_ae_lines_pkg.set_ccid(
52365     p_code_combination_id          => l_ccid
52366   , p_value_type_code              => l_adr_value_type_code
52367   , p_transaction_coa_id           => l_adr_transaction_coa_id
52368   , p_accounting_coa_id            => l_adr_accounting_coa_id
52369   , p_adr_code                     => 'DIST_CCID'
52370   , p_adr_type_code                => 'S'
52371   , p_component_type               => l_component_type
52372   , p_component_code               => l_component_code
52373   , p_component_type_code          => l_component_type_code
52374   , p_component_appl_id            => l_component_appl_id
52375   , p_amb_context_code             => l_amb_context_code
52376   , p_side                         => 'NA'
52377   );
52378 
52379 
52380    --
52381    --
52382    END IF;
52383    --
52384    -- Bug 4922099
52385    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
52386           (NVL(l_enc_upg_option, 'N') = 'O')
52387         ) AND
52388         (l_bflow_method_code = 'PRIOR_ENTRY')
52389       )
52390    THEN
52391       IF
52392       --
52393       1 = 2
52394       --
52395       THEN
52396       xla_accounting_err_pkg.build_message
52397                                     (p_appli_s_name            => 'XLA'
52398                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52399                                     ,p_token_1                 => 'LINE_NUMBER'
52400                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
52401                                     ,p_token_2                 => 'LINE_TYPE_NAME'
52402                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
52403                                                                              l_component_type
52404                                                                             ,l_component_code
52405                                                                             ,l_component_type_code
52406                                                                             ,l_component_appl_id
52407                                                                             ,l_amb_context_code
52408                                                                             ,l_entity_code
52409                                                                             ,l_event_class_code
52410                                                                            )
52411                                     ,p_token_3                 => 'OWNER'
52412                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
52413                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
52414                                                                           ,p_lookup_code    => l_component_type_code
52415                                                                          )
52416                                     ,p_token_4                 => 'PRODUCT_NAME'
52417                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
52418                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
52419                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
52420                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
52421                                     ,p_ae_header_id            =>  NULL
52422                                        );
52423 
52424         IF (C_LEVEL_ERROR>= g_log_level) THEN
52425                  trace
52426                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52427                       ,p_level    => C_LEVEL_ERROR
52428                       ,p_module   => l_log_module);
52429         END IF;
52430       END IF;
52431    END IF;
52432    --
52433    --
52434    ------------------------------------------------------------------------------------------------
52435    -- 4219869 Business Flow
52436    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
52437    -- Prior Entry.  Currently, the following code is always generated.
52441    ------------------------------------------------------------------------------------
52438    ------------------------------------------------------------------------------------------------
52439    XLA_AE_LINES_PKG.ValidateCurrentLine;
52440 
52442    -- 4219869 Business Flow
52443    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
52444    ------------------------------------------------------------------------------------
52445    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52446 
52447    ----------------------------------------------------------------------------------
52448    -- 4219869 Business Flow
52449    -- Update journal entry status -- Need to generate this within IF <condition>
52450    ----------------------------------------------------------------------------------
52451    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52452          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
52453          ,p_balance_type_code => l_balance_type_code
52454          );
52455 
52456    -------------------------------------------------------------------------------------------
52457    -- 4262811 - Generate the Accrual Reversal lines
52458    -------------------------------------------------------------------------------------------
52459    BEGIN
52460       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
52461                               (g_array_event(p_event_id).array_value_num('header_index'));
52462       IF l_acc_rev_flag IS NULL THEN
52463          l_acc_rev_flag := 'N';
52464       END IF;
52465    EXCEPTION
52466       WHEN OTHERS THEN
52467          l_acc_rev_flag := 'N';
52468    END;
52469    --
52470    IF (l_acc_rev_flag = 'Y') THEN
52471 
52472        -- 4645092  ------------------------------------------------------------------------------
52473        -- To allow MPA report to determine if it should generate report process
52474        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
52475        ------------------------------------------------------------------------------------------
52476 
52477        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
52478        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
52479    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
52480    -- call ADRs
52481    -- Bug 4922099
52482    --
52483    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52484         (NVL(l_actual_upg_option, 'N') = 'O') OR
52485         (NVL(l_enc_upg_option, 'N') = 'O')
52486       )
52487    THEN
52488    NULL;
52489    --
52490    --
52491    
52492   l_ccid := AcctDerRule_29(
52493            p_application_id           => p_application_id
52494          , p_ae_header_id             => l_ae_header_id 
52495 , p_source_32 => p_source_32
52496          , x_transaction_coa_id       => l_adr_transaction_coa_id
52497          , x_accounting_coa_id        => l_adr_accounting_coa_id
52498          , x_value_type_code          => l_adr_value_type_code
52499          , p_side                     => 'NA'
52500    );
52501 
52502    xla_ae_lines_pkg.set_ccid(
52503     p_code_combination_id          => l_ccid
52504   , p_value_type_code              => l_adr_value_type_code
52505   , p_transaction_coa_id           => l_adr_transaction_coa_id
52506   , p_accounting_coa_id            => l_adr_accounting_coa_id
52507   , p_adr_code                     => 'DIST_CCID'
52508   , p_adr_type_code                => 'S'
52509   , p_component_type               => l_component_type
52510   , p_component_code               => l_component_code
52511   , p_component_type_code          => l_component_type_code
52512   , p_component_appl_id            => l_component_appl_id
52513   , p_amb_context_code             => l_amb_context_code
52514   , p_side                         => 'NA'
52515   );
52516 
52517 
52518    --
52519    --
52520    END IF;
52521 
52522        --
52523        -- Update the line information that should be overwritten
52524        --
52525        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
52526                                          p_header_num   => 1);
52527        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
52528 
52529        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
52530 
52531        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
52532           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
52533        END IF;
52534 
52535       --
52536       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
52537       --
52538       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
52539           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
52540       ELSE
52541           ---------------------------------------------------------------------------------------------------
52542           -- 4262811a Switch Sign
52543           ---------------------------------------------------------------------------------------------------
52544           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
52545           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52549           -- 5132302
52546                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52547           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
52548                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52550           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
52551                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
52552 
52553       END IF;
52554 
52555       -- 4955764
52556       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52557       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
52558 
52559 
52560       XLA_AE_LINES_PKG.ValidateCurrentLine;
52561       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
52562 
52563       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
52564                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
52565                ,p_balance_type_code => l_balance_type_code);
52566 
52567    END IF;
52568 
52569    -----------------------------------------------------------------------------------------
52570    -- 4262811 Multiperiod Accounting
52571    -----------------------------------------------------------------------------------------
52572      -- No MPA option is assigned.
52573 
52574 
52575 END IF;
52576 END IF;
52577 --
52578 
52579 --
52580 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52581    trace
52582       (p_msg      => 'END of AcctLineType_119'
52583       ,p_level    => C_LEVEL_PROCEDURE
52584       ,p_module   => l_log_module);
52585 END IF;
52586 --
52587 EXCEPTION
52588   WHEN xla_exceptions_pkg.application_exception THEN
52589       RAISE;
52590   WHEN OTHERS THEN
52591        xla_exceptions_pkg.raise_message
52592            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_119');
52593 END AcctLineType_119;
52594 --
52595 
52596 ---------------------------------------
52597 --
52598 -- PRIVATE FUNCTION
52599 --         AcctLineType_120
52600 --
52601 ---------------------------------------
52602 PROCEDURE AcctLineType_120 (
52603   p_application_id        IN NUMBER
52604  ,p_event_id              IN NUMBER
52605  ,p_calculate_acctd_flag  IN VARCHAR2
52606  ,p_calculate_g_l_flag    IN VARCHAR2
52607  ,p_actual_flag           IN OUT VARCHAR2
52608  ,p_balance_type_code     OUT VARCHAR2
52609  ,p_gain_or_loss_ref      OUT VARCHAR2
52610  
52611 --Distribution GL Account
52612  , p_source_32            IN NUMBER
52613 --Distribution Source Type
52614  , p_source_39            IN VARCHAR2
52615 --Distribution Line Identifier
52616  , p_source_41            IN NUMBER
52617 --Distribution Type
52618  , p_source_42            IN VARCHAR2
52619 --Exchange Date
52620  , p_source_45            IN DATE
52621 --Exchange Rate
52622  , p_source_46            IN NUMBER
52623 --Exchange Rate Type
52624  , p_source_47            IN VARCHAR2
52625 --Accounting Amount
52626  , p_source_52            IN NUMBER
52627 --Transaction Distribution Identifier
52628  , p_source_56            IN NUMBER
52629 --Transaction Distribution Type
52630  , p_source_57            IN VARCHAR2
52631 --Distribution Multi Fund Additional Entry
52632  , p_source_99            IN VARCHAR2
52633 --Receipt Applied To Application Identifier
52634  , p_source_101            IN NUMBER
52635 --Transaction Entity Code
52636  , p_source_102            IN VARCHAR2
52637 --Transaction Identifier
52638  , p_source_103            IN NUMBER
52639 --DIST_ENT_AMT_FROM
52640  , p_source_104            IN NUMBER
52641 --Applying Document Currency Code
52642  , p_source_105            IN VARCHAR2
52643 --Distribution Party Identifier
52644  , p_source_106            IN NUMBER
52645 --Distribution Party Site Id
52646  , p_source_107            IN NUMBER
52647 --Distribution Party Type
52648  , p_source_108            IN VARCHAR2
52649 )
52650 IS
52651 
52652 l_component_type              VARCHAR2(80);
52653 l_component_code              VARCHAR2(30);
52654 l_component_type_code         VARCHAR2(1);
52655 l_component_appl_id           INTEGER;
52656 l_amb_context_code            VARCHAR2(30);
52657 l_entity_code                 VARCHAR2(30);
52658 l_event_class_code            VARCHAR2(30);
52659 l_ae_header_id                NUMBER;
52660 l_event_type_code             VARCHAR2(30);
52661 l_line_definition_code        VARCHAR2(30);
52662 l_line_definition_owner_code  VARCHAR2(1);
52663 --
52664 -- adr variables
52665 l_segment                     VARCHAR2(30);
52666 l_ccid                        NUMBER;
52667 l_adr_transaction_coa_id      NUMBER;
52668 l_adr_accounting_coa_id       NUMBER;
52669 l_adr_flexfield_segment_code  VARCHAR2(30);
52670 l_adr_flex_value_set_id       NUMBER;
52671 l_adr_value_type_code         VARCHAR2(30);
52672 l_adr_value_combination_id    NUMBER;
52673 l_adr_value_segment_code      VARCHAR2(30);
52674 
52675 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
52676 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
52677 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
52681 l_entered_amt_idx             NUMBER;
52678 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
52679 
52680 -- 4262811 Variables ------------------------------------------------------------------------------------------
52682 l_accted_amt_idx              NUMBER;
52683 l_acc_rev_flag                VARCHAR2(1);
52684 l_accrual_line_num            NUMBER;
52685 l_tmp_amt                     NUMBER;
52686 l_acc_rev_natural_side_code   VARCHAR2(1);
52687 
52688 l_num_entries                 NUMBER;
52689 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
52690 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
52691 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
52692 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
52693 l_recog_line_1                NUMBER;
52694 l_recog_line_2                NUMBER;
52695 
52696 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
52697 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
52698 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
52699 
52700 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
52701 
52702 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
52703 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
52704 
52705 ---------------------------------------------------------------------------------------------------------------
52706 
52707 
52708 --
52709 -- bulk performance
52710 --
52711 l_balance_type_code           VARCHAR2(1);
52712 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
52713 l_log_module                  VARCHAR2(240);
52714 
52715 --
52716 -- Upgrade strategy
52717 --
52718 l_actual_upg_option           VARCHAR2(1);
52719 l_enc_upg_option           VARCHAR2(1);
52720 
52721 --
52722 BEGIN
52723 --
52724 IF g_log_enabled THEN
52725       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_120';
52726 END IF;
52727 --
52728 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
52729 
52730       trace
52731          (p_msg      => 'BEGIN of AcctLineType_120'
52732          ,p_level    => C_LEVEL_PROCEDURE
52733          ,p_module   => l_log_module);
52734 
52735 END IF;
52736 --
52737 l_component_type             := 'AMB_JLT';
52738 l_component_code             := 'RCT_CURR_ROUND';
52739 l_component_type_code        := 'S';
52740 l_component_appl_id          :=  222;
52741 l_amb_context_code           := 'DEFAULT';
52742 l_entity_code                := 'RECEIPTS';
52743 l_event_class_code           := 'RECEIPT';
52744 l_event_type_code            := 'RECEIPT_ALL';
52745 l_line_definition_owner_code := 'S';
52746 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
52747 --
52748 l_balance_type_code          := 'A';
52749 l_segment                     := NULL;
52750 l_ccid                        := NULL;
52751 l_adr_transaction_coa_id      := NULL;
52752 l_adr_accounting_coa_id       := NULL;
52753 l_adr_flexfield_segment_code  := NULL;
52754 l_adr_flex_value_set_id       := NULL;
52755 l_adr_value_type_code         := NULL;
52756 l_adr_value_combination_id    := NULL;
52757 l_adr_value_segment_code      := NULL;
52758 
52759 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
52760 l_bflow_class_code           := '';    -- 4219869 Business Flow
52761 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
52762 l_budgetary_control_flag     := 'N';
52763 
52764 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
52765 l_bflow_applied_to_amt       := NULL; -- 5132302
52766 l_entered_amt_idx            := NULL;          -- 4262811
52767 l_accted_amt_idx             := NULL;          -- 4262811
52768 l_acc_rev_flag               := NULL;          -- 4262811
52769 l_accrual_line_num           := NULL;          -- 4262811
52770 l_tmp_amt                    := NULL;          -- 4262811
52771 --
52772  
52773 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
52774     l_balance_type_code <> 'B' THEN
52775 IF NVL(p_source_39,'
52776 ') =  'CURR_ROUND' AND 
52777 NVL(p_source_99,'
52778 ') =  'N'
52779  THEN 
52780 
52781    --
52782    XLA_AE_LINES_PKG.SetNewLine;
52783 
52784    p_balance_type_code          := l_balance_type_code;
52785    -- set the flag so later we will know whether the gain loss line needs to be created
52786    
52787    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
52788      p_actual_flag :='A';
52789    END IF;
52790 
52791    --
52792    -- bulk performance
52793    --
52794    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
52795                                       p_header_num   => 0); -- 4262811
52796    --
52797    -- set accounting line options
52798    --
52799    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
52800            p_natural_side_code          => 'C'
52801          , p_gain_or_loss_flag          => 'N'
52802          , p_gl_transfer_mode_code      => 'S'
52803          , p_acct_entry_type_code       => 'A'
52804          , p_switch_side_flag           => 'Y'
52805          , p_merge_duplicate_code       => 'A'
52806          );
52807    --
52808    l_acc_rev_natural_side_code := 'D';  -- 4262811
52809    -- 
52810    --
52814       (p_component_type             => l_component_type
52811    -- set accounting line type info
52812    --
52813    xla_ae_lines_pkg.SetAcctLineType
52815       ,p_event_type_code            => l_event_type_code
52816       ,p_line_definition_owner_code => l_line_definition_owner_code
52817       ,p_line_definition_code       => l_line_definition_code
52818       ,p_accounting_line_code       => l_component_code
52819       ,p_accounting_line_type_code  => l_component_type_code
52820       ,p_accounting_line_appl_id    => l_component_appl_id
52821       ,p_amb_context_code           => l_amb_context_code
52822       ,p_entity_code                => l_entity_code
52823       ,p_event_class_code           => l_event_class_code);
52824    --
52825    -- set accounting class
52826    --
52827    xla_ae_lines_pkg.SetAcctClass(
52828            p_accounting_class_code  => 'ROUNDING'
52829          , p_ae_header_id           => l_ae_header_id
52830          );
52831 
52832    --
52833    -- set rounding class
52834    --
52835    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
52836                       'RECEIVABLE';
52837 
52838    --
52839    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
52840    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
52841    --
52842    -- bulk performance
52843    --
52844    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
52845 
52846    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
52847       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
52848 
52849    -- 4955764
52850    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
52851       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
52852 
52853    -- 4458381 Public Sector Enh
52854    
52855    --
52856    -- set accounting attributes for the line type
52857    --
52858    l_entered_amt_idx := 8;
52859    l_accted_amt_idx  := 13;
52860    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
52861    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
52862    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
52863    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
52864    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
52865    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
52866    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
52867    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
52868    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
52869    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
52870    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
52871    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
52872    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
52873    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
52874    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
52875    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
52876    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
52877    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
52878    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
52879    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
52880    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
52881    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
52882    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
52883    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
52884    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
52885    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
52886    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
52887    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
52888    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
52889    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
52890    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
52891    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
52892    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
52893 
52894    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
52895    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
52896 
52897    ---------------------------------------------------------------------------------------------------------------
52898    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
52899    ---------------------------------------------------------------------------------------------------------------
52900    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
52901 
52902    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52903    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
52904 
52905    IF xla_accounting_cache_pkg.GetValueChar
52906          (p_source_code         => 'LEDGER_CATEGORY_CODE'
52907          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
52908    AND l_bflow_method_code = 'PRIOR_ENTRY'
52909 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
52910    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
52914          xla_ae_lines_pkg.BflowUpgEntry
52911          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
52912        )
52913    THEN
52915            (p_business_method_code    => l_bflow_method_code
52916            ,p_business_class_code     => l_bflow_class_code
52917            ,p_balance_type            => l_balance_type_code);
52918    ELSE
52919       NULL;
52920 -- No business flow processing for business flow method of NONE.
52921    END IF;
52922 
52923    --
52924    -- call analytical criteria
52925    --
52926    
52927    --
52928    -- call description
52929    --
52930    -- No description or it is inherited.
52931    --
52932    -- call ADRs
52933    -- Bug 4922099
52934    --
52935    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
52936         (NVL(l_actual_upg_option, 'N') = 'O') OR
52937         (NVL(l_enc_upg_option, 'N') = 'O')
52938       )
52939    THEN
52940    NULL;
52941    --
52942    --
52943    
52944   l_ccid := AcctDerRule_29(
52945            p_application_id           => p_application_id
52946          , p_ae_header_id             => l_ae_header_id 
52947 , p_source_32 => p_source_32
52948          , x_transaction_coa_id       => l_adr_transaction_coa_id
52949          , x_accounting_coa_id        => l_adr_accounting_coa_id
52950          , x_value_type_code          => l_adr_value_type_code
52951          , p_side                     => 'NA'
52952    );
52953 
52954    xla_ae_lines_pkg.set_ccid(
52955     p_code_combination_id          => l_ccid
52956   , p_value_type_code              => l_adr_value_type_code
52957   , p_transaction_coa_id           => l_adr_transaction_coa_id
52958   , p_accounting_coa_id            => l_adr_accounting_coa_id
52959   , p_adr_code                     => 'DIST_CCID'
52960   , p_adr_type_code                => 'S'
52961   , p_component_type               => l_component_type
52962   , p_component_code               => l_component_code
52963   , p_component_type_code          => l_component_type_code
52964   , p_component_appl_id            => l_component_appl_id
52965   , p_amb_context_code             => l_amb_context_code
52966   , p_side                         => 'NA'
52967   );
52968 
52969 
52970    --
52971    --
52972    END IF;
52973    --
52974    -- Bug 4922099
52975    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
52976           (NVL(l_enc_upg_option, 'N') = 'O')
52977         ) AND
52978         (l_bflow_method_code = 'PRIOR_ENTRY')
52979       )
52980    THEN
52981       IF
52982       --
52983       1 = 2
52984       --
52985       THEN
52986       xla_accounting_err_pkg.build_message
52987                                     (p_appli_s_name            => 'XLA'
52988                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
52989                                     ,p_token_1                 => 'LINE_NUMBER'
52990                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
52991                                     ,p_token_2                 => 'LINE_TYPE_NAME'
52992                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
52993                                                                              l_component_type
52994                                                                             ,l_component_code
52995                                                                             ,l_component_type_code
52996                                                                             ,l_component_appl_id
52997                                                                             ,l_amb_context_code
52998                                                                             ,l_entity_code
52999                                                                             ,l_event_class_code
53000                                                                            )
53001                                     ,p_token_3                 => 'OWNER'
53002                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53003                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53004                                                                           ,p_lookup_code    => l_component_type_code
53005                                                                          )
53006                                     ,p_token_4                 => 'PRODUCT_NAME'
53007                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53008                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53009                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53010                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53011                                     ,p_ae_header_id            =>  NULL
53012                                        );
53013 
53014         IF (C_LEVEL_ERROR>= g_log_level) THEN
53015                  trace
53016                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53017                       ,p_level    => C_LEVEL_ERROR
53018                       ,p_module   => l_log_module);
53019         END IF;
53020       END IF;
53021    END IF;
53022    --
53023    --
53024    ------------------------------------------------------------------------------------------------
53028    ------------------------------------------------------------------------------------------------
53025    -- 4219869 Business Flow
53026    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53027    -- Prior Entry.  Currently, the following code is always generated.
53029    XLA_AE_LINES_PKG.ValidateCurrentLine;
53030 
53031    ------------------------------------------------------------------------------------
53032    -- 4219869 Business Flow
53033    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53034    ------------------------------------------------------------------------------------
53035    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53036 
53037    ----------------------------------------------------------------------------------
53038    -- 4219869 Business Flow
53039    -- Update journal entry status -- Need to generate this within IF <condition>
53040    ----------------------------------------------------------------------------------
53041    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53042          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53043          ,p_balance_type_code => l_balance_type_code
53044          );
53045 
53046    -------------------------------------------------------------------------------------------
53047    -- 4262811 - Generate the Accrual Reversal lines
53048    -------------------------------------------------------------------------------------------
53049    BEGIN
53050       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53051                               (g_array_event(p_event_id).array_value_num('header_index'));
53052       IF l_acc_rev_flag IS NULL THEN
53053          l_acc_rev_flag := 'N';
53054       END IF;
53055    EXCEPTION
53056       WHEN OTHERS THEN
53057          l_acc_rev_flag := 'N';
53058    END;
53059    --
53060    IF (l_acc_rev_flag = 'Y') THEN
53061 
53062        -- 4645092  ------------------------------------------------------------------------------
53063        -- To allow MPA report to determine if it should generate report process
53064        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53065        ------------------------------------------------------------------------------------------
53066 
53067        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53068        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53069    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
53070    -- call ADRs
53071    -- Bug 4922099
53072    --
53073    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53074         (NVL(l_actual_upg_option, 'N') = 'O') OR
53075         (NVL(l_enc_upg_option, 'N') = 'O')
53076       )
53077    THEN
53078    NULL;
53079    --
53080    --
53081    
53082   l_ccid := AcctDerRule_29(
53083            p_application_id           => p_application_id
53084          , p_ae_header_id             => l_ae_header_id 
53085 , p_source_32 => p_source_32
53086          , x_transaction_coa_id       => l_adr_transaction_coa_id
53087          , x_accounting_coa_id        => l_adr_accounting_coa_id
53088          , x_value_type_code          => l_adr_value_type_code
53089          , p_side                     => 'NA'
53090    );
53091 
53092    xla_ae_lines_pkg.set_ccid(
53093     p_code_combination_id          => l_ccid
53094   , p_value_type_code              => l_adr_value_type_code
53095   , p_transaction_coa_id           => l_adr_transaction_coa_id
53096   , p_accounting_coa_id            => l_adr_accounting_coa_id
53097   , p_adr_code                     => 'DIST_CCID'
53098   , p_adr_type_code                => 'S'
53099   , p_component_type               => l_component_type
53100   , p_component_code               => l_component_code
53101   , p_component_type_code          => l_component_type_code
53102   , p_component_appl_id            => l_component_appl_id
53103   , p_amb_context_code             => l_amb_context_code
53104   , p_side                         => 'NA'
53105   );
53106 
53107 
53108    --
53109    --
53110    END IF;
53111 
53112        --
53113        -- Update the line information that should be overwritten
53114        --
53115        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53116                                          p_header_num   => 1);
53117        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53118 
53119        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53120 
53121        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53122           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53123        END IF;
53124 
53125       --
53126       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53127       --
53128       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53129           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53130       ELSE
53131           ---------------------------------------------------------------------------------------------------
53132           -- 4262811a Switch Sign
53133           ---------------------------------------------------------------------------------------------------
53137           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53134           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53135           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53136                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53138                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53139           -- 5132302
53140           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53141                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53142 
53143       END IF;
53144 
53145       -- 4955764
53146       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53147       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53148 
53149 
53150       XLA_AE_LINES_PKG.ValidateCurrentLine;
53151       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53152 
53153       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53154                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53155                ,p_balance_type_code => l_balance_type_code);
53156 
53157    END IF;
53158 
53159    -----------------------------------------------------------------------------------------
53160    -- 4262811 Multiperiod Accounting
53161    -----------------------------------------------------------------------------------------
53162      -- No MPA option is assigned.
53163 
53164 
53165 END IF;
53166 END IF;
53167 --
53168 
53169 --
53170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53171    trace
53172       (p_msg      => 'END of AcctLineType_120'
53173       ,p_level    => C_LEVEL_PROCEDURE
53174       ,p_module   => l_log_module);
53175 END IF;
53176 --
53177 EXCEPTION
53178   WHEN xla_exceptions_pkg.application_exception THEN
53179       RAISE;
53180   WHEN OTHERS THEN
53181        xla_exceptions_pkg.raise_message
53182            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_120');
53183 END AcctLineType_120;
53184 --
53185 
53186 ---------------------------------------
53187 --
53188 -- PRIVATE FUNCTION
53189 --         AcctLineType_121
53190 --
53191 ---------------------------------------
53192 PROCEDURE AcctLineType_121 (
53193   p_application_id        IN NUMBER
53194  ,p_event_id              IN NUMBER
53195  ,p_calculate_acctd_flag  IN VARCHAR2
53196  ,p_calculate_g_l_flag    IN VARCHAR2
53197  ,p_actual_flag           IN OUT VARCHAR2
53198  ,p_balance_type_code     OUT VARCHAR2
53199  ,p_gain_or_loss_ref      OUT VARCHAR2
53200  
53201 --Distribution GL Account
53202  , p_source_32            IN NUMBER
53203 --Distribution Source Type
53204  , p_source_39            IN VARCHAR2
53205 --Distribution Line Identifier
53206  , p_source_41            IN NUMBER
53207 --Distribution Type
53208  , p_source_42            IN VARCHAR2
53209 --Exchange Date
53210  , p_source_45            IN DATE
53211 --Exchange Rate
53212  , p_source_46            IN NUMBER
53213 --Exchange Rate Type
53214  , p_source_47            IN VARCHAR2
53215 --Accounting Amount
53216  , p_source_52            IN NUMBER
53217 --Transaction Distribution Identifier
53218  , p_source_56            IN NUMBER
53219 --Transaction Distribution Type
53220  , p_source_57            IN VARCHAR2
53221 --Distribution Multi Fund Additional Entry
53222  , p_source_99            IN VARCHAR2
53223 --Receipt Applied To Application Identifier
53224  , p_source_101            IN NUMBER
53225 --Transaction Entity Code
53226  , p_source_102            IN VARCHAR2
53227 --Transaction Identifier
53228  , p_source_103            IN NUMBER
53229 --DIST_ENT_AMT_FROM
53230  , p_source_104            IN NUMBER
53231 --Applying Document Currency Code
53232  , p_source_105            IN VARCHAR2
53233 --Distribution Party Identifier
53234  , p_source_106            IN NUMBER
53235 --Distribution Party Site Id
53236  , p_source_107            IN NUMBER
53237 --Distribution Party Type
53238  , p_source_108            IN VARCHAR2
53239 )
53240 IS
53241 
53242 l_component_type              VARCHAR2(80);
53243 l_component_code              VARCHAR2(30);
53244 l_component_type_code         VARCHAR2(1);
53245 l_component_appl_id           INTEGER;
53246 l_amb_context_code            VARCHAR2(30);
53247 l_entity_code                 VARCHAR2(30);
53248 l_event_class_code            VARCHAR2(30);
53249 l_ae_header_id                NUMBER;
53250 l_event_type_code             VARCHAR2(30);
53251 l_line_definition_code        VARCHAR2(30);
53252 l_line_definition_owner_code  VARCHAR2(1);
53253 --
53254 -- adr variables
53255 l_segment                     VARCHAR2(30);
53256 l_ccid                        NUMBER;
53257 l_adr_transaction_coa_id      NUMBER;
53258 l_adr_accounting_coa_id       NUMBER;
53259 l_adr_flexfield_segment_code  VARCHAR2(30);
53260 l_adr_flex_value_set_id       NUMBER;
53261 l_adr_value_type_code         VARCHAR2(30);
53262 l_adr_value_combination_id    NUMBER;
53263 l_adr_value_segment_code      VARCHAR2(30);
53264 
53265 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
53269 
53266 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
53267 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
53268 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
53270 -- 4262811 Variables ------------------------------------------------------------------------------------------
53271 l_entered_amt_idx             NUMBER;
53272 l_accted_amt_idx              NUMBER;
53273 l_acc_rev_flag                VARCHAR2(1);
53274 l_accrual_line_num            NUMBER;
53275 l_tmp_amt                     NUMBER;
53276 l_acc_rev_natural_side_code   VARCHAR2(1);
53277 
53278 l_num_entries                 NUMBER;
53279 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
53280 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
53281 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
53282 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
53283 l_recog_line_1                NUMBER;
53284 l_recog_line_2                NUMBER;
53285 
53286 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
53287 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
53288 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
53289 
53290 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53291 
53292 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
53293 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
53294 
53295 ---------------------------------------------------------------------------------------------------------------
53296 
53297 
53298 --
53299 -- bulk performance
53300 --
53301 l_balance_type_code           VARCHAR2(1);
53302 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
53303 l_log_module                  VARCHAR2(240);
53304 
53305 --
53306 -- Upgrade strategy
53307 --
53308 l_actual_upg_option           VARCHAR2(1);
53309 l_enc_upg_option           VARCHAR2(1);
53310 
53311 --
53312 BEGIN
53313 --
53314 IF g_log_enabled THEN
53315       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_121';
53316 END IF;
53317 --
53318 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53319 
53320       trace
53321          (p_msg      => 'BEGIN of AcctLineType_121'
53322          ,p_level    => C_LEVEL_PROCEDURE
53323          ,p_module   => l_log_module);
53324 
53325 END IF;
53326 --
53327 l_component_type             := 'AMB_JLT';
53328 l_component_code             := 'RCT_DEBT';
53329 l_component_type_code        := 'S';
53330 l_component_appl_id          :=  222;
53331 l_amb_context_code           := 'DEFAULT';
53332 l_entity_code                := 'RECEIPTS';
53333 l_event_class_code           := 'RECEIPT';
53334 l_event_type_code            := 'RECEIPT_ALL';
53335 l_line_definition_owner_code := 'S';
53336 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
53337 --
53338 l_balance_type_code          := 'A';
53339 l_segment                     := NULL;
53340 l_ccid                        := NULL;
53341 l_adr_transaction_coa_id      := NULL;
53342 l_adr_accounting_coa_id       := NULL;
53343 l_adr_flexfield_segment_code  := NULL;
53344 l_adr_flex_value_set_id       := NULL;
53345 l_adr_value_type_code         := NULL;
53346 l_adr_value_combination_id    := NULL;
53347 l_adr_value_segment_code      := NULL;
53348 
53349 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
53350 l_bflow_class_code           := '';    -- 4219869 Business Flow
53351 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
53352 l_budgetary_control_flag     := 'N';
53353 
53354 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
53355 l_bflow_applied_to_amt       := NULL; -- 5132302
53356 l_entered_amt_idx            := NULL;          -- 4262811
53357 l_accted_amt_idx             := NULL;          -- 4262811
53358 l_acc_rev_flag               := NULL;          -- 4262811
53359 l_accrual_line_num           := NULL;          -- 4262811
53360 l_tmp_amt                    := NULL;          -- 4262811
53361 --
53362  
53363 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
53364     l_balance_type_code <> 'B' THEN
53365 IF NVL(p_source_39,'
53366 ') =  'SHORT_TERM_DEBT' AND 
53367 NVL(p_source_99,'
53368 ') =  'N'
53369  THEN 
53370 
53371    --
53372    XLA_AE_LINES_PKG.SetNewLine;
53373 
53374    p_balance_type_code          := l_balance_type_code;
53375    -- set the flag so later we will know whether the gain loss line needs to be created
53376    
53377    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
53378      p_actual_flag :='A';
53379    END IF;
53380 
53381    --
53382    -- bulk performance
53383    --
53384    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
53385                                       p_header_num   => 0); -- 4262811
53386    --
53387    -- set accounting line options
53388    --
53389    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
53390            p_natural_side_code          => 'C'
53391          , p_gain_or_loss_flag          => 'N'
53392          , p_gl_transfer_mode_code      => 'S'
53393          , p_acct_entry_type_code       => 'A'
53394          , p_switch_side_flag           => 'Y'
53395          , p_merge_duplicate_code       => 'A'
53396          );
53397    --
53401    -- set accounting line type info
53398    l_acc_rev_natural_side_code := 'D';  -- 4262811
53399    -- 
53400    --
53402    --
53403    xla_ae_lines_pkg.SetAcctLineType
53404       (p_component_type             => l_component_type
53405       ,p_event_type_code            => l_event_type_code
53406       ,p_line_definition_owner_code => l_line_definition_owner_code
53407       ,p_line_definition_code       => l_line_definition_code
53408       ,p_accounting_line_code       => l_component_code
53409       ,p_accounting_line_type_code  => l_component_type_code
53410       ,p_accounting_line_appl_id    => l_component_appl_id
53411       ,p_amb_context_code           => l_amb_context_code
53412       ,p_entity_code                => l_entity_code
53413       ,p_event_class_code           => l_event_class_code);
53414    --
53415    -- set accounting class
53416    --
53417    xla_ae_lines_pkg.SetAcctClass(
53418            p_accounting_class_code  => 'SHORT_TERM_DEBT'
53419          , p_ae_header_id           => l_ae_header_id
53420          );
53421 
53422    --
53423    -- set rounding class
53424    --
53425    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
53426                       'RECEIVABLE';
53427 
53428    --
53429    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
53430    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
53431    --
53432    -- bulk performance
53433    --
53434    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
53435 
53436    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
53437       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
53438 
53439    -- 4955764
53440    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53441       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
53442 
53443    -- 4458381 Public Sector Enh
53444    
53445    --
53446    -- set accounting attributes for the line type
53447    --
53448    l_entered_amt_idx := 8;
53449    l_accted_amt_idx  := 13;
53450    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
53451    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
53452    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
53453    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
53454    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
53455    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
53456    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
53457    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
53458    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
53459    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
53460    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
53461    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
53462    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
53463    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
53464    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
53465    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
53466    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
53467    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
53468    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
53469    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
53470    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
53471    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
53472    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
53473    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
53474    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
53475    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
53476    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
53477    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
53478    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
53479    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
53480    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
53481    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
53482    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
53483 
53484    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
53485    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
53486 
53487    ---------------------------------------------------------------------------------------------------------------
53488    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
53489    ---------------------------------------------------------------------------------------------------------------
53490    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
53491 
53492    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53493    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
53494 
53495    IF xla_accounting_cache_pkg.GetValueChar
53496          (p_source_code         => 'LEDGER_CATEGORY_CODE'
53497          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
53501          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
53498    AND l_bflow_method_code = 'PRIOR_ENTRY'
53499 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
53500    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
53502        )
53503    THEN
53504          xla_ae_lines_pkg.BflowUpgEntry
53505            (p_business_method_code    => l_bflow_method_code
53506            ,p_business_class_code     => l_bflow_class_code
53507            ,p_balance_type            => l_balance_type_code);
53508    ELSE
53509       NULL;
53510 -- No business flow processing for business flow method of NONE.
53511    END IF;
53512 
53513    --
53514    -- call analytical criteria
53515    --
53516    
53517    --
53518    -- call description
53519    --
53520    -- No description or it is inherited.
53521    --
53522    -- call ADRs
53523    -- Bug 4922099
53524    --
53525    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53526         (NVL(l_actual_upg_option, 'N') = 'O') OR
53527         (NVL(l_enc_upg_option, 'N') = 'O')
53528       )
53529    THEN
53530    NULL;
53531    --
53532    --
53533    
53534   l_ccid := AcctDerRule_29(
53535            p_application_id           => p_application_id
53536          , p_ae_header_id             => l_ae_header_id 
53537 , p_source_32 => p_source_32
53538          , x_transaction_coa_id       => l_adr_transaction_coa_id
53539          , x_accounting_coa_id        => l_adr_accounting_coa_id
53540          , x_value_type_code          => l_adr_value_type_code
53541          , p_side                     => 'NA'
53542    );
53543 
53544    xla_ae_lines_pkg.set_ccid(
53545     p_code_combination_id          => l_ccid
53546   , p_value_type_code              => l_adr_value_type_code
53547   , p_transaction_coa_id           => l_adr_transaction_coa_id
53548   , p_accounting_coa_id            => l_adr_accounting_coa_id
53549   , p_adr_code                     => 'DIST_CCID'
53550   , p_adr_type_code                => 'S'
53551   , p_component_type               => l_component_type
53552   , p_component_code               => l_component_code
53553   , p_component_type_code          => l_component_type_code
53554   , p_component_appl_id            => l_component_appl_id
53555   , p_amb_context_code             => l_amb_context_code
53556   , p_side                         => 'NA'
53557   );
53558 
53559 
53560    --
53561    --
53562    END IF;
53563    --
53564    -- Bug 4922099
53565    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
53566           (NVL(l_enc_upg_option, 'N') = 'O')
53567         ) AND
53568         (l_bflow_method_code = 'PRIOR_ENTRY')
53569       )
53570    THEN
53571       IF
53572       --
53573       1 = 2
53574       --
53575       THEN
53576       xla_accounting_err_pkg.build_message
53577                                     (p_appli_s_name            => 'XLA'
53578                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53579                                     ,p_token_1                 => 'LINE_NUMBER'
53580                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
53581                                     ,p_token_2                 => 'LINE_TYPE_NAME'
53582                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
53583                                                                              l_component_type
53584                                                                             ,l_component_code
53585                                                                             ,l_component_type_code
53586                                                                             ,l_component_appl_id
53587                                                                             ,l_amb_context_code
53588                                                                             ,l_entity_code
53589                                                                             ,l_event_class_code
53590                                                                            )
53591                                     ,p_token_3                 => 'OWNER'
53592                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
53593                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
53594                                                                           ,p_lookup_code    => l_component_type_code
53595                                                                          )
53596                                     ,p_token_4                 => 'PRODUCT_NAME'
53597                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
53598                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
53599                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
53600                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
53601                                     ,p_ae_header_id            =>  NULL
53602                                        );
53603 
53604         IF (C_LEVEL_ERROR>= g_log_level) THEN
53605                  trace
53606                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
53607                       ,p_level    => C_LEVEL_ERROR
53611    END IF;
53608                       ,p_module   => l_log_module);
53609         END IF;
53610       END IF;
53612    --
53613    --
53614    ------------------------------------------------------------------------------------------------
53615    -- 4219869 Business Flow
53616    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
53617    -- Prior Entry.  Currently, the following code is always generated.
53618    ------------------------------------------------------------------------------------------------
53619    XLA_AE_LINES_PKG.ValidateCurrentLine;
53620 
53621    ------------------------------------------------------------------------------------
53622    -- 4219869 Business Flow
53623    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
53624    ------------------------------------------------------------------------------------
53625    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53626 
53627    ----------------------------------------------------------------------------------
53628    -- 4219869 Business Flow
53629    -- Update journal entry status -- Need to generate this within IF <condition>
53630    ----------------------------------------------------------------------------------
53631    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53632          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
53633          ,p_balance_type_code => l_balance_type_code
53634          );
53635 
53636    -------------------------------------------------------------------------------------------
53637    -- 4262811 - Generate the Accrual Reversal lines
53638    -------------------------------------------------------------------------------------------
53639    BEGIN
53640       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
53641                               (g_array_event(p_event_id).array_value_num('header_index'));
53642       IF l_acc_rev_flag IS NULL THEN
53643          l_acc_rev_flag := 'N';
53644       END IF;
53645    EXCEPTION
53646       WHEN OTHERS THEN
53647          l_acc_rev_flag := 'N';
53648    END;
53649    --
53650    IF (l_acc_rev_flag = 'Y') THEN
53651 
53652        -- 4645092  ------------------------------------------------------------------------------
53653        -- To allow MPA report to determine if it should generate report process
53654        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
53655        ------------------------------------------------------------------------------------------
53656 
53657        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
53658        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
53659    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
53660    -- call ADRs
53661    -- Bug 4922099
53662    --
53663    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
53664         (NVL(l_actual_upg_option, 'N') = 'O') OR
53665         (NVL(l_enc_upg_option, 'N') = 'O')
53666       )
53667    THEN
53668    NULL;
53669    --
53670    --
53671    
53672   l_ccid := AcctDerRule_29(
53673            p_application_id           => p_application_id
53674          , p_ae_header_id             => l_ae_header_id 
53675 , p_source_32 => p_source_32
53676          , x_transaction_coa_id       => l_adr_transaction_coa_id
53677          , x_accounting_coa_id        => l_adr_accounting_coa_id
53678          , x_value_type_code          => l_adr_value_type_code
53679          , p_side                     => 'NA'
53680    );
53681 
53682    xla_ae_lines_pkg.set_ccid(
53683     p_code_combination_id          => l_ccid
53684   , p_value_type_code              => l_adr_value_type_code
53685   , p_transaction_coa_id           => l_adr_transaction_coa_id
53686   , p_accounting_coa_id            => l_adr_accounting_coa_id
53687   , p_adr_code                     => 'DIST_CCID'
53688   , p_adr_type_code                => 'S'
53689   , p_component_type               => l_component_type
53690   , p_component_code               => l_component_code
53691   , p_component_type_code          => l_component_type_code
53692   , p_component_appl_id            => l_component_appl_id
53693   , p_amb_context_code             => l_amb_context_code
53694   , p_side                         => 'NA'
53695   );
53696 
53697 
53698    --
53699    --
53700    END IF;
53701 
53702        --
53703        -- Update the line information that should be overwritten
53704        --
53705        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
53706                                          p_header_num   => 1);
53707        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
53708 
53709        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
53710 
53711        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
53712           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
53713        END IF;
53714 
53715       --
53716       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
53717       --
53718       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
53719           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
53720       ELSE
53724           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
53721           ---------------------------------------------------------------------------------------------------
53722           -- 4262811a Switch Sign
53723           ---------------------------------------------------------------------------------------------------
53725           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53726                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53727           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
53728                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53729           -- 5132302
53730           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
53731                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
53732 
53733       END IF;
53734 
53735       -- 4955764
53736       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
53737       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
53738 
53739 
53740       XLA_AE_LINES_PKG.ValidateCurrentLine;
53741       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
53742 
53743       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
53744                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
53745                ,p_balance_type_code => l_balance_type_code);
53746 
53747    END IF;
53748 
53749    -----------------------------------------------------------------------------------------
53750    -- 4262811 Multiperiod Accounting
53751    -----------------------------------------------------------------------------------------
53752      -- No MPA option is assigned.
53753 
53754 
53755 END IF;
53756 END IF;
53757 --
53758 
53759 --
53760 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53761    trace
53762       (p_msg      => 'END of AcctLineType_121'
53763       ,p_level    => C_LEVEL_PROCEDURE
53764       ,p_module   => l_log_module);
53765 END IF;
53766 --
53767 EXCEPTION
53768   WHEN xla_exceptions_pkg.application_exception THEN
53769       RAISE;
53770   WHEN OTHERS THEN
53771        xla_exceptions_pkg.raise_message
53772            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_121');
53773 END AcctLineType_121;
53774 --
53775 
53776 ---------------------------------------
53777 --
53778 -- PRIVATE FUNCTION
53779 --         AcctLineType_122
53780 --
53781 ---------------------------------------
53782 PROCEDURE AcctLineType_122 (
53783   p_application_id        IN NUMBER
53784  ,p_event_id              IN NUMBER
53785  ,p_calculate_acctd_flag  IN VARCHAR2
53786  ,p_calculate_g_l_flag    IN VARCHAR2
53787  ,p_actual_flag           IN OUT VARCHAR2
53788  ,p_balance_type_code     OUT VARCHAR2
53789  ,p_gain_or_loss_ref      OUT VARCHAR2
53790  
53791 --Transaction Type Name
53792  , p_source_3            IN VARCHAR2
53793 --Transaction Number
53794  , p_source_4            IN VARCHAR2
53795 --Transaction Document Sequence Number
53796  , p_source_6            IN NUMBER
53797 --Distribution GL Account
53798  , p_source_32            IN NUMBER
53799 --Distribution Source Type
53800  , p_source_39            IN VARCHAR2
53801 --Distribution Line Identifier
53802  , p_source_41            IN NUMBER
53803 --Distribution Type
53804  , p_source_42            IN VARCHAR2
53805 --Entered Amount
53806  , p_source_43            IN NUMBER
53807 --Currency Code
53808  , p_source_44            IN VARCHAR2
53809 --Applied To Document Accounting Amount
53810  , p_source_48            IN NUMBER
53811 --Transaction Distribution Identifier
53812  , p_source_56            IN NUMBER
53813 --Transaction Distribution Type
53814  , p_source_57            IN VARCHAR2
53815 --Distribution Multi Fund Additional Entry
53816  , p_source_99            IN VARCHAR2
53817 --Applied To Document Exchange Date
53818  , p_source_100            IN DATE
53819 --Receipt Applied To Application Identifier
53820  , p_source_101            IN NUMBER
53821 --Transaction Entity Code
53822  , p_source_102            IN VARCHAR2
53823 --Transaction Identifier
53824  , p_source_103            IN NUMBER
53825 --Distribution Party Identifier
53826  , p_source_106            IN NUMBER
53827 --Distribution Party Site Id
53828  , p_source_107            IN NUMBER
53829 --Distribution Party Type
53830  , p_source_108            IN VARCHAR2
53831 --Applied To Document Exchange Rate Type
53832  , p_source_109            IN VARCHAR2
53833 --Applied To Document Exchange Rate
53834  , p_source_110            IN NUMBER
53835 )
53836 IS
53837 
53838 l_component_type              VARCHAR2(80);
53839 l_component_code              VARCHAR2(30);
53840 l_component_type_code         VARCHAR2(1);
53841 l_component_appl_id           INTEGER;
53842 l_amb_context_code            VARCHAR2(30);
53843 l_entity_code                 VARCHAR2(30);
53844 l_event_class_code            VARCHAR2(30);
53845 l_ae_header_id                NUMBER;
53846 l_event_type_code             VARCHAR2(30);
53847 l_line_definition_code        VARCHAR2(30);
53848 l_line_definition_owner_code  VARCHAR2(1);
53849 --
53850 -- adr variables
53851 l_segment                     VARCHAR2(30);
53855 l_adr_flexfield_segment_code  VARCHAR2(30);
53852 l_ccid                        NUMBER;
53853 l_adr_transaction_coa_id      NUMBER;
53854 l_adr_accounting_coa_id       NUMBER;
53856 l_adr_flex_value_set_id       NUMBER;
53857 l_adr_value_type_code         VARCHAR2(30);
53858 l_adr_value_combination_id    NUMBER;
53859 l_adr_value_segment_code      VARCHAR2(30);
53860 
53861 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
53862 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
53863 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
53864 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
53865 
53866 -- 4262811 Variables ------------------------------------------------------------------------------------------
53867 l_entered_amt_idx             NUMBER;
53868 l_accted_amt_idx              NUMBER;
53869 l_acc_rev_flag                VARCHAR2(1);
53870 l_accrual_line_num            NUMBER;
53871 l_tmp_amt                     NUMBER;
53872 l_acc_rev_natural_side_code   VARCHAR2(1);
53873 
53874 l_num_entries                 NUMBER;
53875 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
53876 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
53877 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
53878 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
53879 l_recog_line_1                NUMBER;
53880 l_recog_line_2                NUMBER;
53881 
53882 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
53883 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
53884 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
53885 
53886 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
53887 
53888 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
53889 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
53890 
53891 ---------------------------------------------------------------------------------------------------------------
53892 
53893 
53894 --
53895 -- bulk performance
53896 --
53897 l_balance_type_code           VARCHAR2(1);
53898 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
53899 l_log_module                  VARCHAR2(240);
53900 
53901 --
53902 -- Upgrade strategy
53903 --
53904 l_actual_upg_option           VARCHAR2(1);
53905 l_enc_upg_option           VARCHAR2(1);
53906 
53907 --
53908 BEGIN
53909 --
53910 IF g_log_enabled THEN
53911       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_122';
53912 END IF;
53913 --
53914 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
53915 
53916       trace
53917          (p_msg      => 'BEGIN of AcctLineType_122'
53918          ,p_level    => C_LEVEL_PROCEDURE
53919          ,p_module   => l_log_module);
53920 
53921 END IF;
53922 --
53923 l_component_type             := 'AMB_JLT';
53924 l_component_code             := 'RCT_DEFAULT_APP';
53925 l_component_type_code        := 'S';
53926 l_component_appl_id          :=  222;
53927 l_amb_context_code           := 'DEFAULT';
53928 l_entity_code                := 'RECEIPTS';
53929 l_event_class_code           := 'RECEIPT';
53930 l_event_type_code            := 'RECEIPT_ALL';
53931 l_line_definition_owner_code := 'S';
53932 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
53933 --
53934 l_balance_type_code          := 'A';
53935 l_segment                     := NULL;
53936 l_ccid                        := NULL;
53937 l_adr_transaction_coa_id      := NULL;
53938 l_adr_accounting_coa_id       := NULL;
53939 l_adr_flexfield_segment_code  := NULL;
53940 l_adr_flex_value_set_id       := NULL;
53941 l_adr_value_type_code         := NULL;
53942 l_adr_value_combination_id    := NULL;
53943 l_adr_value_segment_code      := NULL;
53944 
53945 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
53946 l_bflow_class_code           := '';    -- 4219869 Business Flow
53947 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
53948 l_budgetary_control_flag     := 'N';
53949 
53950 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
53951 l_bflow_applied_to_amt       := NULL; -- 5132302
53952 l_entered_amt_idx            := NULL;          -- 4262811
53953 l_accted_amt_idx             := NULL;          -- 4262811
53954 l_acc_rev_flag               := NULL;          -- 4262811
53955 l_accrual_line_num           := NULL;          -- 4262811
53956 l_tmp_amt                    := NULL;          -- 4262811
53957 --
53958  
53959 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
53960     l_balance_type_code <> 'B' THEN
53961 IF NVL(p_source_39,'
53962 ') =  'REC' AND 
53963 NVL(p_source_99,'
53964 ') =  'N'
53965  THEN 
53966 
53967    --
53968    XLA_AE_LINES_PKG.SetNewLine;
53969 
53970    p_balance_type_code          := l_balance_type_code;
53971    -- set the flag so later we will know whether the gain loss line needs to be created
53972    
53973    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
53974      p_actual_flag :='A';
53975    END IF;
53976 
53977    --
53978    -- bulk performance
53979    --
53980    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
53981                                       p_header_num   => 0); -- 4262811
53982    --
53986            p_natural_side_code          => 'C'
53983    -- set accounting line options
53984    --
53985    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
53987          , p_gain_or_loss_flag          => 'N'
53988          , p_gl_transfer_mode_code      => 'S'
53989          , p_acct_entry_type_code       => 'A'
53990          , p_switch_side_flag           => 'Y'
53991          , p_merge_duplicate_code       => 'A'
53992          );
53993    --
53994    l_acc_rev_natural_side_code := 'D';  -- 4262811
53995    -- 
53996    --
53997    -- set accounting line type info
53998    --
53999    xla_ae_lines_pkg.SetAcctLineType
54000       (p_component_type             => l_component_type
54001       ,p_event_type_code            => l_event_type_code
54002       ,p_line_definition_owner_code => l_line_definition_owner_code
54003       ,p_line_definition_code       => l_line_definition_code
54004       ,p_accounting_line_code       => l_component_code
54005       ,p_accounting_line_type_code  => l_component_type_code
54006       ,p_accounting_line_appl_id    => l_component_appl_id
54007       ,p_amb_context_code           => l_amb_context_code
54008       ,p_entity_code                => l_entity_code
54009       ,p_event_class_code           => l_event_class_code);
54010    --
54011    -- set accounting class
54012    --
54013    xla_ae_lines_pkg.SetAcctClass(
54014            p_accounting_class_code  => 'RECEIVABLE'
54015          , p_ae_header_id           => l_ae_header_id
54016          );
54017 
54018    --
54019    -- set rounding class
54020    --
54021    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54022                       'RECEIVABLE';
54023 
54024    --
54025    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54026    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54027    --
54028    -- bulk performance
54029    --
54030    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54031 
54032    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54033       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54034 
54035    -- 4955764
54036    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54037       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54038 
54039    -- 4458381 Public Sector Enh
54040    
54041    --
54042    -- set accounting attributes for the line type
54043    --
54044    l_entered_amt_idx := 8;
54045    l_accted_amt_idx  := 13;
54046    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
54047    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
54048    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
54049    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
54050    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
54051    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
54052    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
54053    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
54054    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
54055    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
54056    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
54057    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
54058    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
54059    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
54060    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
54061    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
54062    l_rec_acct_attrs.array_num_value(8)  := p_source_43;
54063    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
54064    l_rec_acct_attrs.array_char_value(9)  := p_source_44;
54065    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
54066    l_rec_acct_attrs.array_date_value(10)  := p_source_100;
54067    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
54068    l_rec_acct_attrs.array_num_value(11)  := p_source_110;
54069    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
54070    l_rec_acct_attrs.array_char_value(12)  := p_source_109;
54071    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
54072    l_rec_acct_attrs.array_num_value(13)  := p_source_48;
54073    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
54074    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
54075    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
54076    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
54077    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
54078    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
54079 
54080    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54081    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54082 
54083    ---------------------------------------------------------------------------------------------------------------
54084    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54085    ---------------------------------------------------------------------------------------------------------------
54086    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54087 
54091    IF xla_accounting_cache_pkg.GetValueChar
54088    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54089    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54090 
54092          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54093          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54094    AND l_bflow_method_code = 'PRIOR_ENTRY'
54095 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54096    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54097          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54098        )
54099    THEN
54100          xla_ae_lines_pkg.BflowUpgEntry
54101            (p_business_method_code    => l_bflow_method_code
54102            ,p_business_class_code     => l_bflow_class_code
54103            ,p_balance_type            => l_balance_type_code);
54104    ELSE
54105       NULL;
54106 -- No business flow processing for business flow method of NONE.
54107    END IF;
54108 
54109    --
54110    -- call analytical criteria
54111    --
54112    
54113    --
54114    -- call description
54115    --
54116    
54117 xla_ae_lines_pkg.SetLineDescription(
54118    p_ae_header_id => l_ae_header_id
54119   ,p_description  => Description_20 (
54120      p_application_id         => p_application_id
54121    , p_ae_header_id           => l_ae_header_id 
54122 , p_source_3 => p_source_3
54123 , p_source_4 => p_source_4
54124 , p_source_6 => p_source_6
54125    )
54126 );
54127 
54128 
54129    --
54130    -- call ADRs
54131    -- Bug 4922099
54132    --
54133    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54134         (NVL(l_actual_upg_option, 'N') = 'O') OR
54135         (NVL(l_enc_upg_option, 'N') = 'O')
54136       )
54137    THEN
54138    NULL;
54139    --
54140    --
54141    
54142   l_ccid := AcctDerRule_29(
54143            p_application_id           => p_application_id
54144          , p_ae_header_id             => l_ae_header_id 
54145 , p_source_32 => p_source_32
54146          , x_transaction_coa_id       => l_adr_transaction_coa_id
54147          , x_accounting_coa_id        => l_adr_accounting_coa_id
54148          , x_value_type_code          => l_adr_value_type_code
54149          , p_side                     => 'NA'
54150    );
54151 
54152    xla_ae_lines_pkg.set_ccid(
54153     p_code_combination_id          => l_ccid
54154   , p_value_type_code              => l_adr_value_type_code
54155   , p_transaction_coa_id           => l_adr_transaction_coa_id
54156   , p_accounting_coa_id            => l_adr_accounting_coa_id
54157   , p_adr_code                     => 'DIST_CCID'
54158   , p_adr_type_code                => 'S'
54159   , p_component_type               => l_component_type
54160   , p_component_code               => l_component_code
54161   , p_component_type_code          => l_component_type_code
54162   , p_component_appl_id            => l_component_appl_id
54163   , p_amb_context_code             => l_amb_context_code
54164   , p_side                         => 'NA'
54165   );
54166 
54167 
54168    --
54169    --
54170    END IF;
54171    --
54172    -- Bug 4922099
54173    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54174           (NVL(l_enc_upg_option, 'N') = 'O')
54175         ) AND
54176         (l_bflow_method_code = 'PRIOR_ENTRY')
54177       )
54178    THEN
54179       IF
54180       --
54181       1 = 2
54182       --
54183       THEN
54184       xla_accounting_err_pkg.build_message
54185                                     (p_appli_s_name            => 'XLA'
54186                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54187                                     ,p_token_1                 => 'LINE_NUMBER'
54188                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54189                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54190                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54191                                                                              l_component_type
54192                                                                             ,l_component_code
54193                                                                             ,l_component_type_code
54194                                                                             ,l_component_appl_id
54195                                                                             ,l_amb_context_code
54196                                                                             ,l_entity_code
54197                                                                             ,l_event_class_code
54198                                                                            )
54199                                     ,p_token_3                 => 'OWNER'
54200                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54201                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54202                                                                           ,p_lookup_code    => l_component_type_code
54203                                                                          )
54207                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54204                                     ,p_token_4                 => 'PRODUCT_NAME'
54205                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54206                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54208                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54209                                     ,p_ae_header_id            =>  NULL
54210                                        );
54211 
54212         IF (C_LEVEL_ERROR>= g_log_level) THEN
54213                  trace
54214                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54215                       ,p_level    => C_LEVEL_ERROR
54216                       ,p_module   => l_log_module);
54217         END IF;
54218       END IF;
54219    END IF;
54220    --
54221    --
54222    ------------------------------------------------------------------------------------------------
54223    -- 4219869 Business Flow
54224    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54225    -- Prior Entry.  Currently, the following code is always generated.
54226    ------------------------------------------------------------------------------------------------
54227    XLA_AE_LINES_PKG.ValidateCurrentLine;
54228 
54229    ------------------------------------------------------------------------------------
54230    -- 4219869 Business Flow
54231    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54232    ------------------------------------------------------------------------------------
54233    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54234 
54235    ----------------------------------------------------------------------------------
54236    -- 4219869 Business Flow
54237    -- Update journal entry status -- Need to generate this within IF <condition>
54238    ----------------------------------------------------------------------------------
54239    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54240          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54241          ,p_balance_type_code => l_balance_type_code
54242          );
54243 
54244    -------------------------------------------------------------------------------------------
54245    -- 4262811 - Generate the Accrual Reversal lines
54246    -------------------------------------------------------------------------------------------
54247    BEGIN
54248       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54249                               (g_array_event(p_event_id).array_value_num('header_index'));
54250       IF l_acc_rev_flag IS NULL THEN
54251          l_acc_rev_flag := 'N';
54252       END IF;
54253    EXCEPTION
54254       WHEN OTHERS THEN
54255          l_acc_rev_flag := 'N';
54256    END;
54257    --
54258    IF (l_acc_rev_flag = 'Y') THEN
54259 
54260        -- 4645092  ------------------------------------------------------------------------------
54261        -- To allow MPA report to determine if it should generate report process
54262        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54263        ------------------------------------------------------------------------------------------
54264 
54265        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54266        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54267    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
54268    -- call ADRs
54269    -- Bug 4922099
54270    --
54271    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54272         (NVL(l_actual_upg_option, 'N') = 'O') OR
54273         (NVL(l_enc_upg_option, 'N') = 'O')
54274       )
54275    THEN
54276    NULL;
54277    --
54278    --
54279    
54280   l_ccid := AcctDerRule_29(
54281            p_application_id           => p_application_id
54282          , p_ae_header_id             => l_ae_header_id 
54283 , p_source_32 => p_source_32
54284          , x_transaction_coa_id       => l_adr_transaction_coa_id
54285          , x_accounting_coa_id        => l_adr_accounting_coa_id
54286          , x_value_type_code          => l_adr_value_type_code
54287          , p_side                     => 'NA'
54288    );
54289 
54290    xla_ae_lines_pkg.set_ccid(
54291     p_code_combination_id          => l_ccid
54292   , p_value_type_code              => l_adr_value_type_code
54293   , p_transaction_coa_id           => l_adr_transaction_coa_id
54294   , p_accounting_coa_id            => l_adr_accounting_coa_id
54295   , p_adr_code                     => 'DIST_CCID'
54296   , p_adr_type_code                => 'S'
54297   , p_component_type               => l_component_type
54298   , p_component_code               => l_component_code
54299   , p_component_type_code          => l_component_type_code
54300   , p_component_appl_id            => l_component_appl_id
54301   , p_amb_context_code             => l_amb_context_code
54302   , p_side                         => 'NA'
54303   );
54304 
54305 
54306    --
54307    --
54308    END IF;
54309 
54310        --
54311        -- Update the line information that should be overwritten
54312        --
54313        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54314                                          p_header_num   => 1);
54318 
54315        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54316 
54317        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54319        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54320           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54321        END IF;
54322 
54323       --
54324       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54325       --
54326       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54327           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54328       ELSE
54329           ---------------------------------------------------------------------------------------------------
54330           -- 4262811a Switch Sign
54331           ---------------------------------------------------------------------------------------------------
54332           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54333           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54334                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54335           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54336                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54337           -- 5132302
54338           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54339                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54340 
54341       END IF;
54342 
54343       -- 4955764
54344       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54345       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54346 
54347 
54348       XLA_AE_LINES_PKG.ValidateCurrentLine;
54349       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54350 
54351       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54352                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54353                ,p_balance_type_code => l_balance_type_code);
54354 
54355    END IF;
54356 
54357    -----------------------------------------------------------------------------------------
54358    -- 4262811 Multiperiod Accounting
54359    -----------------------------------------------------------------------------------------
54360      -- No MPA option is assigned.
54361 
54362 
54363 END IF;
54364 END IF;
54365 --
54366 
54367 --
54368 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54369    trace
54370       (p_msg      => 'END of AcctLineType_122'
54371       ,p_level    => C_LEVEL_PROCEDURE
54372       ,p_module   => l_log_module);
54373 END IF;
54374 --
54375 EXCEPTION
54376   WHEN xla_exceptions_pkg.application_exception THEN
54377       RAISE;
54378   WHEN OTHERS THEN
54379        xla_exceptions_pkg.raise_message
54380            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_122');
54381 END AcctLineType_122;
54382 --
54383 
54384 ---------------------------------------
54385 --
54386 -- PRIVATE FUNCTION
54387 --         AcctLineType_123
54388 --
54389 ---------------------------------------
54390 PROCEDURE AcctLineType_123 (
54391   p_application_id        IN NUMBER
54392  ,p_event_id              IN NUMBER
54393  ,p_calculate_acctd_flag  IN VARCHAR2
54394  ,p_calculate_g_l_flag    IN VARCHAR2
54395  ,p_actual_flag           IN OUT VARCHAR2
54396  ,p_balance_type_code     OUT VARCHAR2
54397  ,p_gain_or_loss_ref      OUT VARCHAR2
54398  
54399 --Distribution GL Account
54400  , p_source_32            IN NUMBER
54401 --Distribution Source Type
54402  , p_source_39            IN VARCHAR2
54403 --Distribution Line Identifier
54404  , p_source_41            IN NUMBER
54405 --Distribution Type
54406  , p_source_42            IN VARCHAR2
54407 --Entered Amount
54408  , p_source_43            IN NUMBER
54409 --Currency Code
54410  , p_source_44            IN VARCHAR2
54411 --Applied To Document Accounting Amount
54412  , p_source_48            IN NUMBER
54413 --Transaction Distribution Identifier
54414  , p_source_56            IN NUMBER
54415 --Transaction Distribution Type
54416  , p_source_57            IN VARCHAR2
54417 --Distribution Multi Fund Additional Entry
54418  , p_source_99            IN VARCHAR2
54419 --Applied To Document Exchange Date
54420  , p_source_100            IN DATE
54421 --Receipt Applied To Application Identifier
54422  , p_source_101            IN NUMBER
54423 --Transaction Entity Code
54424  , p_source_102            IN VARCHAR2
54425 --Transaction Identifier
54426  , p_source_103            IN NUMBER
54427 --Distribution Party Identifier
54428  , p_source_106            IN NUMBER
54429 --Distribution Party Site Id
54430  , p_source_107            IN NUMBER
54431 --Distribution Party Type
54432  , p_source_108            IN VARCHAR2
54433 --Applied To Document Exchange Rate Type
54434  , p_source_109            IN VARCHAR2
54435 --Applied To Document Exchange Rate
54436  , p_source_110            IN NUMBER
54437 )
54438 IS
54439 
54440 l_component_type              VARCHAR2(80);
54441 l_component_code              VARCHAR2(30);
54445 l_entity_code                 VARCHAR2(30);
54442 l_component_type_code         VARCHAR2(1);
54443 l_component_appl_id           INTEGER;
54444 l_amb_context_code            VARCHAR2(30);
54446 l_event_class_code            VARCHAR2(30);
54447 l_ae_header_id                NUMBER;
54448 l_event_type_code             VARCHAR2(30);
54449 l_line_definition_code        VARCHAR2(30);
54450 l_line_definition_owner_code  VARCHAR2(1);
54451 --
54452 -- adr variables
54453 l_segment                     VARCHAR2(30);
54454 l_ccid                        NUMBER;
54455 l_adr_transaction_coa_id      NUMBER;
54456 l_adr_accounting_coa_id       NUMBER;
54457 l_adr_flexfield_segment_code  VARCHAR2(30);
54458 l_adr_flex_value_set_id       NUMBER;
54459 l_adr_value_type_code         VARCHAR2(30);
54460 l_adr_value_combination_id    NUMBER;
54461 l_adr_value_segment_code      VARCHAR2(30);
54462 
54463 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
54464 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
54465 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
54466 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
54467 
54468 -- 4262811 Variables ------------------------------------------------------------------------------------------
54469 l_entered_amt_idx             NUMBER;
54470 l_accted_amt_idx              NUMBER;
54471 l_acc_rev_flag                VARCHAR2(1);
54472 l_accrual_line_num            NUMBER;
54473 l_tmp_amt                     NUMBER;
54474 l_acc_rev_natural_side_code   VARCHAR2(1);
54475 
54476 l_num_entries                 NUMBER;
54477 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
54478 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
54479 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
54480 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
54481 l_recog_line_1                NUMBER;
54482 l_recog_line_2                NUMBER;
54483 
54484 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
54485 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
54486 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
54487 
54488 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
54489 
54490 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
54491 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
54492 
54493 ---------------------------------------------------------------------------------------------------------------
54494 
54495 
54496 --
54497 -- bulk performance
54498 --
54499 l_balance_type_code           VARCHAR2(1);
54500 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
54501 l_log_module                  VARCHAR2(240);
54502 
54503 --
54504 -- Upgrade strategy
54505 --
54506 l_actual_upg_option           VARCHAR2(1);
54507 l_enc_upg_option           VARCHAR2(1);
54508 
54509 --
54510 BEGIN
54511 --
54512 IF g_log_enabled THEN
54513       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_123';
54514 END IF;
54515 --
54516 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54517 
54518       trace
54519          (p_msg      => 'BEGIN of AcctLineType_123'
54520          ,p_level    => C_LEVEL_PROCEDURE
54521          ,p_module   => l_log_module);
54522 
54523 END IF;
54524 --
54525 l_component_type             := 'AMB_JLT';
54526 l_component_code             := 'RCT_DEFERRED_TAX';
54527 l_component_type_code        := 'S';
54528 l_component_appl_id          :=  222;
54529 l_amb_context_code           := 'DEFAULT';
54530 l_entity_code                := 'RECEIPTS';
54531 l_event_class_code           := 'RECEIPT';
54532 l_event_type_code            := 'RECEIPT_ALL';
54533 l_line_definition_owner_code := 'S';
54534 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
54535 --
54536 l_balance_type_code          := 'A';
54537 l_segment                     := NULL;
54538 l_ccid                        := NULL;
54539 l_adr_transaction_coa_id      := NULL;
54540 l_adr_accounting_coa_id       := NULL;
54541 l_adr_flexfield_segment_code  := NULL;
54542 l_adr_flex_value_set_id       := NULL;
54543 l_adr_value_type_code         := NULL;
54544 l_adr_value_combination_id    := NULL;
54545 l_adr_value_segment_code      := NULL;
54546 
54547 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
54548 l_bflow_class_code           := '';    -- 4219869 Business Flow
54549 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
54550 l_budgetary_control_flag     := 'N';
54551 
54552 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
54553 l_bflow_applied_to_amt       := NULL; -- 5132302
54554 l_entered_amt_idx            := NULL;          -- 4262811
54555 l_accted_amt_idx             := NULL;          -- 4262811
54556 l_acc_rev_flag               := NULL;          -- 4262811
54557 l_accrual_line_num           := NULL;          -- 4262811
54558 l_tmp_amt                    := NULL;          -- 4262811
54559 --
54560  
54561 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
54562     l_balance_type_code <> 'B' THEN
54563 IF NVL(p_source_39,'
54564 ') =  'DEFERRED_TAX' AND 
54565 NVL(p_source_99,'
54566 ') =  'N'
54567  THEN 
54568 
54569    --
54570    XLA_AE_LINES_PKG.SetNewLine;
54574    
54571 
54572    p_balance_type_code          := l_balance_type_code;
54573    -- set the flag so later we will know whether the gain loss line needs to be created
54575    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
54576      p_actual_flag :='A';
54577    END IF;
54578 
54579    --
54580    -- bulk performance
54581    --
54582    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
54583                                       p_header_num   => 0); -- 4262811
54584    --
54585    -- set accounting line options
54586    --
54587    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
54588            p_natural_side_code          => 'C'
54589          , p_gain_or_loss_flag          => 'N'
54590          , p_gl_transfer_mode_code      => 'S'
54591          , p_acct_entry_type_code       => 'A'
54592          , p_switch_side_flag           => 'Y'
54593          , p_merge_duplicate_code       => 'A'
54594          );
54595    --
54596    l_acc_rev_natural_side_code := 'D';  -- 4262811
54597    -- 
54598    --
54599    -- set accounting line type info
54600    --
54601    xla_ae_lines_pkg.SetAcctLineType
54602       (p_component_type             => l_component_type
54603       ,p_event_type_code            => l_event_type_code
54604       ,p_line_definition_owner_code => l_line_definition_owner_code
54605       ,p_line_definition_code       => l_line_definition_code
54606       ,p_accounting_line_code       => l_component_code
54607       ,p_accounting_line_type_code  => l_component_type_code
54608       ,p_accounting_line_appl_id    => l_component_appl_id
54609       ,p_amb_context_code           => l_amb_context_code
54610       ,p_entity_code                => l_entity_code
54611       ,p_event_class_code           => l_event_class_code);
54612    --
54613    -- set accounting class
54614    --
54615    xla_ae_lines_pkg.SetAcctClass(
54616            p_accounting_class_code  => 'DEFERRED_TAX'
54617          , p_ae_header_id           => l_ae_header_id
54618          );
54619 
54620    --
54621    -- set rounding class
54622    --
54623    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
54624                       'RECEIVABLE';
54625 
54626    --
54627    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
54628    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
54629    --
54630    -- bulk performance
54631    --
54632    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
54633 
54634    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
54635       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
54636 
54637    -- 4955764
54638    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54639       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
54640 
54641    -- 4458381 Public Sector Enh
54642    
54643    --
54644    -- set accounting attributes for the line type
54645    --
54646    l_entered_amt_idx := 8;
54647    l_accted_amt_idx  := 13;
54648    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
54649    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
54650    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
54651    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
54652    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
54653    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
54654    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
54655    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
54656    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
54657    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
54658    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
54659    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
54660    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
54661    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
54662    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
54663    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
54664    l_rec_acct_attrs.array_num_value(8)  := p_source_43;
54665    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
54666    l_rec_acct_attrs.array_char_value(9)  := p_source_44;
54667    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
54668    l_rec_acct_attrs.array_date_value(10)  := p_source_100;
54669    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
54670    l_rec_acct_attrs.array_num_value(11)  := p_source_110;
54671    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
54672    l_rec_acct_attrs.array_char_value(12)  := p_source_109;
54673    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
54674    l_rec_acct_attrs.array_num_value(13)  := p_source_48;
54675    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
54676    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
54677    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
54678    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
54679    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
54680    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
54681 
54682    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
54686    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
54683    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
54684 
54685    ---------------------------------------------------------------------------------------------------------------
54687    ---------------------------------------------------------------------------------------------------------------
54688    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
54689 
54690    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54691    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
54692 
54693    IF xla_accounting_cache_pkg.GetValueChar
54694          (p_source_code         => 'LEDGER_CATEGORY_CODE'
54695          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
54696    AND l_bflow_method_code = 'PRIOR_ENTRY'
54697 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
54698    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
54699          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
54700        )
54701    THEN
54702          xla_ae_lines_pkg.BflowUpgEntry
54703            (p_business_method_code    => l_bflow_method_code
54704            ,p_business_class_code     => l_bflow_class_code
54705            ,p_balance_type            => l_balance_type_code);
54706    ELSE
54707       NULL;
54708 -- No business flow processing for business flow method of NONE.
54709    END IF;
54710 
54711    --
54712    -- call analytical criteria
54713    --
54714    
54715    --
54716    -- call description
54717    --
54718    -- No description or it is inherited.
54719    --
54720    -- call ADRs
54721    -- Bug 4922099
54722    --
54723    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54724         (NVL(l_actual_upg_option, 'N') = 'O') OR
54725         (NVL(l_enc_upg_option, 'N') = 'O')
54726       )
54727    THEN
54728    NULL;
54729    --
54730    --
54731    
54732   l_ccid := AcctDerRule_29(
54733            p_application_id           => p_application_id
54734          , p_ae_header_id             => l_ae_header_id 
54735 , p_source_32 => p_source_32
54736          , x_transaction_coa_id       => l_adr_transaction_coa_id
54737          , x_accounting_coa_id        => l_adr_accounting_coa_id
54738          , x_value_type_code          => l_adr_value_type_code
54739          , p_side                     => 'NA'
54740    );
54741 
54742    xla_ae_lines_pkg.set_ccid(
54743     p_code_combination_id          => l_ccid
54744   , p_value_type_code              => l_adr_value_type_code
54745   , p_transaction_coa_id           => l_adr_transaction_coa_id
54746   , p_accounting_coa_id            => l_adr_accounting_coa_id
54747   , p_adr_code                     => 'DIST_CCID'
54748   , p_adr_type_code                => 'S'
54749   , p_component_type               => l_component_type
54750   , p_component_code               => l_component_code
54751   , p_component_type_code          => l_component_type_code
54752   , p_component_appl_id            => l_component_appl_id
54753   , p_amb_context_code             => l_amb_context_code
54754   , p_side                         => 'NA'
54755   );
54756 
54757 
54758    --
54759    --
54760    END IF;
54761    --
54762    -- Bug 4922099
54763    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
54764           (NVL(l_enc_upg_option, 'N') = 'O')
54765         ) AND
54766         (l_bflow_method_code = 'PRIOR_ENTRY')
54767       )
54768    THEN
54769       IF
54770       --
54771       1 = 2
54772       --
54773       THEN
54774       xla_accounting_err_pkg.build_message
54775                                     (p_appli_s_name            => 'XLA'
54776                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54777                                     ,p_token_1                 => 'LINE_NUMBER'
54778                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
54779                                     ,p_token_2                 => 'LINE_TYPE_NAME'
54780                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
54781                                                                              l_component_type
54782                                                                             ,l_component_code
54783                                                                             ,l_component_type_code
54784                                                                             ,l_component_appl_id
54785                                                                             ,l_amb_context_code
54786                                                                             ,l_entity_code
54787                                                                             ,l_event_class_code
54788                                                                            )
54789                                     ,p_token_3                 => 'OWNER'
54790                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
54791                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
54795                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
54792                                                                           ,p_lookup_code    => l_component_type_code
54793                                                                          )
54794                                     ,p_token_4                 => 'PRODUCT_NAME'
54796                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
54797                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
54798                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
54799                                     ,p_ae_header_id            =>  NULL
54800                                        );
54801 
54802         IF (C_LEVEL_ERROR>= g_log_level) THEN
54803                  trace
54804                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
54805                       ,p_level    => C_LEVEL_ERROR
54806                       ,p_module   => l_log_module);
54807         END IF;
54808       END IF;
54809    END IF;
54810    --
54811    --
54812    ------------------------------------------------------------------------------------------------
54813    -- 4219869 Business Flow
54814    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
54815    -- Prior Entry.  Currently, the following code is always generated.
54816    ------------------------------------------------------------------------------------------------
54817    XLA_AE_LINES_PKG.ValidateCurrentLine;
54818 
54819    ------------------------------------------------------------------------------------
54820    -- 4219869 Business Flow
54821    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
54822    ------------------------------------------------------------------------------------
54823    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54824 
54825    ----------------------------------------------------------------------------------
54826    -- 4219869 Business Flow
54827    -- Update journal entry status -- Need to generate this within IF <condition>
54828    ----------------------------------------------------------------------------------
54829    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54830          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
54831          ,p_balance_type_code => l_balance_type_code
54832          );
54833 
54834    -------------------------------------------------------------------------------------------
54835    -- 4262811 - Generate the Accrual Reversal lines
54836    -------------------------------------------------------------------------------------------
54837    BEGIN
54838       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
54839                               (g_array_event(p_event_id).array_value_num('header_index'));
54840       IF l_acc_rev_flag IS NULL THEN
54841          l_acc_rev_flag := 'N';
54842       END IF;
54843    EXCEPTION
54844       WHEN OTHERS THEN
54845          l_acc_rev_flag := 'N';
54846    END;
54847    --
54848    IF (l_acc_rev_flag = 'Y') THEN
54849 
54850        -- 4645092  ------------------------------------------------------------------------------
54851        -- To allow MPA report to determine if it should generate report process
54852        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
54853        ------------------------------------------------------------------------------------------
54854 
54855        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
54856        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
54857    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
54858    -- call ADRs
54859    -- Bug 4922099
54860    --
54861    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
54862         (NVL(l_actual_upg_option, 'N') = 'O') OR
54863         (NVL(l_enc_upg_option, 'N') = 'O')
54864       )
54865    THEN
54866    NULL;
54867    --
54868    --
54869    
54870   l_ccid := AcctDerRule_29(
54871            p_application_id           => p_application_id
54872          , p_ae_header_id             => l_ae_header_id 
54873 , p_source_32 => p_source_32
54874          , x_transaction_coa_id       => l_adr_transaction_coa_id
54875          , x_accounting_coa_id        => l_adr_accounting_coa_id
54876          , x_value_type_code          => l_adr_value_type_code
54877          , p_side                     => 'NA'
54878    );
54879 
54880    xla_ae_lines_pkg.set_ccid(
54881     p_code_combination_id          => l_ccid
54882   , p_value_type_code              => l_adr_value_type_code
54883   , p_transaction_coa_id           => l_adr_transaction_coa_id
54884   , p_accounting_coa_id            => l_adr_accounting_coa_id
54885   , p_adr_code                     => 'DIST_CCID'
54886   , p_adr_type_code                => 'S'
54887   , p_component_type               => l_component_type
54888   , p_component_code               => l_component_code
54889   , p_component_type_code          => l_component_type_code
54890   , p_component_appl_id            => l_component_appl_id
54891   , p_amb_context_code             => l_amb_context_code
54892   , p_side                         => 'NA'
54893   );
54894 
54895 
54896    --
54897    --
54898    END IF;
54899 
54900        --
54901        -- Update the line information that should be overwritten
54905        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
54902        --
54903        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
54904                                          p_header_num   => 1);
54906 
54907        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
54908 
54909        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
54910           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
54911        END IF;
54912 
54913       --
54914       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
54915       --
54916       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
54917           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
54918       ELSE
54919           ---------------------------------------------------------------------------------------------------
54920           -- 4262811a Switch Sign
54921           ---------------------------------------------------------------------------------------------------
54922           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
54923           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54924                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54925           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
54926                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54927           -- 5132302
54928           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
54929                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
54930 
54931       END IF;
54932 
54933       -- 4955764
54934       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
54935       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
54936 
54937 
54938       XLA_AE_LINES_PKG.ValidateCurrentLine;
54939       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
54940 
54941       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
54942                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
54943                ,p_balance_type_code => l_balance_type_code);
54944 
54945    END IF;
54946 
54947    -----------------------------------------------------------------------------------------
54948    -- 4262811 Multiperiod Accounting
54949    -----------------------------------------------------------------------------------------
54950      -- No MPA option is assigned.
54951 
54952 
54953 END IF;
54954 END IF;
54955 --
54956 
54957 --
54958 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
54959    trace
54960       (p_msg      => 'END of AcctLineType_123'
54961       ,p_level    => C_LEVEL_PROCEDURE
54962       ,p_module   => l_log_module);
54963 END IF;
54964 --
54965 EXCEPTION
54966   WHEN xla_exceptions_pkg.application_exception THEN
54967       RAISE;
54968   WHEN OTHERS THEN
54969        xla_exceptions_pkg.raise_message
54970            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_123');
54971 END AcctLineType_123;
54972 --
54973 
54974 ---------------------------------------
54975 --
54976 -- PRIVATE FUNCTION
54977 --         AcctLineType_124
54978 --
54979 ---------------------------------------
54980 PROCEDURE AcctLineType_124 (
54981   p_application_id        IN NUMBER
54982  ,p_event_id              IN NUMBER
54983  ,p_calculate_acctd_flag  IN VARCHAR2
54984  ,p_calculate_g_l_flag    IN VARCHAR2
54985  ,p_actual_flag           IN OUT VARCHAR2
54986  ,p_balance_type_code     OUT VARCHAR2
54987  ,p_gain_or_loss_ref      OUT VARCHAR2
54988  
54989 --Distribution GL Account
54990  , p_source_32            IN NUMBER
54991 --Distribution Source Type
54992  , p_source_39            IN VARCHAR2
54993 --Distribution Line Identifier
54994  , p_source_41            IN NUMBER
54995 --Distribution Type
54996  , p_source_42            IN VARCHAR2
54997 --Entered Amount
54998  , p_source_43            IN NUMBER
54999 --Currency Code
55000  , p_source_44            IN VARCHAR2
55001 --Applied To Document Accounting Amount
55002  , p_source_48            IN NUMBER
55003 --Transaction Distribution Identifier
55004  , p_source_56            IN NUMBER
55005 --Transaction Distribution Type
55006  , p_source_57            IN VARCHAR2
55007 --Distribution Multi Fund Additional Entry
55008  , p_source_99            IN VARCHAR2
55009 --Applied To Document Exchange Date
55010  , p_source_100            IN DATE
55011 --Receipt Applied To Application Identifier
55012  , p_source_101            IN NUMBER
55013 --Transaction Entity Code
55014  , p_source_102            IN VARCHAR2
55015 --Transaction Identifier
55016  , p_source_103            IN NUMBER
55017 --Distribution Party Identifier
55018  , p_source_106            IN NUMBER
55019 --Distribution Party Site Id
55020  , p_source_107            IN NUMBER
55021 --Distribution Party Type
55022  , p_source_108            IN VARCHAR2
55023 --Applied To Document Exchange Rate Type
55024  , p_source_109            IN VARCHAR2
55025 --Applied To Document Exchange Rate
55029 
55026  , p_source_110            IN NUMBER
55027 )
55028 IS
55030 l_component_type              VARCHAR2(80);
55031 l_component_code              VARCHAR2(30);
55032 l_component_type_code         VARCHAR2(1);
55033 l_component_appl_id           INTEGER;
55034 l_amb_context_code            VARCHAR2(30);
55035 l_entity_code                 VARCHAR2(30);
55036 l_event_class_code            VARCHAR2(30);
55037 l_ae_header_id                NUMBER;
55038 l_event_type_code             VARCHAR2(30);
55039 l_line_definition_code        VARCHAR2(30);
55040 l_line_definition_owner_code  VARCHAR2(1);
55041 --
55042 -- adr variables
55043 l_segment                     VARCHAR2(30);
55044 l_ccid                        NUMBER;
55045 l_adr_transaction_coa_id      NUMBER;
55046 l_adr_accounting_coa_id       NUMBER;
55047 l_adr_flexfield_segment_code  VARCHAR2(30);
55048 l_adr_flex_value_set_id       NUMBER;
55049 l_adr_value_type_code         VARCHAR2(30);
55050 l_adr_value_combination_id    NUMBER;
55051 l_adr_value_segment_code      VARCHAR2(30);
55052 
55053 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
55054 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
55055 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
55056 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
55057 
55058 -- 4262811 Variables ------------------------------------------------------------------------------------------
55059 l_entered_amt_idx             NUMBER;
55060 l_accted_amt_idx              NUMBER;
55061 l_acc_rev_flag                VARCHAR2(1);
55062 l_accrual_line_num            NUMBER;
55063 l_tmp_amt                     NUMBER;
55064 l_acc_rev_natural_side_code   VARCHAR2(1);
55065 
55066 l_num_entries                 NUMBER;
55067 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
55068 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
55069 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
55070 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
55071 l_recog_line_1                NUMBER;
55072 l_recog_line_2                NUMBER;
55073 
55074 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
55075 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
55076 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
55077 
55078 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55079 
55080 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
55081 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
55082 
55083 ---------------------------------------------------------------------------------------------------------------
55084 
55085 
55086 --
55087 -- bulk performance
55088 --
55089 l_balance_type_code           VARCHAR2(1);
55090 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
55091 l_log_module                  VARCHAR2(240);
55092 
55093 --
55094 -- Upgrade strategy
55095 --
55096 l_actual_upg_option           VARCHAR2(1);
55097 l_enc_upg_option           VARCHAR2(1);
55098 
55099 --
55100 BEGIN
55101 --
55102 IF g_log_enabled THEN
55103       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_124';
55104 END IF;
55105 --
55106 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55107 
55108       trace
55109          (p_msg      => 'BEGIN of AcctLineType_124'
55110          ,p_level    => C_LEVEL_PROCEDURE
55111          ,p_module   => l_log_module);
55112 
55113 END IF;
55114 --
55115 l_component_type             := 'AMB_JLT';
55116 l_component_code             := 'RCT_EDISC';
55117 l_component_type_code        := 'S';
55118 l_component_appl_id          :=  222;
55119 l_amb_context_code           := 'DEFAULT';
55120 l_entity_code                := 'RECEIPTS';
55121 l_event_class_code           := 'RECEIPT';
55122 l_event_type_code            := 'RECEIPT_ALL';
55123 l_line_definition_owner_code := 'S';
55124 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
55125 --
55126 l_balance_type_code          := 'A';
55127 l_segment                     := NULL;
55128 l_ccid                        := NULL;
55129 l_adr_transaction_coa_id      := NULL;
55130 l_adr_accounting_coa_id       := NULL;
55131 l_adr_flexfield_segment_code  := NULL;
55132 l_adr_flex_value_set_id       := NULL;
55133 l_adr_value_type_code         := NULL;
55134 l_adr_value_combination_id    := NULL;
55135 l_adr_value_segment_code      := NULL;
55136 
55137 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
55138 l_bflow_class_code           := '';    -- 4219869 Business Flow
55139 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
55140 l_budgetary_control_flag     := 'N';
55141 
55142 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
55143 l_bflow_applied_to_amt       := NULL; -- 5132302
55144 l_entered_amt_idx            := NULL;          -- 4262811
55145 l_accted_amt_idx             := NULL;          -- 4262811
55146 l_acc_rev_flag               := NULL;          -- 4262811
55147 l_accrual_line_num           := NULL;          -- 4262811
55148 l_tmp_amt                    := NULL;          -- 4262811
55149 --
55150  
55151 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55152     l_balance_type_code <> 'B' THEN
55153 IF NVL(p_source_39,'
55157  THEN 
55154 ') =  'EDISC' AND 
55155 NVL(p_source_99,'
55156 ') =  'N'
55158 
55159    --
55160    XLA_AE_LINES_PKG.SetNewLine;
55161 
55162    p_balance_type_code          := l_balance_type_code;
55163    -- set the flag so later we will know whether the gain loss line needs to be created
55164    
55165    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55166      p_actual_flag :='A';
55167    END IF;
55168 
55169    --
55170    -- bulk performance
55171    --
55172    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55173                                       p_header_num   => 0); -- 4262811
55174    --
55175    -- set accounting line options
55176    --
55177    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55178            p_natural_side_code          => 'C'
55179          , p_gain_or_loss_flag          => 'N'
55180          , p_gl_transfer_mode_code      => 'S'
55181          , p_acct_entry_type_code       => 'A'
55182          , p_switch_side_flag           => 'Y'
55183          , p_merge_duplicate_code       => 'A'
55184          );
55185    --
55186    l_acc_rev_natural_side_code := 'D';  -- 4262811
55187    -- 
55188    --
55189    -- set accounting line type info
55190    --
55191    xla_ae_lines_pkg.SetAcctLineType
55192       (p_component_type             => l_component_type
55193       ,p_event_type_code            => l_event_type_code
55194       ,p_line_definition_owner_code => l_line_definition_owner_code
55195       ,p_line_definition_code       => l_line_definition_code
55196       ,p_accounting_line_code       => l_component_code
55197       ,p_accounting_line_type_code  => l_component_type_code
55198       ,p_accounting_line_appl_id    => l_component_appl_id
55199       ,p_amb_context_code           => l_amb_context_code
55200       ,p_entity_code                => l_entity_code
55201       ,p_event_class_code           => l_event_class_code);
55202    --
55203    -- set accounting class
55204    --
55205    xla_ae_lines_pkg.SetAcctClass(
55206            p_accounting_class_code  => 'EDISC'
55207          , p_ae_header_id           => l_ae_header_id
55208          );
55209 
55210    --
55211    -- set rounding class
55212    --
55213    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55214                       'RECEIVABLE';
55215 
55216    --
55217    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55218    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55219    --
55220    -- bulk performance
55221    --
55222    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55223 
55224    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55225       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55226 
55227    -- 4955764
55228    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55229       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55230 
55231    -- 4458381 Public Sector Enh
55232    
55233    --
55234    -- set accounting attributes for the line type
55235    --
55236    l_entered_amt_idx := 8;
55237    l_accted_amt_idx  := 13;
55238    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
55239    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
55240    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
55241    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
55242    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
55243    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
55244    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
55245    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
55246    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
55247    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
55248    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
55249    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
55250    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
55251    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
55252    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
55253    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
55254    l_rec_acct_attrs.array_num_value(8)  := p_source_43;
55255    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
55256    l_rec_acct_attrs.array_char_value(9)  := p_source_44;
55257    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
55258    l_rec_acct_attrs.array_date_value(10)  := p_source_100;
55259    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
55260    l_rec_acct_attrs.array_num_value(11)  := p_source_110;
55261    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
55262    l_rec_acct_attrs.array_char_value(12)  := p_source_109;
55263    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
55264    l_rec_acct_attrs.array_num_value(13)  := p_source_48;
55265    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
55266    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
55267    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
55268    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
55269    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
55273    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55270    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
55271 
55272    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55274 
55275    ---------------------------------------------------------------------------------------------------------------
55276    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55277    ---------------------------------------------------------------------------------------------------------------
55278    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55279 
55280    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55281    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55282 
55283    IF xla_accounting_cache_pkg.GetValueChar
55284          (p_source_code         => 'LEDGER_CATEGORY_CODE'
55285          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55286    AND l_bflow_method_code = 'PRIOR_ENTRY'
55287 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55288    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55289          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55290        )
55291    THEN
55292          xla_ae_lines_pkg.BflowUpgEntry
55293            (p_business_method_code    => l_bflow_method_code
55294            ,p_business_class_code     => l_bflow_class_code
55295            ,p_balance_type            => l_balance_type_code);
55296    ELSE
55297       NULL;
55298 -- No business flow processing for business flow method of NONE.
55299    END IF;
55300 
55301    --
55302    -- call analytical criteria
55303    --
55304    
55305    --
55306    -- call description
55307    --
55308    -- No description or it is inherited.
55309    --
55310    -- call ADRs
55311    -- Bug 4922099
55312    --
55313    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55314         (NVL(l_actual_upg_option, 'N') = 'O') OR
55315         (NVL(l_enc_upg_option, 'N') = 'O')
55316       )
55317    THEN
55318    NULL;
55319    --
55320    --
55321    
55322   l_ccid := AcctDerRule_29(
55323            p_application_id           => p_application_id
55324          , p_ae_header_id             => l_ae_header_id 
55325 , p_source_32 => p_source_32
55326          , x_transaction_coa_id       => l_adr_transaction_coa_id
55327          , x_accounting_coa_id        => l_adr_accounting_coa_id
55328          , x_value_type_code          => l_adr_value_type_code
55329          , p_side                     => 'NA'
55330    );
55331 
55332    xla_ae_lines_pkg.set_ccid(
55333     p_code_combination_id          => l_ccid
55334   , p_value_type_code              => l_adr_value_type_code
55335   , p_transaction_coa_id           => l_adr_transaction_coa_id
55336   , p_accounting_coa_id            => l_adr_accounting_coa_id
55337   , p_adr_code                     => 'DIST_CCID'
55338   , p_adr_type_code                => 'S'
55339   , p_component_type               => l_component_type
55340   , p_component_code               => l_component_code
55341   , p_component_type_code          => l_component_type_code
55342   , p_component_appl_id            => l_component_appl_id
55343   , p_amb_context_code             => l_amb_context_code
55344   , p_side                         => 'NA'
55345   );
55346 
55347 
55348    --
55349    --
55350    END IF;
55351    --
55352    -- Bug 4922099
55353    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55354           (NVL(l_enc_upg_option, 'N') = 'O')
55355         ) AND
55356         (l_bflow_method_code = 'PRIOR_ENTRY')
55357       )
55358    THEN
55359       IF
55360       --
55361       1 = 2
55362       --
55363       THEN
55364       xla_accounting_err_pkg.build_message
55365                                     (p_appli_s_name            => 'XLA'
55366                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55367                                     ,p_token_1                 => 'LINE_NUMBER'
55368                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
55369                                     ,p_token_2                 => 'LINE_TYPE_NAME'
55370                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
55371                                                                              l_component_type
55372                                                                             ,l_component_code
55373                                                                             ,l_component_type_code
55374                                                                             ,l_component_appl_id
55375                                                                             ,l_amb_context_code
55376                                                                             ,l_entity_code
55377                                                                             ,l_event_class_code
55378                                                                            )
55379                                     ,p_token_3                 => 'OWNER'
55380                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
55384                                     ,p_token_4                 => 'PRODUCT_NAME'
55381                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
55382                                                                           ,p_lookup_code    => l_component_type_code
55383                                                                          )
55385                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55386                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55387                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55388                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55389                                     ,p_ae_header_id            =>  NULL
55390                                        );
55391 
55392         IF (C_LEVEL_ERROR>= g_log_level) THEN
55393                  trace
55394                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55395                       ,p_level    => C_LEVEL_ERROR
55396                       ,p_module   => l_log_module);
55397         END IF;
55398       END IF;
55399    END IF;
55400    --
55401    --
55402    ------------------------------------------------------------------------------------------------
55403    -- 4219869 Business Flow
55404    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55405    -- Prior Entry.  Currently, the following code is always generated.
55406    ------------------------------------------------------------------------------------------------
55407    XLA_AE_LINES_PKG.ValidateCurrentLine;
55408 
55409    ------------------------------------------------------------------------------------
55410    -- 4219869 Business Flow
55411    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
55412    ------------------------------------------------------------------------------------
55413    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55414 
55415    ----------------------------------------------------------------------------------
55416    -- 4219869 Business Flow
55417    -- Update journal entry status -- Need to generate this within IF <condition>
55418    ----------------------------------------------------------------------------------
55419    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55420          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
55421          ,p_balance_type_code => l_balance_type_code
55422          );
55423 
55424    -------------------------------------------------------------------------------------------
55425    -- 4262811 - Generate the Accrual Reversal lines
55426    -------------------------------------------------------------------------------------------
55427    BEGIN
55428       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
55429                               (g_array_event(p_event_id).array_value_num('header_index'));
55430       IF l_acc_rev_flag IS NULL THEN
55431          l_acc_rev_flag := 'N';
55432       END IF;
55433    EXCEPTION
55434       WHEN OTHERS THEN
55435          l_acc_rev_flag := 'N';
55436    END;
55437    --
55438    IF (l_acc_rev_flag = 'Y') THEN
55439 
55440        -- 4645092  ------------------------------------------------------------------------------
55441        -- To allow MPA report to determine if it should generate report process
55442        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
55443        ------------------------------------------------------------------------------------------
55444 
55445        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
55446        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
55447    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
55448    -- call ADRs
55449    -- Bug 4922099
55450    --
55451    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55452         (NVL(l_actual_upg_option, 'N') = 'O') OR
55453         (NVL(l_enc_upg_option, 'N') = 'O')
55454       )
55455    THEN
55456    NULL;
55457    --
55458    --
55459    
55460   l_ccid := AcctDerRule_29(
55461            p_application_id           => p_application_id
55462          , p_ae_header_id             => l_ae_header_id 
55463 , p_source_32 => p_source_32
55464          , x_transaction_coa_id       => l_adr_transaction_coa_id
55465          , x_accounting_coa_id        => l_adr_accounting_coa_id
55466          , x_value_type_code          => l_adr_value_type_code
55467          , p_side                     => 'NA'
55468    );
55469 
55470    xla_ae_lines_pkg.set_ccid(
55471     p_code_combination_id          => l_ccid
55472   , p_value_type_code              => l_adr_value_type_code
55473   , p_transaction_coa_id           => l_adr_transaction_coa_id
55474   , p_accounting_coa_id            => l_adr_accounting_coa_id
55475   , p_adr_code                     => 'DIST_CCID'
55476   , p_adr_type_code                => 'S'
55477   , p_component_type               => l_component_type
55478   , p_component_code               => l_component_code
55479   , p_component_type_code          => l_component_type_code
55480   , p_component_appl_id            => l_component_appl_id
55481   , p_amb_context_code             => l_amb_context_code
55482   , p_side                         => 'NA'
55483   );
55484 
55485 
55486    --
55487    --
55488    END IF;
55492        --
55489 
55490        --
55491        -- Update the line information that should be overwritten
55493        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
55494                                          p_header_num   => 1);
55495        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
55496 
55497        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
55498 
55499        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
55500           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
55501        END IF;
55502 
55503       --
55504       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
55505       --
55506       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
55507           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
55508       ELSE
55509           ---------------------------------------------------------------------------------------------------
55510           -- 4262811a Switch Sign
55511           ---------------------------------------------------------------------------------------------------
55512           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
55513           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55514                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55515           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
55516                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55517           -- 5132302
55518           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
55519                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
55520 
55521       END IF;
55522 
55523       -- 4955764
55524       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55525       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
55526 
55527 
55528       XLA_AE_LINES_PKG.ValidateCurrentLine;
55529       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
55530 
55531       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
55532                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
55533                ,p_balance_type_code => l_balance_type_code);
55534 
55535    END IF;
55536 
55537    -----------------------------------------------------------------------------------------
55538    -- 4262811 Multiperiod Accounting
55539    -----------------------------------------------------------------------------------------
55540      -- No MPA option is assigned.
55541 
55542 
55543 END IF;
55544 END IF;
55545 --
55546 
55547 --
55548 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55549    trace
55550       (p_msg      => 'END of AcctLineType_124'
55551       ,p_level    => C_LEVEL_PROCEDURE
55552       ,p_module   => l_log_module);
55553 END IF;
55554 --
55555 EXCEPTION
55556   WHEN xla_exceptions_pkg.application_exception THEN
55557       RAISE;
55558   WHEN OTHERS THEN
55559        xla_exceptions_pkg.raise_message
55560            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_124');
55561 END AcctLineType_124;
55562 --
55563 
55564 ---------------------------------------
55565 --
55566 -- PRIVATE FUNCTION
55567 --         AcctLineType_125
55568 --
55569 ---------------------------------------
55570 PROCEDURE AcctLineType_125 (
55571   p_application_id        IN NUMBER
55572  ,p_event_id              IN NUMBER
55573  ,p_calculate_acctd_flag  IN VARCHAR2
55574  ,p_calculate_g_l_flag    IN VARCHAR2
55575  ,p_actual_flag           IN OUT VARCHAR2
55576  ,p_balance_type_code     OUT VARCHAR2
55577  ,p_gain_or_loss_ref      OUT VARCHAR2
55578  
55579 --Distribution GL Account
55580  , p_source_32            IN NUMBER
55581 --Distribution Source Type
55582  , p_source_39            IN VARCHAR2
55583 --Distribution Line Identifier
55584  , p_source_41            IN NUMBER
55585 --Distribution Type
55586  , p_source_42            IN VARCHAR2
55587 --Entered Amount
55588  , p_source_43            IN NUMBER
55589 --Currency Code
55590  , p_source_44            IN VARCHAR2
55591 --Applied To Document Accounting Amount
55592  , p_source_48            IN NUMBER
55593 --Transaction Distribution Identifier
55594  , p_source_56            IN NUMBER
55595 --Transaction Distribution Type
55596  , p_source_57            IN VARCHAR2
55597 --Distribution Multi Fund Additional Entry
55598  , p_source_99            IN VARCHAR2
55599 --Applied To Document Exchange Date
55600  , p_source_100            IN DATE
55601 --Receipt Applied To Application Identifier
55602  , p_source_101            IN NUMBER
55603 --Transaction Entity Code
55604  , p_source_102            IN VARCHAR2
55605 --Transaction Identifier
55606  , p_source_103            IN NUMBER
55607 --Distribution Party Identifier
55608  , p_source_106            IN NUMBER
55609 --Distribution Party Site Id
55610  , p_source_107            IN NUMBER
55611 --Distribution Party Type
55615 --Applied To Document Exchange Rate
55612  , p_source_108            IN VARCHAR2
55613 --Applied To Document Exchange Rate Type
55614  , p_source_109            IN VARCHAR2
55616  , p_source_110            IN NUMBER
55617 )
55618 IS
55619 
55620 l_component_type              VARCHAR2(80);
55621 l_component_code              VARCHAR2(30);
55622 l_component_type_code         VARCHAR2(1);
55623 l_component_appl_id           INTEGER;
55624 l_amb_context_code            VARCHAR2(30);
55625 l_entity_code                 VARCHAR2(30);
55626 l_event_class_code            VARCHAR2(30);
55627 l_ae_header_id                NUMBER;
55628 l_event_type_code             VARCHAR2(30);
55629 l_line_definition_code        VARCHAR2(30);
55630 l_line_definition_owner_code  VARCHAR2(1);
55631 --
55632 -- adr variables
55633 l_segment                     VARCHAR2(30);
55634 l_ccid                        NUMBER;
55635 l_adr_transaction_coa_id      NUMBER;
55636 l_adr_accounting_coa_id       NUMBER;
55637 l_adr_flexfield_segment_code  VARCHAR2(30);
55638 l_adr_flex_value_set_id       NUMBER;
55639 l_adr_value_type_code         VARCHAR2(30);
55640 l_adr_value_combination_id    NUMBER;
55641 l_adr_value_segment_code      VARCHAR2(30);
55642 
55643 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
55644 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
55645 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
55646 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
55647 
55648 -- 4262811 Variables ------------------------------------------------------------------------------------------
55649 l_entered_amt_idx             NUMBER;
55650 l_accted_amt_idx              NUMBER;
55651 l_acc_rev_flag                VARCHAR2(1);
55652 l_accrual_line_num            NUMBER;
55653 l_tmp_amt                     NUMBER;
55654 l_acc_rev_natural_side_code   VARCHAR2(1);
55655 
55656 l_num_entries                 NUMBER;
55657 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
55658 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
55659 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
55660 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
55661 l_recog_line_1                NUMBER;
55662 l_recog_line_2                NUMBER;
55663 
55664 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
55665 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
55666 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
55667 
55668 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
55669 
55670 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
55671 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
55672 
55673 ---------------------------------------------------------------------------------------------------------------
55674 
55675 
55676 --
55677 -- bulk performance
55678 --
55679 l_balance_type_code           VARCHAR2(1);
55680 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
55681 l_log_module                  VARCHAR2(240);
55682 
55683 --
55684 -- Upgrade strategy
55685 --
55686 l_actual_upg_option           VARCHAR2(1);
55687 l_enc_upg_option           VARCHAR2(1);
55688 
55689 --
55690 BEGIN
55691 --
55692 IF g_log_enabled THEN
55693       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_125';
55694 END IF;
55695 --
55696 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
55697 
55698       trace
55699          (p_msg      => 'BEGIN of AcctLineType_125'
55700          ,p_level    => C_LEVEL_PROCEDURE
55701          ,p_module   => l_log_module);
55702 
55703 END IF;
55704 --
55705 l_component_type             := 'AMB_JLT';
55706 l_component_code             := 'RCT_EDISC_NON_REC_TAX';
55707 l_component_type_code        := 'S';
55708 l_component_appl_id          :=  222;
55709 l_amb_context_code           := 'DEFAULT';
55710 l_entity_code                := 'RECEIPTS';
55711 l_event_class_code           := 'RECEIPT';
55712 l_event_type_code            := 'RECEIPT_ALL';
55713 l_line_definition_owner_code := 'S';
55714 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
55715 --
55716 l_balance_type_code          := 'A';
55717 l_segment                     := NULL;
55718 l_ccid                        := NULL;
55719 l_adr_transaction_coa_id      := NULL;
55720 l_adr_accounting_coa_id       := NULL;
55721 l_adr_flexfield_segment_code  := NULL;
55722 l_adr_flex_value_set_id       := NULL;
55723 l_adr_value_type_code         := NULL;
55724 l_adr_value_combination_id    := NULL;
55725 l_adr_value_segment_code      := NULL;
55726 
55727 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
55728 l_bflow_class_code           := '';    -- 4219869 Business Flow
55729 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
55730 l_budgetary_control_flag     := 'N';
55731 
55732 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
55733 l_bflow_applied_to_amt       := NULL; -- 5132302
55734 l_entered_amt_idx            := NULL;          -- 4262811
55735 l_accted_amt_idx             := NULL;          -- 4262811
55736 l_acc_rev_flag               := NULL;          -- 4262811
55737 l_accrual_line_num           := NULL;          -- 4262811
55738 l_tmp_amt                    := NULL;          -- 4262811
55739 --
55740  
55744 ') =  'EDISC_NON_REC_TAX' AND 
55741 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
55742     l_balance_type_code <> 'B' THEN
55743 IF NVL(p_source_39,'
55745 NVL(p_source_99,'
55746 ') =  'N'
55747  THEN 
55748 
55749    --
55750    XLA_AE_LINES_PKG.SetNewLine;
55751 
55752    p_balance_type_code          := l_balance_type_code;
55753    -- set the flag so later we will know whether the gain loss line needs to be created
55754    
55755    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
55756      p_actual_flag :='A';
55757    END IF;
55758 
55759    --
55760    -- bulk performance
55761    --
55762    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
55763                                       p_header_num   => 0); -- 4262811
55764    --
55765    -- set accounting line options
55766    --
55767    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
55768            p_natural_side_code          => 'C'
55769          , p_gain_or_loss_flag          => 'N'
55770          , p_gl_transfer_mode_code      => 'S'
55771          , p_acct_entry_type_code       => 'A'
55772          , p_switch_side_flag           => 'Y'
55773          , p_merge_duplicate_code       => 'A'
55774          );
55775    --
55776    l_acc_rev_natural_side_code := 'D';  -- 4262811
55777    -- 
55778    --
55779    -- set accounting line type info
55780    --
55781    xla_ae_lines_pkg.SetAcctLineType
55782       (p_component_type             => l_component_type
55783       ,p_event_type_code            => l_event_type_code
55784       ,p_line_definition_owner_code => l_line_definition_owner_code
55785       ,p_line_definition_code       => l_line_definition_code
55786       ,p_accounting_line_code       => l_component_code
55787       ,p_accounting_line_type_code  => l_component_type_code
55788       ,p_accounting_line_appl_id    => l_component_appl_id
55789       ,p_amb_context_code           => l_amb_context_code
55790       ,p_entity_code                => l_entity_code
55791       ,p_event_class_code           => l_event_class_code);
55792    --
55793    -- set accounting class
55794    --
55795    xla_ae_lines_pkg.SetAcctClass(
55796            p_accounting_class_code  => 'EDISC_NON_REC_TAX'
55797          , p_ae_header_id           => l_ae_header_id
55798          );
55799 
55800    --
55801    -- set rounding class
55802    --
55803    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
55804                       'RECEIVABLE';
55805 
55806    --
55807    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
55808    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
55809    --
55810    -- bulk performance
55811    --
55812    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
55813 
55814    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
55815       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
55816 
55817    -- 4955764
55818    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
55819       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
55820 
55821    -- 4458381 Public Sector Enh
55822    
55823    --
55824    -- set accounting attributes for the line type
55825    --
55826    l_entered_amt_idx := 8;
55827    l_accted_amt_idx  := 13;
55828    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
55829    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
55830    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
55831    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
55832    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
55833    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
55834    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
55835    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
55836    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
55837    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
55838    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
55839    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
55840    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
55841    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
55842    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
55843    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
55844    l_rec_acct_attrs.array_num_value(8)  := p_source_43;
55845    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
55846    l_rec_acct_attrs.array_char_value(9)  := p_source_44;
55847    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
55848    l_rec_acct_attrs.array_date_value(10)  := p_source_100;
55849    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
55850    l_rec_acct_attrs.array_num_value(11)  := p_source_110;
55851    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
55852    l_rec_acct_attrs.array_char_value(12)  := p_source_109;
55853    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
55854    l_rec_acct_attrs.array_num_value(13)  := p_source_48;
55855    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
55859    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
55856    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
55857    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
55858    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
55860    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
55861 
55862    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
55863    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
55864 
55865    ---------------------------------------------------------------------------------------------------------------
55866    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
55867    ---------------------------------------------------------------------------------------------------------------
55868    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
55869 
55870    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55871    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
55872 
55873    IF xla_accounting_cache_pkg.GetValueChar
55874          (p_source_code         => 'LEDGER_CATEGORY_CODE'
55875          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
55876    AND l_bflow_method_code = 'PRIOR_ENTRY'
55877 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
55878    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
55879          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
55880        )
55881    THEN
55882          xla_ae_lines_pkg.BflowUpgEntry
55883            (p_business_method_code    => l_bflow_method_code
55884            ,p_business_class_code     => l_bflow_class_code
55885            ,p_balance_type            => l_balance_type_code);
55886    ELSE
55887       NULL;
55888 -- No business flow processing for business flow method of NONE.
55889    END IF;
55890 
55891    --
55892    -- call analytical criteria
55893    --
55894    
55895    --
55896    -- call description
55897    --
55898    -- No description or it is inherited.
55899    --
55900    -- call ADRs
55901    -- Bug 4922099
55902    --
55903    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
55904         (NVL(l_actual_upg_option, 'N') = 'O') OR
55905         (NVL(l_enc_upg_option, 'N') = 'O')
55906       )
55907    THEN
55908    NULL;
55909    --
55910    --
55911    
55912   l_ccid := AcctDerRule_29(
55913            p_application_id           => p_application_id
55914          , p_ae_header_id             => l_ae_header_id 
55915 , p_source_32 => p_source_32
55916          , x_transaction_coa_id       => l_adr_transaction_coa_id
55917          , x_accounting_coa_id        => l_adr_accounting_coa_id
55918          , x_value_type_code          => l_adr_value_type_code
55919          , p_side                     => 'NA'
55920    );
55921 
55922    xla_ae_lines_pkg.set_ccid(
55923     p_code_combination_id          => l_ccid
55924   , p_value_type_code              => l_adr_value_type_code
55925   , p_transaction_coa_id           => l_adr_transaction_coa_id
55926   , p_accounting_coa_id            => l_adr_accounting_coa_id
55927   , p_adr_code                     => 'DIST_CCID'
55928   , p_adr_type_code                => 'S'
55929   , p_component_type               => l_component_type
55930   , p_component_code               => l_component_code
55931   , p_component_type_code          => l_component_type_code
55932   , p_component_appl_id            => l_component_appl_id
55933   , p_amb_context_code             => l_amb_context_code
55934   , p_side                         => 'NA'
55935   );
55936 
55937 
55938    --
55939    --
55940    END IF;
55941    --
55942    -- Bug 4922099
55943    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
55944           (NVL(l_enc_upg_option, 'N') = 'O')
55945         ) AND
55946         (l_bflow_method_code = 'PRIOR_ENTRY')
55947       )
55948    THEN
55949       IF
55950       --
55951       1 = 2
55952       --
55953       THEN
55954       xla_accounting_err_pkg.build_message
55955                                     (p_appli_s_name            => 'XLA'
55956                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55957                                     ,p_token_1                 => 'LINE_NUMBER'
55958                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
55959                                     ,p_token_2                 => 'LINE_TYPE_NAME'
55960                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
55961                                                                              l_component_type
55962                                                                             ,l_component_code
55963                                                                             ,l_component_type_code
55964                                                                             ,l_component_appl_id
55965                                                                             ,l_amb_context_code
55966                                                                             ,l_entity_code
55967                                                                             ,l_event_class_code
55971                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
55968                                                                            )
55969                                     ,p_token_3                 => 'OWNER'
55970                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
55972                                                                           ,p_lookup_code    => l_component_type_code
55973                                                                          )
55974                                     ,p_token_4                 => 'PRODUCT_NAME'
55975                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
55976                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
55977                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
55978                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
55979                                     ,p_ae_header_id            =>  NULL
55980                                        );
55981 
55982         IF (C_LEVEL_ERROR>= g_log_level) THEN
55983                  trace
55984                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
55985                       ,p_level    => C_LEVEL_ERROR
55986                       ,p_module   => l_log_module);
55987         END IF;
55988       END IF;
55989    END IF;
55990    --
55991    --
55992    ------------------------------------------------------------------------------------------------
55993    -- 4219869 Business Flow
55994    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
55995    -- Prior Entry.  Currently, the following code is always generated.
55996    ------------------------------------------------------------------------------------------------
55997    XLA_AE_LINES_PKG.ValidateCurrentLine;
55998 
55999    ------------------------------------------------------------------------------------
56000    -- 4219869 Business Flow
56001    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
56002    ------------------------------------------------------------------------------------
56003    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56004 
56005    ----------------------------------------------------------------------------------
56006    -- 4219869 Business Flow
56007    -- Update journal entry status -- Need to generate this within IF <condition>
56008    ----------------------------------------------------------------------------------
56009    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56010          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
56011          ,p_balance_type_code => l_balance_type_code
56012          );
56013 
56014    -------------------------------------------------------------------------------------------
56015    -- 4262811 - Generate the Accrual Reversal lines
56016    -------------------------------------------------------------------------------------------
56017    BEGIN
56018       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
56019                               (g_array_event(p_event_id).array_value_num('header_index'));
56020       IF l_acc_rev_flag IS NULL THEN
56021          l_acc_rev_flag := 'N';
56022       END IF;
56023    EXCEPTION
56024       WHEN OTHERS THEN
56025          l_acc_rev_flag := 'N';
56026    END;
56027    --
56028    IF (l_acc_rev_flag = 'Y') THEN
56029 
56030        -- 4645092  ------------------------------------------------------------------------------
56031        -- To allow MPA report to determine if it should generate report process
56032        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
56033        ------------------------------------------------------------------------------------------
56034 
56035        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
56036        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
56037    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
56038    -- call ADRs
56039    -- Bug 4922099
56040    --
56041    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56042         (NVL(l_actual_upg_option, 'N') = 'O') OR
56043         (NVL(l_enc_upg_option, 'N') = 'O')
56044       )
56045    THEN
56046    NULL;
56047    --
56048    --
56049    
56050   l_ccid := AcctDerRule_29(
56051            p_application_id           => p_application_id
56052          , p_ae_header_id             => l_ae_header_id 
56053 , p_source_32 => p_source_32
56054          , x_transaction_coa_id       => l_adr_transaction_coa_id
56055          , x_accounting_coa_id        => l_adr_accounting_coa_id
56056          , x_value_type_code          => l_adr_value_type_code
56057          , p_side                     => 'NA'
56058    );
56059 
56060    xla_ae_lines_pkg.set_ccid(
56061     p_code_combination_id          => l_ccid
56062   , p_value_type_code              => l_adr_value_type_code
56063   , p_transaction_coa_id           => l_adr_transaction_coa_id
56064   , p_accounting_coa_id            => l_adr_accounting_coa_id
56065   , p_adr_code                     => 'DIST_CCID'
56066   , p_adr_type_code                => 'S'
56067   , p_component_type               => l_component_type
56068   , p_component_code               => l_component_code
56072   , p_side                         => 'NA'
56069   , p_component_type_code          => l_component_type_code
56070   , p_component_appl_id            => l_component_appl_id
56071   , p_amb_context_code             => l_amb_context_code
56073   );
56074 
56075 
56076    --
56077    --
56078    END IF;
56079 
56080        --
56081        -- Update the line information that should be overwritten
56082        --
56083        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
56084                                          p_header_num   => 1);
56085        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
56086 
56087        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
56088 
56089        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
56090           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56091        END IF;
56092 
56093       --
56094       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56095       --
56096       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56097           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
56098       ELSE
56099           ---------------------------------------------------------------------------------------------------
56100           -- 4262811a Switch Sign
56101           ---------------------------------------------------------------------------------------------------
56102           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
56103           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56104                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56105           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56106                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56107           -- 5132302
56108           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56109                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56110 
56111       END IF;
56112 
56113       -- 4955764
56114       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56115       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56116 
56117 
56118       XLA_AE_LINES_PKG.ValidateCurrentLine;
56119       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56120 
56121       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56122                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56123                ,p_balance_type_code => l_balance_type_code);
56124 
56125    END IF;
56126 
56127    -----------------------------------------------------------------------------------------
56128    -- 4262811 Multiperiod Accounting
56129    -----------------------------------------------------------------------------------------
56130      -- No MPA option is assigned.
56131 
56132 
56133 END IF;
56134 END IF;
56135 --
56136 
56137 --
56138 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56139    trace
56140       (p_msg      => 'END of AcctLineType_125'
56141       ,p_level    => C_LEVEL_PROCEDURE
56142       ,p_module   => l_log_module);
56143 END IF;
56144 --
56145 EXCEPTION
56146   WHEN xla_exceptions_pkg.application_exception THEN
56147       RAISE;
56148   WHEN OTHERS THEN
56149        xla_exceptions_pkg.raise_message
56150            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_125');
56151 END AcctLineType_125;
56152 --
56153 
56154 ---------------------------------------
56155 --
56156 -- PRIVATE FUNCTION
56157 --         AcctLineType_126
56158 --
56159 ---------------------------------------
56160 PROCEDURE AcctLineType_126 (
56161   p_application_id        IN NUMBER
56162  ,p_event_id              IN NUMBER
56163  ,p_calculate_acctd_flag  IN VARCHAR2
56164  ,p_calculate_g_l_flag    IN VARCHAR2
56165  ,p_actual_flag           IN OUT VARCHAR2
56166  ,p_balance_type_code     OUT VARCHAR2
56167  ,p_gain_or_loss_ref      OUT VARCHAR2
56168  
56169 --Distribution Gain Loss Account
56170  , p_source_33            IN NUMBER
56171 --System Gain Account
56172  , p_source_34            IN NUMBER
56173 --System Loss Account
56174  , p_source_35            IN NUMBER
56175 --Distribution Line Identifier
56176  , p_source_41            IN NUMBER
56177 --Distribution Type
56178  , p_source_42            IN VARCHAR2
56179 --Accounting Amount
56180  , p_source_52            IN NUMBER
56181 --Distribution Party Identifier
56182  , p_source_106            IN NUMBER
56183 --Distribution Party Site Id
56184  , p_source_107            IN NUMBER
56185 --Distribution Party Type
56186  , p_source_108            IN VARCHAR2
56187 )
56188 IS
56189 
56190 l_component_type              VARCHAR2(80);
56191 l_component_code              VARCHAR2(30);
56192 l_component_type_code         VARCHAR2(1);
56193 l_component_appl_id           INTEGER;
56194 l_amb_context_code            VARCHAR2(30);
56198 l_event_type_code             VARCHAR2(30);
56195 l_entity_code                 VARCHAR2(30);
56196 l_event_class_code            VARCHAR2(30);
56197 l_ae_header_id                NUMBER;
56199 l_line_definition_code        VARCHAR2(30);
56200 l_line_definition_owner_code  VARCHAR2(1);
56201 --
56202 -- adr variables
56203 l_segment                     VARCHAR2(30);
56204 l_ccid                        NUMBER;
56205 l_adr_transaction_coa_id      NUMBER;
56206 l_adr_accounting_coa_id       NUMBER;
56207 l_adr_flexfield_segment_code  VARCHAR2(30);
56208 l_adr_flex_value_set_id       NUMBER;
56209 l_adr_value_type_code         VARCHAR2(30);
56210 l_adr_value_combination_id    NUMBER;
56211 l_adr_value_segment_code      VARCHAR2(30);
56212 
56213 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
56214 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
56215 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
56216 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
56217 
56218 -- 4262811 Variables ------------------------------------------------------------------------------------------
56219 l_entered_amt_idx             NUMBER;
56220 l_accted_amt_idx              NUMBER;
56221 l_acc_rev_flag                VARCHAR2(1);
56222 l_accrual_line_num            NUMBER;
56223 l_tmp_amt                     NUMBER;
56224 l_acc_rev_natural_side_code   VARCHAR2(1);
56225 
56226 l_num_entries                 NUMBER;
56227 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
56228 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
56229 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
56230 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
56231 l_recog_line_1                NUMBER;
56232 l_recog_line_2                NUMBER;
56233 
56234 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
56235 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
56236 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
56237 
56238 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56239 
56240 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
56241 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
56242 
56243 ---------------------------------------------------------------------------------------------------------------
56244 
56245 
56246 --
56247 -- bulk performance
56248 --
56249 l_balance_type_code           VARCHAR2(1);
56250 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
56251 l_log_module                  VARCHAR2(240);
56252 
56253 --
56254 -- Upgrade strategy
56255 --
56256 l_actual_upg_option           VARCHAR2(1);
56257 l_enc_upg_option           VARCHAR2(1);
56258 
56259 --
56260 BEGIN
56261 --
56262 IF g_log_enabled THEN
56263       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_126';
56264 END IF;
56265 --
56266 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56267 
56268       trace
56269          (p_msg      => 'BEGIN of AcctLineType_126'
56270          ,p_level    => C_LEVEL_PROCEDURE
56271          ,p_module   => l_log_module);
56272 
56273 END IF;
56274 --
56275 l_component_type             := 'AMB_JLT';
56276 l_component_code             := 'RCT_EXCH_GAIN_LOSS';
56277 l_component_type_code        := 'S';
56278 l_component_appl_id          :=  222;
56279 l_amb_context_code           := 'DEFAULT';
56280 l_entity_code                := 'RECEIPTS';
56281 l_event_class_code           := 'RECEIPT';
56282 l_event_type_code            := 'RECEIPT_ALL';
56283 l_line_definition_owner_code := 'S';
56284 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
56285 --
56286 l_balance_type_code          := 'A';
56287 l_segment                     := NULL;
56288 l_ccid                        := NULL;
56289 l_adr_transaction_coa_id      := NULL;
56290 l_adr_accounting_coa_id       := NULL;
56291 l_adr_flexfield_segment_code  := NULL;
56292 l_adr_flex_value_set_id       := NULL;
56293 l_adr_value_type_code         := NULL;
56294 l_adr_value_combination_id    := NULL;
56295 l_adr_value_segment_code      := NULL;
56296 
56297 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
56298 l_bflow_class_code           := '';    -- 4219869 Business Flow
56299 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
56300 l_budgetary_control_flag     := 'N';
56301 
56302 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
56303 l_bflow_applied_to_amt       := NULL; -- 5132302
56304 l_entered_amt_idx            := NULL;          -- 4262811
56305 l_accted_amt_idx             := NULL;          -- 4262811
56306 l_acc_rev_flag               := NULL;          -- 4262811
56307 l_accrual_line_num           := NULL;          -- 4262811
56308 l_tmp_amt                    := NULL;          -- 4262811
56309 --
56310 IF NOT ((p_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
56311             (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
56312                return;
56313   END IF;
56314   
56315 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56316     l_balance_type_code <> 'B' THEN
56317 
56318    --
56319    XLA_AE_LINES_PKG.SetNewLine;
56320 
56324    IF(l_balance_type_code = 'A' ) THEN
56321    p_balance_type_code          := l_balance_type_code;
56322    -- set the flag so later we will know whether the gain loss line needs to be created
56323    
56325      p_actual_flag :='G';
56326    END IF;
56327 
56328    --
56329    -- bulk performance
56330    --
56331    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56332                                       p_header_num   => 0); -- 4262811
56333    --
56334    -- set accounting line options
56335    --
56336    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56337            p_natural_side_code          => 'G'
56338          , p_gain_or_loss_flag          => 'N'
56339          , p_gl_transfer_mode_code      => 'S'
56340          , p_acct_entry_type_code       => 'A'
56341          , p_switch_side_flag           => ''
56342          , p_merge_duplicate_code       => 'A'
56343          );
56344    --
56345    l_acc_rev_natural_side_code := 'C';  -- 4262811
56346    -- 
56347    --
56348    -- set accounting line type info
56349    --
56350    xla_ae_lines_pkg.SetAcctLineType
56351       (p_component_type             => l_component_type
56352       ,p_event_type_code            => l_event_type_code
56353       ,p_line_definition_owner_code => l_line_definition_owner_code
56354       ,p_line_definition_code       => l_line_definition_code
56355       ,p_accounting_line_code       => l_component_code
56356       ,p_accounting_line_type_code  => l_component_type_code
56357       ,p_accounting_line_appl_id    => l_component_appl_id
56358       ,p_amb_context_code           => l_amb_context_code
56359       ,p_entity_code                => l_entity_code
56360       ,p_event_class_code           => l_event_class_code);
56361    --
56362    -- set accounting class
56363    --
56364    xla_ae_lines_pkg.SetAcctClass(
56365            p_accounting_class_code  => 'EXCHANGE_GAIN_LOSS'
56366          , p_ae_header_id           => l_ae_header_id
56367          );
56368 
56369    --
56370    -- set rounding class
56371    --
56372    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
56373                       'EXCHANGE_GAIN_LOSS';
56374 
56375    --
56376    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
56377    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
56378    --
56379    -- bulk performance
56380    --
56381    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
56382 
56383    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
56384       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
56385 
56386    -- 4955764
56387    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56388       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
56389 
56390    -- 4458381 Public Sector Enh
56391    
56392    --
56393    -- set accounting attributes for the line type
56394    --
56395    l_entered_amt_idx := NULL;
56396    l_accted_amt_idx  := 3;
56397    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
56398    l_rec_acct_attrs.array_acct_attr_code(1) := 'DISTRIBUTION_IDENTIFIER_1';
56399    l_rec_acct_attrs.array_num_value(1)  :=  to_char(p_source_41);
56400    l_rec_acct_attrs.array_acct_attr_code(2) := 'DISTRIBUTION_TYPE';
56401    l_rec_acct_attrs.array_char_value(2)  := p_source_42;
56402    l_rec_acct_attrs.array_acct_attr_code(3) := 'LEDGER_AMOUNT';
56403    l_rec_acct_attrs.array_num_value(3)  := p_source_52;
56404    l_rec_acct_attrs.array_acct_attr_code(4) := 'PARTY_ID';
56405    l_rec_acct_attrs.array_num_value(4)  := p_source_106;
56406    l_rec_acct_attrs.array_acct_attr_code(5) := 'PARTY_SITE_ID';
56407    l_rec_acct_attrs.array_num_value(5)  := p_source_107;
56408    l_rec_acct_attrs.array_acct_attr_code(6) := 'PARTY_TYPE';
56409    l_rec_acct_attrs.array_char_value(6)  := p_source_108;
56410 
56411    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
56412    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
56413 
56414    ---------------------------------------------------------------------------------------------------------------
56415    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
56416    ---------------------------------------------------------------------------------------------------------------
56417    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
56418 
56419    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56420    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
56421 
56422    IF xla_accounting_cache_pkg.GetValueChar
56423          (p_source_code         => 'LEDGER_CATEGORY_CODE'
56424          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
56425    AND l_bflow_method_code = 'PRIOR_ENTRY'
56426 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
56427    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
56428          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
56429        )
56430    THEN
56431          xla_ae_lines_pkg.BflowUpgEntry
56432            (p_business_method_code    => l_bflow_method_code
56436       NULL;
56433            ,p_business_class_code     => l_bflow_class_code
56434            ,p_balance_type            => l_balance_type_code);
56435    ELSE
56437 -- No business flow processing for business flow method of NONE.
56438    END IF;
56439 
56440    --
56441    -- call analytical criteria
56442    --
56443    
56444    --
56445    -- call description
56446    --
56447    -- No description or it is inherited.
56448    --
56449    -- call ADRs
56450    -- Bug 4922099
56451    --
56452    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56453         (NVL(l_actual_upg_option, 'N') = 'O') OR
56454         (NVL(l_enc_upg_option, 'N') = 'O')
56455       )
56456    THEN
56457    NULL;
56458    --
56459    --
56460    
56461   l_ccid := AcctDerRule_30(
56462            p_application_id           => p_application_id
56463          , p_ae_header_id             => l_ae_header_id 
56464 , p_source_33 => p_source_33
56465 , p_source_34 => p_source_34
56466          , x_transaction_coa_id       => l_adr_transaction_coa_id
56467          , x_accounting_coa_id        => l_adr_accounting_coa_id
56468          , x_value_type_code          => l_adr_value_type_code
56469          , p_side                     => 'CREDIT'
56470    );
56471 
56472    xla_ae_lines_pkg.set_ccid(
56473     p_code_combination_id          => l_ccid
56474   , p_value_type_code              => l_adr_value_type_code
56475   , p_transaction_coa_id           => l_adr_transaction_coa_id
56476   , p_accounting_coa_id            => l_adr_accounting_coa_id
56477   , p_adr_code                     => 'DIST_GAIN_GL_ACCOUNT'
56478   , p_adr_type_code                => 'S'
56479   , p_component_type               => l_component_type
56480   , p_component_code               => l_component_code
56481   , p_component_type_code          => l_component_type_code
56482   , p_component_appl_id            => l_component_appl_id
56483   , p_amb_context_code             => l_amb_context_code
56484   , p_side                         => 'CREDIT'
56485   );
56486 
56487 
56488   l_ccid := AcctDerRule_31(
56489            p_application_id           => p_application_id
56490          , p_ae_header_id             => l_ae_header_id 
56491 , p_source_33 => p_source_33
56492 , p_source_35 => p_source_35
56493          , x_transaction_coa_id       => l_adr_transaction_coa_id
56494          , x_accounting_coa_id        => l_adr_accounting_coa_id
56495          , x_value_type_code          => l_adr_value_type_code
56496          , p_side                     => 'DEBIT'
56497    );
56498 
56499    xla_ae_lines_pkg.set_ccid(
56500     p_code_combination_id          => l_ccid
56501   , p_value_type_code              => l_adr_value_type_code
56502   , p_transaction_coa_id           => l_adr_transaction_coa_id
56503   , p_accounting_coa_id            => l_adr_accounting_coa_id
56504   , p_adr_code                     => 'DIST_LOSS_GL_ACCOUNT'
56505   , p_adr_type_code                => 'S'
56506   , p_component_type               => l_component_type
56507   , p_component_code               => l_component_code
56508   , p_component_type_code          => l_component_type_code
56509   , p_component_appl_id            => l_component_appl_id
56510   , p_amb_context_code             => l_amb_context_code
56511   , p_side                         => 'DEBIT'
56512   );
56513 
56514 
56515    --
56516    --
56517    END IF;
56518    --
56519    -- Bug 4922099
56520    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
56521           (NVL(l_enc_upg_option, 'N') = 'O')
56522         ) AND
56523         (l_bflow_method_code = 'PRIOR_ENTRY')
56524       )
56525    THEN
56526       IF
56527       --
56528       1 = 2
56529       --
56530       THEN
56531       xla_accounting_err_pkg.build_message
56532                                     (p_appli_s_name            => 'XLA'
56533                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56534                                     ,p_token_1                 => 'LINE_NUMBER'
56535                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
56536                                     ,p_token_2                 => 'LINE_TYPE_NAME'
56537                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
56538                                                                              l_component_type
56539                                                                             ,l_component_code
56540                                                                             ,l_component_type_code
56541                                                                             ,l_component_appl_id
56542                                                                             ,l_amb_context_code
56543                                                                             ,l_entity_code
56544                                                                             ,l_event_class_code
56545                                                                            )
56546                                     ,p_token_3                 => 'OWNER'
56547                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
56548                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
56549                                                                           ,p_lookup_code    => l_component_type_code
56553                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
56550                                                                          )
56551                                     ,p_token_4                 => 'PRODUCT_NAME'
56552                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
56554                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
56555                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
56556                                     ,p_ae_header_id            =>  NULL
56557                                        );
56558 
56559         IF (C_LEVEL_ERROR>= g_log_level) THEN
56560                  trace
56561                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
56562                       ,p_level    => C_LEVEL_ERROR
56563                       ,p_module   => l_log_module);
56564         END IF;
56565       END IF;
56566    END IF;
56567    --
56568    --
56569    ------------------------------------------------------------------------------------------------
56570    -- 4219869 Business Flow
56571    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
56572    -- Prior Entry.  Currently, the following code is always generated.
56573    ------------------------------------------------------------------------------------------------
56574    XLA_AE_LINES_PKG.ValidateCurrentLine;
56575 
56576    ------------------------------------------------------------------------------------
56577    -- 4219869 Business Flow
56578    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
56579    ------------------------------------------------------------------------------------
56580    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56581 
56582    ----------------------------------------------------------------------------------
56583    -- 4219869 Business Flow
56584    -- Update journal entry status -- Need to generate this within IF <condition>
56585    ----------------------------------------------------------------------------------
56586    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56587          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
56588          ,p_balance_type_code => l_balance_type_code
56589          );
56590 
56591    -------------------------------------------------------------------------------------------
56592    -- 4262811 - Generate the Accrual Reversal lines
56593    -------------------------------------------------------------------------------------------
56594    BEGIN
56595       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
56596                               (g_array_event(p_event_id).array_value_num('header_index'));
56597       IF l_acc_rev_flag IS NULL THEN
56598          l_acc_rev_flag := 'N';
56599       END IF;
56600    EXCEPTION
56601       WHEN OTHERS THEN
56602          l_acc_rev_flag := 'N';
56603    END;
56604    --
56605    IF (l_acc_rev_flag = 'Y') THEN
56606 
56607        -- 4645092  ------------------------------------------------------------------------------
56608        -- To allow MPA report to determine if it should generate report process
56609        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
56610        ------------------------------------------------------------------------------------------
56611 
56612        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
56613        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
56614    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
56615    -- call ADRs
56616    -- Bug 4922099
56617    --
56618    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
56619         (NVL(l_actual_upg_option, 'N') = 'O') OR
56620         (NVL(l_enc_upg_option, 'N') = 'O')
56621       )
56622    THEN
56623    NULL;
56624    --
56625    --
56626    
56627   l_ccid := AcctDerRule_30(
56628            p_application_id           => p_application_id
56629          , p_ae_header_id             => l_ae_header_id 
56630 , p_source_33 => p_source_33
56631 , p_source_34 => p_source_34
56632          , x_transaction_coa_id       => l_adr_transaction_coa_id
56633          , x_accounting_coa_id        => l_adr_accounting_coa_id
56634          , x_value_type_code          => l_adr_value_type_code
56635          , p_side                     => 'CREDIT'
56636    );
56637 
56638    xla_ae_lines_pkg.set_ccid(
56639     p_code_combination_id          => l_ccid
56640   , p_value_type_code              => l_adr_value_type_code
56641   , p_transaction_coa_id           => l_adr_transaction_coa_id
56642   , p_accounting_coa_id            => l_adr_accounting_coa_id
56643   , p_adr_code                     => 'DIST_GAIN_GL_ACCOUNT'
56644   , p_adr_type_code                => 'S'
56645   , p_component_type               => l_component_type
56646   , p_component_code               => l_component_code
56647   , p_component_type_code          => l_component_type_code
56648   , p_component_appl_id            => l_component_appl_id
56649   , p_amb_context_code             => l_amb_context_code
56650   , p_side                         => 'CREDIT'
56651   );
56652 
56653 
56654   l_ccid := AcctDerRule_31(
56655            p_application_id           => p_application_id
56656          , p_ae_header_id             => l_ae_header_id 
56657 , p_source_33 => p_source_33
56661          , x_value_type_code          => l_adr_value_type_code
56658 , p_source_35 => p_source_35
56659          , x_transaction_coa_id       => l_adr_transaction_coa_id
56660          , x_accounting_coa_id        => l_adr_accounting_coa_id
56662          , p_side                     => 'DEBIT'
56663    );
56664 
56665    xla_ae_lines_pkg.set_ccid(
56666     p_code_combination_id          => l_ccid
56667   , p_value_type_code              => l_adr_value_type_code
56668   , p_transaction_coa_id           => l_adr_transaction_coa_id
56669   , p_accounting_coa_id            => l_adr_accounting_coa_id
56670   , p_adr_code                     => 'DIST_LOSS_GL_ACCOUNT'
56671   , p_adr_type_code                => 'S'
56672   , p_component_type               => l_component_type
56673   , p_component_code               => l_component_code
56674   , p_component_type_code          => l_component_type_code
56675   , p_component_appl_id            => l_component_appl_id
56676   , p_amb_context_code             => l_amb_context_code
56677   , p_side                         => 'DEBIT'
56678   );
56679 
56680 
56681    --
56682    --
56683    END IF;
56684 
56685        --
56686        -- Update the line information that should be overwritten
56687        --
56688        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
56689                                          p_header_num   => 1);
56690        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
56691 
56692        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
56693 
56694        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
56695           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
56696        END IF;
56697 
56698       --
56699       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
56700       --
56701       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
56702           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
56703       ELSE
56704           ---------------------------------------------------------------------------------------------------
56705           -- 4262811a Switch Sign
56706           ---------------------------------------------------------------------------------------------------
56707           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
56708           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56709                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56710           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
56711                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56712           -- 5132302
56713           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
56714                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
56715 
56716       END IF;
56717 
56718       -- 4955764
56719       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
56720       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
56721 
56722 
56723       XLA_AE_LINES_PKG.ValidateCurrentLine;
56724       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
56725 
56726       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
56727                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
56728                ,p_balance_type_code => l_balance_type_code);
56729 
56730    END IF;
56731 
56732    -----------------------------------------------------------------------------------------
56733    -- 4262811 Multiperiod Accounting
56734    -----------------------------------------------------------------------------------------
56735      -- No MPA option is assigned.
56736 
56737 
56738 END IF;
56739 --
56740 
56741 --
56742 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56743    trace
56744       (p_msg      => 'END of AcctLineType_126'
56745       ,p_level    => C_LEVEL_PROCEDURE
56746       ,p_module   => l_log_module);
56747 END IF;
56748 --
56749 EXCEPTION
56750   WHEN xla_exceptions_pkg.application_exception THEN
56751       RAISE;
56752   WHEN OTHERS THEN
56753        xla_exceptions_pkg.raise_message
56754            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_126');
56755 END AcctLineType_126;
56756 --
56757 
56758 ---------------------------------------
56759 --
56760 -- PRIVATE FUNCTION
56761 --         AcctLineType_127
56762 --
56763 ---------------------------------------
56764 PROCEDURE AcctLineType_127 (
56765   p_application_id        IN NUMBER
56766  ,p_event_id              IN NUMBER
56767  ,p_calculate_acctd_flag  IN VARCHAR2
56768  ,p_calculate_g_l_flag    IN VARCHAR2
56769  ,p_actual_flag           IN OUT VARCHAR2
56770  ,p_balance_type_code     OUT VARCHAR2
56771  ,p_gain_or_loss_ref      OUT VARCHAR2
56772  
56773 --Distribution GL Account
56774  , p_source_32            IN NUMBER
56775 --Distribution Source Type
56776  , p_source_39            IN VARCHAR2
56777 --Distribution Line Identifier
56778  , p_source_41            IN NUMBER
56782  , p_source_45            IN DATE
56779 --Distribution Type
56780  , p_source_42            IN VARCHAR2
56781 --Exchange Date
56783 --Exchange Rate
56784  , p_source_46            IN NUMBER
56785 --Exchange Rate Type
56786  , p_source_47            IN VARCHAR2
56787 --Accounting Amount
56788  , p_source_52            IN NUMBER
56789 --Transaction Distribution Identifier
56790  , p_source_56            IN NUMBER
56791 --Transaction Distribution Type
56792  , p_source_57            IN VARCHAR2
56793 --Distribution Multi Fund Additional Entry
56794  , p_source_99            IN VARCHAR2
56795 --Receipt Applied To Application Identifier
56796  , p_source_101            IN NUMBER
56797 --Transaction Entity Code
56798  , p_source_102            IN VARCHAR2
56799 --Transaction Identifier
56800  , p_source_103            IN NUMBER
56801 --DIST_ENT_AMT_FROM
56802  , p_source_104            IN NUMBER
56803 --Applying Document Currency Code
56804  , p_source_105            IN VARCHAR2
56805 --Distribution Party Identifier
56806  , p_source_106            IN NUMBER
56807 --Distribution Party Site Id
56808  , p_source_107            IN NUMBER
56809 --Distribution Party Type
56810  , p_source_108            IN VARCHAR2
56811 --Distribution Source Table
56812  , p_source_111            IN VARCHAR2
56813 )
56814 IS
56815 
56816 l_component_type              VARCHAR2(80);
56817 l_component_code              VARCHAR2(30);
56818 l_component_type_code         VARCHAR2(1);
56819 l_component_appl_id           INTEGER;
56820 l_amb_context_code            VARCHAR2(30);
56821 l_entity_code                 VARCHAR2(30);
56822 l_event_class_code            VARCHAR2(30);
56823 l_ae_header_id                NUMBER;
56824 l_event_type_code             VARCHAR2(30);
56825 l_line_definition_code        VARCHAR2(30);
56826 l_line_definition_owner_code  VARCHAR2(1);
56827 --
56828 -- adr variables
56829 l_segment                     VARCHAR2(30);
56830 l_ccid                        NUMBER;
56831 l_adr_transaction_coa_id      NUMBER;
56832 l_adr_accounting_coa_id       NUMBER;
56833 l_adr_flexfield_segment_code  VARCHAR2(30);
56834 l_adr_flex_value_set_id       NUMBER;
56835 l_adr_value_type_code         VARCHAR2(30);
56836 l_adr_value_combination_id    NUMBER;
56837 l_adr_value_segment_code      VARCHAR2(30);
56838 
56839 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
56840 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
56841 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
56842 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
56843 
56844 -- 4262811 Variables ------------------------------------------------------------------------------------------
56845 l_entered_amt_idx             NUMBER;
56846 l_accted_amt_idx              NUMBER;
56847 l_acc_rev_flag                VARCHAR2(1);
56848 l_accrual_line_num            NUMBER;
56849 l_tmp_amt                     NUMBER;
56850 l_acc_rev_natural_side_code   VARCHAR2(1);
56851 
56852 l_num_entries                 NUMBER;
56853 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
56854 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
56855 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
56856 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
56857 l_recog_line_1                NUMBER;
56858 l_recog_line_2                NUMBER;
56859 
56860 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
56861 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
56862 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
56863 
56864 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
56865 
56866 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
56867 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
56868 
56869 ---------------------------------------------------------------------------------------------------------------
56870 
56871 
56872 --
56873 -- bulk performance
56874 --
56875 l_balance_type_code           VARCHAR2(1);
56876 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
56877 l_log_module                  VARCHAR2(240);
56878 
56879 --
56880 -- Upgrade strategy
56881 --
56882 l_actual_upg_option           VARCHAR2(1);
56883 l_enc_upg_option           VARCHAR2(1);
56884 
56885 --
56886 BEGIN
56887 --
56888 IF g_log_enabled THEN
56889       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_127';
56890 END IF;
56891 --
56892 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
56893 
56894       trace
56895          (p_msg      => 'BEGIN of AcctLineType_127'
56896          ,p_level    => C_LEVEL_PROCEDURE
56897          ,p_module   => l_log_module);
56898 
56899 END IF;
56900 --
56901 l_component_type             := 'AMB_JLT';
56902 l_component_code             := 'RCT_FACTOR';
56903 l_component_type_code        := 'S';
56904 l_component_appl_id          :=  222;
56905 l_amb_context_code           := 'DEFAULT';
56906 l_entity_code                := 'RECEIPTS';
56907 l_event_class_code           := 'RECEIPT';
56908 l_event_type_code            := 'RECEIPT_ALL';
56909 l_line_definition_owner_code := 'S';
56910 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
56911 --
56912 l_balance_type_code          := 'A';
56916 l_adr_accounting_coa_id       := NULL;
56913 l_segment                     := NULL;
56914 l_ccid                        := NULL;
56915 l_adr_transaction_coa_id      := NULL;
56917 l_adr_flexfield_segment_code  := NULL;
56918 l_adr_flex_value_set_id       := NULL;
56919 l_adr_value_type_code         := NULL;
56920 l_adr_value_combination_id    := NULL;
56921 l_adr_value_segment_code      := NULL;
56922 
56923 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
56924 l_bflow_class_code           := '';    -- 4219869 Business Flow
56925 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
56926 l_budgetary_control_flag     := 'N';
56927 
56928 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
56929 l_bflow_applied_to_amt       := NULL; -- 5132302
56930 l_entered_amt_idx            := NULL;          -- 4262811
56931 l_accted_amt_idx             := NULL;          -- 4262811
56932 l_acc_rev_flag               := NULL;          -- 4262811
56933 l_accrual_line_num           := NULL;          -- 4262811
56934 l_tmp_amt                    := NULL;          -- 4262811
56935 --
56936  
56937 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
56938     l_balance_type_code <> 'B' THEN
56939 IF NVL(p_source_39,'
56940 ') =  'FACTOR' AND 
56941 NVL(p_source_111,'
56942 ') =  'CRH' AND 
56943 NVL(p_source_99,'
56944 ') =  'N'
56945  THEN 
56946 
56947    --
56948    XLA_AE_LINES_PKG.SetNewLine;
56949 
56950    p_balance_type_code          := l_balance_type_code;
56951    -- set the flag so later we will know whether the gain loss line needs to be created
56952    
56953    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
56954      p_actual_flag :='A';
56955    END IF;
56956 
56957    --
56958    -- bulk performance
56959    --
56960    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
56961                                       p_header_num   => 0); -- 4262811
56962    --
56963    -- set accounting line options
56964    --
56965    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
56966            p_natural_side_code          => 'C'
56967          , p_gain_or_loss_flag          => 'N'
56968          , p_gl_transfer_mode_code      => 'S'
56969          , p_acct_entry_type_code       => 'A'
56970          , p_switch_side_flag           => 'Y'
56971          , p_merge_duplicate_code       => 'A'
56972          );
56973    --
56974    l_acc_rev_natural_side_code := 'D';  -- 4262811
56975    -- 
56976    --
56977    -- set accounting line type info
56978    --
56979    xla_ae_lines_pkg.SetAcctLineType
56980       (p_component_type             => l_component_type
56981       ,p_event_type_code            => l_event_type_code
56982       ,p_line_definition_owner_code => l_line_definition_owner_code
56983       ,p_line_definition_code       => l_line_definition_code
56984       ,p_accounting_line_code       => l_component_code
56985       ,p_accounting_line_type_code  => l_component_type_code
56986       ,p_accounting_line_appl_id    => l_component_appl_id
56987       ,p_amb_context_code           => l_amb_context_code
56988       ,p_entity_code                => l_entity_code
56989       ,p_event_class_code           => l_event_class_code);
56990    --
56991    -- set accounting class
56992    --
56993    xla_ae_lines_pkg.SetAcctClass(
56994            p_accounting_class_code  => 'FACTOR'
56995          , p_ae_header_id           => l_ae_header_id
56996          );
56997 
56998    --
56999    -- set rounding class
57000    --
57001    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
57002                       'RECEIVABLE';
57003 
57004    --
57005    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
57006    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
57007    --
57008    -- bulk performance
57009    --
57010    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
57011 
57012    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
57013       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
57014 
57015    -- 4955764
57016    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57017       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
57018 
57019    -- 4458381 Public Sector Enh
57020    
57021    --
57022    -- set accounting attributes for the line type
57023    --
57024    l_entered_amt_idx := 8;
57025    l_accted_amt_idx  := 13;
57026    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
57027    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
57028    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
57029    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
57030    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
57031    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
57032    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
57033    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
57034    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
57035    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
57036    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
57040    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
57037    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
57038    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
57039    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
57041    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
57042    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
57043    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
57044    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
57045    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
57046    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
57047    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
57048    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
57049    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
57050    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
57051    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
57052    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
57053    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
57054    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
57055    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
57056    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
57057    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
57058    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
57059 
57060    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
57061    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
57062 
57063    ---------------------------------------------------------------------------------------------------------------
57064    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
57065    ---------------------------------------------------------------------------------------------------------------
57066    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
57067 
57068    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57069    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57070 
57071    IF xla_accounting_cache_pkg.GetValueChar
57072          (p_source_code         => 'LEDGER_CATEGORY_CODE'
57073          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
57074    AND l_bflow_method_code = 'PRIOR_ENTRY'
57075 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
57076    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
57077          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
57078        )
57079    THEN
57080          xla_ae_lines_pkg.BflowUpgEntry
57081            (p_business_method_code    => l_bflow_method_code
57082            ,p_business_class_code     => l_bflow_class_code
57083            ,p_balance_type            => l_balance_type_code);
57084    ELSE
57085       NULL;
57086 -- No business flow processing for business flow method of NONE.
57087    END IF;
57088 
57089    --
57090    -- call analytical criteria
57091    --
57092    
57093    --
57094    -- call description
57095    --
57096    -- No description or it is inherited.
57097    --
57098    -- call ADRs
57099    -- Bug 4922099
57100    --
57101    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57102         (NVL(l_actual_upg_option, 'N') = 'O') OR
57103         (NVL(l_enc_upg_option, 'N') = 'O')
57104       )
57105    THEN
57106    NULL;
57107    --
57108    --
57109    
57110   l_ccid := AcctDerRule_29(
57111            p_application_id           => p_application_id
57112          , p_ae_header_id             => l_ae_header_id 
57113 , p_source_32 => p_source_32
57114          , x_transaction_coa_id       => l_adr_transaction_coa_id
57115          , x_accounting_coa_id        => l_adr_accounting_coa_id
57116          , x_value_type_code          => l_adr_value_type_code
57117          , p_side                     => 'NA'
57118    );
57119 
57120    xla_ae_lines_pkg.set_ccid(
57121     p_code_combination_id          => l_ccid
57122   , p_value_type_code              => l_adr_value_type_code
57123   , p_transaction_coa_id           => l_adr_transaction_coa_id
57124   , p_accounting_coa_id            => l_adr_accounting_coa_id
57125   , p_adr_code                     => 'DIST_CCID'
57126   , p_adr_type_code                => 'S'
57127   , p_component_type               => l_component_type
57128   , p_component_code               => l_component_code
57129   , p_component_type_code          => l_component_type_code
57130   , p_component_appl_id            => l_component_appl_id
57131   , p_amb_context_code             => l_amb_context_code
57132   , p_side                         => 'NA'
57133   );
57134 
57135 
57136    --
57137    --
57138    END IF;
57139    --
57140    -- Bug 4922099
57141    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
57142           (NVL(l_enc_upg_option, 'N') = 'O')
57143         ) AND
57144         (l_bflow_method_code = 'PRIOR_ENTRY')
57145       )
57146    THEN
57147       IF
57148       --
57149       1 = 2
57150       --
57151       THEN
57152       xla_accounting_err_pkg.build_message
57153                                     (p_appli_s_name            => 'XLA'
57157                                     ,p_token_2                 => 'LINE_TYPE_NAME'
57154                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57155                                     ,p_token_1                 => 'LINE_NUMBER'
57156                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
57158                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
57159                                                                              l_component_type
57160                                                                             ,l_component_code
57161                                                                             ,l_component_type_code
57162                                                                             ,l_component_appl_id
57163                                                                             ,l_amb_context_code
57164                                                                             ,l_entity_code
57165                                                                             ,l_event_class_code
57166                                                                            )
57167                                     ,p_token_3                 => 'OWNER'
57168                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
57169                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
57170                                                                           ,p_lookup_code    => l_component_type_code
57171                                                                          )
57172                                     ,p_token_4                 => 'PRODUCT_NAME'
57173                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
57174                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
57175                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
57176                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
57177                                     ,p_ae_header_id            =>  NULL
57178                                        );
57179 
57180         IF (C_LEVEL_ERROR>= g_log_level) THEN
57181                  trace
57182                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57183                       ,p_level    => C_LEVEL_ERROR
57184                       ,p_module   => l_log_module);
57185         END IF;
57186       END IF;
57187    END IF;
57188    --
57189    --
57190    ------------------------------------------------------------------------------------------------
57191    -- 4219869 Business Flow
57192    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57193    -- Prior Entry.  Currently, the following code is always generated.
57194    ------------------------------------------------------------------------------------------------
57195    XLA_AE_LINES_PKG.ValidateCurrentLine;
57196 
57197    ------------------------------------------------------------------------------------
57198    -- 4219869 Business Flow
57199    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57200    ------------------------------------------------------------------------------------
57201    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57202 
57203    ----------------------------------------------------------------------------------
57204    -- 4219869 Business Flow
57205    -- Update journal entry status -- Need to generate this within IF <condition>
57206    ----------------------------------------------------------------------------------
57207    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57208          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57209          ,p_balance_type_code => l_balance_type_code
57210          );
57211 
57212    -------------------------------------------------------------------------------------------
57213    -- 4262811 - Generate the Accrual Reversal lines
57214    -------------------------------------------------------------------------------------------
57215    BEGIN
57216       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57217                               (g_array_event(p_event_id).array_value_num('header_index'));
57218       IF l_acc_rev_flag IS NULL THEN
57219          l_acc_rev_flag := 'N';
57220       END IF;
57221    EXCEPTION
57222       WHEN OTHERS THEN
57223          l_acc_rev_flag := 'N';
57224    END;
57225    --
57226    IF (l_acc_rev_flag = 'Y') THEN
57227 
57228        -- 4645092  ------------------------------------------------------------------------------
57229        -- To allow MPA report to determine if it should generate report process
57230        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57231        ------------------------------------------------------------------------------------------
57232 
57233        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57234        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57235    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
57236    -- call ADRs
57237    -- Bug 4922099
57238    --
57239    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57240         (NVL(l_actual_upg_option, 'N') = 'O') OR
57241         (NVL(l_enc_upg_option, 'N') = 'O')
57242       )
57243    THEN
57244    NULL;
57245    --
57249            p_application_id           => p_application_id
57246    --
57247    
57248   l_ccid := AcctDerRule_29(
57250          , p_ae_header_id             => l_ae_header_id 
57251 , p_source_32 => p_source_32
57252          , x_transaction_coa_id       => l_adr_transaction_coa_id
57253          , x_accounting_coa_id        => l_adr_accounting_coa_id
57254          , x_value_type_code          => l_adr_value_type_code
57255          , p_side                     => 'NA'
57256    );
57257 
57258    xla_ae_lines_pkg.set_ccid(
57259     p_code_combination_id          => l_ccid
57260   , p_value_type_code              => l_adr_value_type_code
57261   , p_transaction_coa_id           => l_adr_transaction_coa_id
57262   , p_accounting_coa_id            => l_adr_accounting_coa_id
57263   , p_adr_code                     => 'DIST_CCID'
57264   , p_adr_type_code                => 'S'
57265   , p_component_type               => l_component_type
57266   , p_component_code               => l_component_code
57267   , p_component_type_code          => l_component_type_code
57268   , p_component_appl_id            => l_component_appl_id
57269   , p_amb_context_code             => l_amb_context_code
57270   , p_side                         => 'NA'
57271   );
57272 
57273 
57274    --
57275    --
57276    END IF;
57277 
57278        --
57279        -- Update the line information that should be overwritten
57280        --
57281        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57282                                          p_header_num   => 1);
57283        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
57284 
57285        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57286 
57287        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
57288           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57289        END IF;
57290 
57291       --
57292       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57293       --
57294       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57295           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
57296       ELSE
57297           ---------------------------------------------------------------------------------------------------
57298           -- 4262811a Switch Sign
57299           ---------------------------------------------------------------------------------------------------
57300           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
57301           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57302                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57303           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57304                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57305           -- 5132302
57306           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57307                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57308 
57309       END IF;
57310 
57311       -- 4955764
57312       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57313       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57314 
57315 
57316       XLA_AE_LINES_PKG.ValidateCurrentLine;
57317       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57318 
57319       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57320                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57321                ,p_balance_type_code => l_balance_type_code);
57322 
57323    END IF;
57324 
57325    -----------------------------------------------------------------------------------------
57326    -- 4262811 Multiperiod Accounting
57327    -----------------------------------------------------------------------------------------
57328      -- No MPA option is assigned.
57329 
57330 
57331 END IF;
57332 END IF;
57333 --
57334 
57335 --
57336 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57337    trace
57338       (p_msg      => 'END of AcctLineType_127'
57339       ,p_level    => C_LEVEL_PROCEDURE
57340       ,p_module   => l_log_module);
57341 END IF;
57342 --
57343 EXCEPTION
57344   WHEN xla_exceptions_pkg.application_exception THEN
57345       RAISE;
57346   WHEN OTHERS THEN
57347        xla_exceptions_pkg.raise_message
57348            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_127');
57349 END AcctLineType_127;
57350 --
57351 
57352 ---------------------------------------
57353 --
57354 -- PRIVATE FUNCTION
57355 --         AcctLineType_128
57356 --
57357 ---------------------------------------
57358 PROCEDURE AcctLineType_128 (
57359   p_application_id        IN NUMBER
57360  ,p_event_id              IN NUMBER
57361  ,p_calculate_acctd_flag  IN VARCHAR2
57362  ,p_calculate_g_l_flag    IN VARCHAR2
57363  ,p_actual_flag           IN OUT VARCHAR2
57364  ,p_balance_type_code     OUT VARCHAR2
57365  ,p_gain_or_loss_ref      OUT VARCHAR2
57366  
57370  , p_source_39            IN VARCHAR2
57367 --Distribution GL Account
57368  , p_source_32            IN NUMBER
57369 --Distribution Source Type
57371 --Distribution Line Identifier
57372  , p_source_41            IN NUMBER
57373 --Distribution Type
57374  , p_source_42            IN VARCHAR2
57375 --Exchange Date
57376  , p_source_45            IN DATE
57377 --Exchange Rate
57378  , p_source_46            IN NUMBER
57379 --Exchange Rate Type
57380  , p_source_47            IN VARCHAR2
57381 --Accounting Amount
57382  , p_source_52            IN NUMBER
57383 --Transaction Distribution Identifier
57384  , p_source_56            IN NUMBER
57385 --Transaction Distribution Type
57386  , p_source_57            IN VARCHAR2
57387 --Distribution Multi Fund Additional Entry
57388  , p_source_99            IN VARCHAR2
57389 --Receipt Applied To Application Identifier
57390  , p_source_101            IN NUMBER
57391 --Transaction Entity Code
57392  , p_source_102            IN VARCHAR2
57393 --Transaction Identifier
57394  , p_source_103            IN NUMBER
57395 --DIST_ENT_AMT_FROM
57396  , p_source_104            IN NUMBER
57397 --Applying Document Currency Code
57398  , p_source_105            IN VARCHAR2
57399 --Distribution Party Identifier
57400  , p_source_106            IN NUMBER
57401 --Distribution Party Site Id
57402  , p_source_107            IN NUMBER
57403 --Distribution Party Type
57404  , p_source_108            IN VARCHAR2
57405 --Distribution Source Table
57406  , p_source_111            IN VARCHAR2
57407 )
57408 IS
57409 
57410 l_component_type              VARCHAR2(80);
57411 l_component_code              VARCHAR2(30);
57412 l_component_type_code         VARCHAR2(1);
57413 l_component_appl_id           INTEGER;
57414 l_amb_context_code            VARCHAR2(30);
57415 l_entity_code                 VARCHAR2(30);
57416 l_event_class_code            VARCHAR2(30);
57417 l_ae_header_id                NUMBER;
57418 l_event_type_code             VARCHAR2(30);
57419 l_line_definition_code        VARCHAR2(30);
57420 l_line_definition_owner_code  VARCHAR2(1);
57421 --
57422 -- adr variables
57423 l_segment                     VARCHAR2(30);
57424 l_ccid                        NUMBER;
57425 l_adr_transaction_coa_id      NUMBER;
57426 l_adr_accounting_coa_id       NUMBER;
57427 l_adr_flexfield_segment_code  VARCHAR2(30);
57428 l_adr_flex_value_set_id       NUMBER;
57429 l_adr_value_type_code         VARCHAR2(30);
57430 l_adr_value_combination_id    NUMBER;
57431 l_adr_value_segment_code      VARCHAR2(30);
57432 
57433 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
57434 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
57435 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
57436 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
57437 
57438 -- 4262811 Variables ------------------------------------------------------------------------------------------
57439 l_entered_amt_idx             NUMBER;
57440 l_accted_amt_idx              NUMBER;
57441 l_acc_rev_flag                VARCHAR2(1);
57442 l_accrual_line_num            NUMBER;
57443 l_tmp_amt                     NUMBER;
57444 l_acc_rev_natural_side_code   VARCHAR2(1);
57445 
57446 l_num_entries                 NUMBER;
57447 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
57448 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
57449 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
57450 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
57451 l_recog_line_1                NUMBER;
57452 l_recog_line_2                NUMBER;
57453 
57454 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
57455 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
57456 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
57457 
57458 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
57459 
57460 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
57461 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
57462 
57463 ---------------------------------------------------------------------------------------------------------------
57464 
57465 
57466 --
57467 -- bulk performance
57468 --
57469 l_balance_type_code           VARCHAR2(1);
57470 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
57471 l_log_module                  VARCHAR2(240);
57472 
57473 --
57474 -- Upgrade strategy
57475 --
57476 l_actual_upg_option           VARCHAR2(1);
57477 l_enc_upg_option           VARCHAR2(1);
57478 
57479 --
57480 BEGIN
57481 --
57482 IF g_log_enabled THEN
57483       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_128';
57484 END IF;
57485 --
57486 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57487 
57488       trace
57489          (p_msg      => 'BEGIN of AcctLineType_128'
57490          ,p_level    => C_LEVEL_PROCEDURE
57491          ,p_module   => l_log_module);
57492 
57493 END IF;
57494 --
57495 l_component_type             := 'AMB_JLT';
57496 l_component_code             := 'RCT_FACTOR_BR';
57497 l_component_type_code        := 'S';
57498 l_component_appl_id          :=  222;
57499 l_amb_context_code           := 'DEFAULT';
57500 l_entity_code                := 'RECEIPTS';
57501 l_event_class_code           := 'RECEIPT';
57505 --
57502 l_event_type_code            := 'RECEIPT_ALL';
57503 l_line_definition_owner_code := 'S';
57504 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
57506 l_balance_type_code          := 'A';
57507 l_segment                     := NULL;
57508 l_ccid                        := NULL;
57509 l_adr_transaction_coa_id      := NULL;
57510 l_adr_accounting_coa_id       := NULL;
57511 l_adr_flexfield_segment_code  := NULL;
57512 l_adr_flex_value_set_id       := NULL;
57513 l_adr_value_type_code         := NULL;
57514 l_adr_value_combination_id    := NULL;
57515 l_adr_value_segment_code      := NULL;
57516 
57517 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
57518 l_bflow_class_code           := '';    -- 4219869 Business Flow
57519 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
57520 l_budgetary_control_flag     := 'N';
57521 
57522 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
57523 l_bflow_applied_to_amt       := NULL; -- 5132302
57524 l_entered_amt_idx            := NULL;          -- 4262811
57525 l_accted_amt_idx             := NULL;          -- 4262811
57526 l_acc_rev_flag               := NULL;          -- 4262811
57527 l_accrual_line_num           := NULL;          -- 4262811
57528 l_tmp_amt                    := NULL;          -- 4262811
57529 --
57530  
57531 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
57532     l_balance_type_code <> 'B' THEN
57533 IF NVL(p_source_39,'
57534 ') =  'FACTOR' AND 
57535 NVL(p_source_111,'
57536 ') =  'RA' AND 
57537 NVL(p_source_99,'
57538 ') =  'N'
57539  THEN 
57540 
57541    --
57542    XLA_AE_LINES_PKG.SetNewLine;
57543 
57544    p_balance_type_code          := l_balance_type_code;
57545    -- set the flag so later we will know whether the gain loss line needs to be created
57546    
57547    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
57548      p_actual_flag :='A';
57549    END IF;
57550 
57551    --
57552    -- bulk performance
57553    --
57554    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
57555                                       p_header_num   => 0); -- 4262811
57556    --
57557    -- set accounting line options
57558    --
57559    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
57560            p_natural_side_code          => 'C'
57561          , p_gain_or_loss_flag          => 'N'
57562          , p_gl_transfer_mode_code      => 'S'
57563          , p_acct_entry_type_code       => 'A'
57564          , p_switch_side_flag           => 'Y'
57565          , p_merge_duplicate_code       => 'A'
57566          );
57567    --
57568    l_acc_rev_natural_side_code := 'D';  -- 4262811
57569    -- 
57570    --
57571    -- set accounting line type info
57572    --
57573    xla_ae_lines_pkg.SetAcctLineType
57574       (p_component_type             => l_component_type
57575       ,p_event_type_code            => l_event_type_code
57576       ,p_line_definition_owner_code => l_line_definition_owner_code
57577       ,p_line_definition_code       => l_line_definition_code
57578       ,p_accounting_line_code       => l_component_code
57579       ,p_accounting_line_type_code  => l_component_type_code
57580       ,p_accounting_line_appl_id    => l_component_appl_id
57581       ,p_amb_context_code           => l_amb_context_code
57582       ,p_entity_code                => l_entity_code
57583       ,p_event_class_code           => l_event_class_code);
57584    --
57585    -- set accounting class
57586    --
57587    xla_ae_lines_pkg.SetAcctClass(
57588            p_accounting_class_code  => 'FAC_BR'
57589          , p_ae_header_id           => l_ae_header_id
57590          );
57591 
57592    --
57593    -- set rounding class
57594    --
57595    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
57596                       'RECEIVABLE';
57597 
57598    --
57599    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
57600    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
57601    --
57602    -- bulk performance
57603    --
57604    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
57605 
57606    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
57607       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
57608 
57609    -- 4955764
57610    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57611       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
57612 
57613    -- 4458381 Public Sector Enh
57614    
57615    --
57616    -- set accounting attributes for the line type
57617    --
57618    l_entered_amt_idx := 8;
57619    l_accted_amt_idx  := 13;
57620    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
57621    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
57622    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
57623    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
57624    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
57625    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
57626    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
57627    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
57631    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
57628    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
57629    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
57630    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
57632    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
57633    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
57634    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
57635    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
57636    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
57637    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
57638    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
57639    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
57640    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
57641    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
57642    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
57643    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
57644    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
57645    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
57646    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
57647    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
57648    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
57649    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
57650    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
57651    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
57652    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
57653 
57654    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
57655    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
57656 
57657    ---------------------------------------------------------------------------------------------------------------
57658    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
57659    ---------------------------------------------------------------------------------------------------------------
57660    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
57661 
57662    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57663    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
57664 
57665    IF xla_accounting_cache_pkg.GetValueChar
57666          (p_source_code         => 'LEDGER_CATEGORY_CODE'
57667          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
57668    AND l_bflow_method_code = 'PRIOR_ENTRY'
57669 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
57670    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
57671          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
57672        )
57673    THEN
57674          xla_ae_lines_pkg.BflowUpgEntry
57675            (p_business_method_code    => l_bflow_method_code
57676            ,p_business_class_code     => l_bflow_class_code
57677            ,p_balance_type            => l_balance_type_code);
57678    ELSE
57679       NULL;
57680 -- No business flow processing for business flow method of NONE.
57681    END IF;
57682 
57683    --
57684    -- call analytical criteria
57685    --
57686    
57687    --
57688    -- call description
57689    --
57690    -- No description or it is inherited.
57691    --
57692    -- call ADRs
57693    -- Bug 4922099
57694    --
57695    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57696         (NVL(l_actual_upg_option, 'N') = 'O') OR
57697         (NVL(l_enc_upg_option, 'N') = 'O')
57698       )
57699    THEN
57700    NULL;
57701    --
57702    --
57703    
57704   l_ccid := AcctDerRule_29(
57705            p_application_id           => p_application_id
57706          , p_ae_header_id             => l_ae_header_id 
57707 , p_source_32 => p_source_32
57708          , x_transaction_coa_id       => l_adr_transaction_coa_id
57709          , x_accounting_coa_id        => l_adr_accounting_coa_id
57710          , x_value_type_code          => l_adr_value_type_code
57711          , p_side                     => 'NA'
57712    );
57713 
57714    xla_ae_lines_pkg.set_ccid(
57715     p_code_combination_id          => l_ccid
57716   , p_value_type_code              => l_adr_value_type_code
57717   , p_transaction_coa_id           => l_adr_transaction_coa_id
57718   , p_accounting_coa_id            => l_adr_accounting_coa_id
57719   , p_adr_code                     => 'DIST_CCID'
57720   , p_adr_type_code                => 'S'
57721   , p_component_type               => l_component_type
57722   , p_component_code               => l_component_code
57723   , p_component_type_code          => l_component_type_code
57724   , p_component_appl_id            => l_component_appl_id
57725   , p_amb_context_code             => l_amb_context_code
57726   , p_side                         => 'NA'
57727   );
57728 
57729 
57730    --
57731    --
57732    END IF;
57733    --
57734    -- Bug 4922099
57735    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
57736           (NVL(l_enc_upg_option, 'N') = 'O')
57737         ) AND
57738         (l_bflow_method_code = 'PRIOR_ENTRY')
57739       )
57740    THEN
57741       IF
57742       --
57746       xla_accounting_err_pkg.build_message
57743       1 = 2
57744       --
57745       THEN
57747                                     (p_appli_s_name            => 'XLA'
57748                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57749                                     ,p_token_1                 => 'LINE_NUMBER'
57750                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
57751                                     ,p_token_2                 => 'LINE_TYPE_NAME'
57752                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
57753                                                                              l_component_type
57754                                                                             ,l_component_code
57755                                                                             ,l_component_type_code
57756                                                                             ,l_component_appl_id
57757                                                                             ,l_amb_context_code
57758                                                                             ,l_entity_code
57759                                                                             ,l_event_class_code
57760                                                                            )
57761                                     ,p_token_3                 => 'OWNER'
57762                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
57763                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
57764                                                                           ,p_lookup_code    => l_component_type_code
57765                                                                          )
57766                                     ,p_token_4                 => 'PRODUCT_NAME'
57767                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
57768                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
57769                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
57770                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
57771                                     ,p_ae_header_id            =>  NULL
57772                                        );
57773 
57774         IF (C_LEVEL_ERROR>= g_log_level) THEN
57775                  trace
57776                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
57777                       ,p_level    => C_LEVEL_ERROR
57778                       ,p_module   => l_log_module);
57779         END IF;
57780       END IF;
57781    END IF;
57782    --
57783    --
57784    ------------------------------------------------------------------------------------------------
57785    -- 4219869 Business Flow
57786    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
57787    -- Prior Entry.  Currently, the following code is always generated.
57788    ------------------------------------------------------------------------------------------------
57789    XLA_AE_LINES_PKG.ValidateCurrentLine;
57790 
57791    ------------------------------------------------------------------------------------
57792    -- 4219869 Business Flow
57793    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
57794    ------------------------------------------------------------------------------------
57795    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57796 
57797    ----------------------------------------------------------------------------------
57798    -- 4219869 Business Flow
57799    -- Update journal entry status -- Need to generate this within IF <condition>
57800    ----------------------------------------------------------------------------------
57801    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57802          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
57803          ,p_balance_type_code => l_balance_type_code
57804          );
57805 
57806    -------------------------------------------------------------------------------------------
57807    -- 4262811 - Generate the Accrual Reversal lines
57808    -------------------------------------------------------------------------------------------
57809    BEGIN
57810       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
57811                               (g_array_event(p_event_id).array_value_num('header_index'));
57812       IF l_acc_rev_flag IS NULL THEN
57813          l_acc_rev_flag := 'N';
57814       END IF;
57815    EXCEPTION
57816       WHEN OTHERS THEN
57817          l_acc_rev_flag := 'N';
57818    END;
57819    --
57820    IF (l_acc_rev_flag = 'Y') THEN
57821 
57822        -- 4645092  ------------------------------------------------------------------------------
57823        -- To allow MPA report to determine if it should generate report process
57824        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
57825        ------------------------------------------------------------------------------------------
57826 
57827        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
57828        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
57829    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
57830    -- call ADRs
57834         (NVL(l_actual_upg_option, 'N') = 'O') OR
57831    -- Bug 4922099
57832    --
57833    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
57835         (NVL(l_enc_upg_option, 'N') = 'O')
57836       )
57837    THEN
57838    NULL;
57839    --
57840    --
57841    
57842   l_ccid := AcctDerRule_29(
57843            p_application_id           => p_application_id
57844          , p_ae_header_id             => l_ae_header_id 
57845 , p_source_32 => p_source_32
57846          , x_transaction_coa_id       => l_adr_transaction_coa_id
57847          , x_accounting_coa_id        => l_adr_accounting_coa_id
57848          , x_value_type_code          => l_adr_value_type_code
57849          , p_side                     => 'NA'
57850    );
57851 
57852    xla_ae_lines_pkg.set_ccid(
57853     p_code_combination_id          => l_ccid
57854   , p_value_type_code              => l_adr_value_type_code
57855   , p_transaction_coa_id           => l_adr_transaction_coa_id
57856   , p_accounting_coa_id            => l_adr_accounting_coa_id
57857   , p_adr_code                     => 'DIST_CCID'
57858   , p_adr_type_code                => 'S'
57859   , p_component_type               => l_component_type
57860   , p_component_code               => l_component_code
57861   , p_component_type_code          => l_component_type_code
57862   , p_component_appl_id            => l_component_appl_id
57863   , p_amb_context_code             => l_amb_context_code
57864   , p_side                         => 'NA'
57865   );
57866 
57867 
57868    --
57869    --
57870    END IF;
57871 
57872        --
57873        -- Update the line information that should be overwritten
57874        --
57875        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
57876                                          p_header_num   => 1);
57877        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
57878 
57879        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
57880 
57881        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
57882           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
57883        END IF;
57884 
57885       --
57886       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
57887       --
57888       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
57889           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
57890       ELSE
57891           ---------------------------------------------------------------------------------------------------
57892           -- 4262811a Switch Sign
57893           ---------------------------------------------------------------------------------------------------
57894           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
57895           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57896                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57897           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
57898                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57899           -- 5132302
57900           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
57901                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
57902 
57903       END IF;
57904 
57905       -- 4955764
57906       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
57907       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
57908 
57909 
57910       XLA_AE_LINES_PKG.ValidateCurrentLine;
57911       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
57912 
57913       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
57914                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
57915                ,p_balance_type_code => l_balance_type_code);
57916 
57917    END IF;
57918 
57919    -----------------------------------------------------------------------------------------
57920    -- 4262811 Multiperiod Accounting
57921    -----------------------------------------------------------------------------------------
57922      -- No MPA option is assigned.
57923 
57924 
57925 END IF;
57926 END IF;
57927 --
57928 
57929 --
57930 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
57931    trace
57932       (p_msg      => 'END of AcctLineType_128'
57933       ,p_level    => C_LEVEL_PROCEDURE
57934       ,p_module   => l_log_module);
57935 END IF;
57936 --
57937 EXCEPTION
57938   WHEN xla_exceptions_pkg.application_exception THEN
57939       RAISE;
57940   WHEN OTHERS THEN
57941        xla_exceptions_pkg.raise_message
57942            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_128');
57943 END AcctLineType_128;
57944 --
57945 
57946 ---------------------------------------
57947 --
57948 -- PRIVATE FUNCTION
57949 --         AcctLineType_129
57950 --
57951 ---------------------------------------
57952 PROCEDURE AcctLineType_129 (
57953   p_application_id        IN NUMBER
57954  ,p_event_id              IN NUMBER
57955  ,p_calculate_acctd_flag  IN VARCHAR2
57959  ,p_gain_or_loss_ref      OUT VARCHAR2
57956  ,p_calculate_g_l_flag    IN VARCHAR2
57957  ,p_actual_flag           IN OUT VARCHAR2
57958  ,p_balance_type_code     OUT VARCHAR2
57960  
57961 --Distribution GL Account
57962  , p_source_32            IN NUMBER
57963 --Distribution Source Type
57964  , p_source_39            IN VARCHAR2
57965 --Receivable Activity Type
57966  , p_source_40            IN VARCHAR2
57967 --Distribution Line Identifier
57968  , p_source_41            IN NUMBER
57969 --Distribution Type
57970  , p_source_42            IN VARCHAR2
57971 --Exchange Date
57972  , p_source_45            IN DATE
57973 --Exchange Rate
57974  , p_source_46            IN NUMBER
57975 --Exchange Rate Type
57976  , p_source_47            IN VARCHAR2
57977 --Applied To Document Accounting Amount
57978  , p_source_48            IN NUMBER
57979 --Transaction Distribution Identifier
57980  , p_source_56            IN NUMBER
57981 --Transaction Distribution Type
57982  , p_source_57            IN VARCHAR2
57983 --Distribution Multi Fund Additional Entry
57984  , p_source_99            IN VARCHAR2
57985 --Receipt Applied To Application Identifier
57986  , p_source_101            IN NUMBER
57987 --Transaction Entity Code
57988  , p_source_102            IN VARCHAR2
57989 --Transaction Identifier
57990  , p_source_103            IN NUMBER
57991 --DIST_ENT_AMT_FROM
57992  , p_source_104            IN NUMBER
57993 --Applying Document Currency Code
57994  , p_source_105            IN VARCHAR2
57995 --Distribution Party Identifier
57996  , p_source_106            IN NUMBER
57997 --Distribution Party Site Id
57998  , p_source_107            IN NUMBER
57999 --Distribution Party Type
58000  , p_source_108            IN VARCHAR2
58001 )
58002 IS
58003 
58004 l_component_type              VARCHAR2(80);
58005 l_component_code              VARCHAR2(30);
58006 l_component_type_code         VARCHAR2(1);
58007 l_component_appl_id           INTEGER;
58008 l_amb_context_code            VARCHAR2(30);
58009 l_entity_code                 VARCHAR2(30);
58010 l_event_class_code            VARCHAR2(30);
58011 l_ae_header_id                NUMBER;
58012 l_event_type_code             VARCHAR2(30);
58013 l_line_definition_code        VARCHAR2(30);
58014 l_line_definition_owner_code  VARCHAR2(1);
58015 --
58016 -- adr variables
58017 l_segment                     VARCHAR2(30);
58018 l_ccid                        NUMBER;
58019 l_adr_transaction_coa_id      NUMBER;
58020 l_adr_accounting_coa_id       NUMBER;
58021 l_adr_flexfield_segment_code  VARCHAR2(30);
58022 l_adr_flex_value_set_id       NUMBER;
58023 l_adr_value_type_code         VARCHAR2(30);
58024 l_adr_value_combination_id    NUMBER;
58025 l_adr_value_segment_code      VARCHAR2(30);
58026 
58027 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
58028 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
58029 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
58030 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
58031 
58032 -- 4262811 Variables ------------------------------------------------------------------------------------------
58033 l_entered_amt_idx             NUMBER;
58034 l_accted_amt_idx              NUMBER;
58035 l_acc_rev_flag                VARCHAR2(1);
58036 l_accrual_line_num            NUMBER;
58037 l_tmp_amt                     NUMBER;
58038 l_acc_rev_natural_side_code   VARCHAR2(1);
58039 
58040 l_num_entries                 NUMBER;
58041 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
58042 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
58043 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
58044 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
58045 l_recog_line_1                NUMBER;
58046 l_recog_line_2                NUMBER;
58047 
58048 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
58049 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
58050 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
58051 
58052 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
58053 
58054 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
58055 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
58056 
58057 ---------------------------------------------------------------------------------------------------------------
58058 
58059 
58060 --
58061 -- bulk performance
58062 --
58063 l_balance_type_code           VARCHAR2(1);
58064 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
58065 l_log_module                  VARCHAR2(240);
58066 
58067 --
58068 -- Upgrade strategy
58069 --
58070 l_actual_upg_option           VARCHAR2(1);
58071 l_enc_upg_option           VARCHAR2(1);
58072 
58073 --
58074 BEGIN
58075 --
58076 IF g_log_enabled THEN
58077       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_129';
58078 END IF;
58079 --
58080 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58081 
58082       trace
58083          (p_msg      => 'BEGIN of AcctLineType_129'
58084          ,p_level    => C_LEVEL_PROCEDURE
58085          ,p_module   => l_log_module);
58086 
58087 END IF;
58088 --
58089 l_component_type             := 'AMB_JLT';
58093 l_amb_context_code           := 'DEFAULT';
58090 l_component_code             := 'RCT_PMT_NET';
58091 l_component_type_code        := 'S';
58092 l_component_appl_id          :=  222;
58094 l_entity_code                := 'RECEIPTS';
58095 l_event_class_code           := 'RECEIPT';
58096 l_event_type_code            := 'RECEIPT_ALL';
58097 l_line_definition_owner_code := 'S';
58098 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
58099 --
58100 l_balance_type_code          := 'A';
58101 l_segment                     := NULL;
58102 l_ccid                        := NULL;
58103 l_adr_transaction_coa_id      := NULL;
58104 l_adr_accounting_coa_id       := NULL;
58105 l_adr_flexfield_segment_code  := NULL;
58106 l_adr_flex_value_set_id       := NULL;
58107 l_adr_value_type_code         := NULL;
58108 l_adr_value_combination_id    := NULL;
58109 l_adr_value_segment_code      := NULL;
58110 
58111 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
58112 l_bflow_class_code           := '';    -- 4219869 Business Flow
58113 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
58114 l_budgetary_control_flag     := 'N';
58115 
58116 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
58117 l_bflow_applied_to_amt       := NULL; -- 5132302
58118 l_entered_amt_idx            := NULL;          -- 4262811
58119 l_accted_amt_idx             := NULL;          -- 4262811
58120 l_acc_rev_flag               := NULL;          -- 4262811
58121 l_accrual_line_num           := NULL;          -- 4262811
58122 l_tmp_amt                    := NULL;          -- 4262811
58123 --
58124  
58125 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
58126     l_balance_type_code <> 'B' THEN
58127 IF (NVL(p_source_39,'
58128 ') =  'OTHER_ACC' OR 
58129 NVL(p_source_39,'
58130 ') =  'ACTIVITY') AND 
58131 NVL(p_source_40,'
58132 ') =  'NETTING' AND 
58133 NVL(p_source_99,'
58134 ') =  'N'
58135  THEN 
58136 
58137    --
58138    XLA_AE_LINES_PKG.SetNewLine;
58139 
58140    p_balance_type_code          := l_balance_type_code;
58141    -- set the flag so later we will know whether the gain loss line needs to be created
58142    
58143    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
58144      p_actual_flag :='A';
58145    END IF;
58146 
58147    --
58148    -- bulk performance
58149    --
58150    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
58151                                       p_header_num   => 0); -- 4262811
58152    --
58153    -- set accounting line options
58154    --
58155    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
58156            p_natural_side_code          => 'C'
58157          , p_gain_or_loss_flag          => 'N'
58158          , p_gl_transfer_mode_code      => 'S'
58159          , p_acct_entry_type_code       => 'A'
58160          , p_switch_side_flag           => 'Y'
58161          , p_merge_duplicate_code       => 'A'
58162          );
58163    --
58164    l_acc_rev_natural_side_code := 'D';  -- 4262811
58165    -- 
58166    --
58167    -- set accounting line type info
58168    --
58169    xla_ae_lines_pkg.SetAcctLineType
58170       (p_component_type             => l_component_type
58171       ,p_event_type_code            => l_event_type_code
58172       ,p_line_definition_owner_code => l_line_definition_owner_code
58173       ,p_line_definition_code       => l_line_definition_code
58174       ,p_accounting_line_code       => l_component_code
58175       ,p_accounting_line_type_code  => l_component_type_code
58176       ,p_accounting_line_appl_id    => l_component_appl_id
58177       ,p_amb_context_code           => l_amb_context_code
58178       ,p_entity_code                => l_entity_code
58179       ,p_event_class_code           => l_event_class_code);
58180    --
58181    -- set accounting class
58182    --
58183    xla_ae_lines_pkg.SetAcctClass(
58184            p_accounting_class_code  => 'PMT_NET'
58185          , p_ae_header_id           => l_ae_header_id
58186          );
58187 
58188    --
58189    -- set rounding class
58190    --
58191    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
58192                       'RECEIVABLE';
58193 
58194    --
58195    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
58196    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
58197    --
58198    -- bulk performance
58199    --
58200    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
58201 
58202    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
58203       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
58204 
58205    -- 4955764
58206    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58207       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
58208 
58209    -- 4458381 Public Sector Enh
58210    
58211    --
58212    -- set accounting attributes for the line type
58213    --
58214    l_entered_amt_idx := 8;
58215    l_accted_amt_idx  := 13;
58216    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
58217    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
58218    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
58222    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
58219    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
58220    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
58221    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
58223    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
58224    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
58225    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
58226    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
58227    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
58228    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
58229    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
58230    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
58231    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
58232    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
58233    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
58234    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
58235    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
58236    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
58237    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
58238    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
58239    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
58240    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
58241    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
58242    l_rec_acct_attrs.array_num_value(13)  := p_source_48;
58243    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
58244    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
58245    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
58246    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
58247    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
58248    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
58249 
58250    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
58251    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
58252 
58253    ---------------------------------------------------------------------------------------------------------------
58254    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
58255    ---------------------------------------------------------------------------------------------------------------
58256    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58257 
58258    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58259    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58260 
58261    IF xla_accounting_cache_pkg.GetValueChar
58262          (p_source_code         => 'LEDGER_CATEGORY_CODE'
58263          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58264    AND l_bflow_method_code = 'PRIOR_ENTRY'
58265 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58266    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58267          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58268        )
58269    THEN
58270          xla_ae_lines_pkg.BflowUpgEntry
58271            (p_business_method_code    => l_bflow_method_code
58272            ,p_business_class_code     => l_bflow_class_code
58273            ,p_balance_type            => l_balance_type_code);
58274    ELSE
58275       NULL;
58276 -- No business flow processing for business flow method of NONE.
58277    END IF;
58278 
58279    --
58280    -- call analytical criteria
58281    --
58282    
58283    --
58284    -- call description
58285    --
58286    -- No description or it is inherited.
58287    --
58288    -- call ADRs
58289    -- Bug 4922099
58290    --
58291    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58292         (NVL(l_actual_upg_option, 'N') = 'O') OR
58293         (NVL(l_enc_upg_option, 'N') = 'O')
58294       )
58295    THEN
58296    NULL;
58297    --
58298    --
58299    
58300   l_ccid := AcctDerRule_29(
58301            p_application_id           => p_application_id
58302          , p_ae_header_id             => l_ae_header_id 
58303 , p_source_32 => p_source_32
58304          , x_transaction_coa_id       => l_adr_transaction_coa_id
58305          , x_accounting_coa_id        => l_adr_accounting_coa_id
58306          , x_value_type_code          => l_adr_value_type_code
58307          , p_side                     => 'NA'
58308    );
58309 
58310    xla_ae_lines_pkg.set_ccid(
58311     p_code_combination_id          => l_ccid
58312   , p_value_type_code              => l_adr_value_type_code
58313   , p_transaction_coa_id           => l_adr_transaction_coa_id
58314   , p_accounting_coa_id            => l_adr_accounting_coa_id
58315   , p_adr_code                     => 'DIST_CCID'
58316   , p_adr_type_code                => 'S'
58317   , p_component_type               => l_component_type
58318   , p_component_code               => l_component_code
58319   , p_component_type_code          => l_component_type_code
58320   , p_component_appl_id            => l_component_appl_id
58321   , p_amb_context_code             => l_amb_context_code
58322   , p_side                         => 'NA'
58323   );
58324 
58325 
58326    --
58327    --
58331    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58328    END IF;
58329    --
58330    -- Bug 4922099
58332           (NVL(l_enc_upg_option, 'N') = 'O')
58333         ) AND
58334         (l_bflow_method_code = 'PRIOR_ENTRY')
58335       )
58336    THEN
58337       IF
58338       --
58339       1 = 2
58340       --
58341       THEN
58342       xla_accounting_err_pkg.build_message
58343                                     (p_appli_s_name            => 'XLA'
58344                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58345                                     ,p_token_1                 => 'LINE_NUMBER'
58346                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
58347                                     ,p_token_2                 => 'LINE_TYPE_NAME'
58348                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
58349                                                                              l_component_type
58350                                                                             ,l_component_code
58351                                                                             ,l_component_type_code
58352                                                                             ,l_component_appl_id
58353                                                                             ,l_amb_context_code
58354                                                                             ,l_entity_code
58355                                                                             ,l_event_class_code
58356                                                                            )
58357                                     ,p_token_3                 => 'OWNER'
58358                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
58359                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
58360                                                                           ,p_lookup_code    => l_component_type_code
58361                                                                          )
58362                                     ,p_token_4                 => 'PRODUCT_NAME'
58363                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58364                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58365                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58366                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58367                                     ,p_ae_header_id            =>  NULL
58368                                        );
58369 
58370         IF (C_LEVEL_ERROR>= g_log_level) THEN
58371                  trace
58372                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58373                       ,p_level    => C_LEVEL_ERROR
58374                       ,p_module   => l_log_module);
58375         END IF;
58376       END IF;
58377    END IF;
58378    --
58379    --
58380    ------------------------------------------------------------------------------------------------
58381    -- 4219869 Business Flow
58382    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58383    -- Prior Entry.  Currently, the following code is always generated.
58384    ------------------------------------------------------------------------------------------------
58385    XLA_AE_LINES_PKG.ValidateCurrentLine;
58386 
58387    ------------------------------------------------------------------------------------
58388    -- 4219869 Business Flow
58389    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58390    ------------------------------------------------------------------------------------
58391    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58392 
58393    ----------------------------------------------------------------------------------
58394    -- 4219869 Business Flow
58395    -- Update journal entry status -- Need to generate this within IF <condition>
58396    ----------------------------------------------------------------------------------
58397    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58398          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58399          ,p_balance_type_code => l_balance_type_code
58400          );
58401 
58402    -------------------------------------------------------------------------------------------
58403    -- 4262811 - Generate the Accrual Reversal lines
58404    -------------------------------------------------------------------------------------------
58405    BEGIN
58406       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
58407                               (g_array_event(p_event_id).array_value_num('header_index'));
58408       IF l_acc_rev_flag IS NULL THEN
58409          l_acc_rev_flag := 'N';
58410       END IF;
58411    EXCEPTION
58412       WHEN OTHERS THEN
58413          l_acc_rev_flag := 'N';
58414    END;
58415    --
58416    IF (l_acc_rev_flag = 'Y') THEN
58417 
58418        -- 4645092  ------------------------------------------------------------------------------
58419        -- To allow MPA report to determine if it should generate report process
58420        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
58421        ------------------------------------------------------------------------------------------
58422 
58426    -- call ADRs
58423        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
58424        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
58425    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
58427    -- Bug 4922099
58428    --
58429    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58430         (NVL(l_actual_upg_option, 'N') = 'O') OR
58431         (NVL(l_enc_upg_option, 'N') = 'O')
58432       )
58433    THEN
58434    NULL;
58435    --
58436    --
58437    
58438   l_ccid := AcctDerRule_29(
58439            p_application_id           => p_application_id
58440          , p_ae_header_id             => l_ae_header_id 
58441 , p_source_32 => p_source_32
58442          , x_transaction_coa_id       => l_adr_transaction_coa_id
58443          , x_accounting_coa_id        => l_adr_accounting_coa_id
58444          , x_value_type_code          => l_adr_value_type_code
58445          , p_side                     => 'NA'
58446    );
58447 
58448    xla_ae_lines_pkg.set_ccid(
58449     p_code_combination_id          => l_ccid
58450   , p_value_type_code              => l_adr_value_type_code
58451   , p_transaction_coa_id           => l_adr_transaction_coa_id
58452   , p_accounting_coa_id            => l_adr_accounting_coa_id
58453   , p_adr_code                     => 'DIST_CCID'
58454   , p_adr_type_code                => 'S'
58455   , p_component_type               => l_component_type
58456   , p_component_code               => l_component_code
58457   , p_component_type_code          => l_component_type_code
58458   , p_component_appl_id            => l_component_appl_id
58459   , p_amb_context_code             => l_amb_context_code
58460   , p_side                         => 'NA'
58461   );
58462 
58463 
58464    --
58465    --
58466    END IF;
58467 
58468        --
58469        -- Update the line information that should be overwritten
58470        --
58471        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
58472                                          p_header_num   => 1);
58473        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
58474 
58475        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
58476 
58477        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
58478           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
58479        END IF;
58480 
58481       --
58482       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
58483       --
58484       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
58485           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
58486       ELSE
58487           ---------------------------------------------------------------------------------------------------
58488           -- 4262811a Switch Sign
58489           ---------------------------------------------------------------------------------------------------
58490           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
58491           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58492                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58493           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
58494                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58495           -- 5132302
58496           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
58500 
58497                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
58498 
58499       END IF;
58501       -- 4955764
58502       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58503       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
58504 
58505 
58506       XLA_AE_LINES_PKG.ValidateCurrentLine;
58507       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58508 
58509       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58510                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
58511                ,p_balance_type_code => l_balance_type_code);
58512 
58513    END IF;
58514 
58515    -----------------------------------------------------------------------------------------
58516    -- 4262811 Multiperiod Accounting
58517    -----------------------------------------------------------------------------------------
58518      -- No MPA option is assigned.
58519 
58520 
58521 END IF;
58522 END IF;
58523 --
58524 
58525 --
58526 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58527    trace
58528       (p_msg      => 'END of AcctLineType_129'
58529       ,p_level    => C_LEVEL_PROCEDURE
58530       ,p_module   => l_log_module);
58531 END IF;
58532 --
58533 EXCEPTION
58534   WHEN xla_exceptions_pkg.application_exception THEN
58535       RAISE;
58536   WHEN OTHERS THEN
58537        xla_exceptions_pkg.raise_message
58538            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_129');
58539 END AcctLineType_129;
58540 --
58541 
58542 ---------------------------------------
58543 --
58544 -- PRIVATE FUNCTION
58545 --         AcctLineType_130
58546 --
58547 ---------------------------------------
58548 PROCEDURE AcctLineType_130 (
58549   p_application_id        IN NUMBER
58550  ,p_event_id              IN NUMBER
58551  ,p_calculate_acctd_flag  IN VARCHAR2
58552  ,p_calculate_g_l_flag    IN VARCHAR2
58553  ,p_actual_flag           IN OUT VARCHAR2
58554  ,p_balance_type_code     OUT VARCHAR2
58555  ,p_gain_or_loss_ref      OUT VARCHAR2
58556  
58557 --Distribution GL Account
58558  , p_source_32            IN NUMBER
58559 --Distribution Source Type
58560  , p_source_39            IN VARCHAR2
58561 --Receivable Activity Type
58562  , p_source_40            IN VARCHAR2
58563 --Distribution Line Identifier
58564  , p_source_41            IN NUMBER
58565 --Distribution Type
58566  , p_source_42            IN VARCHAR2
58567 --Exchange Date
58568  , p_source_45            IN DATE
58569 --Exchange Rate
58570  , p_source_46            IN NUMBER
58571 --Exchange Rate Type
58572  , p_source_47            IN VARCHAR2
58573 --Accounting Amount
58574  , p_source_52            IN NUMBER
58575 --Transaction Distribution Identifier
58576  , p_source_56            IN NUMBER
58577 --Transaction Distribution Type
58578  , p_source_57            IN VARCHAR2
58579 --Distribution Multi Fund Additional Entry
58580  , p_source_99            IN VARCHAR2
58581 --Receipt Applied To Application Identifier
58582  , p_source_101            IN NUMBER
58583 --Transaction Entity Code
58584  , p_source_102            IN VARCHAR2
58585 --Transaction Identifier
58586  , p_source_103            IN NUMBER
58587 --DIST_ENT_AMT_FROM
58588  , p_source_104            IN NUMBER
58589 --Applying Document Currency Code
58590  , p_source_105            IN VARCHAR2
58591 --Distribution Party Identifier
58592  , p_source_106            IN NUMBER
58593 --Distribution Party Site Id
58594  , p_source_107            IN NUMBER
58595 --Distribution Party Type
58596  , p_source_108            IN VARCHAR2
58597 )
58598 IS
58599 
58600 l_component_type              VARCHAR2(80);
58601 l_component_code              VARCHAR2(30);
58602 l_component_type_code         VARCHAR2(1);
58603 l_component_appl_id           INTEGER;
58604 l_amb_context_code            VARCHAR2(30);
58605 l_entity_code                 VARCHAR2(30);
58606 l_event_class_code            VARCHAR2(30);
58607 l_ae_header_id                NUMBER;
58608 l_event_type_code             VARCHAR2(30);
58609 l_line_definition_code        VARCHAR2(30);
58610 l_line_definition_owner_code  VARCHAR2(1);
58611 --
58612 -- adr variables
58613 l_segment                     VARCHAR2(30);
58614 l_ccid                        NUMBER;
58615 l_adr_transaction_coa_id      NUMBER;
58616 l_adr_accounting_coa_id       NUMBER;
58617 l_adr_flexfield_segment_code  VARCHAR2(30);
58618 l_adr_flex_value_set_id       NUMBER;
58619 l_adr_value_type_code         VARCHAR2(30);
58620 l_adr_value_combination_id    NUMBER;
58621 l_adr_value_segment_code      VARCHAR2(30);
58622 
58623 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
58624 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
58628 -- 4262811 Variables ------------------------------------------------------------------------------------------
58625 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
58626 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
58627 
58629 l_entered_amt_idx             NUMBER;
58630 l_accted_amt_idx              NUMBER;
58631 l_acc_rev_flag                VARCHAR2(1);
58632 l_accrual_line_num            NUMBER;
58633 l_tmp_amt                     NUMBER;
58634 l_acc_rev_natural_side_code   VARCHAR2(1);
58635 
58636 l_num_entries                 NUMBER;
58637 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
58638 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
58639 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
58640 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
58641 l_recog_line_1                NUMBER;
58642 l_recog_line_2                NUMBER;
58643 
58644 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
58645 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
58646 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
58647 
58648 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
58649 
58650 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
58651 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
58652 
58653 ---------------------------------------------------------------------------------------------------------------
58654 
58655 
58656 --
58657 -- bulk performance
58658 --
58659 l_balance_type_code           VARCHAR2(1);
58660 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
58661 l_log_module                  VARCHAR2(240);
58662 
58663 --
58664 -- Upgrade strategy
58665 --
58666 l_actual_upg_option           VARCHAR2(1);
58667 l_enc_upg_option           VARCHAR2(1);
58668 
58669 --
58670 BEGIN
58671 --
58672 IF g_log_enabled THEN
58673       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_130';
58674 END IF;
58675 --
58676 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
58677 
58678       trace
58679          (p_msg      => 'BEGIN of AcctLineType_130'
58680          ,p_level    => C_LEVEL_PROCEDURE
58681          ,p_module   => l_log_module);
58682 
58683 END IF;
58684 --
58685 l_component_type             := 'AMB_JLT';
58686 l_component_code             := 'RCT_PREPAYMENT';
58687 l_component_type_code        := 'S';
58688 l_component_appl_id          :=  222;
58689 l_amb_context_code           := 'DEFAULT';
58690 l_entity_code                := 'RECEIPTS';
58691 l_event_class_code           := 'RECEIPT';
58692 l_event_type_code            := 'RECEIPT_ALL';
58693 l_line_definition_owner_code := 'S';
58694 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
58695 --
58696 l_balance_type_code          := 'A';
58697 l_segment                     := NULL;
58698 l_ccid                        := NULL;
58699 l_adr_transaction_coa_id      := NULL;
58703 l_adr_value_type_code         := NULL;
58700 l_adr_accounting_coa_id       := NULL;
58701 l_adr_flexfield_segment_code  := NULL;
58702 l_adr_flex_value_set_id       := NULL;
58704 l_adr_value_combination_id    := NULL;
58705 l_adr_value_segment_code      := NULL;
58706 
58707 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
58708 l_bflow_class_code           := '';    -- 4219869 Business Flow
58709 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
58710 l_budgetary_control_flag     := 'N';
58711 
58712 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
58713 l_bflow_applied_to_amt       := NULL; -- 5132302
58714 l_entered_amt_idx            := NULL;          -- 4262811
58715 l_accted_amt_idx             := NULL;          -- 4262811
58716 l_acc_rev_flag               := NULL;          -- 4262811
58717 l_accrual_line_num           := NULL;          -- 4262811
58718 l_tmp_amt                    := NULL;          -- 4262811
58719 --
58720  
58721 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
58722     l_balance_type_code <> 'B' THEN
58723 IF NVL(p_source_39,'
58724 ') =  'OTHER ACC' AND 
58725 NVL(p_source_40,'
58726 ') =  'PREPAYMENT' AND 
58727 NVL(p_source_99,'
58728 ') =  'N'
58729  THEN 
58730 
58731    --
58732    XLA_AE_LINES_PKG.SetNewLine;
58733 
58734    p_balance_type_code          := l_balance_type_code;
58735    -- set the flag so later we will know whether the gain loss line needs to be created
58736    
58737    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
58738      p_actual_flag :='A';
58739    END IF;
58740 
58741    --
58742    -- bulk performance
58743    --
58744    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
58745                                       p_header_num   => 0); -- 4262811
58746    --
58747    -- set accounting line options
58748    --
58749    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
58750            p_natural_side_code          => 'C'
58751          , p_gain_or_loss_flag          => 'N'
58752          , p_gl_transfer_mode_code      => 'S'
58753          , p_acct_entry_type_code       => 'A'
58754          , p_switch_side_flag           => 'Y'
58755          , p_merge_duplicate_code       => 'A'
58756          );
58757    --
58758    l_acc_rev_natural_side_code := 'D';  -- 4262811
58759    -- 
58760    --
58761    -- set accounting line type info
58762    --
58763    xla_ae_lines_pkg.SetAcctLineType
58764       (p_component_type             => l_component_type
58765       ,p_event_type_code            => l_event_type_code
58766       ,p_line_definition_owner_code => l_line_definition_owner_code
58767       ,p_line_definition_code       => l_line_definition_code
58768       ,p_accounting_line_code       => l_component_code
58769       ,p_accounting_line_type_code  => l_component_type_code
58770       ,p_accounting_line_appl_id    => l_component_appl_id
58771       ,p_amb_context_code           => l_amb_context_code
58772       ,p_entity_code                => l_entity_code
58773       ,p_event_class_code           => l_event_class_code);
58774    --
58775    -- set accounting class
58776    --
58777    xla_ae_lines_pkg.SetAcctClass(
58778            p_accounting_class_code  => 'PREPAY'
58779          , p_ae_header_id           => l_ae_header_id
58780          );
58781 
58782    --
58783    -- set rounding class
58784    --
58788    --
58785    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
58786                       'RECEIVABLE';
58787 
58789    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
58790    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
58791    --
58792    -- bulk performance
58793    --
58794    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
58795 
58796    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
58797       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
58798 
58799    -- 4955764
58800    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
58801       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
58802 
58803    -- 4458381 Public Sector Enh
58804    
58805    --
58806    -- set accounting attributes for the line type
58807    --
58808    l_entered_amt_idx := 8;
58809    l_accted_amt_idx  := 13;
58810    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
58811    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
58812    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
58813    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
58814    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
58815    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
58816    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
58817    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
58818    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
58819    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
58820    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
58821    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
58822    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
58823    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
58824    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
58825    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
58826    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
58827    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
58828    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
58829    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
58830    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
58831    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
58832    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
58833    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
58834    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
58835    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
58836    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
58837    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
58838    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
58839    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
58840    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
58841    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
58842    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
58843 
58844    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
58845    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
58846 
58847    ---------------------------------------------------------------------------------------------------------------
58848    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
58849    ---------------------------------------------------------------------------------------------------------------
58850    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
58851 
58852    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58853    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
58854 
58855    IF xla_accounting_cache_pkg.GetValueChar
58856          (p_source_code         => 'LEDGER_CATEGORY_CODE'
58857          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
58858    AND l_bflow_method_code = 'PRIOR_ENTRY'
58859 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
58860    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
58861          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
58862        )
58863    THEN
58864          xla_ae_lines_pkg.BflowUpgEntry
58865            (p_business_method_code    => l_bflow_method_code
58866            ,p_business_class_code     => l_bflow_class_code
58867            ,p_balance_type            => l_balance_type_code);
58868    ELSE
58869       NULL;
58870 -- No business flow processing for business flow method of NONE.
58871    END IF;
58872 
58873    --
58874    -- call analytical criteria
58875    --
58876    
58877    --
58878    -- call description
58879    --
58880    -- No description or it is inherited.
58881    --
58882    -- call ADRs
58883    -- Bug 4922099
58884    --
58888       )
58885    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
58886         (NVL(l_actual_upg_option, 'N') = 'O') OR
58887         (NVL(l_enc_upg_option, 'N') = 'O')
58889    THEN
58890    NULL;
58891    --
58892    --
58893    
58894   l_ccid := AcctDerRule_29(
58895            p_application_id           => p_application_id
58896          , p_ae_header_id             => l_ae_header_id 
58897 , p_source_32 => p_source_32
58898          , x_transaction_coa_id       => l_adr_transaction_coa_id
58899          , x_accounting_coa_id        => l_adr_accounting_coa_id
58900          , x_value_type_code          => l_adr_value_type_code
58901          , p_side                     => 'NA'
58902    );
58903 
58904    xla_ae_lines_pkg.set_ccid(
58905     p_code_combination_id          => l_ccid
58906   , p_value_type_code              => l_adr_value_type_code
58907   , p_transaction_coa_id           => l_adr_transaction_coa_id
58908   , p_accounting_coa_id            => l_adr_accounting_coa_id
58909   , p_adr_code                     => 'DIST_CCID'
58910   , p_adr_type_code                => 'S'
58911   , p_component_type               => l_component_type
58912   , p_component_code               => l_component_code
58913   , p_component_type_code          => l_component_type_code
58914   , p_component_appl_id            => l_component_appl_id
58915   , p_amb_context_code             => l_amb_context_code
58916   , p_side                         => 'NA'
58917   );
58918 
58919 
58920    --
58921    --
58922    END IF;
58923    --
58924    -- Bug 4922099
58925    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
58926           (NVL(l_enc_upg_option, 'N') = 'O')
58927         ) AND
58928         (l_bflow_method_code = 'PRIOR_ENTRY')
58929       )
58930    THEN
58931       IF
58932       --
58933       1 = 2
58934       --
58935       THEN
58936       xla_accounting_err_pkg.build_message
58937                                     (p_appli_s_name            => 'XLA'
58938                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58939                                     ,p_token_1                 => 'LINE_NUMBER'
58940                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
58941                                     ,p_token_2                 => 'LINE_TYPE_NAME'
58942                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
58943                                                                              l_component_type
58944                                                                             ,l_component_code
58945                                                                             ,l_component_type_code
58946                                                                             ,l_component_appl_id
58947                                                                             ,l_amb_context_code
58948                                                                             ,l_entity_code
58949                                                                             ,l_event_class_code
58950                                                                            )
58951                                     ,p_token_3                 => 'OWNER'
58952                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
58953                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
58954                                                                           ,p_lookup_code    => l_component_type_code
58955                                                                          )
58956                                     ,p_token_4                 => 'PRODUCT_NAME'
58957                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
58958                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
58959                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
58960                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
58961                                     ,p_ae_header_id            =>  NULL
58962                                        );
58963 
58964         IF (C_LEVEL_ERROR>= g_log_level) THEN
58965                  trace
58966                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
58967                       ,p_level    => C_LEVEL_ERROR
58968                       ,p_module   => l_log_module);
58969         END IF;
58970       END IF;
58971    END IF;
58972    --
58973    --
58974    ------------------------------------------------------------------------------------------------
58975    -- 4219869 Business Flow
58976    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
58977    -- Prior Entry.  Currently, the following code is always generated.
58978    ------------------------------------------------------------------------------------------------
58979    XLA_AE_LINES_PKG.ValidateCurrentLine;
58980 
58981    ------------------------------------------------------------------------------------
58982    -- 4219869 Business Flow
58983    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
58984    ------------------------------------------------------------------------------------
58985    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
58986 
58990    ----------------------------------------------------------------------------------
58987    ----------------------------------------------------------------------------------
58988    -- 4219869 Business Flow
58989    -- Update journal entry status -- Need to generate this within IF <condition>
58991    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
58992          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
58993          ,p_balance_type_code => l_balance_type_code
58994          );
58995 
58996    -------------------------------------------------------------------------------------------
58997    -- 4262811 - Generate the Accrual Reversal lines
58998    -------------------------------------------------------------------------------------------
58999    BEGIN
59000       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
59001                               (g_array_event(p_event_id).array_value_num('header_index'));
59002       IF l_acc_rev_flag IS NULL THEN
59003          l_acc_rev_flag := 'N';
59004       END IF;
59005    EXCEPTION
59006       WHEN OTHERS THEN
59007          l_acc_rev_flag := 'N';
59008    END;
59009    --
59010    IF (l_acc_rev_flag = 'Y') THEN
59011 
59012        -- 4645092  ------------------------------------------------------------------------------
59013        -- To allow MPA report to determine if it should generate report process
59014        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
59015        ------------------------------------------------------------------------------------------
59016 
59017        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
59018        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
59019    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
59020    -- call ADRs
59021    -- Bug 4922099
59022    --
59023    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59024         (NVL(l_actual_upg_option, 'N') = 'O') OR
59025         (NVL(l_enc_upg_option, 'N') = 'O')
59026       )
59027    THEN
59028    NULL;
59029    --
59030    --
59031    
59032   l_ccid := AcctDerRule_29(
59033            p_application_id           => p_application_id
59034          , p_ae_header_id             => l_ae_header_id 
59035 , p_source_32 => p_source_32
59036          , x_transaction_coa_id       => l_adr_transaction_coa_id
59037          , x_accounting_coa_id        => l_adr_accounting_coa_id
59038          , x_value_type_code          => l_adr_value_type_code
59039          , p_side                     => 'NA'
59040    );
59041 
59042    xla_ae_lines_pkg.set_ccid(
59043     p_code_combination_id          => l_ccid
59044   , p_value_type_code              => l_adr_value_type_code
59045   , p_transaction_coa_id           => l_adr_transaction_coa_id
59046   , p_accounting_coa_id            => l_adr_accounting_coa_id
59047   , p_adr_code                     => 'DIST_CCID'
59048   , p_adr_type_code                => 'S'
59049   , p_component_type               => l_component_type
59050   , p_component_code               => l_component_code
59051   , p_component_type_code          => l_component_type_code
59052   , p_component_appl_id            => l_component_appl_id
59053   , p_amb_context_code             => l_amb_context_code
59054   , p_side                         => 'NA'
59055   );
59056 
59057 
59058    --
59059    --
59060    END IF;
59061 
59062        --
59063        -- Update the line information that should be overwritten
59064        --
59065        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59066                                          p_header_num   => 1);
59067        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
59068 
59069        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59070 
59071        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
59072           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59073        END IF;
59074 
59075       --
59079           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
59076       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59077       --
59078       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59080       ELSE
59081           ---------------------------------------------------------------------------------------------------
59082           -- 4262811a Switch Sign
59083           ---------------------------------------------------------------------------------------------------
59084           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
59085           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59086                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59087           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59088                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59089           -- 5132302
59090           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59091                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59092 
59093       END IF;
59094 
59095       -- 4955764
59096       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59097       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59098 
59099 
59100       XLA_AE_LINES_PKG.ValidateCurrentLine;
59101       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59102 
59103       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59104                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59105                ,p_balance_type_code => l_balance_type_code);
59106 
59107    END IF;
59108 
59109    -----------------------------------------------------------------------------------------
59110    -- 4262811 Multiperiod Accounting
59111    -----------------------------------------------------------------------------------------
59112      -- No MPA option is assigned.
59113 
59114 
59115 END IF;
59116 END IF;
59117 --
59118 
59119 --
59120 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59121    trace
59122       (p_msg      => 'END of AcctLineType_130'
59123       ,p_level    => C_LEVEL_PROCEDURE
59124       ,p_module   => l_log_module);
59125 END IF;
59126 --
59127 EXCEPTION
59128   WHEN xla_exceptions_pkg.application_exception THEN
59129       RAISE;
59130   WHEN OTHERS THEN
59131        xla_exceptions_pkg.raise_message
59132            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_130');
59133 END AcctLineType_130;
59134 --
59135 
59136 ---------------------------------------
59137 --
59138 -- PRIVATE FUNCTION
59139 --         AcctLineType_131
59140 --
59141 ---------------------------------------
59142 PROCEDURE AcctLineType_131 (
59143   p_application_id        IN NUMBER
59144  ,p_event_id              IN NUMBER
59145  ,p_calculate_acctd_flag  IN VARCHAR2
59146  ,p_calculate_g_l_flag    IN VARCHAR2
59147  ,p_actual_flag           IN OUT VARCHAR2
59148  ,p_balance_type_code     OUT VARCHAR2
59149  ,p_gain_or_loss_ref      OUT VARCHAR2
59150  
59151 --Distribution GL Account
59152  , p_source_32            IN NUMBER
59153 --Distribution Source Type
59154  , p_source_39            IN VARCHAR2
59155 --Receivable Activity Type
59156  , p_source_40            IN VARCHAR2
59157 --Distribution Line Identifier
59158  , p_source_41            IN NUMBER
59159 --Distribution Type
59160  , p_source_42            IN VARCHAR2
59161 --Exchange Date
59162  , p_source_45            IN DATE
59163 --Exchange Rate
59164  , p_source_46            IN NUMBER
59165 --Exchange Rate Type
59166  , p_source_47            IN VARCHAR2
59167 --Accounting Amount
59168  , p_source_52            IN NUMBER
59169 --Transaction Distribution Identifier
59170  , p_source_56            IN NUMBER
59171 --Transaction Distribution Type
59172  , p_source_57            IN VARCHAR2
59173 --Distribution Multi Fund Additional Entry
59174  , p_source_99            IN VARCHAR2
59175 --Receipt Applied To Application Identifier
59176  , p_source_101            IN NUMBER
59177 --Transaction Entity Code
59178  , p_source_102            IN VARCHAR2
59179 --Transaction Identifier
59180  , p_source_103            IN NUMBER
59181 --DIST_ENT_AMT_FROM
59182  , p_source_104            IN NUMBER
59183 --Applying Document Currency Code
59184  , p_source_105            IN VARCHAR2
59185 --Distribution Party Identifier
59186  , p_source_106            IN NUMBER
59187 --Distribution Party Site Id
59188  , p_source_107            IN NUMBER
59189 --Distribution Party Type
59190  , p_source_108            IN VARCHAR2
59191 )
59192 IS
59193 
59194 l_component_type              VARCHAR2(80);
59195 l_component_code              VARCHAR2(30);
59196 l_component_type_code         VARCHAR2(1);
59197 l_component_appl_id           INTEGER;
59198 l_amb_context_code            VARCHAR2(30);
59199 l_entity_code                 VARCHAR2(30);
59200 l_event_class_code            VARCHAR2(30);
59201 l_ae_header_id                NUMBER;
59202 l_event_type_code             VARCHAR2(30);
59206 -- adr variables
59203 l_line_definition_code        VARCHAR2(30);
59204 l_line_definition_owner_code  VARCHAR2(1);
59205 --
59207 l_segment                     VARCHAR2(30);
59208 l_ccid                        NUMBER;
59209 l_adr_transaction_coa_id      NUMBER;
59210 l_adr_accounting_coa_id       NUMBER;
59211 l_adr_flexfield_segment_code  VARCHAR2(30);
59212 l_adr_flex_value_set_id       NUMBER;
59213 l_adr_value_type_code         VARCHAR2(30);
59214 l_adr_value_combination_id    NUMBER;
59215 l_adr_value_segment_code      VARCHAR2(30);
59216 
59217 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
59218 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
59219 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
59220 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
59221 
59222 -- 4262811 Variables ------------------------------------------------------------------------------------------
59223 l_entered_amt_idx             NUMBER;
59224 l_accted_amt_idx              NUMBER;
59225 l_acc_rev_flag                VARCHAR2(1);
59226 l_accrual_line_num            NUMBER;
59227 l_tmp_amt                     NUMBER;
59228 l_acc_rev_natural_side_code   VARCHAR2(1);
59229 
59230 l_num_entries                 NUMBER;
59231 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
59232 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
59233 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
59234 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
59235 l_recog_line_1                NUMBER;
59236 l_recog_line_2                NUMBER;
59237 
59238 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
59239 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
59240 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
59241 
59242 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
59243 
59244 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
59245 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
59246 
59247 ---------------------------------------------------------------------------------------------------------------
59248 
59249 
59250 --
59251 -- bulk performance
59252 --
59253 l_balance_type_code           VARCHAR2(1);
59254 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
59255 l_log_module                  VARCHAR2(240);
59256 
59257 --
59258 -- Upgrade strategy
59259 --
59260 l_actual_upg_option           VARCHAR2(1);
59261 l_enc_upg_option           VARCHAR2(1);
59262 
59263 --
59264 BEGIN
59265 --
59266 IF g_log_enabled THEN
59267       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_131';
59268 END IF;
59269 --
59270 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59271 
59272       trace
59273          (p_msg      => 'BEGIN of AcctLineType_131'
59274          ,p_level    => C_LEVEL_PROCEDURE
59275          ,p_module   => l_log_module);
59276 
59277 END IF;
59278 --
59279 l_component_type             := 'AMB_JLT';
59280 l_component_code             := 'RCT_REFUND';
59281 l_component_type_code        := 'S';
59282 l_component_appl_id          :=  222;
59283 l_amb_context_code           := 'DEFAULT';
59284 l_entity_code                := 'RECEIPTS';
59285 l_event_class_code           := 'RECEIPT';
59286 l_event_type_code            := 'RECEIPT_ALL';
59287 l_line_definition_owner_code := 'S';
59288 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
59289 --
59290 l_balance_type_code          := 'A';
59291 l_segment                     := NULL;
59292 l_ccid                        := NULL;
59293 l_adr_transaction_coa_id      := NULL;
59297 l_adr_value_type_code         := NULL;
59294 l_adr_accounting_coa_id       := NULL;
59295 l_adr_flexfield_segment_code  := NULL;
59296 l_adr_flex_value_set_id       := NULL;
59298 l_adr_value_combination_id    := NULL;
59299 l_adr_value_segment_code      := NULL;
59300 
59301 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
59302 l_bflow_class_code           := '';    -- 4219869 Business Flow
59303 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
59304 l_budgetary_control_flag     := 'N';
59305 
59306 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
59307 l_bflow_applied_to_amt       := NULL; -- 5132302
59308 l_entered_amt_idx            := NULL;          -- 4262811
59309 l_accted_amt_idx             := NULL;          -- 4262811
59310 l_acc_rev_flag               := NULL;          -- 4262811
59311 l_accrual_line_num           := NULL;          -- 4262811
59312 l_tmp_amt                    := NULL;          -- 4262811
59313 --
59314  
59315 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59316     l_balance_type_code <> 'B' THEN
59317 IF (NVL(p_source_39,'
59318 ') =  'ACTIVITY' AND 
59319 NVL(p_source_40,'
59320 ') =  'CCREFUND' AND 
59321 NVL(p_source_99,'
59322 ') =  'N') OR 
59323 (NVL(p_source_39,'
59324 ') =  'ACTIVITY' AND 
59325 NVL(p_source_40,'
59326 ') =  'CM_REFUND' AND 
59327 NVL(p_source_99,'
59328 ') =  'N')
59329  THEN 
59330 
59331    --
59332    XLA_AE_LINES_PKG.SetNewLine;
59333 
59334    p_balance_type_code          := l_balance_type_code;
59335    -- set the flag so later we will know whether the gain loss line needs to be created
59336    
59337    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59338      p_actual_flag :='A';
59339    END IF;
59340 
59341    --
59342    -- bulk performance
59343    --
59344    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59345                                       p_header_num   => 0); -- 4262811
59346    --
59347    -- set accounting line options
59348    --
59349    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59350            p_natural_side_code          => 'C'
59351          , p_gain_or_loss_flag          => 'N'
59352          , p_gl_transfer_mode_code      => 'S'
59353          , p_acct_entry_type_code       => 'A'
59354          , p_switch_side_flag           => 'Y'
59355          , p_merge_duplicate_code       => 'A'
59356          );
59357    --
59358    l_acc_rev_natural_side_code := 'D';  -- 4262811
59359    -- 
59360    --
59361    -- set accounting line type info
59362    --
59363    xla_ae_lines_pkg.SetAcctLineType
59364       (p_component_type             => l_component_type
59365       ,p_event_type_code            => l_event_type_code
59366       ,p_line_definition_owner_code => l_line_definition_owner_code
59367       ,p_line_definition_code       => l_line_definition_code
59368       ,p_accounting_line_code       => l_component_code
59369       ,p_accounting_line_type_code  => l_component_type_code
59370       ,p_accounting_line_appl_id    => l_component_appl_id
59371       ,p_amb_context_code           => l_amb_context_code
59372       ,p_entity_code                => l_entity_code
59373       ,p_event_class_code           => l_event_class_code);
59374    --
59375    -- set accounting class
59376    --
59377    xla_ae_lines_pkg.SetAcctClass(
59378            p_accounting_class_code  => 'REFUND'
59379          , p_ae_header_id           => l_ae_header_id
59380          );
59381 
59382    --
59383    -- set rounding class
59384    --
59385    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59386                       'RECEIVABLE';
59387 
59388    --
59389    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59390    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59391    --
59392    -- bulk performance
59393    --
59394    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59395 
59396    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59397       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59398 
59399    -- 4955764
59400    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59401       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59402 
59403    -- 4458381 Public Sector Enh
59404    
59405    --
59406    -- set accounting attributes for the line type
59407    --
59408    l_entered_amt_idx := 8;
59409    l_accted_amt_idx  := 13;
59410    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
59411    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
59412    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
59413    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
59414    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
59415    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
59416    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
59417    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
59418    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
59419    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
59423    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
59420    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
59421    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
59422    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
59424    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
59425    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
59426    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
59427    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
59428    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
59429    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
59430    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
59431    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
59432    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
59433    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
59434    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
59435    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
59436    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
59437    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
59438    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
59439    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
59440    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
59441    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
59442    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
59443 
59444    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
59445    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
59446 
59447    ---------------------------------------------------------------------------------------------------------------
59448    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
59449    ---------------------------------------------------------------------------------------------------------------
59450    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
59451 
59452    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59453    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
59454 
59455    IF xla_accounting_cache_pkg.GetValueChar
59456          (p_source_code         => 'LEDGER_CATEGORY_CODE'
59457          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
59458    AND l_bflow_method_code = 'PRIOR_ENTRY'
59459 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
59460    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
59461          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
59462        )
59463    THEN
59464          xla_ae_lines_pkg.BflowUpgEntry
59465            (p_business_method_code    => l_bflow_method_code
59466            ,p_business_class_code     => l_bflow_class_code
59467            ,p_balance_type            => l_balance_type_code);
59468    ELSE
59472 
59469       NULL;
59470 -- No business flow processing for business flow method of NONE.
59471    END IF;
59473    --
59474    -- call analytical criteria
59475    --
59476    
59477    --
59478    -- call description
59479    --
59480    -- No description or it is inherited.
59481    --
59482    -- call ADRs
59483    -- Bug 4922099
59484    --
59485    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59486         (NVL(l_actual_upg_option, 'N') = 'O') OR
59487         (NVL(l_enc_upg_option, 'N') = 'O')
59488       )
59489    THEN
59490    NULL;
59491    --
59492    --
59493    
59494   l_ccid := AcctDerRule_29(
59495            p_application_id           => p_application_id
59496          , p_ae_header_id             => l_ae_header_id 
59497 , p_source_32 => p_source_32
59498          , x_transaction_coa_id       => l_adr_transaction_coa_id
59499          , x_accounting_coa_id        => l_adr_accounting_coa_id
59500          , x_value_type_code          => l_adr_value_type_code
59501          , p_side                     => 'NA'
59502    );
59503 
59504    xla_ae_lines_pkg.set_ccid(
59505     p_code_combination_id          => l_ccid
59506   , p_value_type_code              => l_adr_value_type_code
59507   , p_transaction_coa_id           => l_adr_transaction_coa_id
59508   , p_accounting_coa_id            => l_adr_accounting_coa_id
59509   , p_adr_code                     => 'DIST_CCID'
59510   , p_adr_type_code                => 'S'
59511   , p_component_type               => l_component_type
59512   , p_component_code               => l_component_code
59513   , p_component_type_code          => l_component_type_code
59514   , p_component_appl_id            => l_component_appl_id
59515   , p_amb_context_code             => l_amb_context_code
59516   , p_side                         => 'NA'
59517   );
59518 
59519 
59520    --
59521    --
59522    END IF;
59523    --
59524    -- Bug 4922099
59525    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
59526           (NVL(l_enc_upg_option, 'N') = 'O')
59527         ) AND
59528         (l_bflow_method_code = 'PRIOR_ENTRY')
59529       )
59530    THEN
59531       IF
59532       --
59533       1 = 2
59534       --
59535       THEN
59536       xla_accounting_err_pkg.build_message
59537                                     (p_appli_s_name            => 'XLA'
59538                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59539                                     ,p_token_1                 => 'LINE_NUMBER'
59540                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
59541                                     ,p_token_2                 => 'LINE_TYPE_NAME'
59542                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
59543                                                                              l_component_type
59544                                                                             ,l_component_code
59545                                                                             ,l_component_type_code
59546                                                                             ,l_component_appl_id
59547                                                                             ,l_amb_context_code
59548                                                                             ,l_entity_code
59549                                                                             ,l_event_class_code
59550                                                                            )
59551                                     ,p_token_3                 => 'OWNER'
59552                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
59553                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
59554                                                                           ,p_lookup_code    => l_component_type_code
59555                                                                          )
59556                                     ,p_token_4                 => 'PRODUCT_NAME'
59557                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
59558                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
59559                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
59560                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
59561                                     ,p_ae_header_id            =>  NULL
59562                                        );
59563 
59564         IF (C_LEVEL_ERROR>= g_log_level) THEN
59565                  trace
59566                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
59567                       ,p_level    => C_LEVEL_ERROR
59568                       ,p_module   => l_log_module);
59569         END IF;
59570       END IF;
59571    END IF;
59572    --
59573    --
59574    ------------------------------------------------------------------------------------------------
59575    -- 4219869 Business Flow
59576    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
59577    -- Prior Entry.  Currently, the following code is always generated.
59578    ------------------------------------------------------------------------------------------------
59579    XLA_AE_LINES_PKG.ValidateCurrentLine;
59580 
59584    ------------------------------------------------------------------------------------
59581    ------------------------------------------------------------------------------------
59582    -- 4219869 Business Flow
59583    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
59585    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59586 
59587    ----------------------------------------------------------------------------------
59588    -- 4219869 Business Flow
59589    -- Update journal entry status -- Need to generate this within IF <condition>
59590    ----------------------------------------------------------------------------------
59591    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59592          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
59593          ,p_balance_type_code => l_balance_type_code
59594          );
59595 
59596    -------------------------------------------------------------------------------------------
59597    -- 4262811 - Generate the Accrual Reversal lines
59598    -------------------------------------------------------------------------------------------
59599    BEGIN
59600       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
59601                               (g_array_event(p_event_id).array_value_num('header_index'));
59602       IF l_acc_rev_flag IS NULL THEN
59603          l_acc_rev_flag := 'N';
59604       END IF;
59605    EXCEPTION
59606       WHEN OTHERS THEN
59607          l_acc_rev_flag := 'N';
59608    END;
59609    --
59610    IF (l_acc_rev_flag = 'Y') THEN
59611 
59612        -- 4645092  ------------------------------------------------------------------------------
59613        -- To allow MPA report to determine if it should generate report process
59614        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
59615        ------------------------------------------------------------------------------------------
59616 
59617        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
59618        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
59619    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
59620    -- call ADRs
59621    -- Bug 4922099
59622    --
59623    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
59624         (NVL(l_actual_upg_option, 'N') = 'O') OR
59625         (NVL(l_enc_upg_option, 'N') = 'O')
59626       )
59627    THEN
59628    NULL;
59629    --
59630    --
59631    
59632   l_ccid := AcctDerRule_29(
59633            p_application_id           => p_application_id
59634          , p_ae_header_id             => l_ae_header_id 
59635 , p_source_32 => p_source_32
59636          , x_transaction_coa_id       => l_adr_transaction_coa_id
59637          , x_accounting_coa_id        => l_adr_accounting_coa_id
59638          , x_value_type_code          => l_adr_value_type_code
59639          , p_side                     => 'NA'
59640    );
59641 
59642    xla_ae_lines_pkg.set_ccid(
59643     p_code_combination_id          => l_ccid
59644   , p_value_type_code              => l_adr_value_type_code
59645   , p_transaction_coa_id           => l_adr_transaction_coa_id
59646   , p_accounting_coa_id            => l_adr_accounting_coa_id
59647   , p_adr_code                     => 'DIST_CCID'
59648   , p_adr_type_code                => 'S'
59649   , p_component_type               => l_component_type
59650   , p_component_code               => l_component_code
59651   , p_component_type_code          => l_component_type_code
59652   , p_component_appl_id            => l_component_appl_id
59653   , p_amb_context_code             => l_amb_context_code
59654   , p_side                         => 'NA'
59655   );
59656 
59657 
59658    --
59659    --
59660    END IF;
59661 
59662        --
59663        -- Update the line information that should be overwritten
59664        --
59665        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
59666                                          p_header_num   => 1);
59667        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
59668 
59669        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
59670 
59671        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
59672           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
59676       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
59673        END IF;
59674 
59675       --
59677       --
59678       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
59679           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
59680       ELSE
59681           ---------------------------------------------------------------------------------------------------
59682           -- 4262811a Switch Sign
59683           ---------------------------------------------------------------------------------------------------
59684           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
59685           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59686                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59687           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
59688                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59689           -- 5132302
59690           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
59691                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
59692 
59693       END IF;
59694 
59695       -- 4955764
59696       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59697       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
59698 
59699 
59700       XLA_AE_LINES_PKG.ValidateCurrentLine;
59701       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
59702 
59703       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
59704                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
59705                ,p_balance_type_code => l_balance_type_code);
59706 
59707    END IF;
59708 
59709    -----------------------------------------------------------------------------------------
59710    -- 4262811 Multiperiod Accounting
59711    -----------------------------------------------------------------------------------------
59712      -- No MPA option is assigned.
59713 
59714 
59715 END IF;
59716 END IF;
59717 --
59718 
59719 --
59720 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59721    trace
59722       (p_msg      => 'END of AcctLineType_131'
59723       ,p_level    => C_LEVEL_PROCEDURE
59724       ,p_module   => l_log_module);
59725 END IF;
59726 --
59727 EXCEPTION
59728   WHEN xla_exceptions_pkg.application_exception THEN
59729       RAISE;
59730   WHEN OTHERS THEN
59731        xla_exceptions_pkg.raise_message
59732            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_131');
59733 END AcctLineType_131;
59734 --
59735 
59736 ---------------------------------------
59737 --
59738 -- PRIVATE FUNCTION
59739 --         AcctLineType_132
59740 --
59741 ---------------------------------------
59742 PROCEDURE AcctLineType_132 (
59743   p_application_id        IN NUMBER
59744  ,p_event_id              IN NUMBER
59745  ,p_calculate_acctd_flag  IN VARCHAR2
59746  ,p_calculate_g_l_flag    IN VARCHAR2
59747  ,p_actual_flag           IN OUT VARCHAR2
59748  ,p_balance_type_code     OUT VARCHAR2
59749  ,p_gain_or_loss_ref      OUT VARCHAR2
59750  
59751 --Distribution GL Account
59752  , p_source_32            IN NUMBER
59756  , p_source_41            IN NUMBER
59753 --Distribution Source Type
59754  , p_source_39            IN VARCHAR2
59755 --Distribution Line Identifier
59757 --Distribution Type
59758  , p_source_42            IN VARCHAR2
59759 --Exchange Date
59760  , p_source_45            IN DATE
59761 --Exchange Rate
59762  , p_source_46            IN NUMBER
59763 --Exchange Rate Type
59764  , p_source_47            IN VARCHAR2
59765 --Accounting Amount
59766  , p_source_52            IN NUMBER
59767 --Transaction Distribution Identifier
59768  , p_source_56            IN NUMBER
59769 --Transaction Distribution Type
59770  , p_source_57            IN VARCHAR2
59771 --Distribution Multi Fund Additional Entry
59772  , p_source_99            IN VARCHAR2
59773 --Receipt Applied To Application Identifier
59774  , p_source_101            IN NUMBER
59775 --Transaction Entity Code
59776  , p_source_102            IN VARCHAR2
59777 --Transaction Identifier
59778  , p_source_103            IN NUMBER
59779 --DIST_ENT_AMT_FROM
59780  , p_source_104            IN NUMBER
59781 --Applying Document Currency Code
59782  , p_source_105            IN VARCHAR2
59783 --Distribution Party Identifier
59784  , p_source_106            IN NUMBER
59785 --Distribution Party Site Id
59786  , p_source_107            IN NUMBER
59787 --Distribution Party Type
59788  , p_source_108            IN VARCHAR2
59789 --Distribution Source Table
59790  , p_source_111            IN VARCHAR2
59791 )
59792 IS
59793 
59794 l_component_type              VARCHAR2(80);
59795 l_component_code              VARCHAR2(30);
59796 l_component_type_code         VARCHAR2(1);
59797 l_component_appl_id           INTEGER;
59798 l_amb_context_code            VARCHAR2(30);
59799 l_entity_code                 VARCHAR2(30);
59800 l_event_class_code            VARCHAR2(30);
59801 l_ae_header_id                NUMBER;
59802 l_event_type_code             VARCHAR2(30);
59803 l_line_definition_code        VARCHAR2(30);
59804 l_line_definition_owner_code  VARCHAR2(1);
59805 --
59806 -- adr variables
59807 l_segment                     VARCHAR2(30);
59808 l_ccid                        NUMBER;
59809 l_adr_transaction_coa_id      NUMBER;
59810 l_adr_accounting_coa_id       NUMBER;
59811 l_adr_flexfield_segment_code  VARCHAR2(30);
59812 l_adr_flex_value_set_id       NUMBER;
59813 l_adr_value_type_code         VARCHAR2(30);
59814 l_adr_value_combination_id    NUMBER;
59815 l_adr_value_segment_code      VARCHAR2(30);
59816 
59817 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
59818 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
59819 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
59820 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
59821 
59822 -- 4262811 Variables ------------------------------------------------------------------------------------------
59823 l_entered_amt_idx             NUMBER;
59824 l_accted_amt_idx              NUMBER;
59825 l_acc_rev_flag                VARCHAR2(1);
59826 l_accrual_line_num            NUMBER;
59827 l_tmp_amt                     NUMBER;
59828 l_acc_rev_natural_side_code   VARCHAR2(1);
59829 
59830 l_num_entries                 NUMBER;
59831 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
59832 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
59833 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
59834 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
59835 l_recog_line_1                NUMBER;
59836 l_recog_line_2                NUMBER;
59837 
59838 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
59839 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
59840 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
59841 
59842 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
59843 
59844 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
59845 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
59846 
59847 ---------------------------------------------------------------------------------------------------------------
59848 
59849 
59850 --
59851 -- bulk performance
59852 --
59853 l_balance_type_code           VARCHAR2(1);
59854 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
59855 l_log_module                  VARCHAR2(240);
59856 
59857 --
59858 -- Upgrade strategy
59859 --
59860 l_actual_upg_option           VARCHAR2(1);
59861 l_enc_upg_option           VARCHAR2(1);
59862 
59863 --
59864 BEGIN
59865 --
59866 IF g_log_enabled THEN
59867       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_132';
59868 END IF;
59869 --
59870 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
59871 
59875          ,p_module   => l_log_module);
59872       trace
59873          (p_msg      => 'BEGIN of AcctLineType_132'
59874          ,p_level    => C_LEVEL_PROCEDURE
59876 
59877 END IF;
59878 --
59879 l_component_type             := 'AMB_JLT';
59880 l_component_code             := 'RCT_REMIT';
59881 l_component_type_code        := 'S';
59882 l_component_appl_id          :=  222;
59883 l_amb_context_code           := 'DEFAULT';
59884 l_entity_code                := 'RECEIPTS';
59885 l_event_class_code           := 'RECEIPT';
59886 l_event_type_code            := 'RECEIPT_ALL';
59887 l_line_definition_owner_code := 'S';
59888 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
59889 --
59890 l_balance_type_code          := 'A';
59891 l_segment                     := NULL;
59892 l_ccid                        := NULL;
59893 l_adr_transaction_coa_id      := NULL;
59894 l_adr_accounting_coa_id       := NULL;
59895 l_adr_flexfield_segment_code  := NULL;
59896 l_adr_flex_value_set_id       := NULL;
59897 l_adr_value_type_code         := NULL;
59898 l_adr_value_combination_id    := NULL;
59899 l_adr_value_segment_code      := NULL;
59900 
59901 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
59902 l_bflow_class_code           := '';    -- 4219869 Business Flow
59903 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
59904 l_budgetary_control_flag     := 'N';
59905 
59906 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
59907 l_bflow_applied_to_amt       := NULL; -- 5132302
59908 l_entered_amt_idx            := NULL;          -- 4262811
59909 l_accted_amt_idx             := NULL;          -- 4262811
59910 l_acc_rev_flag               := NULL;          -- 4262811
59911 l_accrual_line_num           := NULL;          -- 4262811
59912 l_tmp_amt                    := NULL;          -- 4262811
59913 --
59914  
59915 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
59916     l_balance_type_code <> 'B' THEN
59917 IF NVL(p_source_39,'
59918 ') =  'REMITTANCE' AND 
59919 NVL(p_source_111,'
59920 ') =  'CRH' AND 
59921 NVL(p_source_99,'
59922 ') =  'N'
59923  THEN 
59924 
59925    --
59926    XLA_AE_LINES_PKG.SetNewLine;
59927 
59928    p_balance_type_code          := l_balance_type_code;
59929    -- set the flag so later we will know whether the gain loss line needs to be created
59930    
59931    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
59932      p_actual_flag :='A';
59933    END IF;
59934 
59935    --
59936    -- bulk performance
59937    --
59938    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
59939                                       p_header_num   => 0); -- 4262811
59940    --
59941    -- set accounting line options
59942    --
59943    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
59944            p_natural_side_code          => 'C'
59945          , p_gain_or_loss_flag          => 'N'
59946          , p_gl_transfer_mode_code      => 'S'
59947          , p_acct_entry_type_code       => 'A'
59948          , p_switch_side_flag           => 'Y'
59949          , p_merge_duplicate_code       => 'A'
59950          );
59951    --
59952    l_acc_rev_natural_side_code := 'D';  -- 4262811
59953    -- 
59954    --
59955    -- set accounting line type info
59956    --
59957    xla_ae_lines_pkg.SetAcctLineType
59958       (p_component_type             => l_component_type
59959       ,p_event_type_code            => l_event_type_code
59960       ,p_line_definition_owner_code => l_line_definition_owner_code
59961       ,p_line_definition_code       => l_line_definition_code
59962       ,p_accounting_line_code       => l_component_code
59963       ,p_accounting_line_type_code  => l_component_type_code
59964       ,p_accounting_line_appl_id    => l_component_appl_id
59965       ,p_amb_context_code           => l_amb_context_code
59966       ,p_entity_code                => l_entity_code
59967       ,p_event_class_code           => l_event_class_code);
59968    --
59969    -- set accounting class
59970    --
59971    xla_ae_lines_pkg.SetAcctClass(
59972            p_accounting_class_code  => 'REMITTANCE'
59973          , p_ae_header_id           => l_ae_header_id
59974          );
59975 
59976    --
59977    -- set rounding class
59978    --
59979    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
59980                       'RECEIVABLE';
59981 
59982    --
59983    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
59984    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
59985    --
59989 
59986    -- bulk performance
59987    --
59988    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
59990    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
59991       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
59992 
59993    -- 4955764
59994    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
59995       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
59996 
59997    -- 4458381 Public Sector Enh
59998    
59999    --
60000    -- set accounting attributes for the line type
60001    --
60002    l_entered_amt_idx := 8;
60003    l_accted_amt_idx  := 13;
60004    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
60005    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
60006    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
60007    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
60008    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
60009    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
60010    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
60011    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
60012    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
60013    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
60014    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
60015    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
60016    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
60017    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
60018    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
60019    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
60020    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
60021    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
60022    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
60023    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
60024    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
60025    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
60026    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
60027    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
60028    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
60029    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
60030    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
60031    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
60032    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
60033    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
60034    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
60035    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
60036    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
60037 
60038    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
60039    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
60040 
60041    ---------------------------------------------------------------------------------------------------------------
60042    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
60043    ---------------------------------------------------------------------------------------------------------------
60044    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
60045 
60046    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60047    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60048 
60049    IF xla_accounting_cache_pkg.GetValueChar
60050          (p_source_code         => 'LEDGER_CATEGORY_CODE'
60051          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
60052    AND l_bflow_method_code = 'PRIOR_ENTRY'
60053 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
60054    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
60055          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
60056        )
60057    THEN
60058          xla_ae_lines_pkg.BflowUpgEntry
60059            (p_business_method_code    => l_bflow_method_code
60060            ,p_business_class_code     => l_bflow_class_code
60061            ,p_balance_type            => l_balance_type_code);
60062    ELSE
60063       NULL;
60064 -- No business flow processing for business flow method of NONE.
60065    END IF;
60066 
60067    --
60068    -- call analytical criteria
60069    --
60070    
60071    --
60072    -- call description
60073    --
60074    -- No description or it is inherited.
60075    --
60076    -- call ADRs
60077    -- Bug 4922099
60078    --
60079    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60080         (NVL(l_actual_upg_option, 'N') = 'O') OR
60081         (NVL(l_enc_upg_option, 'N') = 'O')
60082       )
60083    THEN
60084    NULL;
60085    --
60086    --
60087    
60088   l_ccid := AcctDerRule_29(
60089            p_application_id           => p_application_id
60090          , p_ae_header_id             => l_ae_header_id 
60091 , p_source_32 => p_source_32
60092          , x_transaction_coa_id       => l_adr_transaction_coa_id
60093          , x_accounting_coa_id        => l_adr_accounting_coa_id
60097 
60094          , x_value_type_code          => l_adr_value_type_code
60095          , p_side                     => 'NA'
60096    );
60098    xla_ae_lines_pkg.set_ccid(
60099     p_code_combination_id          => l_ccid
60100   , p_value_type_code              => l_adr_value_type_code
60101   , p_transaction_coa_id           => l_adr_transaction_coa_id
60102   , p_accounting_coa_id            => l_adr_accounting_coa_id
60103   , p_adr_code                     => 'DIST_CCID'
60104   , p_adr_type_code                => 'S'
60105   , p_component_type               => l_component_type
60106   , p_component_code               => l_component_code
60107   , p_component_type_code          => l_component_type_code
60108   , p_component_appl_id            => l_component_appl_id
60109   , p_amb_context_code             => l_amb_context_code
60110   , p_side                         => 'NA'
60111   );
60112 
60113 
60114    --
60115    --
60116    END IF;
60117    --
60118    -- Bug 4922099
60119    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60120           (NVL(l_enc_upg_option, 'N') = 'O')
60121         ) AND
60122         (l_bflow_method_code = 'PRIOR_ENTRY')
60123       )
60124    THEN
60125       IF
60126       --
60127       1 = 2
60128       --
60129       THEN
60130       xla_accounting_err_pkg.build_message
60131                                     (p_appli_s_name            => 'XLA'
60132                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60133                                     ,p_token_1                 => 'LINE_NUMBER'
60134                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
60135                                     ,p_token_2                 => 'LINE_TYPE_NAME'
60136                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
60137                                                                              l_component_type
60138                                                                             ,l_component_code
60139                                                                             ,l_component_type_code
60140                                                                             ,l_component_appl_id
60141                                                                             ,l_amb_context_code
60142                                                                             ,l_entity_code
60143                                                                             ,l_event_class_code
60144                                                                            )
60145                                     ,p_token_3                 => 'OWNER'
60146                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
60147                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
60148                                                                           ,p_lookup_code    => l_component_type_code
60149                                                                          )
60150                                     ,p_token_4                 => 'PRODUCT_NAME'
60151                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60152                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60153                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60154                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60155                                     ,p_ae_header_id            =>  NULL
60156                                        );
60157 
60158         IF (C_LEVEL_ERROR>= g_log_level) THEN
60159                  trace
60160                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60161                       ,p_level    => C_LEVEL_ERROR
60162                       ,p_module   => l_log_module);
60163         END IF;
60164       END IF;
60165    END IF;
60166    --
60167    --
60168    ------------------------------------------------------------------------------------------------
60169    -- 4219869 Business Flow
60170    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60171    -- Prior Entry.  Currently, the following code is always generated.
60172    ------------------------------------------------------------------------------------------------
60173    XLA_AE_LINES_PKG.ValidateCurrentLine;
60174 
60175    ------------------------------------------------------------------------------------
60176    -- 4219869 Business Flow
60177    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60178    ------------------------------------------------------------------------------------
60179    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60180 
60181    ----------------------------------------------------------------------------------
60182    -- 4219869 Business Flow
60183    -- Update journal entry status -- Need to generate this within IF <condition>
60184    ----------------------------------------------------------------------------------
60185    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60186          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60187          ,p_balance_type_code => l_balance_type_code
60188          );
60189 
60190    -------------------------------------------------------------------------------------------
60191    -- 4262811 - Generate the Accrual Reversal lines
60192    -------------------------------------------------------------------------------------------
60196       IF l_acc_rev_flag IS NULL THEN
60193    BEGIN
60194       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60195                               (g_array_event(p_event_id).array_value_num('header_index'));
60197          l_acc_rev_flag := 'N';
60198       END IF;
60199    EXCEPTION
60200       WHEN OTHERS THEN
60201          l_acc_rev_flag := 'N';
60202    END;
60203    --
60204    IF (l_acc_rev_flag = 'Y') THEN
60205 
60206        -- 4645092  ------------------------------------------------------------------------------
60207        -- To allow MPA report to determine if it should generate report process
60208        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
60209        ------------------------------------------------------------------------------------------
60210 
60211        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
60212        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
60213    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
60214    -- call ADRs
60215    -- Bug 4922099
60216    --
60217    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60218         (NVL(l_actual_upg_option, 'N') = 'O') OR
60219         (NVL(l_enc_upg_option, 'N') = 'O')
60220       )
60221    THEN
60222    NULL;
60223    --
60224    --
60225    
60226   l_ccid := AcctDerRule_29(
60227            p_application_id           => p_application_id
60228          , p_ae_header_id             => l_ae_header_id 
60229 , p_source_32 => p_source_32
60230          , x_transaction_coa_id       => l_adr_transaction_coa_id
60231          , x_accounting_coa_id        => l_adr_accounting_coa_id
60232          , x_value_type_code          => l_adr_value_type_code
60233          , p_side                     => 'NA'
60234    );
60235 
60236    xla_ae_lines_pkg.set_ccid(
60237     p_code_combination_id          => l_ccid
60238   , p_value_type_code              => l_adr_value_type_code
60239   , p_transaction_coa_id           => l_adr_transaction_coa_id
60240   , p_accounting_coa_id            => l_adr_accounting_coa_id
60241   , p_adr_code                     => 'DIST_CCID'
60242   , p_adr_type_code                => 'S'
60243   , p_component_type               => l_component_type
60244   , p_component_code               => l_component_code
60245   , p_component_type_code          => l_component_type_code
60246   , p_component_appl_id            => l_component_appl_id
60247   , p_amb_context_code             => l_amb_context_code
60248   , p_side                         => 'NA'
60249   );
60250 
60251 
60252    --
60253    --
60254    END IF;
60255 
60256        --
60257        -- Update the line information that should be overwritten
60258        --
60259        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
60260                                          p_header_num   => 1);
60261        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
60262 
60263        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
60264 
60265        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
60266           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
60267        END IF;
60268 
60269       --
60270       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
60271       --
60272       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
60273           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
60274       ELSE
60275           ---------------------------------------------------------------------------------------------------
60276           -- 4262811a Switch Sign
60277           ---------------------------------------------------------------------------------------------------
60278           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
60279           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60280                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60281           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60282                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60283           -- 5132302
60284           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
60285                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60286 
60287       END IF;
60288 
60289       -- 4955764
60290       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60291       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
60292 
60293 
60294       XLA_AE_LINES_PKG.ValidateCurrentLine;
60295       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60296 
60297       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60298                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
60299                ,p_balance_type_code => l_balance_type_code);
60300 
60301    END IF;
60302 
60303    -----------------------------------------------------------------------------------------
60304    -- 4262811 Multiperiod Accounting
60308 
60305    -----------------------------------------------------------------------------------------
60306      -- No MPA option is assigned.
60307 
60309 END IF;
60310 END IF;
60311 --
60312 
60313 --
60314 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60315    trace
60316       (p_msg      => 'END of AcctLineType_132'
60317       ,p_level    => C_LEVEL_PROCEDURE
60318       ,p_module   => l_log_module);
60319 END IF;
60320 --
60321 EXCEPTION
60322   WHEN xla_exceptions_pkg.application_exception THEN
60323       RAISE;
60324   WHEN OTHERS THEN
60325        xla_exceptions_pkg.raise_message
60326            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_132');
60327 END AcctLineType_132;
60328 --
60329 
60330 ---------------------------------------
60331 --
60332 -- PRIVATE FUNCTION
60333 --         AcctLineType_133
60334 --
60335 ---------------------------------------
60336 PROCEDURE AcctLineType_133 (
60337   p_application_id        IN NUMBER
60338  ,p_event_id              IN NUMBER
60339  ,p_calculate_acctd_flag  IN VARCHAR2
60340  ,p_calculate_g_l_flag    IN VARCHAR2
60341  ,p_actual_flag           IN OUT VARCHAR2
60342  ,p_balance_type_code     OUT VARCHAR2
60343  ,p_gain_or_loss_ref      OUT VARCHAR2
60344  
60345 --Distribution GL Account
60346  , p_source_32            IN NUMBER
60347 --Distribution Source Type
60348  , p_source_39            IN VARCHAR2
60349 --Distribution Line Identifier
60350  , p_source_41            IN NUMBER
60351 --Distribution Type
60352  , p_source_42            IN VARCHAR2
60353 --Exchange Date
60354  , p_source_45            IN DATE
60355 --Exchange Rate
60356  , p_source_46            IN NUMBER
60357 --Exchange Rate Type
60358  , p_source_47            IN VARCHAR2
60359 --Accounting Amount
60360  , p_source_52            IN NUMBER
60361 --Transaction Distribution Identifier
60362  , p_source_56            IN NUMBER
60363 --Transaction Distribution Type
60364  , p_source_57            IN VARCHAR2
60365 --Distribution Multi Fund Additional Entry
60366  , p_source_99            IN VARCHAR2
60367 --Receipt Applied To Application Identifier
60368  , p_source_101            IN NUMBER
60369 --Transaction Entity Code
60370  , p_source_102            IN VARCHAR2
60371 --Transaction Identifier
60372  , p_source_103            IN NUMBER
60373 --DIST_ENT_AMT_FROM
60374  , p_source_104            IN NUMBER
60375 --Applying Document Currency Code
60376  , p_source_105            IN VARCHAR2
60377 --Distribution Party Identifier
60378  , p_source_106            IN NUMBER
60379 --Distribution Party Site Id
60380  , p_source_107            IN NUMBER
60381 --Distribution Party Type
60382  , p_source_108            IN VARCHAR2
60383 --Distribution Source Table
60384  , p_source_111            IN VARCHAR2
60385 )
60386 IS
60387 
60391 l_component_appl_id           INTEGER;
60388 l_component_type              VARCHAR2(80);
60389 l_component_code              VARCHAR2(30);
60390 l_component_type_code         VARCHAR2(1);
60392 l_amb_context_code            VARCHAR2(30);
60393 l_entity_code                 VARCHAR2(30);
60394 l_event_class_code            VARCHAR2(30);
60395 l_ae_header_id                NUMBER;
60396 l_event_type_code             VARCHAR2(30);
60397 l_line_definition_code        VARCHAR2(30);
60398 l_line_definition_owner_code  VARCHAR2(1);
60399 --
60400 -- adr variables
60401 l_segment                     VARCHAR2(30);
60402 l_ccid                        NUMBER;
60403 l_adr_transaction_coa_id      NUMBER;
60404 l_adr_accounting_coa_id       NUMBER;
60405 l_adr_flexfield_segment_code  VARCHAR2(30);
60406 l_adr_flex_value_set_id       NUMBER;
60407 l_adr_value_type_code         VARCHAR2(30);
60408 l_adr_value_combination_id    NUMBER;
60409 l_adr_value_segment_code      VARCHAR2(30);
60410 
60411 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
60412 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
60413 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
60414 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
60415 
60416 -- 4262811 Variables ------------------------------------------------------------------------------------------
60417 l_entered_amt_idx             NUMBER;
60418 l_accted_amt_idx              NUMBER;
60419 l_acc_rev_flag                VARCHAR2(1);
60420 l_accrual_line_num            NUMBER;
60421 l_tmp_amt                     NUMBER;
60422 l_acc_rev_natural_side_code   VARCHAR2(1);
60423 
60424 l_num_entries                 NUMBER;
60425 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
60426 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
60427 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
60428 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
60429 l_recog_line_1                NUMBER;
60430 l_recog_line_2                NUMBER;
60431 
60432 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
60433 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
60434 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
60435 
60436 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
60437 
60438 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
60439 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
60440 
60441 ---------------------------------------------------------------------------------------------------------------
60442 
60443 
60444 --
60445 -- bulk performance
60446 --
60447 l_balance_type_code           VARCHAR2(1);
60448 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
60449 l_log_module                  VARCHAR2(240);
60450 
60451 --
60452 -- Upgrade strategy
60453 --
60454 l_actual_upg_option           VARCHAR2(1);
60455 l_enc_upg_option           VARCHAR2(1);
60456 
60457 --
60458 BEGIN
60459 --
60460 IF g_log_enabled THEN
60461       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_133';
60462 END IF;
60463 --
60464 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60465 
60466       trace
60467          (p_msg      => 'BEGIN of AcctLineType_133'
60468          ,p_level    => C_LEVEL_PROCEDURE
60469          ,p_module   => l_log_module);
60470 
60474 l_component_code             := 'RCT_REMIT_BR';
60471 END IF;
60472 --
60473 l_component_type             := 'AMB_JLT';
60475 l_component_type_code        := 'S';
60476 l_component_appl_id          :=  222;
60477 l_amb_context_code           := 'DEFAULT';
60478 l_entity_code                := 'RECEIPTS';
60479 l_event_class_code           := 'RECEIPT';
60480 l_event_type_code            := 'RECEIPT_ALL';
60481 l_line_definition_owner_code := 'S';
60482 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
60483 --
60484 l_balance_type_code          := 'A';
60485 l_segment                     := NULL;
60486 l_ccid                        := NULL;
60487 l_adr_transaction_coa_id      := NULL;
60488 l_adr_accounting_coa_id       := NULL;
60489 l_adr_flexfield_segment_code  := NULL;
60490 l_adr_flex_value_set_id       := NULL;
60491 l_adr_value_type_code         := NULL;
60492 l_adr_value_combination_id    := NULL;
60493 l_adr_value_segment_code      := NULL;
60494 
60495 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
60496 l_bflow_class_code           := '';    -- 4219869 Business Flow
60497 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
60498 l_budgetary_control_flag     := 'N';
60499 
60500 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
60501 l_bflow_applied_to_amt       := NULL; -- 5132302
60502 l_entered_amt_idx            := NULL;          -- 4262811
60503 l_accted_amt_idx             := NULL;          -- 4262811
60504 l_acc_rev_flag               := NULL;          -- 4262811
60505 l_accrual_line_num           := NULL;          -- 4262811
60506 l_tmp_amt                    := NULL;          -- 4262811
60507 --
60508  
60509 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
60510     l_balance_type_code <> 'B' THEN
60511 IF NVL(p_source_39,'
60512 ') =  'REMITTANCE' AND 
60513 NVL(p_source_111,'
60514 ') =  'RA' AND 
60515 NVL(p_source_99,'
60516 ') =  'N'
60517  THEN 
60518 
60519    --
60520    XLA_AE_LINES_PKG.SetNewLine;
60521 
60522    p_balance_type_code          := l_balance_type_code;
60523    -- set the flag so later we will know whether the gain loss line needs to be created
60524    
60525    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
60526      p_actual_flag :='A';
60527    END IF;
60528 
60529    --
60530    -- bulk performance
60531    --
60532    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
60533                                       p_header_num   => 0); -- 4262811
60534    --
60535    -- set accounting line options
60536    --
60537    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
60538            p_natural_side_code          => 'C'
60539          , p_gain_or_loss_flag          => 'N'
60540          , p_gl_transfer_mode_code      => 'S'
60541          , p_acct_entry_type_code       => 'A'
60542          , p_switch_side_flag           => 'Y'
60543          , p_merge_duplicate_code       => 'A'
60544          );
60545    --
60546    l_acc_rev_natural_side_code := 'D';  -- 4262811
60547    -- 
60548    --
60549    -- set accounting line type info
60550    --
60551    xla_ae_lines_pkg.SetAcctLineType
60552       (p_component_type             => l_component_type
60553       ,p_event_type_code            => l_event_type_code
60554       ,p_line_definition_owner_code => l_line_definition_owner_code
60555       ,p_line_definition_code       => l_line_definition_code
60556       ,p_accounting_line_code       => l_component_code
60557       ,p_accounting_line_type_code  => l_component_type_code
60558       ,p_accounting_line_appl_id    => l_component_appl_id
60559       ,p_amb_context_code           => l_amb_context_code
60560       ,p_entity_code                => l_entity_code
60561       ,p_event_class_code           => l_event_class_code);
60562    --
60563    -- set accounting class
60564    --
60565    xla_ae_lines_pkg.SetAcctClass(
60566            p_accounting_class_code  => 'REM_BR'
60567          , p_ae_header_id           => l_ae_header_id
60568          );
60569 
60570    --
60571    -- set rounding class
60572    --
60573    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
60574                       'RECEIVABLE';
60575 
60576    --
60577    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
60578    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
60579    --
60580    -- bulk performance
60581    --
60582    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
60583 
60584    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
60585       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
60586 
60587    -- 4955764
60588    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60589       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
60590 
60591    -- 4458381 Public Sector Enh
60592    
60593    --
60594    -- set accounting attributes for the line type
60595    --
60596    l_entered_amt_idx := 8;
60597    l_accted_amt_idx  := 13;
60598    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
60599    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
60603    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
60600    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
60601    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
60602    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
60604    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
60605    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
60606    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
60607    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
60608    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
60609    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
60610    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
60611    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
60612    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
60613    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
60614    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
60615    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
60616    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
60617    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
60618    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
60619    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
60620    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
60621    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
60622    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
60623    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
60624    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
60625    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
60626    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
60627    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
60628    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
60629    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
60630    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
60631 
60632    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
60633    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
60634 
60635    ---------------------------------------------------------------------------------------------------------------
60636    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
60637    ---------------------------------------------------------------------------------------------------------------
60638    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
60639 
60640    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60641    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
60642 
60643    IF xla_accounting_cache_pkg.GetValueChar
60644          (p_source_code         => 'LEDGER_CATEGORY_CODE'
60645          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
60646    AND l_bflow_method_code = 'PRIOR_ENTRY'
60647 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
60648    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
60649          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
60650        )
60651    THEN
60652          xla_ae_lines_pkg.BflowUpgEntry
60653            (p_business_method_code    => l_bflow_method_code
60654            ,p_business_class_code     => l_bflow_class_code
60655            ,p_balance_type            => l_balance_type_code);
60656    ELSE
60657       NULL;
60658 -- No business flow processing for business flow method of NONE.
60659    END IF;
60660 
60661    --
60662    -- call analytical criteria
60663    --
60664    
60665    --
60666    -- call description
60667    --
60668    -- No description or it is inherited.
60669    --
60670    -- call ADRs
60671    -- Bug 4922099
60672    --
60673    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60674         (NVL(l_actual_upg_option, 'N') = 'O') OR
60675         (NVL(l_enc_upg_option, 'N') = 'O')
60676       )
60677    THEN
60678    NULL;
60679    --
60680    --
60681    
60682   l_ccid := AcctDerRule_29(
60686          , x_transaction_coa_id       => l_adr_transaction_coa_id
60683            p_application_id           => p_application_id
60684          , p_ae_header_id             => l_ae_header_id 
60685 , p_source_32 => p_source_32
60687          , x_accounting_coa_id        => l_adr_accounting_coa_id
60688          , x_value_type_code          => l_adr_value_type_code
60689          , p_side                     => 'NA'
60690    );
60691 
60692    xla_ae_lines_pkg.set_ccid(
60693     p_code_combination_id          => l_ccid
60694   , p_value_type_code              => l_adr_value_type_code
60695   , p_transaction_coa_id           => l_adr_transaction_coa_id
60696   , p_accounting_coa_id            => l_adr_accounting_coa_id
60697   , p_adr_code                     => 'DIST_CCID'
60698   , p_adr_type_code                => 'S'
60699   , p_component_type               => l_component_type
60700   , p_component_code               => l_component_code
60701   , p_component_type_code          => l_component_type_code
60702   , p_component_appl_id            => l_component_appl_id
60703   , p_amb_context_code             => l_amb_context_code
60704   , p_side                         => 'NA'
60705   );
60706 
60707 
60708    --
60709    --
60710    END IF;
60711    --
60712    -- Bug 4922099
60713    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
60714           (NVL(l_enc_upg_option, 'N') = 'O')
60715         ) AND
60716         (l_bflow_method_code = 'PRIOR_ENTRY')
60717       )
60718    THEN
60719       IF
60720       --
60721       1 = 2
60722       --
60723       THEN
60724       xla_accounting_err_pkg.build_message
60725                                     (p_appli_s_name            => 'XLA'
60726                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60727                                     ,p_token_1                 => 'LINE_NUMBER'
60728                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
60729                                     ,p_token_2                 => 'LINE_TYPE_NAME'
60730                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
60731                                                                              l_component_type
60732                                                                             ,l_component_code
60733                                                                             ,l_component_type_code
60734                                                                             ,l_component_appl_id
60735                                                                             ,l_amb_context_code
60736                                                                             ,l_entity_code
60737                                                                             ,l_event_class_code
60738                                                                            )
60739                                     ,p_token_3                 => 'OWNER'
60740                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
60741                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
60742                                                                           ,p_lookup_code    => l_component_type_code
60743                                                                          )
60744                                     ,p_token_4                 => 'PRODUCT_NAME'
60745                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
60746                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
60747                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
60748                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
60749                                     ,p_ae_header_id            =>  NULL
60750                                        );
60751 
60752         IF (C_LEVEL_ERROR>= g_log_level) THEN
60753                  trace
60754                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
60755                       ,p_level    => C_LEVEL_ERROR
60756                       ,p_module   => l_log_module);
60757         END IF;
60758       END IF;
60759    END IF;
60760    --
60761    --
60762    ------------------------------------------------------------------------------------------------
60763    -- 4219869 Business Flow
60764    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
60765    -- Prior Entry.  Currently, the following code is always generated.
60766    ------------------------------------------------------------------------------------------------
60767    XLA_AE_LINES_PKG.ValidateCurrentLine;
60768 
60769    ------------------------------------------------------------------------------------
60770    -- 4219869 Business Flow
60771    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
60772    ------------------------------------------------------------------------------------
60773    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60774 
60775    ----------------------------------------------------------------------------------
60776    -- 4219869 Business Flow
60777    -- Update journal entry status -- Need to generate this within IF <condition>
60778    ----------------------------------------------------------------------------------
60779    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60783 
60780          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
60781          ,p_balance_type_code => l_balance_type_code
60782          );
60784    -------------------------------------------------------------------------------------------
60785    -- 4262811 - Generate the Accrual Reversal lines
60786    -------------------------------------------------------------------------------------------
60787    BEGIN
60788       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
60789                               (g_array_event(p_event_id).array_value_num('header_index'));
60790       IF l_acc_rev_flag IS NULL THEN
60791          l_acc_rev_flag := 'N';
60792       END IF;
60793    EXCEPTION
60794       WHEN OTHERS THEN
60795          l_acc_rev_flag := 'N';
60796    END;
60797    --
60798    IF (l_acc_rev_flag = 'Y') THEN
60799 
60800        -- 4645092  ------------------------------------------------------------------------------
60801        -- To allow MPA report to determine if it should generate report process
60802        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
60803        ------------------------------------------------------------------------------------------
60804 
60805        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
60806        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
60807    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
60808    -- call ADRs
60809    -- Bug 4922099
60810    --
60811    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
60812         (NVL(l_actual_upg_option, 'N') = 'O') OR
60813         (NVL(l_enc_upg_option, 'N') = 'O')
60814       )
60815    THEN
60816    NULL;
60817    --
60818    --
60819    
60820   l_ccid := AcctDerRule_29(
60821            p_application_id           => p_application_id
60822          , p_ae_header_id             => l_ae_header_id 
60823 , p_source_32 => p_source_32
60824          , x_transaction_coa_id       => l_adr_transaction_coa_id
60825          , x_accounting_coa_id        => l_adr_accounting_coa_id
60826          , x_value_type_code          => l_adr_value_type_code
60827          , p_side                     => 'NA'
60828    );
60829 
60830    xla_ae_lines_pkg.set_ccid(
60831     p_code_combination_id          => l_ccid
60832   , p_value_type_code              => l_adr_value_type_code
60833   , p_transaction_coa_id           => l_adr_transaction_coa_id
60834   , p_accounting_coa_id            => l_adr_accounting_coa_id
60835   , p_adr_code                     => 'DIST_CCID'
60836   , p_adr_type_code                => 'S'
60837   , p_component_type               => l_component_type
60838   , p_component_code               => l_component_code
60839   , p_component_type_code          => l_component_type_code
60840   , p_component_appl_id            => l_component_appl_id
60841   , p_amb_context_code             => l_amb_context_code
60842   , p_side                         => 'NA'
60843   );
60844 
60845 
60846    --
60847    --
60848    END IF;
60849 
60850        --
60854                                          p_header_num   => 1);
60851        -- Update the line information that should be overwritten
60852        --
60853        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
60855        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
60856 
60857        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
60858 
60859        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
60860           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
60861        END IF;
60862 
60863       --
60864       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
60865       --
60866       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
60867           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
60868       ELSE
60869           ---------------------------------------------------------------------------------------------------
60870           -- 4262811a Switch Sign
60871           ---------------------------------------------------------------------------------------------------
60872           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
60873           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60874                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60875           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
60876                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60877           -- 5132302
60878           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
60879                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
60880 
60881       END IF;
60882 
60883       -- 4955764
60884       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
60885       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
60886 
60887 
60888       XLA_AE_LINES_PKG.ValidateCurrentLine;
60889       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
60890 
60891       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
60892                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
60893                ,p_balance_type_code => l_balance_type_code);
60894 
60895    END IF;
60896 
60897    -----------------------------------------------------------------------------------------
60898    -- 4262811 Multiperiod Accounting
60899    -----------------------------------------------------------------------------------------
60900      -- No MPA option is assigned.
60901 
60902 
60903 END IF;
60904 END IF;
60905 --
60906 
60907 --
60908 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
60909    trace
60910       (p_msg      => 'END of AcctLineType_133'
60911       ,p_level    => C_LEVEL_PROCEDURE
60912       ,p_module   => l_log_module);
60913 END IF;
60914 --
60915 EXCEPTION
60916   WHEN xla_exceptions_pkg.application_exception THEN
60917       RAISE;
60918   WHEN OTHERS THEN
60919        xla_exceptions_pkg.raise_message
60920            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_133');
60921 END AcctLineType_133;
60922 --
60923 
60924 ---------------------------------------
60925 --
60926 -- PRIVATE FUNCTION
60927 --         AcctLineType_134
60928 --
60929 ---------------------------------------
60930 PROCEDURE AcctLineType_134 (
60931   p_application_id        IN NUMBER
60932  ,p_event_id              IN NUMBER
60933  ,p_calculate_acctd_flag  IN VARCHAR2
60934  ,p_calculate_g_l_flag    IN VARCHAR2
60935  ,p_actual_flag           IN OUT VARCHAR2
60936  ,p_balance_type_code     OUT VARCHAR2
60937  ,p_gain_or_loss_ref      OUT VARCHAR2
60938  
60939 --Distribution GL Account
60940  , p_source_32            IN NUMBER
60941 --Distribution Source Type
60942  , p_source_39            IN VARCHAR2
60943 --Distribution Line Identifier
60944  , p_source_41            IN NUMBER
60945 --Distribution Type
60946  , p_source_42            IN VARCHAR2
60947 --Entered Amount
60948  , p_source_43            IN NUMBER
60949 --Currency Code
60950  , p_source_44            IN VARCHAR2
60951 --Applied To Document Accounting Amount
60952  , p_source_48            IN NUMBER
60953 --Transaction Distribution Identifier
60954  , p_source_56            IN NUMBER
60955 --Transaction Distribution Type
60956  , p_source_57            IN VARCHAR2
60957 --Distribution Multi Fund Additional Entry
60958  , p_source_99            IN VARCHAR2
60959 --Applied To Document Exchange Date
60960  , p_source_100            IN DATE
60961 --Receipt Applied To Application Identifier
60962  , p_source_101            IN NUMBER
60963 --Transaction Entity Code
60964  , p_source_102            IN VARCHAR2
60965 --Transaction Identifier
60966  , p_source_103            IN NUMBER
60967 --Distribution Party Identifier
60968  , p_source_106            IN NUMBER
60969 --Distribution Party Site Id
60970  , p_source_107            IN NUMBER
60971 --Distribution Party Type
60975 --Applied To Document Exchange Rate
60972  , p_source_108            IN VARCHAR2
60973 --Applied To Document Exchange Rate Type
60974  , p_source_109            IN VARCHAR2
60976  , p_source_110            IN NUMBER
60977 )
60978 IS
60979 
60980 l_component_type              VARCHAR2(80);
60981 l_component_code              VARCHAR2(30);
60982 l_component_type_code         VARCHAR2(1);
60983 l_component_appl_id           INTEGER;
60984 l_amb_context_code            VARCHAR2(30);
60985 l_entity_code                 VARCHAR2(30);
60986 l_event_class_code            VARCHAR2(30);
60987 l_ae_header_id                NUMBER;
60988 l_event_type_code             VARCHAR2(30);
60989 l_line_definition_code        VARCHAR2(30);
60990 l_line_definition_owner_code  VARCHAR2(1);
60991 --
60992 -- adr variables
60993 l_segment                     VARCHAR2(30);
60994 l_ccid                        NUMBER;
60995 l_adr_transaction_coa_id      NUMBER;
60996 l_adr_accounting_coa_id       NUMBER;
60997 l_adr_flexfield_segment_code  VARCHAR2(30);
60998 l_adr_flex_value_set_id       NUMBER;
60999 l_adr_value_type_code         VARCHAR2(30);
61000 l_adr_value_combination_id    NUMBER;
61001 l_adr_value_segment_code      VARCHAR2(30);
61002 
61003 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
61004 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
61005 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
61006 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
61007 
61008 -- 4262811 Variables ------------------------------------------------------------------------------------------
61009 l_entered_amt_idx             NUMBER;
61010 l_accted_amt_idx              NUMBER;
61011 l_acc_rev_flag                VARCHAR2(1);
61012 l_accrual_line_num            NUMBER;
61013 l_tmp_amt                     NUMBER;
61014 l_acc_rev_natural_side_code   VARCHAR2(1);
61015 
61016 l_num_entries                 NUMBER;
61017 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
61018 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
61019 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
61020 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
61021 l_recog_line_1                NUMBER;
61022 l_recog_line_2                NUMBER;
61023 
61024 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
61025 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
61026 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
61027 
61028 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61029 
61030 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
61031 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
61032 
61033 ---------------------------------------------------------------------------------------------------------------
61034 
61035 
61036 --
61037 -- bulk performance
61038 --
61039 l_balance_type_code           VARCHAR2(1);
61040 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
61041 l_log_module                  VARCHAR2(240);
61042 
61043 --
61044 -- Upgrade strategy
61045 --
61046 l_actual_upg_option           VARCHAR2(1);
61047 l_enc_upg_option           VARCHAR2(1);
61048 
61049 --
61050 BEGIN
61051 --
61052 IF g_log_enabled THEN
61053       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_134';
61054 END IF;
61055 --
61056 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61057 
61058       trace
61059          (p_msg      => 'BEGIN of AcctLineType_134'
61060          ,p_level    => C_LEVEL_PROCEDURE
61061          ,p_module   => l_log_module);
61062 
61063 END IF;
61064 --
61065 l_component_type             := 'AMB_JLT';
61066 l_component_code             := 'RCT_TAX';
61067 l_component_type_code        := 'S';
61068 l_component_appl_id          :=  222;
61069 l_amb_context_code           := 'DEFAULT';
61070 l_entity_code                := 'RECEIPTS';
61071 l_event_class_code           := 'RECEIPT';
61072 l_event_type_code            := 'RECEIPT_ALL';
61076 l_balance_type_code          := 'A';
61073 l_line_definition_owner_code := 'S';
61074 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
61075 --
61077 l_segment                     := NULL;
61078 l_ccid                        := NULL;
61079 l_adr_transaction_coa_id      := NULL;
61080 l_adr_accounting_coa_id       := NULL;
61081 l_adr_flexfield_segment_code  := NULL;
61082 l_adr_flex_value_set_id       := NULL;
61083 l_adr_value_type_code         := NULL;
61084 l_adr_value_combination_id    := NULL;
61085 l_adr_value_segment_code      := NULL;
61086 
61087 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
61088 l_bflow_class_code           := '';    -- 4219869 Business Flow
61089 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
61090 l_budgetary_control_flag     := 'N';
61091 
61092 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
61093 l_bflow_applied_to_amt       := NULL; -- 5132302
61094 l_entered_amt_idx            := NULL;          -- 4262811
61095 l_accted_amt_idx             := NULL;          -- 4262811
61096 l_acc_rev_flag               := NULL;          -- 4262811
61097 l_accrual_line_num           := NULL;          -- 4262811
61098 l_tmp_amt                    := NULL;          -- 4262811
61099 --
61100  
61101 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61102     l_balance_type_code <> 'B' THEN
61103 IF NVL(p_source_39,'
61104 ') =  'TAX' AND 
61105 NVL(p_source_99,'
61106 ') =  'N'
61107  THEN 
61108 
61109    --
61110    XLA_AE_LINES_PKG.SetNewLine;
61111 
61112    p_balance_type_code          := l_balance_type_code;
61113    -- set the flag so later we will know whether the gain loss line needs to be created
61114    
61115    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61116      p_actual_flag :='A';
61117    END IF;
61118 
61119    --
61120    -- bulk performance
61121    --
61122    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61123                                       p_header_num   => 0); -- 4262811
61124    --
61125    -- set accounting line options
61126    --
61127    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61128            p_natural_side_code          => 'C'
61129          , p_gain_or_loss_flag          => 'N'
61130          , p_gl_transfer_mode_code      => 'S'
61131          , p_acct_entry_type_code       => 'A'
61132          , p_switch_side_flag           => 'Y'
61133          , p_merge_duplicate_code       => 'A'
61134          );
61135    --
61136    l_acc_rev_natural_side_code := 'D';  -- 4262811
61137    -- 
61138    --
61139    -- set accounting line type info
61140    --
61141    xla_ae_lines_pkg.SetAcctLineType
61142       (p_component_type             => l_component_type
61143       ,p_event_type_code            => l_event_type_code
61144       ,p_line_definition_owner_code => l_line_definition_owner_code
61145       ,p_line_definition_code       => l_line_definition_code
61146       ,p_accounting_line_code       => l_component_code
61147       ,p_accounting_line_type_code  => l_component_type_code
61148       ,p_accounting_line_appl_id    => l_component_appl_id
61149       ,p_amb_context_code           => l_amb_context_code
61150       ,p_entity_code                => l_entity_code
61151       ,p_event_class_code           => l_event_class_code);
61152    --
61153    -- set accounting class
61154    --
61155    xla_ae_lines_pkg.SetAcctClass(
61156            p_accounting_class_code  => 'TAX'
61157          , p_ae_header_id           => l_ae_header_id
61158          );
61159 
61160    --
61161    -- set rounding class
61162    --
61163    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61164                       'RECEIVABLE';
61165 
61166    --
61167    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61168    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61169    --
61170    -- bulk performance
61171    --
61172    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61173 
61174    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61175       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61176 
61177    -- 4955764
61178    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61179       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61180 
61181    -- 4458381 Public Sector Enh
61182    
61183    --
61184    -- set accounting attributes for the line type
61185    --
61186    l_entered_amt_idx := 8;
61187    l_accted_amt_idx  := 13;
61188    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
61189    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
61190    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
61191    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
61192    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
61193    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
61194    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
61195    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
61196    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
61200    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
61197    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
61198    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
61199    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
61201    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
61202    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
61203    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
61204    l_rec_acct_attrs.array_num_value(8)  := p_source_43;
61205    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
61206    l_rec_acct_attrs.array_char_value(9)  := p_source_44;
61207    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
61208    l_rec_acct_attrs.array_date_value(10)  := p_source_100;
61209    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
61210    l_rec_acct_attrs.array_num_value(11)  := p_source_110;
61211    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
61212    l_rec_acct_attrs.array_char_value(12)  := p_source_109;
61213    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
61214    l_rec_acct_attrs.array_num_value(13)  := p_source_48;
61215    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
61216    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
61217    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
61218    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
61219    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
61220    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
61221 
61222    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61223    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61224 
61225    ---------------------------------------------------------------------------------------------------------------
61226    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61227    ---------------------------------------------------------------------------------------------------------------
61228    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61229 
61230    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61231    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61232 
61233    IF xla_accounting_cache_pkg.GetValueChar
61234          (p_source_code         => 'LEDGER_CATEGORY_CODE'
61235          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61236    AND l_bflow_method_code = 'PRIOR_ENTRY'
61237 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61238    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61239          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61240        )
61241    THEN
61242          xla_ae_lines_pkg.BflowUpgEntry
61243            (p_business_method_code    => l_bflow_method_code
61244            ,p_business_class_code     => l_bflow_class_code
61245            ,p_balance_type            => l_balance_type_code);
61246    ELSE
61247       NULL;
61248 -- No business flow processing for business flow method of NONE.
61249    END IF;
61250 
61251    --
61252    -- call analytical criteria
61253    --
61254    
61255    --
61256    -- call description
61257    --
61258    -- No description or it is inherited.
61259    --
61260    -- call ADRs
61261    -- Bug 4922099
61262    --
61263    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61264         (NVL(l_actual_upg_option, 'N') = 'O') OR
61265         (NVL(l_enc_upg_option, 'N') = 'O')
61266       )
61267    THEN
61268    NULL;
61269    --
61270    --
61271    
61272   l_ccid := AcctDerRule_29(
61273            p_application_id           => p_application_id
61274          , p_ae_header_id             => l_ae_header_id 
61275 , p_source_32 => p_source_32
61276          , x_transaction_coa_id       => l_adr_transaction_coa_id
61277          , x_accounting_coa_id        => l_adr_accounting_coa_id
61278          , x_value_type_code          => l_adr_value_type_code
61279          , p_side                     => 'NA'
61280    );
61281 
61282    xla_ae_lines_pkg.set_ccid(
61283     p_code_combination_id          => l_ccid
61284   , p_value_type_code              => l_adr_value_type_code
61288   , p_adr_type_code                => 'S'
61285   , p_transaction_coa_id           => l_adr_transaction_coa_id
61286   , p_accounting_coa_id            => l_adr_accounting_coa_id
61287   , p_adr_code                     => 'DIST_CCID'
61289   , p_component_type               => l_component_type
61290   , p_component_code               => l_component_code
61291   , p_component_type_code          => l_component_type_code
61292   , p_component_appl_id            => l_component_appl_id
61293   , p_amb_context_code             => l_amb_context_code
61294   , p_side                         => 'NA'
61295   );
61296 
61297 
61298    --
61299    --
61300    END IF;
61301    --
61302    -- Bug 4922099
61303    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61304           (NVL(l_enc_upg_option, 'N') = 'O')
61305         ) AND
61306         (l_bflow_method_code = 'PRIOR_ENTRY')
61307       )
61308    THEN
61309       IF
61310       --
61311       1 = 2
61312       --
61313       THEN
61314       xla_accounting_err_pkg.build_message
61315                                     (p_appli_s_name            => 'XLA'
61316                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61317                                     ,p_token_1                 => 'LINE_NUMBER'
61318                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
61319                                     ,p_token_2                 => 'LINE_TYPE_NAME'
61320                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
61321                                                                              l_component_type
61322                                                                             ,l_component_code
61323                                                                             ,l_component_type_code
61324                                                                             ,l_component_appl_id
61325                                                                             ,l_amb_context_code
61326                                                                             ,l_entity_code
61327                                                                             ,l_event_class_code
61328                                                                            )
61329                                     ,p_token_3                 => 'OWNER'
61330                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
61331                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
61332                                                                           ,p_lookup_code    => l_component_type_code
61333                                                                          )
61334                                     ,p_token_4                 => 'PRODUCT_NAME'
61335                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
61336                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
61337                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
61338                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
61339                                     ,p_ae_header_id            =>  NULL
61340                                        );
61341 
61342         IF (C_LEVEL_ERROR>= g_log_level) THEN
61343                  trace
61344                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61345                       ,p_level    => C_LEVEL_ERROR
61346                       ,p_module   => l_log_module);
61347         END IF;
61348       END IF;
61349    END IF;
61350    --
61351    --
61352    ------------------------------------------------------------------------------------------------
61353    -- 4219869 Business Flow
61354    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
61355    -- Prior Entry.  Currently, the following code is always generated.
61356    ------------------------------------------------------------------------------------------------
61357    XLA_AE_LINES_PKG.ValidateCurrentLine;
61358 
61359    ------------------------------------------------------------------------------------
61360    -- 4219869 Business Flow
61361    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
61362    ------------------------------------------------------------------------------------
61363    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61364 
61365    ----------------------------------------------------------------------------------
61366    -- 4219869 Business Flow
61367    -- Update journal entry status -- Need to generate this within IF <condition>
61368    ----------------------------------------------------------------------------------
61369    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61370          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
61371          ,p_balance_type_code => l_balance_type_code
61372          );
61373 
61374    -------------------------------------------------------------------------------------------
61375    -- 4262811 - Generate the Accrual Reversal lines
61376    -------------------------------------------------------------------------------------------
61377    BEGIN
61378       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
61382       END IF;
61379                               (g_array_event(p_event_id).array_value_num('header_index'));
61380       IF l_acc_rev_flag IS NULL THEN
61381          l_acc_rev_flag := 'N';
61383    EXCEPTION
61384       WHEN OTHERS THEN
61385          l_acc_rev_flag := 'N';
61386    END;
61387    --
61388    IF (l_acc_rev_flag = 'Y') THEN
61389 
61390        -- 4645092  ------------------------------------------------------------------------------
61391        -- To allow MPA report to determine if it should generate report process
61392        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
61393        ------------------------------------------------------------------------------------------
61394 
61395        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
61396        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
61397    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
61398    -- call ADRs
61399    -- Bug 4922099
61400    --
61401    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61402         (NVL(l_actual_upg_option, 'N') = 'O') OR
61403         (NVL(l_enc_upg_option, 'N') = 'O')
61404       )
61405    THEN
61406    NULL;
61407    --
61408    --
61409    
61410   l_ccid := AcctDerRule_29(
61411            p_application_id           => p_application_id
61412          , p_ae_header_id             => l_ae_header_id 
61413 , p_source_32 => p_source_32
61414          , x_transaction_coa_id       => l_adr_transaction_coa_id
61415          , x_accounting_coa_id        => l_adr_accounting_coa_id
61416          , x_value_type_code          => l_adr_value_type_code
61417          , p_side                     => 'NA'
61418    );
61419 
61420    xla_ae_lines_pkg.set_ccid(
61421     p_code_combination_id          => l_ccid
61422   , p_value_type_code              => l_adr_value_type_code
61423   , p_transaction_coa_id           => l_adr_transaction_coa_id
61424   , p_accounting_coa_id            => l_adr_accounting_coa_id
61425   , p_adr_code                     => 'DIST_CCID'
61426   , p_adr_type_code                => 'S'
61427   , p_component_type               => l_component_type
61428   , p_component_code               => l_component_code
61429   , p_component_type_code          => l_component_type_code
61430   , p_component_appl_id            => l_component_appl_id
61431   , p_amb_context_code             => l_amb_context_code
61432   , p_side                         => 'NA'
61433   );
61434 
61435 
61436    --
61437    --
61438    END IF;
61439 
61440        --
61441        -- Update the line information that should be overwritten
61442        --
61443        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
61444                                          p_header_num   => 1);
61445        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
61446 
61447        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
61448 
61449        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
61450           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
61451        END IF;
61452 
61453       --
61454       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
61455       --
61456       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
61457           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
61458       ELSE
61459           ---------------------------------------------------------------------------------------------------
61460           -- 4262811a Switch Sign
61461           ---------------------------------------------------------------------------------------------------
61462           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
61463           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61464                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61465           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
61466                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61467           -- 5132302
61468           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
61469                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
61470 
61471       END IF;
61472 
61473       -- 4955764
61474       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61475       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
61476 
61477 
61478       XLA_AE_LINES_PKG.ValidateCurrentLine;
61479       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
61480 
61481       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
61482                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
61483                ,p_balance_type_code => l_balance_type_code);
61484 
61485    END IF;
61486 
61487    -----------------------------------------------------------------------------------------
61488    -- 4262811 Multiperiod Accounting
61492 
61489    -----------------------------------------------------------------------------------------
61490      -- No MPA option is assigned.
61491 
61493 END IF;
61494 END IF;
61495 --
61496 
61497 --
61498 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61499    trace
61500       (p_msg      => 'END of AcctLineType_134'
61501       ,p_level    => C_LEVEL_PROCEDURE
61502       ,p_module   => l_log_module);
61503 END IF;
61504 --
61505 EXCEPTION
61506   WHEN xla_exceptions_pkg.application_exception THEN
61507       RAISE;
61508   WHEN OTHERS THEN
61509        xla_exceptions_pkg.raise_message
61510            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_134');
61511 END AcctLineType_134;
61512 --
61513 
61514 ---------------------------------------
61515 --
61516 -- PRIVATE FUNCTION
61517 --         AcctLineType_135
61518 --
61519 ---------------------------------------
61520 PROCEDURE AcctLineType_135 (
61521   p_application_id        IN NUMBER
61522  ,p_event_id              IN NUMBER
61523  ,p_calculate_acctd_flag  IN VARCHAR2
61524  ,p_calculate_g_l_flag    IN VARCHAR2
61525  ,p_actual_flag           IN OUT VARCHAR2
61526  ,p_balance_type_code     OUT VARCHAR2
61527  ,p_gain_or_loss_ref      OUT VARCHAR2
61528  
61529 --Remittance Bank Account Unapplied Account
61530  , p_source_36            IN NUMBER
61531 --Distribution Source Type
61532  , p_source_39            IN VARCHAR2
61533 --Receivable Activity Type
61534  , p_source_40            IN VARCHAR2
61535 --Distribution Line Identifier
61536  , p_source_41            IN NUMBER
61537 --Distribution Type
61538  , p_source_42            IN VARCHAR2
61539 --Exchange Date
61540  , p_source_45            IN DATE
61541 --Exchange Rate
61542  , p_source_46            IN NUMBER
61543 --Exchange Rate Type
61544  , p_source_47            IN VARCHAR2
61545 --Accounting Amount
61546  , p_source_52            IN NUMBER
61547 --Transaction Distribution Identifier
61548  , p_source_56            IN NUMBER
61549 --Transaction Distribution Type
61550  , p_source_57            IN VARCHAR2
61551 --Distribution Multi Fund Additional Entry
61552  , p_source_99            IN VARCHAR2
61553 --Receipt Applied To Application Identifier
61554  , p_source_101            IN NUMBER
61555 --Transaction Entity Code
61556  , p_source_102            IN VARCHAR2
61557 --Transaction Identifier
61558  , p_source_103            IN NUMBER
61559 --DIST_ENT_AMT_FROM
61560  , p_source_104            IN NUMBER
61561 --Applying Document Currency Code
61562  , p_source_105            IN VARCHAR2
61563 --Distribution Party Type
61564  , p_source_108            IN VARCHAR2
61565 --Distribution Source Table
61566  , p_source_111            IN VARCHAR2
61567 --Receipt Pay From Customer
61568  , p_source_112            IN NUMBER
61569 --Receipt Customer Site Use Identifier
61570  , p_source_113            IN NUMBER
61571 )
61572 IS
61573 
61574 l_component_type              VARCHAR2(80);
61575 l_component_code              VARCHAR2(30);
61576 l_component_type_code         VARCHAR2(1);
61577 l_component_appl_id           INTEGER;
61578 l_amb_context_code            VARCHAR2(30);
61579 l_entity_code                 VARCHAR2(30);
61580 l_event_class_code            VARCHAR2(30);
61581 l_ae_header_id                NUMBER;
61582 l_event_type_code             VARCHAR2(30);
61583 l_line_definition_code        VARCHAR2(30);
61584 l_line_definition_owner_code  VARCHAR2(1);
61585 --
61586 -- adr variables
61587 l_segment                     VARCHAR2(30);
61588 l_ccid                        NUMBER;
61589 l_adr_transaction_coa_id      NUMBER;
61590 l_adr_accounting_coa_id       NUMBER;
61591 l_adr_flexfield_segment_code  VARCHAR2(30);
61592 l_adr_flex_value_set_id       NUMBER;
61593 l_adr_value_type_code         VARCHAR2(30);
61594 l_adr_value_combination_id    NUMBER;
61595 l_adr_value_segment_code      VARCHAR2(30);
61596 
61597 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
61598 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
61599 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
61600 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
61601 
61602 -- 4262811 Variables ------------------------------------------------------------------------------------------
61603 l_entered_amt_idx             NUMBER;
61604 l_accted_amt_idx              NUMBER;
61605 l_acc_rev_flag                VARCHAR2(1);
61606 l_accrual_line_num            NUMBER;
61607 l_tmp_amt                     NUMBER;
61608 l_acc_rev_natural_side_code   VARCHAR2(1);
61609 
61610 l_num_entries                 NUMBER;
61611 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
61612 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
61613 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
61614 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
61615 l_recog_line_1                NUMBER;
61616 l_recog_line_2                NUMBER;
61617 
61618 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
61619 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
61620 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
61621 
61625 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
61622 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
61623 
61624 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
61626 
61627 ---------------------------------------------------------------------------------------------------------------
61628 
61629 
61630 --
61631 -- bulk performance
61632 --
61633 l_balance_type_code           VARCHAR2(1);
61634 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
61635 l_log_module                  VARCHAR2(240);
61636 
61637 --
61638 -- Upgrade strategy
61639 --
61640 l_actual_upg_option           VARCHAR2(1);
61641 l_enc_upg_option           VARCHAR2(1);
61642 
61643 --
61644 BEGIN
61645 --
61646 IF g_log_enabled THEN
61647       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_135';
61648 END IF;
61649 --
61650 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
61651 
61652       trace
61653          (p_msg      => 'BEGIN of AcctLineType_135'
61654          ,p_level    => C_LEVEL_PROCEDURE
61655          ,p_module   => l_log_module);
61656 
61657 END IF;
61658 --
61659 l_component_type             := 'AMB_JLT';
61660 l_component_code             := 'RCT_UNAPP';
61661 l_component_type_code        := 'S';
61662 l_component_appl_id          :=  222;
61663 l_amb_context_code           := 'DEFAULT';
61664 l_entity_code                := 'RECEIPTS';
61665 l_event_class_code           := 'RECEIPT';
61666 l_event_type_code            := 'RECEIPT_ALL';
61667 l_line_definition_owner_code := 'S';
61668 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
61669 --
61670 l_balance_type_code          := 'A';
61671 l_segment                     := NULL;
61672 l_ccid                        := NULL;
61673 l_adr_transaction_coa_id      := NULL;
61674 l_adr_accounting_coa_id       := NULL;
61675 l_adr_flexfield_segment_code  := NULL;
61676 l_adr_flex_value_set_id       := NULL;
61677 l_adr_value_type_code         := NULL;
61678 l_adr_value_combination_id    := NULL;
61679 l_adr_value_segment_code      := NULL;
61680 
61681 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
61682 l_bflow_class_code           := '';    -- 4219869 Business Flow
61683 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
61684 l_budgetary_control_flag     := 'N';
61685 
61686 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
61687 l_bflow_applied_to_amt       := NULL; -- 5132302
61688 l_entered_amt_idx            := NULL;          -- 4262811
61689 l_accted_amt_idx             := NULL;          -- 4262811
61690 l_acc_rev_flag               := NULL;          -- 4262811
61691 l_accrual_line_num           := NULL;          -- 4262811
61692 l_tmp_amt                    := NULL;          -- 4262811
61693 --
61694  
61695 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
61696     l_balance_type_code <> 'B' THEN
61697 IF (NVL(p_source_39,'
61698 ') =  'OTHER ACC' AND 
61699 NVL(p_source_40,'
61700 ') =  'CLAIM_INVESTIGATION' AND 
61701 NVL(p_source_99,'
61702 ') =  'N') OR 
61703 (NVL(p_source_39,'
61704 ') =  'FACTOR' AND 
61705 NVL(p_source_111,'
61706 ') =  'RA' AND 
61707 NVL(p_source_99,'
61708 ') =  'N') OR 
61709 (NVL(p_source_39,'
61710 ') =  'OTHER ACC' AND 
61711 NVL(p_source_99,'
61712 ') =  'N' AND 
61713 NVL(p_source_40,'
61714 ') =  'NETTING') OR 
61715 (NVL(p_source_39,'
61716 ') =  'OTHER ACC' AND 
61717 NVL(p_source_99,'
61718 ') =  'N' AND 
61719 NVL(p_source_40,'
61720 ') =  'PREPAYMENT') OR 
61721 (NVL(p_source_39,'
61722 ') =  'ACTIVITY' AND 
61723 NVL(p_source_99,'
61724 ') =  'N' AND 
61725 NVL(p_source_40,'
61726 ') =  'CCREFUND') OR 
61727 (NVL(p_source_39,'
61728 ') =  'REMITTANCE' AND 
61729 NVL(p_source_99,'
61730 ') =  'N' AND 
61731 NVL(p_source_111,'
61732 ') =  'RA') OR 
61733 (NVL(p_source_39,'
61734 ') =  'ACTIVITY' AND 
61735 NVL(p_source_99,'
61736 ') =  'N' AND 
61737 NVL(p_source_40,'
61738 ') =  'WRITEOFF') OR 
61739 (NVL(p_source_39,'
61740 ') =  'ACTIVITY' AND 
61741 NVL(p_source_99,'
61742 ') =  'N' AND 
61743 NVL(p_source_40,'
61744 ') =  'CM_REFUND') OR 
61745 (NVL(p_source_39,'
61746 ') =  'ACTIVITY' AND 
61747 NVL(p_source_40,'
61748 ') =  'ADJUST' AND 
61749 NVL(p_source_99,'
61750 ') =  'N') OR 
61751 (NVL(p_source_39,'
61752 ') =  'ACTIVITY' AND 
61753 NVL(p_source_99,'
61754 ') =  'N' AND 
61755 NVL(p_source_40,'
61756 ') =  'CC_CHARGEBACK') OR 
61757 (NVL(p_source_39,'
61758 ') =  'ACTIVITY' AND 
61759 NVL(p_source_99,'
61760 ') =  'N' AND 
61761 NVL(p_source_40,'
61762 ') =  'NETTING')
61763  THEN 
61764 
61765    --
61769    -- set the flag so later we will know whether the gain loss line needs to be created
61766    XLA_AE_LINES_PKG.SetNewLine;
61767 
61768    p_balance_type_code          := l_balance_type_code;
61770    
61771    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
61772      p_actual_flag :='A';
61773    END IF;
61774 
61775    --
61776    -- bulk performance
61777    --
61778    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
61779                                       p_header_num   => 0); -- 4262811
61780    --
61781    -- set accounting line options
61782    --
61783    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
61784            p_natural_side_code          => 'D'
61785          , p_gain_or_loss_flag          => 'N'
61786          , p_gl_transfer_mode_code      => 'S'
61787          , p_acct_entry_type_code       => 'A'
61788          , p_switch_side_flag           => 'Y'
61789          , p_merge_duplicate_code       => 'A'
61790          );
61791    --
61792    l_acc_rev_natural_side_code := 'C';  -- 4262811
61793    -- 
61794    --
61795    -- set accounting line type info
61796    --
61797    xla_ae_lines_pkg.SetAcctLineType
61798       (p_component_type             => l_component_type
61799       ,p_event_type_code            => l_event_type_code
61800       ,p_line_definition_owner_code => l_line_definition_owner_code
61801       ,p_line_definition_code       => l_line_definition_code
61802       ,p_accounting_line_code       => l_component_code
61803       ,p_accounting_line_type_code  => l_component_type_code
61804       ,p_accounting_line_appl_id    => l_component_appl_id
61805       ,p_amb_context_code           => l_amb_context_code
61806       ,p_entity_code                => l_entity_code
61807       ,p_event_class_code           => l_event_class_code);
61808    --
61809    -- set accounting class
61810    --
61811    xla_ae_lines_pkg.SetAcctClass(
61812            p_accounting_class_code  => 'UNAPP'
61813          , p_ae_header_id           => l_ae_header_id
61814          );
61815 
61816    --
61817    -- set rounding class
61818    --
61819    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
61820                       'RECEIVABLE';
61821 
61822    --
61823    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
61824    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
61825    --
61826    -- bulk performance
61827    --
61828    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
61829 
61830    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
61831       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
61832 
61833    -- 4955764
61834    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
61835       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
61836 
61837    -- 4458381 Public Sector Enh
61838    
61839    --
61840    -- set accounting attributes for the line type
61841    --
61842    l_entered_amt_idx := 8;
61843    l_accted_amt_idx  := 13;
61844    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
61845    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
61846    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
61847    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
61848    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
61849    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
61850    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
61851    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
61852    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
61853    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
61854    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
61855    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
61856    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
61857    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
61858    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
61859    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
61860    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
61861    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
61862    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
61863    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
61864    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
61865    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
61866    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
61867    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
61868    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
61869    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
61870    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
61874    l_rec_acct_attrs.array_num_value(15)  := p_source_113;
61871    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
61872    l_rec_acct_attrs.array_num_value(14)  := p_source_112;
61873    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
61875    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
61876    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
61877 
61878    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
61879    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
61880 
61881    ---------------------------------------------------------------------------------------------------------------
61882    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
61883    ---------------------------------------------------------------------------------------------------------------
61884    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
61885 
61886    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61887    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
61888 
61889    IF xla_accounting_cache_pkg.GetValueChar
61890          (p_source_code         => 'LEDGER_CATEGORY_CODE'
61891          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
61892    AND l_bflow_method_code = 'PRIOR_ENTRY'
61893 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
61894    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
61895          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
61896        )
61897    THEN
61898          xla_ae_lines_pkg.BflowUpgEntry
61899            (p_business_method_code    => l_bflow_method_code
61900            ,p_business_class_code     => l_bflow_class_code
61901            ,p_balance_type            => l_balance_type_code);
61902    ELSE
61903       NULL;
61904 -- No business flow processing for business flow method of NONE.
61905    END IF;
61906 
61907    --
61908    -- call analytical criteria
61909    --
61910    
61911    --
61912    -- call description
61913    --
61914    -- No description or it is inherited.
61915    --
61916    -- call ADRs
61917    -- Bug 4922099
61918    --
61919    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
61920         (NVL(l_actual_upg_option, 'N') = 'O') OR
61921         (NVL(l_enc_upg_option, 'N') = 'O')
61922       )
61923    THEN
61924    NULL;
61925    --
61926    --
61927    
61928   l_ccid := AcctDerRule_32(
61929            p_application_id           => p_application_id
61930          , p_ae_header_id             => l_ae_header_id 
61931 , p_source_36 => p_source_36
61932          , x_transaction_coa_id       => l_adr_transaction_coa_id
61933          , x_accounting_coa_id        => l_adr_accounting_coa_id
61934          , x_value_type_code          => l_adr_value_type_code
61935          , p_side                     => 'NA'
61936    );
61937 
61938    xla_ae_lines_pkg.set_ccid(
61939     p_code_combination_id          => l_ccid
61940   , p_value_type_code              => l_adr_value_type_code
61941   , p_transaction_coa_id           => l_adr_transaction_coa_id
61942   , p_accounting_coa_id            => l_adr_accounting_coa_id
61943   , p_adr_code                     => 'RMT_BNK_UNAPP_CCID'
61944   , p_adr_type_code                => 'S'
61945   , p_component_type               => l_component_type
61946   , p_component_code               => l_component_code
61947   , p_component_type_code          => l_component_type_code
61948   , p_component_appl_id            => l_component_appl_id
61949   , p_amb_context_code             => l_amb_context_code
61950   , p_side                         => 'NA'
61951   );
61952 
61953 
61954    --
61955    --
61956    END IF;
61957    --
61958    -- Bug 4922099
61959    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
61960           (NVL(l_enc_upg_option, 'N') = 'O')
61961         ) AND
61962         (l_bflow_method_code = 'PRIOR_ENTRY')
61963       )
61964    THEN
61965       IF
61966       --
61967       1 = 2
61968       --
61969       THEN
61970       xla_accounting_err_pkg.build_message
61971                                     (p_appli_s_name            => 'XLA'
61972                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
61973                                     ,p_token_1                 => 'LINE_NUMBER'
61974                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
61975                                     ,p_token_2                 => 'LINE_TYPE_NAME'
61976                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
61977                                                                              l_component_type
61978                                                                             ,l_component_code
61979                                                                             ,l_component_type_code
61980                                                                             ,l_component_appl_id
61981                                                                             ,l_amb_context_code
61982                                                                             ,l_entity_code
61983                                                                             ,l_event_class_code
61987                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
61984                                                                            )
61985                                     ,p_token_3                 => 'OWNER'
61986                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
61988                                                                           ,p_lookup_code    => l_component_type_code
61989                                                                          )
61990                                     ,p_token_4                 => 'PRODUCT_NAME'
61991                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
61992                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
61993                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
61994                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
61995                                     ,p_ae_header_id            =>  NULL
61996                                        );
61997 
61998         IF (C_LEVEL_ERROR>= g_log_level) THEN
61999                  trace
62000                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62001                       ,p_level    => C_LEVEL_ERROR
62002                       ,p_module   => l_log_module);
62003         END IF;
62004       END IF;
62005    END IF;
62006    --
62007    --
62008    ------------------------------------------------------------------------------------------------
62009    -- 4219869 Business Flow
62010    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62011    -- Prior Entry.  Currently, the following code is always generated.
62012    ------------------------------------------------------------------------------------------------
62013    XLA_AE_LINES_PKG.ValidateCurrentLine;
62014 
62015    ------------------------------------------------------------------------------------
62016    -- 4219869 Business Flow
62017    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62018    ------------------------------------------------------------------------------------
62019    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62020 
62021    ----------------------------------------------------------------------------------
62022    -- 4219869 Business Flow
62023    -- Update journal entry status -- Need to generate this within IF <condition>
62024    ----------------------------------------------------------------------------------
62025    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62026          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62027          ,p_balance_type_code => l_balance_type_code
62028          );
62029 
62030    -------------------------------------------------------------------------------------------
62031    -- 4262811 - Generate the Accrual Reversal lines
62032    -------------------------------------------------------------------------------------------
62033    BEGIN
62034       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62035                               (g_array_event(p_event_id).array_value_num('header_index'));
62036       IF l_acc_rev_flag IS NULL THEN
62037          l_acc_rev_flag := 'N';
62038       END IF;
62039    EXCEPTION
62040       WHEN OTHERS THEN
62041          l_acc_rev_flag := 'N';
62042    END;
62043    --
62044    IF (l_acc_rev_flag = 'Y') THEN
62045 
62046        -- 4645092  ------------------------------------------------------------------------------
62047        -- To allow MPA report to determine if it should generate report process
62048        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62049        ------------------------------------------------------------------------------------------
62050 
62051        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62052        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62053    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
62054    -- call ADRs
62055    -- Bug 4922099
62056    --
62057    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62058         (NVL(l_actual_upg_option, 'N') = 'O') OR
62059         (NVL(l_enc_upg_option, 'N') = 'O')
62060       )
62061    THEN
62062    NULL;
62063    --
62064    --
62065    
62066   l_ccid := AcctDerRule_32(
62067            p_application_id           => p_application_id
62068          , p_ae_header_id             => l_ae_header_id 
62069 , p_source_36 => p_source_36
62070          , x_transaction_coa_id       => l_adr_transaction_coa_id
62071          , x_accounting_coa_id        => l_adr_accounting_coa_id
62072          , x_value_type_code          => l_adr_value_type_code
62076    xla_ae_lines_pkg.set_ccid(
62073          , p_side                     => 'NA'
62074    );
62075 
62077     p_code_combination_id          => l_ccid
62078   , p_value_type_code              => l_adr_value_type_code
62079   , p_transaction_coa_id           => l_adr_transaction_coa_id
62080   , p_accounting_coa_id            => l_adr_accounting_coa_id
62081   , p_adr_code                     => 'RMT_BNK_UNAPP_CCID'
62082   , p_adr_type_code                => 'S'
62083   , p_component_type               => l_component_type
62084   , p_component_code               => l_component_code
62085   , p_component_type_code          => l_component_type_code
62086   , p_component_appl_id            => l_component_appl_id
62087   , p_amb_context_code             => l_amb_context_code
62088   , p_side                         => 'NA'
62089   );
62090 
62091 
62092    --
62093    --
62094    END IF;
62095 
62096        --
62097        -- Update the line information that should be overwritten
62098        --
62099        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62100                                          p_header_num   => 1);
62101        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
62102 
62103        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62104 
62105        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
62106           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62107        END IF;
62108 
62109       --
62110       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62111       --
62112       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62113           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
62114       ELSE
62115           ---------------------------------------------------------------------------------------------------
62116           -- 4262811a Switch Sign
62117           ---------------------------------------------------------------------------------------------------
62118           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
62119           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62120                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62121           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62122                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62123           -- 5132302
62124           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62125                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62126 
62127       END IF;
62128 
62129       -- 4955764
62130       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62131       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62132 
62133 
62134       XLA_AE_LINES_PKG.ValidateCurrentLine;
62135       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62136 
62137       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62138                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62139                ,p_balance_type_code => l_balance_type_code);
62140 
62141    END IF;
62142 
62143    -----------------------------------------------------------------------------------------
62144    -- 4262811 Multiperiod Accounting
62145    -----------------------------------------------------------------------------------------
62146      -- No MPA option is assigned.
62147 
62148 
62149 END IF;
62150 END IF;
62151 --
62152 
62153 --
62154 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62155    trace
62156       (p_msg      => 'END of AcctLineType_135'
62157       ,p_level    => C_LEVEL_PROCEDURE
62158       ,p_module   => l_log_module);
62159 END IF;
62160 --
62161 EXCEPTION
62162   WHEN xla_exceptions_pkg.application_exception THEN
62163       RAISE;
62164   WHEN OTHERS THEN
62165        xla_exceptions_pkg.raise_message
62166            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_135');
62167 END AcctLineType_135;
62168 --
62169 
62170 ---------------------------------------
62171 --
62172 -- PRIVATE FUNCTION
62173 --         AcctLineType_136
62174 --
62175 ---------------------------------------
62176 PROCEDURE AcctLineType_136 (
62177   p_application_id        IN NUMBER
62178  ,p_event_id              IN NUMBER
62179  ,p_calculate_acctd_flag  IN VARCHAR2
62180  ,p_calculate_g_l_flag    IN VARCHAR2
62181  ,p_actual_flag           IN OUT VARCHAR2
62182  ,p_balance_type_code     OUT VARCHAR2
62183  ,p_gain_or_loss_ref      OUT VARCHAR2
62184  
62185 --Remittance Bank Account Unapplied Account
62186  , p_source_36            IN NUMBER
62187 --Distribution Source Type
62188  , p_source_39            IN VARCHAR2
62189 --Distribution Line Identifier
62190  , p_source_41            IN NUMBER
62191 --Distribution Type
62192  , p_source_42            IN VARCHAR2
62193 --Exchange Date
62197 --Exchange Rate Type
62194  , p_source_45            IN DATE
62195 --Exchange Rate
62196  , p_source_46            IN NUMBER
62198  , p_source_47            IN VARCHAR2
62199 --Accounting Amount
62200  , p_source_52            IN NUMBER
62201 --Transaction Distribution Identifier
62202  , p_source_56            IN NUMBER
62203 --Transaction Distribution Type
62204  , p_source_57            IN VARCHAR2
62205 --Distribution Multi Fund Additional Entry
62206  , p_source_99            IN VARCHAR2
62207 --Receipt Applied To Application Identifier
62208  , p_source_101            IN NUMBER
62209 --Transaction Entity Code
62210  , p_source_102            IN VARCHAR2
62211 --Transaction Identifier
62212  , p_source_103            IN NUMBER
62213 --DIST_ENT_AMT_FROM
62214  , p_source_104            IN NUMBER
62215 --Applying Document Currency Code
62216  , p_source_105            IN VARCHAR2
62217 --Distribution Party Type
62218  , p_source_108            IN VARCHAR2
62219 --Distribution Source Table
62220  , p_source_111            IN VARCHAR2
62221 --Receipt Pay From Customer
62222  , p_source_112            IN NUMBER
62223 --Receipt Customer Site Use Identifier
62224  , p_source_113            IN NUMBER
62225 --Receipt Application Status
62226  , p_source_114            IN VARCHAR2
62227 )
62228 IS
62229 
62230 l_component_type              VARCHAR2(80);
62231 l_component_code              VARCHAR2(30);
62232 l_component_type_code         VARCHAR2(1);
62233 l_component_appl_id           INTEGER;
62234 l_amb_context_code            VARCHAR2(30);
62235 l_entity_code                 VARCHAR2(30);
62236 l_event_class_code            VARCHAR2(30);
62237 l_ae_header_id                NUMBER;
62238 l_event_type_code             VARCHAR2(30);
62239 l_line_definition_code        VARCHAR2(30);
62240 l_line_definition_owner_code  VARCHAR2(1);
62241 --
62242 -- adr variables
62243 l_segment                     VARCHAR2(30);
62244 l_ccid                        NUMBER;
62245 l_adr_transaction_coa_id      NUMBER;
62246 l_adr_accounting_coa_id       NUMBER;
62247 l_adr_flexfield_segment_code  VARCHAR2(30);
62248 l_adr_flex_value_set_id       NUMBER;
62249 l_adr_value_type_code         VARCHAR2(30);
62250 l_adr_value_combination_id    NUMBER;
62251 l_adr_value_segment_code      VARCHAR2(30);
62252 
62253 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
62254 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
62255 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
62256 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
62257 
62258 -- 4262811 Variables ------------------------------------------------------------------------------------------
62259 l_entered_amt_idx             NUMBER;
62260 l_accted_amt_idx              NUMBER;
62261 l_acc_rev_flag                VARCHAR2(1);
62262 l_accrual_line_num            NUMBER;
62263 l_tmp_amt                     NUMBER;
62264 l_acc_rev_natural_side_code   VARCHAR2(1);
62265 
62266 l_num_entries                 NUMBER;
62267 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
62271 l_recog_line_1                NUMBER;
62268 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
62269 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
62270 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
62272 l_recog_line_2                NUMBER;
62273 
62274 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
62275 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
62276 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
62277 
62278 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62279 
62280 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
62281 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
62282 
62283 ---------------------------------------------------------------------------------------------------------------
62284 
62285 
62286 --
62287 -- bulk performance
62288 --
62289 l_balance_type_code           VARCHAR2(1);
62290 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
62291 l_log_module                  VARCHAR2(240);
62292 
62293 --
62294 -- Upgrade strategy
62295 --
62296 l_actual_upg_option           VARCHAR2(1);
62297 l_enc_upg_option           VARCHAR2(1);
62298 
62299 --
62300 BEGIN
62301 --
62302 IF g_log_enabled THEN
62303       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_136';
62304 END IF;
62305 --
62306 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62307 
62308       trace
62309          (p_msg      => 'BEGIN of AcctLineType_136'
62310          ,p_level    => C_LEVEL_PROCEDURE
62311          ,p_module   => l_log_module);
62312 
62313 END IF;
62314 --
62315 l_component_type             := 'AMB_JLT';
62316 l_component_code             := 'RCT_UNAPP_DEBIT';
62317 l_component_type_code        := 'S';
62318 l_component_appl_id          :=  222;
62319 l_amb_context_code           := 'DEFAULT';
62320 l_entity_code                := 'RECEIPTS';
62321 l_event_class_code           := 'RECEIPT';
62322 l_event_type_code            := 'RECEIPT_ALL';
62323 l_line_definition_owner_code := 'S';
62324 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
62325 --
62326 l_balance_type_code          := 'A';
62327 l_segment                     := NULL;
62328 l_ccid                        := NULL;
62329 l_adr_transaction_coa_id      := NULL;
62330 l_adr_accounting_coa_id       := NULL;
62331 l_adr_flexfield_segment_code  := NULL;
62332 l_adr_flex_value_set_id       := NULL;
62333 l_adr_value_type_code         := NULL;
62334 l_adr_value_combination_id    := NULL;
62335 l_adr_value_segment_code      := NULL;
62336 
62337 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
62338 l_bflow_class_code           := '';    -- 4219869 Business Flow
62339 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
62340 l_budgetary_control_flag     := 'N';
62341 
62342 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
62343 l_bflow_applied_to_amt       := NULL; -- 5132302
62344 l_entered_amt_idx            := NULL;          -- 4262811
62345 l_accted_amt_idx             := NULL;          -- 4262811
62346 l_acc_rev_flag               := NULL;          -- 4262811
62347 l_accrual_line_num           := NULL;          -- 4262811
62348 l_tmp_amt                    := NULL;          -- 4262811
62349 --
62350  
62351 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
62352     l_balance_type_code <> 'B' THEN
62353 IF ((NVL(p_source_39,'
62354 ') =  'REC' AND 
62355 NVL(p_source_99,'
62356 ') =  'N') OR 
62357 (NVL(p_source_99,'
62358 ') =  'N' AND 
62359 NVL(p_source_39,'
62360 ') =  'CASH') OR 
62361 (NVL(p_source_99,'
62362 ') =  'N' AND 
62363 NVL(p_source_39,'
62364 ') =  'CONFIRMATION') OR 
62365 (NVL(p_source_99,'
62366 ') =  'N' AND 
62367 NVL(p_source_39,'
62368 ') =  'CURR_ROUND') OR 
62369 (NVL(p_source_99,'
62370 ') =  'N' AND 
62371 NVL(p_source_39,'
62372 ') =  'DEFERRED_TAX') OR 
62373 (NVL(p_source_99,'
62374 ') =  'N' AND 
62375 NVL(p_source_111,'
62376 ') =  'CRH' AND 
62377 NVL(p_source_39,'
62378 ') =  'FACTOR') OR 
62379 (NVL(p_source_99,'
62380 ') =  'N' AND 
62381 NVL(p_source_39,'
62382 ') =  'ACC') OR 
62383 (NVL(p_source_99,'
62384 ') =  'N' AND 
62385 NVL(p_source_39,'
62386 ') =  'REMITTANCE' AND 
62387 NVL(p_source_111,'
62388 ') =  'CRH') OR 
62389 (NVL(p_source_99,'
62390 ') =  'N' AND 
62391 NVL(p_source_39,'
62392 ') =  'SHORT_TERM_DEBT') OR 
62393 (NVL(p_source_99,'
62394 ') =  'N' AND 
62395 NVL(p_source_39,'
62396 ') =  'TAX') OR 
62397 (NVL(p_source_99,'
62398 ') =  'N' AND 
62399 NVL(p_source_39,'
62400 ') =  'UNID') OR 
62401 (NVL(p_source_99,'
62402 ') =  'N' AND 
62403 NVL(p_source_39,'
62404 ') =  'BANK_CHARGES') OR 
62405 (NVL(p_source_99,'
62406 ') =  'N' AND 
62407 NVL(p_source_39,'
62408 ') =  'EDISC') OR 
62409 (NVL(p_source_99,'
62410 ') =  'N' AND 
62411 NVL(p_source_39,'
62412 ') =  'UNEDISC')
62413 ) AND NVL(p_source_114,'
62414 ') <>  'UNID'
62415  THEN 
62416 
62417    --
62418    XLA_AE_LINES_PKG.SetNewLine;
62419 
62420    p_balance_type_code          := l_balance_type_code;
62421    -- set the flag so later we will know whether the gain loss line needs to be created
62425    END IF;
62422    
62423    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
62424      p_actual_flag :='A';
62426 
62427    --
62428    -- bulk performance
62429    --
62430    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
62431                                       p_header_num   => 0); -- 4262811
62432    --
62433    -- set accounting line options
62434    --
62435    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
62436            p_natural_side_code          => 'D'
62437          , p_gain_or_loss_flag          => 'N'
62438          , p_gl_transfer_mode_code      => 'S'
62439          , p_acct_entry_type_code       => 'A'
62440          , p_switch_side_flag           => 'Y'
62441          , p_merge_duplicate_code       => 'A'
62442          );
62443    --
62444    l_acc_rev_natural_side_code := 'C';  -- 4262811
62445    -- 
62446    --
62447    -- set accounting line type info
62448    --
62449    xla_ae_lines_pkg.SetAcctLineType
62450       (p_component_type             => l_component_type
62451       ,p_event_type_code            => l_event_type_code
62452       ,p_line_definition_owner_code => l_line_definition_owner_code
62453       ,p_line_definition_code       => l_line_definition_code
62454       ,p_accounting_line_code       => l_component_code
62455       ,p_accounting_line_type_code  => l_component_type_code
62456       ,p_accounting_line_appl_id    => l_component_appl_id
62457       ,p_amb_context_code           => l_amb_context_code
62458       ,p_entity_code                => l_entity_code
62459       ,p_event_class_code           => l_event_class_code);
62460    --
62461    -- set accounting class
62462    --
62463    xla_ae_lines_pkg.SetAcctClass(
62464            p_accounting_class_code  => 'UNAPP'
62465          , p_ae_header_id           => l_ae_header_id
62466          );
62467 
62468    --
62469    -- set rounding class
62470    --
62471    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
62472                       'RECEIVABLE';
62473 
62474    --
62475    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
62476    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
62477    --
62478    -- bulk performance
62479    --
62480    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
62481 
62482    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
62483       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
62484 
62485    -- 4955764
62486    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62487       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
62488 
62489    -- 4458381 Public Sector Enh
62490    
62491    --
62492    -- set accounting attributes for the line type
62493    --
62494    l_entered_amt_idx := 8;
62495    l_accted_amt_idx  := 13;
62496    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
62497    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
62498    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
62499    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
62500    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
62501    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
62502    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
62503    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
62504    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
62505    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
62506    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
62507    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
62508    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
62509    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
62510    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
62511    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
62512    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
62513    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
62514    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
62515    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
62516    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
62517    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
62518    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
62519    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
62520    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
62521    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
62522    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
62523    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
62524    l_rec_acct_attrs.array_num_value(14)  := p_source_112;
62525    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
62526    l_rec_acct_attrs.array_num_value(15)  := p_source_113;
62527    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
62528    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
62529 
62530    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
62531    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
62532 
62536    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
62533    ---------------------------------------------------------------------------------------------------------------
62534    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
62535    ---------------------------------------------------------------------------------------------------------------
62537 
62538    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62539    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
62540 
62541    IF xla_accounting_cache_pkg.GetValueChar
62542          (p_source_code         => 'LEDGER_CATEGORY_CODE'
62543          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
62544    AND l_bflow_method_code = 'PRIOR_ENTRY'
62545 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
62546    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
62547          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
62548        )
62549    THEN
62550          xla_ae_lines_pkg.BflowUpgEntry
62551            (p_business_method_code    => l_bflow_method_code
62552            ,p_business_class_code     => l_bflow_class_code
62553            ,p_balance_type            => l_balance_type_code);
62554    ELSE
62555       NULL;
62556 -- No business flow processing for business flow method of NONE.
62557    END IF;
62558 
62559    --
62560    -- call analytical criteria
62561    --
62562    
62563    --
62564    -- call description
62565    --
62566    -- No description or it is inherited.
62567    --
62568    -- call ADRs
62569    -- Bug 4922099
62570    --
62571    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62572         (NVL(l_actual_upg_option, 'N') = 'O') OR
62573         (NVL(l_enc_upg_option, 'N') = 'O')
62574       )
62575    THEN
62576    NULL;
62577    --
62578    --
62579    
62580   l_ccid := AcctDerRule_32(
62581            p_application_id           => p_application_id
62582          , p_ae_header_id             => l_ae_header_id 
62583 , p_source_36 => p_source_36
62584          , x_transaction_coa_id       => l_adr_transaction_coa_id
62585          , x_accounting_coa_id        => l_adr_accounting_coa_id
62586          , x_value_type_code          => l_adr_value_type_code
62587          , p_side                     => 'NA'
62588    );
62589 
62590    xla_ae_lines_pkg.set_ccid(
62591     p_code_combination_id          => l_ccid
62592   , p_value_type_code              => l_adr_value_type_code
62593   , p_transaction_coa_id           => l_adr_transaction_coa_id
62594   , p_accounting_coa_id            => l_adr_accounting_coa_id
62595   , p_adr_code                     => 'RMT_BNK_UNAPP_CCID'
62596   , p_adr_type_code                => 'S'
62597   , p_component_type               => l_component_type
62598   , p_component_code               => l_component_code
62599   , p_component_type_code          => l_component_type_code
62600   , p_component_appl_id            => l_component_appl_id
62601   , p_amb_context_code             => l_amb_context_code
62602   , p_side                         => 'NA'
62603   );
62604 
62605 
62606    --
62607    --
62608    END IF;
62609    --
62610    -- Bug 4922099
62611    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
62612           (NVL(l_enc_upg_option, 'N') = 'O')
62613         ) AND
62614         (l_bflow_method_code = 'PRIOR_ENTRY')
62615       )
62616    THEN
62617       IF
62618       --
62619       1 = 2
62620       --
62621       THEN
62622       xla_accounting_err_pkg.build_message
62623                                     (p_appli_s_name            => 'XLA'
62624                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62625                                     ,p_token_1                 => 'LINE_NUMBER'
62626                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
62627                                     ,p_token_2                 => 'LINE_TYPE_NAME'
62628                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
62629                                                                              l_component_type
62630                                                                             ,l_component_code
62631                                                                             ,l_component_type_code
62632                                                                             ,l_component_appl_id
62633                                                                             ,l_amb_context_code
62634                                                                             ,l_entity_code
62635                                                                             ,l_event_class_code
62636                                                                            )
62637                                     ,p_token_3                 => 'OWNER'
62638                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
62639                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
62640                                                                           ,p_lookup_code    => l_component_type_code
62644                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
62641                                                                          )
62642                                     ,p_token_4                 => 'PRODUCT_NAME'
62643                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
62645                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
62646                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
62647                                     ,p_ae_header_id            =>  NULL
62648                                        );
62649 
62650         IF (C_LEVEL_ERROR>= g_log_level) THEN
62651                  trace
62652                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
62653                       ,p_level    => C_LEVEL_ERROR
62654                       ,p_module   => l_log_module);
62655         END IF;
62656       END IF;
62657    END IF;
62658    --
62659    --
62660    ------------------------------------------------------------------------------------------------
62661    -- 4219869 Business Flow
62662    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
62663    -- Prior Entry.  Currently, the following code is always generated.
62664    ------------------------------------------------------------------------------------------------
62665    XLA_AE_LINES_PKG.ValidateCurrentLine;
62666 
62667    ------------------------------------------------------------------------------------
62668    -- 4219869 Business Flow
62669    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
62670    ------------------------------------------------------------------------------------
62671    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62672 
62673    ----------------------------------------------------------------------------------
62674    -- 4219869 Business Flow
62675    -- Update journal entry status -- Need to generate this within IF <condition>
62676    ----------------------------------------------------------------------------------
62677    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62678          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
62679          ,p_balance_type_code => l_balance_type_code
62680          );
62681 
62682    -------------------------------------------------------------------------------------------
62683    -- 4262811 - Generate the Accrual Reversal lines
62684    -------------------------------------------------------------------------------------------
62685    BEGIN
62686       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
62687                               (g_array_event(p_event_id).array_value_num('header_index'));
62688       IF l_acc_rev_flag IS NULL THEN
62689          l_acc_rev_flag := 'N';
62690       END IF;
62691    EXCEPTION
62692       WHEN OTHERS THEN
62693          l_acc_rev_flag := 'N';
62694    END;
62695    --
62696    IF (l_acc_rev_flag = 'Y') THEN
62697 
62698        -- 4645092  ------------------------------------------------------------------------------
62699        -- To allow MPA report to determine if it should generate report process
62700        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
62701        ------------------------------------------------------------------------------------------
62702 
62703        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
62704        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
62705    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
62706    -- call ADRs
62707    -- Bug 4922099
62708    --
62709    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
62710         (NVL(l_actual_upg_option, 'N') = 'O') OR
62711         (NVL(l_enc_upg_option, 'N') = 'O')
62712       )
62713    THEN
62714    NULL;
62715    --
62716    --
62717    
62718   l_ccid := AcctDerRule_32(
62719            p_application_id           => p_application_id
62720          , p_ae_header_id             => l_ae_header_id 
62721 , p_source_36 => p_source_36
62722          , x_transaction_coa_id       => l_adr_transaction_coa_id
62723          , x_accounting_coa_id        => l_adr_accounting_coa_id
62724          , x_value_type_code          => l_adr_value_type_code
62725          , p_side                     => 'NA'
62726    );
62727 
62728    xla_ae_lines_pkg.set_ccid(
62729     p_code_combination_id          => l_ccid
62730   , p_value_type_code              => l_adr_value_type_code
62731   , p_transaction_coa_id           => l_adr_transaction_coa_id
62732   , p_accounting_coa_id            => l_adr_accounting_coa_id
62733   , p_adr_code                     => 'RMT_BNK_UNAPP_CCID'
62734   , p_adr_type_code                => 'S'
62735   , p_component_type               => l_component_type
62736   , p_component_code               => l_component_code
62737   , p_component_type_code          => l_component_type_code
62738   , p_component_appl_id            => l_component_appl_id
62739   , p_amb_context_code             => l_amb_context_code
62740   , p_side                         => 'NA'
62741   );
62742 
62743 
62744    --
62745    --
62746    END IF;
62747 
62748        --
62749        -- Update the line information that should be overwritten
62750        --
62754 
62751        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
62752                                          p_header_num   => 1);
62753        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
62755        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
62756 
62757        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
62758           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
62759        END IF;
62760 
62761       --
62762       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
62763       --
62764       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
62765           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
62766       ELSE
62767           ---------------------------------------------------------------------------------------------------
62768           -- 4262811a Switch Sign
62769           ---------------------------------------------------------------------------------------------------
62770           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
62771           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62772                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62773           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
62774                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62775           -- 5132302
62776           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
62777                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
62778 
62779       END IF;
62780 
62781       -- 4955764
62782       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
62783       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
62784 
62785 
62786       XLA_AE_LINES_PKG.ValidateCurrentLine;
62787       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
62788 
62789       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
62790                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
62791                ,p_balance_type_code => l_balance_type_code);
62792 
62793    END IF;
62794 
62795    -----------------------------------------------------------------------------------------
62796    -- 4262811 Multiperiod Accounting
62797    -----------------------------------------------------------------------------------------
62798      -- No MPA option is assigned.
62799 
62800 
62801 END IF;
62802 END IF;
62803 --
62804 
62805 --
62806 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62807    trace
62808       (p_msg      => 'END of AcctLineType_136'
62809       ,p_level    => C_LEVEL_PROCEDURE
62810       ,p_module   => l_log_module);
62811 END IF;
62812 --
62813 EXCEPTION
62814   WHEN xla_exceptions_pkg.application_exception THEN
62815       RAISE;
62816   WHEN OTHERS THEN
62817        xla_exceptions_pkg.raise_message
62818            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_136');
62819 END AcctLineType_136;
62820 --
62821 
62822 ---------------------------------------
62823 --
62824 -- PRIVATE FUNCTION
62825 --         AcctLineType_137
62826 --
62827 ---------------------------------------
62828 PROCEDURE AcctLineType_137 (
62829   p_application_id        IN NUMBER
62830  ,p_event_id              IN NUMBER
62831  ,p_calculate_acctd_flag  IN VARCHAR2
62832  ,p_calculate_g_l_flag    IN VARCHAR2
62833  ,p_actual_flag           IN OUT VARCHAR2
62834  ,p_balance_type_code     OUT VARCHAR2
62835  ,p_gain_or_loss_ref      OUT VARCHAR2
62836  
62837 --Remittance Bank Account Unapplied Account
62838  , p_source_36            IN NUMBER
62839 --Distribution Source Type
62840  , p_source_39            IN VARCHAR2
62841 --Distribution Line Identifier
62842  , p_source_41            IN NUMBER
62843 --Distribution Type
62844  , p_source_42            IN VARCHAR2
62845 --Entered Amount
62846  , p_source_43            IN NUMBER
62847 --Currency Code
62848  , p_source_44            IN VARCHAR2
62849 --Exchange Date
62850  , p_source_45            IN DATE
62851 --Exchange Rate
62852  , p_source_46            IN NUMBER
62853 --Exchange Rate Type
62854  , p_source_47            IN VARCHAR2
62855 --Accounting Amount
62856  , p_source_52            IN NUMBER
62857 --Transaction Distribution Identifier
62858  , p_source_56            IN NUMBER
62859 --Transaction Distribution Type
62860  , p_source_57            IN VARCHAR2
62861 --Distribution Multi Fund Additional Entry
62862  , p_source_99            IN VARCHAR2
62863 --Receipt Applied To Application Identifier
62864  , p_source_101            IN NUMBER
62865 --Transaction Entity Code
62866  , p_source_102            IN VARCHAR2
62867 --Transaction Identifier
62868  , p_source_103            IN NUMBER
62869 --Distribution Party Type
62870  , p_source_108            IN VARCHAR2
62871 --Distribution Source Table
62872  , p_source_111            IN VARCHAR2
62873 --Receipt Application Status
62874  , p_source_114            IN VARCHAR2
62878  , p_source_116            IN NUMBER
62875 --Receipt Previous Pay From Customer
62876  , p_source_115            IN NUMBER
62877 --Receipt Previous Customer Site Use Id
62879 )
62880 IS
62881 
62882 l_component_type              VARCHAR2(80);
62883 l_component_code              VARCHAR2(30);
62884 l_component_type_code         VARCHAR2(1);
62885 l_component_appl_id           INTEGER;
62886 l_amb_context_code            VARCHAR2(30);
62887 l_entity_code                 VARCHAR2(30);
62888 l_event_class_code            VARCHAR2(30);
62889 l_ae_header_id                NUMBER;
62890 l_event_type_code             VARCHAR2(30);
62891 l_line_definition_code        VARCHAR2(30);
62892 l_line_definition_owner_code  VARCHAR2(1);
62893 --
62894 -- adr variables
62895 l_segment                     VARCHAR2(30);
62896 l_ccid                        NUMBER;
62897 l_adr_transaction_coa_id      NUMBER;
62898 l_adr_accounting_coa_id       NUMBER;
62899 l_adr_flexfield_segment_code  VARCHAR2(30);
62900 l_adr_flex_value_set_id       NUMBER;
62901 l_adr_value_type_code         VARCHAR2(30);
62902 l_adr_value_combination_id    NUMBER;
62903 l_adr_value_segment_code      VARCHAR2(30);
62904 
62905 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
62906 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
62907 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
62908 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
62909 
62910 -- 4262811 Variables ------------------------------------------------------------------------------------------
62911 l_entered_amt_idx             NUMBER;
62912 l_accted_amt_idx              NUMBER;
62913 l_acc_rev_flag                VARCHAR2(1);
62914 l_accrual_line_num            NUMBER;
62915 l_tmp_amt                     NUMBER;
62916 l_acc_rev_natural_side_code   VARCHAR2(1);
62917 
62918 l_num_entries                 NUMBER;
62919 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
62920 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
62921 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
62922 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
62923 l_recog_line_1                NUMBER;
62924 l_recog_line_2                NUMBER;
62925 
62926 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
62927 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
62928 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
62929 
62930 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
62931 
62932 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
62933 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
62934 
62935 ---------------------------------------------------------------------------------------------------------------
62936 
62937 
62938 --
62939 -- bulk performance
62940 --
62941 l_balance_type_code           VARCHAR2(1);
62942 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
62943 l_log_module                  VARCHAR2(240);
62944 
62945 --
62946 -- Upgrade strategy
62947 --
62948 l_actual_upg_option           VARCHAR2(1);
62949 l_enc_upg_option           VARCHAR2(1);
62950 
62951 --
62952 BEGIN
62953 --
62954 IF g_log_enabled THEN
62955       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_137';
62956 END IF;
62957 --
62958 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
62959 
62960       trace
62961          (p_msg      => 'BEGIN of AcctLineType_137'
62962          ,p_level    => C_LEVEL_PROCEDURE
62963          ,p_module   => l_log_module);
62964 
62965 END IF;
62966 --
62967 l_component_type             := 'AMB_JLT';
62968 l_component_code             := 'RCT_UNAPP_UNID';
62969 l_component_type_code        := 'S';
62970 l_component_appl_id          :=  222;
62971 l_amb_context_code           := 'DEFAULT';
62972 l_entity_code                := 'RECEIPTS';
62973 l_event_class_code           := 'RECEIPT';
62974 l_event_type_code            := 'RECEIPT_ALL';
62975 l_line_definition_owner_code := 'S';
62976 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
62977 --
62978 l_balance_type_code          := 'A';
62979 l_segment                     := NULL;
62980 l_ccid                        := NULL;
62981 l_adr_transaction_coa_id      := NULL;
62982 l_adr_accounting_coa_id       := NULL;
62983 l_adr_flexfield_segment_code  := NULL;
62984 l_adr_flex_value_set_id       := NULL;
62985 l_adr_value_type_code         := NULL;
62986 l_adr_value_combination_id    := NULL;
62987 l_adr_value_segment_code      := NULL;
62988 
62989 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
62990 l_bflow_class_code           := '';    -- 4219869 Business Flow
62991 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
62992 l_budgetary_control_flag     := 'N';
62993 
62994 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
62995 l_bflow_applied_to_amt       := NULL; -- 5132302
62996 l_entered_amt_idx            := NULL;          -- 4262811
62997 l_accted_amt_idx             := NULL;          -- 4262811
62998 l_acc_rev_flag               := NULL;          -- 4262811
62999 l_accrual_line_num           := NULL;          -- 4262811
63000 l_tmp_amt                    := NULL;          -- 4262811
63001 --
63002  
63006 ') =  'UNID' AND 
63003 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
63004     l_balance_type_code <> 'B' THEN
63005 IF NVL(p_source_114,'
63007 p_source_115 IS NOT NULL AND 
63008 p_source_116 IS NOT NULL AND 
63009 ((NVL(p_source_39,'
63010 ') =  'CASH' AND 
63011 NVL(p_source_99,'
63012 ') =  'N') OR 
63013 (NVL(p_source_39,'
63014 ') =  'REMITTANCE' AND 
63015 NVL(p_source_111,'
63016 ') =  'CRH' AND 
63017 NVL(p_source_99,'
63018 ') =  'N') OR 
63019 (NVL(p_source_39,'
63020 ') =  'CONFIRMATION' AND 
63021 NVL(p_source_99,'
63022 ') =  'N') OR 
63023 (NVL(p_source_39,'
63024 ') =  'FACTOR' AND 
63025 NVL(p_source_111,'
63026 ') =  'CRH' AND 
63027 NVL(p_source_99,'
63028 ') =  'N') OR 
63029 (NVL(p_source_39,'
63030 ') =  'SHORT_TERM_DEBT' AND 
63031 NVL(p_source_99,'
63032 ') =  'N') OR 
63033 (NVL(p_source_39,'
63034 ') =  'BANK_CHARGES' AND 
63035 NVL(p_source_99,'
63036 ') =  'N') OR 
63037 (NVL(p_source_39,'
63038 ') =  'UNID' AND 
63039 NVL(p_source_99,'
63040 ') =  'N')
63041 ) THEN 
63042 
63043    --
63044    XLA_AE_LINES_PKG.SetNewLine;
63045 
63046    p_balance_type_code          := l_balance_type_code;
63047    -- set the flag so later we will know whether the gain loss line needs to be created
63048    
63049    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
63050      p_actual_flag :='A';
63051    END IF;
63052 
63053    --
63054    -- bulk performance
63055    --
63056    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
63057                                       p_header_num   => 0); -- 4262811
63058    --
63059    -- set accounting line options
63060    --
63061    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
63062            p_natural_side_code          => 'D'
63063          , p_gain_or_loss_flag          => 'N'
63064          , p_gl_transfer_mode_code      => 'S'
63065          , p_acct_entry_type_code       => 'A'
63066          , p_switch_side_flag           => 'Y'
63067          , p_merge_duplicate_code       => 'A'
63068          );
63069    --
63070    l_acc_rev_natural_side_code := 'C';  -- 4262811
63071    -- 
63072    --
63073    -- set accounting line type info
63074    --
63075    xla_ae_lines_pkg.SetAcctLineType
63076       (p_component_type             => l_component_type
63077       ,p_event_type_code            => l_event_type_code
63078       ,p_line_definition_owner_code => l_line_definition_owner_code
63079       ,p_line_definition_code       => l_line_definition_code
63080       ,p_accounting_line_code       => l_component_code
63081       ,p_accounting_line_type_code  => l_component_type_code
63082       ,p_accounting_line_appl_id    => l_component_appl_id
63083       ,p_amb_context_code           => l_amb_context_code
63084       ,p_entity_code                => l_entity_code
63085       ,p_event_class_code           => l_event_class_code);
63086    --
63087    -- set accounting class
63088    --
63089    xla_ae_lines_pkg.SetAcctClass(
63090            p_accounting_class_code  => 'UNAPP'
63091          , p_ae_header_id           => l_ae_header_id
63092          );
63093 
63094    --
63095    -- set rounding class
63096    --
63097    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63098                       'RECEIVABLE';
63099 
63100    --
63101    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63102    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63103    --
63104    -- bulk performance
63105    --
63106    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63107 
63108    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63109       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63110 
63111    -- 4955764
63112    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63113       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63114 
63115    -- 4458381 Public Sector Enh
63116    
63117    --
63118    -- set accounting attributes for the line type
63119    --
63120    l_entered_amt_idx := 8;
63121    l_accted_amt_idx  := 13;
63122    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
63123    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
63124    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
63125    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
63126    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
63127    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
63128    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
63129    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
63130    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
63131    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
63132    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
63133    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
63134    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
63135    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
63136    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
63140    l_rec_acct_attrs.array_char_value(9)  := p_source_44;
63137    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
63138    l_rec_acct_attrs.array_num_value(8)  := p_source_43;
63139    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
63141    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
63142    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
63143    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
63144    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
63145    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
63146    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
63147    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
63148    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
63149    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
63150    l_rec_acct_attrs.array_num_value(14)  := p_source_115;
63151    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
63152    l_rec_acct_attrs.array_num_value(15)  := p_source_116;
63153    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
63154    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
63155 
63156    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63157    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63158 
63159    ---------------------------------------------------------------------------------------------------------------
63160    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63161    ---------------------------------------------------------------------------------------------------------------
63162    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63163 
63164    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63165    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63166 
63167    IF xla_accounting_cache_pkg.GetValueChar
63168          (p_source_code         => 'LEDGER_CATEGORY_CODE'
63169          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63170    AND l_bflow_method_code = 'PRIOR_ENTRY'
63171 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63172    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63173          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63174        )
63175    THEN
63176          xla_ae_lines_pkg.BflowUpgEntry
63177            (p_business_method_code    => l_bflow_method_code
63178            ,p_business_class_code     => l_bflow_class_code
63179            ,p_balance_type            => l_balance_type_code);
63180    ELSE
63181       NULL;
63182 -- No business flow processing for business flow method of NONE.
63183    END IF;
63184 
63185    --
63186    -- call analytical criteria
63187    --
63188    
63189    --
63190    -- call description
63191    --
63192    -- No description or it is inherited.
63193    --
63194    -- call ADRs
63195    -- Bug 4922099
63196    --
63197    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63198         (NVL(l_actual_upg_option, 'N') = 'O') OR
63199         (NVL(l_enc_upg_option, 'N') = 'O')
63200       )
63201    THEN
63202    NULL;
63203    --
63204    --
63205    
63206   l_ccid := AcctDerRule_32(
63207            p_application_id           => p_application_id
63208          , p_ae_header_id             => l_ae_header_id 
63209 , p_source_36 => p_source_36
63210          , x_transaction_coa_id       => l_adr_transaction_coa_id
63211          , x_accounting_coa_id        => l_adr_accounting_coa_id
63212          , x_value_type_code          => l_adr_value_type_code
63213          , p_side                     => 'NA'
63214    );
63215 
63216    xla_ae_lines_pkg.set_ccid(
63217     p_code_combination_id          => l_ccid
63218   , p_value_type_code              => l_adr_value_type_code
63219   , p_transaction_coa_id           => l_adr_transaction_coa_id
63220   , p_accounting_coa_id            => l_adr_accounting_coa_id
63221   , p_adr_code                     => 'RMT_BNK_UNAPP_CCID'
63222   , p_adr_type_code                => 'S'
63223   , p_component_type               => l_component_type
63224   , p_component_code               => l_component_code
63225   , p_component_type_code          => l_component_type_code
63226   , p_component_appl_id            => l_component_appl_id
63227   , p_amb_context_code             => l_amb_context_code
63228   , p_side                         => 'NA'
63229   );
63230 
63231 
63232    --
63233    --
63234    END IF;
63235    --
63236    -- Bug 4922099
63237    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63238           (NVL(l_enc_upg_option, 'N') = 'O')
63239         ) AND
63240         (l_bflow_method_code = 'PRIOR_ENTRY')
63241       )
63242    THEN
63243       IF
63244       --
63245       1 = 2
63246       --
63247       THEN
63248       xla_accounting_err_pkg.build_message
63249                                     (p_appli_s_name            => 'XLA'
63250                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63251                                     ,p_token_1                 => 'LINE_NUMBER'
63252                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
63256                                                                             ,l_component_code
63253                                     ,p_token_2                 => 'LINE_TYPE_NAME'
63254                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
63255                                                                              l_component_type
63257                                                                             ,l_component_type_code
63258                                                                             ,l_component_appl_id
63259                                                                             ,l_amb_context_code
63260                                                                             ,l_entity_code
63261                                                                             ,l_event_class_code
63262                                                                            )
63263                                     ,p_token_3                 => 'OWNER'
63264                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
63265                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
63266                                                                           ,p_lookup_code    => l_component_type_code
63267                                                                          )
63268                                     ,p_token_4                 => 'PRODUCT_NAME'
63269                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63270                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63271                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63272                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63273                                     ,p_ae_header_id            =>  NULL
63274                                        );
63275 
63276         IF (C_LEVEL_ERROR>= g_log_level) THEN
63277                  trace
63278                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63279                       ,p_level    => C_LEVEL_ERROR
63280                       ,p_module   => l_log_module);
63281         END IF;
63282       END IF;
63283    END IF;
63284    --
63285    --
63286    ------------------------------------------------------------------------------------------------
63287    -- 4219869 Business Flow
63288    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63289    -- Prior Entry.  Currently, the following code is always generated.
63290    ------------------------------------------------------------------------------------------------
63291    XLA_AE_LINES_PKG.ValidateCurrentLine;
63292 
63293    ------------------------------------------------------------------------------------
63294    -- 4219869 Business Flow
63295    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63296    ------------------------------------------------------------------------------------
63297    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63298 
63299    ----------------------------------------------------------------------------------
63300    -- 4219869 Business Flow
63301    -- Update journal entry status -- Need to generate this within IF <condition>
63302    ----------------------------------------------------------------------------------
63303    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63304          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63305          ,p_balance_type_code => l_balance_type_code
63306          );
63307 
63308    -------------------------------------------------------------------------------------------
63309    -- 4262811 - Generate the Accrual Reversal lines
63310    -------------------------------------------------------------------------------------------
63311    BEGIN
63312       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63313                               (g_array_event(p_event_id).array_value_num('header_index'));
63314       IF l_acc_rev_flag IS NULL THEN
63315          l_acc_rev_flag := 'N';
63316       END IF;
63317    EXCEPTION
63318       WHEN OTHERS THEN
63319          l_acc_rev_flag := 'N';
63320    END;
63321    --
63322    IF (l_acc_rev_flag = 'Y') THEN
63323 
63324        -- 4645092  ------------------------------------------------------------------------------
63325        -- To allow MPA report to determine if it should generate report process
63326        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63327        ------------------------------------------------------------------------------------------
63328 
63329        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63330        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63331    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
63332    -- call ADRs
63333    -- Bug 4922099
63334    --
63335    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63336         (NVL(l_actual_upg_option, 'N') = 'O') OR
63337         (NVL(l_enc_upg_option, 'N') = 'O')
63338       )
63339    THEN
63340    NULL;
63341    --
63342    --
63343    
63344   l_ccid := AcctDerRule_32(
63345            p_application_id           => p_application_id
63346          , p_ae_header_id             => l_ae_header_id 
63347 , p_source_36 => p_source_36
63351          , p_side                     => 'NA'
63348          , x_transaction_coa_id       => l_adr_transaction_coa_id
63349          , x_accounting_coa_id        => l_adr_accounting_coa_id
63350          , x_value_type_code          => l_adr_value_type_code
63352    );
63353 
63354    xla_ae_lines_pkg.set_ccid(
63355     p_code_combination_id          => l_ccid
63356   , p_value_type_code              => l_adr_value_type_code
63357   , p_transaction_coa_id           => l_adr_transaction_coa_id
63358   , p_accounting_coa_id            => l_adr_accounting_coa_id
63359   , p_adr_code                     => 'RMT_BNK_UNAPP_CCID'
63360   , p_adr_type_code                => 'S'
63361   , p_component_type               => l_component_type
63362   , p_component_code               => l_component_code
63363   , p_component_type_code          => l_component_type_code
63364   , p_component_appl_id            => l_component_appl_id
63365   , p_amb_context_code             => l_amb_context_code
63366   , p_side                         => 'NA'
63367   );
63368 
63369 
63370    --
63371    --
63372    END IF;
63373 
63374        --
63375        -- Update the line information that should be overwritten
63376        --
63377        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63378                                          p_header_num   => 1);
63379        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
63380 
63381        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63382 
63383        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
63384           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63385        END IF;
63386 
63387       --
63388       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63389       --
63390       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63391           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
63392       ELSE
63393           ---------------------------------------------------------------------------------------------------
63394           -- 4262811a Switch Sign
63395           ---------------------------------------------------------------------------------------------------
63396           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
63397           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63398                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63399           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63400                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63401           -- 5132302
63402           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63403                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63404 
63405       END IF;
63406 
63407       -- 4955764
63408       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63409       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
63410 
63411 
63412       XLA_AE_LINES_PKG.ValidateCurrentLine;
63413       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63414 
63415       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63416                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
63417                ,p_balance_type_code => l_balance_type_code);
63418 
63419    END IF;
63420 
63421    -----------------------------------------------------------------------------------------
63422    -- 4262811 Multiperiod Accounting
63423    -----------------------------------------------------------------------------------------
63424      -- No MPA option is assigned.
63425 
63426 
63427 END IF;
63428 END IF;
63429 --
63430 
63431 --
63432 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63433    trace
63434       (p_msg      => 'END of AcctLineType_137'
63435       ,p_level    => C_LEVEL_PROCEDURE
63436       ,p_module   => l_log_module);
63437 END IF;
63438 --
63439 EXCEPTION
63440   WHEN xla_exceptions_pkg.application_exception THEN
63441       RAISE;
63442   WHEN OTHERS THEN
63443        xla_exceptions_pkg.raise_message
63444            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_137');
63445 END AcctLineType_137;
63446 --
63447 
63448 ---------------------------------------
63449 --
63450 -- PRIVATE FUNCTION
63451 --         AcctLineType_138
63452 --
63453 ---------------------------------------
63454 PROCEDURE AcctLineType_138 (
63455   p_application_id        IN NUMBER
63456  ,p_event_id              IN NUMBER
63457  ,p_calculate_acctd_flag  IN VARCHAR2
63458  ,p_calculate_g_l_flag    IN VARCHAR2
63459  ,p_actual_flag           IN OUT VARCHAR2
63460  ,p_balance_type_code     OUT VARCHAR2
63461  ,p_gain_or_loss_ref      OUT VARCHAR2
63462  
63463 --Distribution GL Account
63464  , p_source_32            IN NUMBER
63465 --Distribution Source Type
63466  , p_source_39            IN VARCHAR2
63467 --Distribution Line Identifier
63468  , p_source_41            IN NUMBER
63469 --Distribution Type
63470  , p_source_42            IN VARCHAR2
63471 --Entered Amount
63475 --Applied To Document Accounting Amount
63472  , p_source_43            IN NUMBER
63473 --Currency Code
63474  , p_source_44            IN VARCHAR2
63476  , p_source_48            IN NUMBER
63477 --Transaction Distribution Identifier
63478  , p_source_56            IN NUMBER
63479 --Transaction Distribution Type
63480  , p_source_57            IN VARCHAR2
63481 --Distribution Multi Fund Additional Entry
63482  , p_source_99            IN VARCHAR2
63483 --Applied To Document Exchange Date
63484  , p_source_100            IN DATE
63485 --Receipt Applied To Application Identifier
63486  , p_source_101            IN NUMBER
63487 --Transaction Entity Code
63488  , p_source_102            IN VARCHAR2
63489 --Transaction Identifier
63490  , p_source_103            IN NUMBER
63491 --Distribution Party Identifier
63492  , p_source_106            IN NUMBER
63493 --Distribution Party Site Id
63494  , p_source_107            IN NUMBER
63495 --Distribution Party Type
63496  , p_source_108            IN VARCHAR2
63497 --Applied To Document Exchange Rate Type
63498  , p_source_109            IN VARCHAR2
63499 --Applied To Document Exchange Rate
63500  , p_source_110            IN NUMBER
63501 )
63502 IS
63503 
63504 l_component_type              VARCHAR2(80);
63505 l_component_code              VARCHAR2(30);
63506 l_component_type_code         VARCHAR2(1);
63507 l_component_appl_id           INTEGER;
63508 l_amb_context_code            VARCHAR2(30);
63509 l_entity_code                 VARCHAR2(30);
63510 l_event_class_code            VARCHAR2(30);
63511 l_ae_header_id                NUMBER;
63512 l_event_type_code             VARCHAR2(30);
63513 l_line_definition_code        VARCHAR2(30);
63514 l_line_definition_owner_code  VARCHAR2(1);
63515 --
63516 -- adr variables
63517 l_segment                     VARCHAR2(30);
63518 l_ccid                        NUMBER;
63519 l_adr_transaction_coa_id      NUMBER;
63520 l_adr_accounting_coa_id       NUMBER;
63521 l_adr_flexfield_segment_code  VARCHAR2(30);
63522 l_adr_flex_value_set_id       NUMBER;
63523 l_adr_value_type_code         VARCHAR2(30);
63524 l_adr_value_combination_id    NUMBER;
63525 l_adr_value_segment_code      VARCHAR2(30);
63526 
63527 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
63528 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
63529 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
63530 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
63531 
63532 -- 4262811 Variables ------------------------------------------------------------------------------------------
63533 l_entered_amt_idx             NUMBER;
63534 l_accted_amt_idx              NUMBER;
63535 l_acc_rev_flag                VARCHAR2(1);
63536 l_accrual_line_num            NUMBER;
63537 l_tmp_amt                     NUMBER;
63538 l_acc_rev_natural_side_code   VARCHAR2(1);
63539 
63540 l_num_entries                 NUMBER;
63541 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
63542 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
63543 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
63544 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
63545 l_recog_line_1                NUMBER;
63546 l_recog_line_2                NUMBER;
63547 
63548 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
63549 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
63550 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
63551 
63552 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
63553 
63554 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
63555 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
63556 
63557 ---------------------------------------------------------------------------------------------------------------
63558 
63559 
63560 --
63561 -- bulk performance
63562 --
63563 l_balance_type_code           VARCHAR2(1);
63564 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
63565 l_log_module                  VARCHAR2(240);
63566 
63567 --
63568 -- Upgrade strategy
63569 --
63570 l_actual_upg_option           VARCHAR2(1);
63571 l_enc_upg_option           VARCHAR2(1);
63572 
63573 --
63574 BEGIN
63575 --
63576 IF g_log_enabled THEN
63577       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_138';
63578 END IF;
63579 --
63580 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
63581 
63582       trace
63583          (p_msg      => 'BEGIN of AcctLineType_138'
63584          ,p_level    => C_LEVEL_PROCEDURE
63585          ,p_module   => l_log_module);
63586 
63587 END IF;
63588 --
63589 l_component_type             := 'AMB_JLT';
63590 l_component_code             := 'RCT_UNEDISC';
63591 l_component_type_code        := 'S';
63592 l_component_appl_id          :=  222;
63593 l_amb_context_code           := 'DEFAULT';
63594 l_entity_code                := 'RECEIPTS';
63595 l_event_class_code           := 'RECEIPT';
63596 l_event_type_code            := 'RECEIPT_ALL';
63597 l_line_definition_owner_code := 'S';
63598 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
63599 --
63600 l_balance_type_code          := 'A';
63601 l_segment                     := NULL;
63605 l_adr_flexfield_segment_code  := NULL;
63602 l_ccid                        := NULL;
63603 l_adr_transaction_coa_id      := NULL;
63604 l_adr_accounting_coa_id       := NULL;
63606 l_adr_flex_value_set_id       := NULL;
63607 l_adr_value_type_code         := NULL;
63608 l_adr_value_combination_id    := NULL;
63609 l_adr_value_segment_code      := NULL;
63610 
63611 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
63612 l_bflow_class_code           := '';    -- 4219869 Business Flow
63613 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
63614 l_budgetary_control_flag     := 'N';
63615 
63616 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
63617 l_bflow_applied_to_amt       := NULL; -- 5132302
63618 l_entered_amt_idx            := NULL;          -- 4262811
63619 l_accted_amt_idx             := NULL;          -- 4262811
63620 l_acc_rev_flag               := NULL;          -- 4262811
63621 l_accrual_line_num           := NULL;          -- 4262811
63622 l_tmp_amt                    := NULL;          -- 4262811
63623 --
63624  
63625 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
63626     l_balance_type_code <> 'B' THEN
63627 IF NVL(p_source_39,'
63628 ') =  'UNEDISC' AND 
63629 NVL(p_source_99,'
63630 ') =  'N'
63631  THEN 
63632 
63633    --
63634    XLA_AE_LINES_PKG.SetNewLine;
63635 
63636    p_balance_type_code          := l_balance_type_code;
63637    -- set the flag so later we will know whether the gain loss line needs to be created
63638    
63639    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
63640      p_actual_flag :='A';
63641    END IF;
63642 
63643    --
63644    -- bulk performance
63645    --
63646    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
63647                                       p_header_num   => 0); -- 4262811
63648    --
63649    -- set accounting line options
63650    --
63651    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
63652            p_natural_side_code          => 'C'
63653          , p_gain_or_loss_flag          => 'N'
63654          , p_gl_transfer_mode_code      => 'S'
63655          , p_acct_entry_type_code       => 'A'
63656          , p_switch_side_flag           => 'Y'
63657          , p_merge_duplicate_code       => 'A'
63658          );
63659    --
63660    l_acc_rev_natural_side_code := 'D';  -- 4262811
63661    -- 
63662    --
63663    -- set accounting line type info
63664    --
63665    xla_ae_lines_pkg.SetAcctLineType
63666       (p_component_type             => l_component_type
63667       ,p_event_type_code            => l_event_type_code
63668       ,p_line_definition_owner_code => l_line_definition_owner_code
63669       ,p_line_definition_code       => l_line_definition_code
63670       ,p_accounting_line_code       => l_component_code
63671       ,p_accounting_line_type_code  => l_component_type_code
63672       ,p_accounting_line_appl_id    => l_component_appl_id
63673       ,p_amb_context_code           => l_amb_context_code
63674       ,p_entity_code                => l_entity_code
63675       ,p_event_class_code           => l_event_class_code);
63676    --
63677    -- set accounting class
63678    --
63679    xla_ae_lines_pkg.SetAcctClass(
63680            p_accounting_class_code  => 'UNEDISC'
63681          , p_ae_header_id           => l_ae_header_id
63682          );
63683 
63684    --
63685    -- set rounding class
63686    --
63687    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
63688                       'RECEIVABLE';
63689 
63690    --
63691    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
63692    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
63693    --
63694    -- bulk performance
63695    --
63696    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
63697 
63698    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
63699       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
63700 
63701    -- 4955764
63702    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63703       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
63704 
63705    -- 4458381 Public Sector Enh
63706    
63707    --
63708    -- set accounting attributes for the line type
63709    --
63710    l_entered_amt_idx := 8;
63711    l_accted_amt_idx  := 13;
63712    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
63713    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
63714    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
63715    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
63716    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
63717    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
63718    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
63719    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
63720    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
63721    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
63722    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
63726    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
63723    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
63724    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
63725    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
63727    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
63728    l_rec_acct_attrs.array_num_value(8)  := p_source_43;
63729    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
63730    l_rec_acct_attrs.array_char_value(9)  := p_source_44;
63731    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
63732    l_rec_acct_attrs.array_date_value(10)  := p_source_100;
63733    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
63734    l_rec_acct_attrs.array_num_value(11)  := p_source_110;
63735    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
63736    l_rec_acct_attrs.array_char_value(12)  := p_source_109;
63737    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
63738    l_rec_acct_attrs.array_num_value(13)  := p_source_48;
63739    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
63740    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
63741    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
63742    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
63743    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
63744    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
63745 
63746    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
63747    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
63748 
63749    ---------------------------------------------------------------------------------------------------------------
63750    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
63751    ---------------------------------------------------------------------------------------------------------------
63752    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
63753 
63754    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63755    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
63756 
63757    IF xla_accounting_cache_pkg.GetValueChar
63758          (p_source_code         => 'LEDGER_CATEGORY_CODE'
63759          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
63760    AND l_bflow_method_code = 'PRIOR_ENTRY'
63761 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
63762    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
63763          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
63764        )
63765    THEN
63766          xla_ae_lines_pkg.BflowUpgEntry
63767            (p_business_method_code    => l_bflow_method_code
63768            ,p_business_class_code     => l_bflow_class_code
63769            ,p_balance_type            => l_balance_type_code);
63770    ELSE
63771       NULL;
63772 -- No business flow processing for business flow method of NONE.
63773    END IF;
63774 
63775    --
63776    -- call analytical criteria
63777    --
63778    
63779    --
63780    -- call description
63781    --
63782    -- No description or it is inherited.
63783    --
63784    -- call ADRs
63785    -- Bug 4922099
63786    --
63787    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63788         (NVL(l_actual_upg_option, 'N') = 'O') OR
63789         (NVL(l_enc_upg_option, 'N') = 'O')
63790       )
63791    THEN
63792    NULL;
63793    --
63794    --
63795    
63796   l_ccid := AcctDerRule_29(
63797            p_application_id           => p_application_id
63798          , p_ae_header_id             => l_ae_header_id 
63799 , p_source_32 => p_source_32
63800          , x_transaction_coa_id       => l_adr_transaction_coa_id
63801          , x_accounting_coa_id        => l_adr_accounting_coa_id
63802          , x_value_type_code          => l_adr_value_type_code
63803          , p_side                     => 'NA'
63804    );
63805 
63806    xla_ae_lines_pkg.set_ccid(
63807     p_code_combination_id          => l_ccid
63808   , p_value_type_code              => l_adr_value_type_code
63809   , p_transaction_coa_id           => l_adr_transaction_coa_id
63810   , p_accounting_coa_id            => l_adr_accounting_coa_id
63811   , p_adr_code                     => 'DIST_CCID'
63812   , p_adr_type_code                => 'S'
63813   , p_component_type               => l_component_type
63814   , p_component_code               => l_component_code
63815   , p_component_type_code          => l_component_type_code
63816   , p_component_appl_id            => l_component_appl_id
63817   , p_amb_context_code             => l_amb_context_code
63818   , p_side                         => 'NA'
63819   );
63820 
63821 
63822    --
63823    --
63824    END IF;
63825    --
63826    -- Bug 4922099
63827    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
63828           (NVL(l_enc_upg_option, 'N') = 'O')
63829         ) AND
63830         (l_bflow_method_code = 'PRIOR_ENTRY')
63831       )
63832    THEN
63833       IF
63834       --
63835       1 = 2
63836       --
63837       THEN
63838       xla_accounting_err_pkg.build_message
63839                                     (p_appli_s_name            => 'XLA'
63843                                     ,p_token_2                 => 'LINE_TYPE_NAME'
63840                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63841                                     ,p_token_1                 => 'LINE_NUMBER'
63842                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
63844                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
63845                                                                              l_component_type
63846                                                                             ,l_component_code
63847                                                                             ,l_component_type_code
63848                                                                             ,l_component_appl_id
63849                                                                             ,l_amb_context_code
63850                                                                             ,l_entity_code
63851                                                                             ,l_event_class_code
63852                                                                            )
63853                                     ,p_token_3                 => 'OWNER'
63854                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
63855                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
63856                                                                           ,p_lookup_code    => l_component_type_code
63857                                                                          )
63858                                     ,p_token_4                 => 'PRODUCT_NAME'
63859                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
63860                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
63861                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
63862                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
63863                                     ,p_ae_header_id            =>  NULL
63864                                        );
63865 
63866         IF (C_LEVEL_ERROR>= g_log_level) THEN
63867                  trace
63868                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
63869                       ,p_level    => C_LEVEL_ERROR
63870                       ,p_module   => l_log_module);
63871         END IF;
63872       END IF;
63873    END IF;
63874    --
63875    --
63876    ------------------------------------------------------------------------------------------------
63877    -- 4219869 Business Flow
63878    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
63879    -- Prior Entry.  Currently, the following code is always generated.
63880    ------------------------------------------------------------------------------------------------
63881    XLA_AE_LINES_PKG.ValidateCurrentLine;
63882 
63883    ------------------------------------------------------------------------------------
63884    -- 4219869 Business Flow
63885    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
63886    ------------------------------------------------------------------------------------
63887    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
63888 
63889    ----------------------------------------------------------------------------------
63890    -- 4219869 Business Flow
63891    -- Update journal entry status -- Need to generate this within IF <condition>
63892    ----------------------------------------------------------------------------------
63893    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
63894          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
63895          ,p_balance_type_code => l_balance_type_code
63896          );
63897 
63898    -------------------------------------------------------------------------------------------
63899    -- 4262811 - Generate the Accrual Reversal lines
63900    -------------------------------------------------------------------------------------------
63901    BEGIN
63902       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
63903                               (g_array_event(p_event_id).array_value_num('header_index'));
63904       IF l_acc_rev_flag IS NULL THEN
63905          l_acc_rev_flag := 'N';
63906       END IF;
63907    EXCEPTION
63908       WHEN OTHERS THEN
63909          l_acc_rev_flag := 'N';
63910    END;
63911    --
63912    IF (l_acc_rev_flag = 'Y') THEN
63913 
63914        -- 4645092  ------------------------------------------------------------------------------
63915        -- To allow MPA report to determine if it should generate report process
63916        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
63917        ------------------------------------------------------------------------------------------
63918 
63919        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
63920        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
63921    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
63922    -- call ADRs
63923    -- Bug 4922099
63924    --
63925    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
63926         (NVL(l_actual_upg_option, 'N') = 'O') OR
63927         (NVL(l_enc_upg_option, 'N') = 'O')
63928       )
63929    THEN
63933    
63930    NULL;
63931    --
63932    --
63934   l_ccid := AcctDerRule_29(
63935            p_application_id           => p_application_id
63936          , p_ae_header_id             => l_ae_header_id 
63937 , p_source_32 => p_source_32
63938          , x_transaction_coa_id       => l_adr_transaction_coa_id
63939          , x_accounting_coa_id        => l_adr_accounting_coa_id
63940          , x_value_type_code          => l_adr_value_type_code
63941          , p_side                     => 'NA'
63942    );
63943 
63944    xla_ae_lines_pkg.set_ccid(
63945     p_code_combination_id          => l_ccid
63946   , p_value_type_code              => l_adr_value_type_code
63947   , p_transaction_coa_id           => l_adr_transaction_coa_id
63948   , p_accounting_coa_id            => l_adr_accounting_coa_id
63949   , p_adr_code                     => 'DIST_CCID'
63950   , p_adr_type_code                => 'S'
63951   , p_component_type               => l_component_type
63952   , p_component_code               => l_component_code
63953   , p_component_type_code          => l_component_type_code
63954   , p_component_appl_id            => l_component_appl_id
63955   , p_amb_context_code             => l_amb_context_code
63956   , p_side                         => 'NA'
63957   );
63958 
63959 
63960    --
63961    --
63962    END IF;
63963 
63964        --
63965        -- Update the line information that should be overwritten
63966        --
63967        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
63968                                          p_header_num   => 1);
63969        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
63970 
63971        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
63972 
63973        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
63974           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
63975        END IF;
63976 
63977       --
63978       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
63979       --
63980       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
63981           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
63982       ELSE
63983           ---------------------------------------------------------------------------------------------------
63984           -- 4262811a Switch Sign
63985           ---------------------------------------------------------------------------------------------------
63986           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
63987           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63988                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63989           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
63990                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63991           -- 5132302
63992           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
63993                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
63994 
63995       END IF;
63996 
63997       -- 4955764
63998       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
63999       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
64000 
64001 
64002       XLA_AE_LINES_PKG.ValidateCurrentLine;
64003       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64004 
64005       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64006                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
64007                ,p_balance_type_code => l_balance_type_code);
64008 
64009    END IF;
64010 
64011    -----------------------------------------------------------------------------------------
64012    -- 4262811 Multiperiod Accounting
64013    -----------------------------------------------------------------------------------------
64014      -- No MPA option is assigned.
64015 
64016 
64017 END IF;
64018 END IF;
64019 --
64020 
64021 --
64022 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64023    trace
64024       (p_msg      => 'END of AcctLineType_138'
64025       ,p_level    => C_LEVEL_PROCEDURE
64026       ,p_module   => l_log_module);
64027 END IF;
64028 --
64029 EXCEPTION
64030   WHEN xla_exceptions_pkg.application_exception THEN
64031       RAISE;
64032   WHEN OTHERS THEN
64033        xla_exceptions_pkg.raise_message
64034            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_138');
64035 END AcctLineType_138;
64036 --
64037 
64038 ---------------------------------------
64039 --
64040 -- PRIVATE FUNCTION
64041 --         AcctLineType_139
64042 --
64043 ---------------------------------------
64044 PROCEDURE AcctLineType_139 (
64045   p_application_id        IN NUMBER
64046  ,p_event_id              IN NUMBER
64047  ,p_calculate_acctd_flag  IN VARCHAR2
64048  ,p_calculate_g_l_flag    IN VARCHAR2
64049  ,p_actual_flag           IN OUT VARCHAR2
64050  ,p_balance_type_code     OUT VARCHAR2
64051  ,p_gain_or_loss_ref      OUT VARCHAR2
64052  
64053 --Distribution GL Account
64057 --Distribution Line Identifier
64054  , p_source_32            IN NUMBER
64055 --Distribution Source Type
64056  , p_source_39            IN VARCHAR2
64058  , p_source_41            IN NUMBER
64059 --Distribution Type
64060  , p_source_42            IN VARCHAR2
64061 --Entered Amount
64062  , p_source_43            IN NUMBER
64063 --Currency Code
64064  , p_source_44            IN VARCHAR2
64065 --Applied To Document Accounting Amount
64066  , p_source_48            IN NUMBER
64067 --Transaction Distribution Identifier
64068  , p_source_56            IN NUMBER
64069 --Transaction Distribution Type
64070  , p_source_57            IN VARCHAR2
64071 --Distribution Multi Fund Additional Entry
64072  , p_source_99            IN VARCHAR2
64073 --Applied To Document Exchange Date
64074  , p_source_100            IN DATE
64075 --Receipt Applied To Application Identifier
64076  , p_source_101            IN NUMBER
64077 --Transaction Entity Code
64078  , p_source_102            IN VARCHAR2
64079 --Transaction Identifier
64080  , p_source_103            IN NUMBER
64081 --Distribution Party Identifier
64082  , p_source_106            IN NUMBER
64083 --Distribution Party Site Id
64084  , p_source_107            IN NUMBER
64085 --Distribution Party Type
64086  , p_source_108            IN VARCHAR2
64087 --Applied To Document Exchange Rate Type
64088  , p_source_109            IN VARCHAR2
64089 --Applied To Document Exchange Rate
64090  , p_source_110            IN NUMBER
64091 )
64092 IS
64093 
64094 l_component_type              VARCHAR2(80);
64095 l_component_code              VARCHAR2(30);
64096 l_component_type_code         VARCHAR2(1);
64097 l_component_appl_id           INTEGER;
64098 l_amb_context_code            VARCHAR2(30);
64099 l_entity_code                 VARCHAR2(30);
64100 l_event_class_code            VARCHAR2(30);
64101 l_ae_header_id                NUMBER;
64102 l_event_type_code             VARCHAR2(30);
64103 l_line_definition_code        VARCHAR2(30);
64104 l_line_definition_owner_code  VARCHAR2(1);
64105 --
64106 -- adr variables
64107 l_segment                     VARCHAR2(30);
64108 l_ccid                        NUMBER;
64109 l_adr_transaction_coa_id      NUMBER;
64110 l_adr_accounting_coa_id       NUMBER;
64111 l_adr_flexfield_segment_code  VARCHAR2(30);
64112 l_adr_flex_value_set_id       NUMBER;
64113 l_adr_value_type_code         VARCHAR2(30);
64114 l_adr_value_combination_id    NUMBER;
64115 l_adr_value_segment_code      VARCHAR2(30);
64116 
64117 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
64118 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
64119 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
64120 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
64121 
64122 -- 4262811 Variables ------------------------------------------------------------------------------------------
64123 l_entered_amt_idx             NUMBER;
64124 l_accted_amt_idx              NUMBER;
64125 l_acc_rev_flag                VARCHAR2(1);
64126 l_accrual_line_num            NUMBER;
64127 l_tmp_amt                     NUMBER;
64128 l_acc_rev_natural_side_code   VARCHAR2(1);
64129 
64130 l_num_entries                 NUMBER;
64131 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
64132 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
64133 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
64134 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
64135 l_recog_line_1                NUMBER;
64136 l_recog_line_2                NUMBER;
64137 
64138 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
64139 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
64140 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
64141 
64142 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
64143 
64144 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
64145 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
64146 
64147 ---------------------------------------------------------------------------------------------------------------
64148 
64149 
64150 --
64151 -- bulk performance
64152 --
64153 l_balance_type_code           VARCHAR2(1);
64154 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
64155 l_log_module                  VARCHAR2(240);
64156 
64157 --
64158 -- Upgrade strategy
64159 --
64160 l_actual_upg_option           VARCHAR2(1);
64161 l_enc_upg_option           VARCHAR2(1);
64162 
64163 --
64164 BEGIN
64165 --
64166 IF g_log_enabled THEN
64167       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_139';
64168 END IF;
64169 --
64170 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64171 
64172       trace
64173          (p_msg      => 'BEGIN of AcctLineType_139'
64174          ,p_level    => C_LEVEL_PROCEDURE
64175          ,p_module   => l_log_module);
64176 
64177 END IF;
64178 --
64179 l_component_type             := 'AMB_JLT';
64180 l_component_code             := 'RCT_UNEDISC_NON_REC_TAX';
64181 l_component_type_code        := 'S';
64182 l_component_appl_id          :=  222;
64183 l_amb_context_code           := 'DEFAULT';
64184 l_entity_code                := 'RECEIPTS';
64185 l_event_class_code           := 'RECEIPT';
64189 --
64186 l_event_type_code            := 'RECEIPT_ALL';
64187 l_line_definition_owner_code := 'S';
64188 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
64190 l_balance_type_code          := 'A';
64191 l_segment                     := NULL;
64192 l_ccid                        := NULL;
64193 l_adr_transaction_coa_id      := NULL;
64194 l_adr_accounting_coa_id       := NULL;
64195 l_adr_flexfield_segment_code  := NULL;
64196 l_adr_flex_value_set_id       := NULL;
64197 l_adr_value_type_code         := NULL;
64198 l_adr_value_combination_id    := NULL;
64199 l_adr_value_segment_code      := NULL;
64200 
64201 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
64202 l_bflow_class_code           := '';    -- 4219869 Business Flow
64203 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
64204 l_budgetary_control_flag     := 'N';
64205 
64206 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
64207 l_bflow_applied_to_amt       := NULL; -- 5132302
64208 l_entered_amt_idx            := NULL;          -- 4262811
64209 l_accted_amt_idx             := NULL;          -- 4262811
64210 l_acc_rev_flag               := NULL;          -- 4262811
64211 l_accrual_line_num           := NULL;          -- 4262811
64212 l_tmp_amt                    := NULL;          -- 4262811
64213 --
64214  
64215 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64216     l_balance_type_code <> 'B' THEN
64217 IF NVL(p_source_39,'
64218 ') =  'UNEDISC_NON_REC_TAX' AND 
64219 NVL(p_source_99,'
64220 ') =  'N'
64221  THEN 
64222 
64223    --
64224    XLA_AE_LINES_PKG.SetNewLine;
64225 
64226    p_balance_type_code          := l_balance_type_code;
64227    -- set the flag so later we will know whether the gain loss line needs to be created
64228    
64229    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64230      p_actual_flag :='A';
64231    END IF;
64232 
64233    --
64234    -- bulk performance
64235    --
64236    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64237                                       p_header_num   => 0); -- 4262811
64238    --
64239    -- set accounting line options
64240    --
64241    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64242            p_natural_side_code          => 'C'
64243          , p_gain_or_loss_flag          => 'N'
64244          , p_gl_transfer_mode_code      => 'S'
64245          , p_acct_entry_type_code       => 'A'
64246          , p_switch_side_flag           => 'Y'
64247          , p_merge_duplicate_code       => 'A'
64248          );
64249    --
64250    l_acc_rev_natural_side_code := 'D';  -- 4262811
64251    -- 
64252    --
64253    -- set accounting line type info
64254    --
64255    xla_ae_lines_pkg.SetAcctLineType
64256       (p_component_type             => l_component_type
64257       ,p_event_type_code            => l_event_type_code
64258       ,p_line_definition_owner_code => l_line_definition_owner_code
64259       ,p_line_definition_code       => l_line_definition_code
64260       ,p_accounting_line_code       => l_component_code
64261       ,p_accounting_line_type_code  => l_component_type_code
64262       ,p_accounting_line_appl_id    => l_component_appl_id
64263       ,p_amb_context_code           => l_amb_context_code
64264       ,p_entity_code                => l_entity_code
64265       ,p_event_class_code           => l_event_class_code);
64266    --
64267    -- set accounting class
64268    --
64269    xla_ae_lines_pkg.SetAcctClass(
64270            p_accounting_class_code  => 'UNEDISC_NON_REC_TAX'
64271          , p_ae_header_id           => l_ae_header_id
64272          );
64273 
64274    --
64275    -- set rounding class
64276    --
64277    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64278                       'RECEIVABLE';
64279 
64280    --
64281    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64282    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64283    --
64284    -- bulk performance
64285    --
64286    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64287 
64288    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64289       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64290 
64291    -- 4955764
64292    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64293       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64294 
64295    -- 4458381 Public Sector Enh
64296    
64297    --
64298    -- set accounting attributes for the line type
64299    --
64300    l_entered_amt_idx := 8;
64301    l_accted_amt_idx  := 13;
64302    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
64303    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
64304    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
64305    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
64306    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
64307    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
64308    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
64312    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
64309    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
64310    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
64311    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
64313    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
64314    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
64315    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
64316    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
64317    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
64318    l_rec_acct_attrs.array_num_value(8)  := p_source_43;
64319    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
64320    l_rec_acct_attrs.array_char_value(9)  := p_source_44;
64321    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
64322    l_rec_acct_attrs.array_date_value(10)  := p_source_100;
64323    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
64324    l_rec_acct_attrs.array_num_value(11)  := p_source_110;
64325    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
64326    l_rec_acct_attrs.array_char_value(12)  := p_source_109;
64327    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
64328    l_rec_acct_attrs.array_num_value(13)  := p_source_48;
64329    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
64330    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
64331    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
64332    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
64333    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
64334    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
64335 
64336    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64337    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64338 
64339    ---------------------------------------------------------------------------------------------------------------
64340    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64341    ---------------------------------------------------------------------------------------------------------------
64342    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64343 
64344    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64345    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64346 
64347    IF xla_accounting_cache_pkg.GetValueChar
64348          (p_source_code         => 'LEDGER_CATEGORY_CODE'
64349          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64350    AND l_bflow_method_code = 'PRIOR_ENTRY'
64351 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64352    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64353          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64354        )
64355    THEN
64356          xla_ae_lines_pkg.BflowUpgEntry
64357            (p_business_method_code    => l_bflow_method_code
64358            ,p_business_class_code     => l_bflow_class_code
64359            ,p_balance_type            => l_balance_type_code);
64360    ELSE
64361       NULL;
64362 -- No business flow processing for business flow method of NONE.
64363    END IF;
64364 
64365    --
64366    -- call analytical criteria
64367    --
64368    
64369    --
64370    -- call description
64371    --
64372    -- No description or it is inherited.
64373    --
64374    -- call ADRs
64375    -- Bug 4922099
64376    --
64377    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64378         (NVL(l_actual_upg_option, 'N') = 'O') OR
64379         (NVL(l_enc_upg_option, 'N') = 'O')
64380       )
64381    THEN
64382    NULL;
64383    --
64384    --
64385    
64386   l_ccid := AcctDerRule_29(
64387            p_application_id           => p_application_id
64388          , p_ae_header_id             => l_ae_header_id 
64389 , p_source_32 => p_source_32
64390          , x_transaction_coa_id       => l_adr_transaction_coa_id
64391          , x_accounting_coa_id        => l_adr_accounting_coa_id
64392          , x_value_type_code          => l_adr_value_type_code
64393          , p_side                     => 'NA'
64394    );
64395 
64396    xla_ae_lines_pkg.set_ccid(
64397     p_code_combination_id          => l_ccid
64398   , p_value_type_code              => l_adr_value_type_code
64399   , p_transaction_coa_id           => l_adr_transaction_coa_id
64400   , p_accounting_coa_id            => l_adr_accounting_coa_id
64401   , p_adr_code                     => 'DIST_CCID'
64402   , p_adr_type_code                => 'S'
64403   , p_component_type               => l_component_type
64404   , p_component_code               => l_component_code
64405   , p_component_type_code          => l_component_type_code
64406   , p_component_appl_id            => l_component_appl_id
64407   , p_amb_context_code             => l_amb_context_code
64408   , p_side                         => 'NA'
64409   );
64410 
64411 
64412    --
64413    --
64414    END IF;
64415    --
64416    -- Bug 4922099
64417    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
64418           (NVL(l_enc_upg_option, 'N') = 'O')
64419         ) AND
64423       IF
64420         (l_bflow_method_code = 'PRIOR_ENTRY')
64421       )
64422    THEN
64424       --
64425       1 = 2
64426       --
64427       THEN
64428       xla_accounting_err_pkg.build_message
64429                                     (p_appli_s_name            => 'XLA'
64430                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64431                                     ,p_token_1                 => 'LINE_NUMBER'
64432                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
64433                                     ,p_token_2                 => 'LINE_TYPE_NAME'
64434                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
64435                                                                              l_component_type
64436                                                                             ,l_component_code
64437                                                                             ,l_component_type_code
64438                                                                             ,l_component_appl_id
64439                                                                             ,l_amb_context_code
64440                                                                             ,l_entity_code
64441                                                                             ,l_event_class_code
64442                                                                            )
64443                                     ,p_token_3                 => 'OWNER'
64444                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
64445                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
64446                                                                           ,p_lookup_code    => l_component_type_code
64447                                                                          )
64448                                     ,p_token_4                 => 'PRODUCT_NAME'
64449                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
64450                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
64451                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
64452                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
64453                                     ,p_ae_header_id            =>  NULL
64454                                        );
64455 
64456         IF (C_LEVEL_ERROR>= g_log_level) THEN
64457                  trace
64458                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
64459                       ,p_level    => C_LEVEL_ERROR
64460                       ,p_module   => l_log_module);
64461         END IF;
64462       END IF;
64463    END IF;
64464    --
64465    --
64466    ------------------------------------------------------------------------------------------------
64467    -- 4219869 Business Flow
64468    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
64469    -- Prior Entry.  Currently, the following code is always generated.
64470    ------------------------------------------------------------------------------------------------
64471    XLA_AE_LINES_PKG.ValidateCurrentLine;
64472 
64473    ------------------------------------------------------------------------------------
64474    -- 4219869 Business Flow
64475    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
64476    ------------------------------------------------------------------------------------
64477    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64478 
64479    ----------------------------------------------------------------------------------
64480    -- 4219869 Business Flow
64481    -- Update journal entry status -- Need to generate this within IF <condition>
64482    ----------------------------------------------------------------------------------
64483    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64484          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
64485          ,p_balance_type_code => l_balance_type_code
64486          );
64487 
64488    -------------------------------------------------------------------------------------------
64489    -- 4262811 - Generate the Accrual Reversal lines
64490    -------------------------------------------------------------------------------------------
64491    BEGIN
64492       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
64493                               (g_array_event(p_event_id).array_value_num('header_index'));
64494       IF l_acc_rev_flag IS NULL THEN
64495          l_acc_rev_flag := 'N';
64496       END IF;
64497    EXCEPTION
64498       WHEN OTHERS THEN
64499          l_acc_rev_flag := 'N';
64500    END;
64501    --
64502    IF (l_acc_rev_flag = 'Y') THEN
64503 
64504        -- 4645092  ------------------------------------------------------------------------------
64505        -- To allow MPA report to determine if it should generate report process
64506        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
64507        ------------------------------------------------------------------------------------------
64508 
64509        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
64510        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
64511    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
64512    -- call ADRs
64513    -- Bug 4922099
64514    --
64518       )
64515    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64516         (NVL(l_actual_upg_option, 'N') = 'O') OR
64517         (NVL(l_enc_upg_option, 'N') = 'O')
64519    THEN
64520    NULL;
64521    --
64522    --
64523    
64524   l_ccid := AcctDerRule_29(
64525            p_application_id           => p_application_id
64526          , p_ae_header_id             => l_ae_header_id 
64527 , p_source_32 => p_source_32
64528          , x_transaction_coa_id       => l_adr_transaction_coa_id
64529          , x_accounting_coa_id        => l_adr_accounting_coa_id
64530          , x_value_type_code          => l_adr_value_type_code
64531          , p_side                     => 'NA'
64532    );
64533 
64534    xla_ae_lines_pkg.set_ccid(
64535     p_code_combination_id          => l_ccid
64536   , p_value_type_code              => l_adr_value_type_code
64537   , p_transaction_coa_id           => l_adr_transaction_coa_id
64538   , p_accounting_coa_id            => l_adr_accounting_coa_id
64539   , p_adr_code                     => 'DIST_CCID'
64540   , p_adr_type_code                => 'S'
64541   , p_component_type               => l_component_type
64542   , p_component_code               => l_component_code
64543   , p_component_type_code          => l_component_type_code
64544   , p_component_appl_id            => l_component_appl_id
64545   , p_amb_context_code             => l_amb_context_code
64546   , p_side                         => 'NA'
64547   );
64548 
64549 
64550    --
64551    --
64552    END IF;
64553 
64554        --
64555        -- Update the line information that should be overwritten
64556        --
64557        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
64558                                          p_header_num   => 1);
64559        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
64560 
64561        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
64562 
64563        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
64564           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
64565        END IF;
64566 
64567       --
64568       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
64569       --
64570       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
64571           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
64572       ELSE
64573           ---------------------------------------------------------------------------------------------------
64574           -- 4262811a Switch Sign
64575           ---------------------------------------------------------------------------------------------------
64576           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
64577           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64578                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64579           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
64580                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64581           -- 5132302
64582           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
64583                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
64584 
64585       END IF;
64586 
64587       -- 4955764
64588       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64589       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
64590 
64591 
64592       XLA_AE_LINES_PKG.ValidateCurrentLine;
64593       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
64594 
64595       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
64596                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
64597                ,p_balance_type_code => l_balance_type_code);
64598 
64599    END IF;
64600 
64601    -----------------------------------------------------------------------------------------
64602    -- 4262811 Multiperiod Accounting
64603    -----------------------------------------------------------------------------------------
64604      -- No MPA option is assigned.
64605 
64606 
64607 END IF;
64608 END IF;
64609 --
64610 
64611 --
64612 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64613    trace
64614       (p_msg      => 'END of AcctLineType_139'
64615       ,p_level    => C_LEVEL_PROCEDURE
64616       ,p_module   => l_log_module);
64617 END IF;
64618 --
64619 EXCEPTION
64620   WHEN xla_exceptions_pkg.application_exception THEN
64621       RAISE;
64622   WHEN OTHERS THEN
64623        xla_exceptions_pkg.raise_message
64624            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_139');
64625 END AcctLineType_139;
64626 --
64627 
64628 ---------------------------------------
64629 --
64630 -- PRIVATE FUNCTION
64631 --         AcctLineType_140
64632 --
64633 ---------------------------------------
64634 PROCEDURE AcctLineType_140 (
64635   p_application_id        IN NUMBER
64636  ,p_event_id              IN NUMBER
64637  ,p_calculate_acctd_flag  IN VARCHAR2
64641  ,p_gain_or_loss_ref      OUT VARCHAR2
64638  ,p_calculate_g_l_flag    IN VARCHAR2
64639  ,p_actual_flag           IN OUT VARCHAR2
64640  ,p_balance_type_code     OUT VARCHAR2
64642  
64643 --Distribution GL Account
64644  , p_source_32            IN NUMBER
64645 --Distribution Source Type
64646  , p_source_39            IN VARCHAR2
64647 --Distribution Line Identifier
64648  , p_source_41            IN NUMBER
64649 --Distribution Type
64650  , p_source_42            IN VARCHAR2
64651 --Exchange Date
64652  , p_source_45            IN DATE
64653 --Exchange Rate
64654  , p_source_46            IN NUMBER
64655 --Exchange Rate Type
64656  , p_source_47            IN VARCHAR2
64657 --Accounting Amount
64658  , p_source_52            IN NUMBER
64659 --Transaction Distribution Identifier
64660  , p_source_56            IN NUMBER
64661 --Transaction Distribution Type
64662  , p_source_57            IN VARCHAR2
64663 --Distribution Multi Fund Additional Entry
64664  , p_source_99            IN VARCHAR2
64665 --Receipt Applied To Application Identifier
64666  , p_source_101            IN NUMBER
64667 --Transaction Entity Code
64668  , p_source_102            IN VARCHAR2
64669 --Transaction Identifier
64670  , p_source_103            IN NUMBER
64671 --DIST_ENT_AMT_FROM
64672  , p_source_104            IN NUMBER
64673 --Applying Document Currency Code
64674  , p_source_105            IN VARCHAR2
64675 --Distribution Party Identifier
64676  , p_source_106            IN NUMBER
64677 --Distribution Party Site Id
64678  , p_source_107            IN NUMBER
64679 --Distribution Party Type
64680  , p_source_108            IN VARCHAR2
64681 )
64682 IS
64683 
64684 l_component_type              VARCHAR2(80);
64685 l_component_code              VARCHAR2(30);
64686 l_component_type_code         VARCHAR2(1);
64687 l_component_appl_id           INTEGER;
64688 l_amb_context_code            VARCHAR2(30);
64689 l_entity_code                 VARCHAR2(30);
64690 l_event_class_code            VARCHAR2(30);
64691 l_ae_header_id                NUMBER;
64692 l_event_type_code             VARCHAR2(30);
64693 l_line_definition_code        VARCHAR2(30);
64694 l_line_definition_owner_code  VARCHAR2(1);
64695 --
64696 -- adr variables
64697 l_segment                     VARCHAR2(30);
64698 l_ccid                        NUMBER;
64699 l_adr_transaction_coa_id      NUMBER;
64700 l_adr_accounting_coa_id       NUMBER;
64701 l_adr_flexfield_segment_code  VARCHAR2(30);
64702 l_adr_flex_value_set_id       NUMBER;
64703 l_adr_value_type_code         VARCHAR2(30);
64704 l_adr_value_combination_id    NUMBER;
64705 l_adr_value_segment_code      VARCHAR2(30);
64706 
64707 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
64708 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
64709 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
64710 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
64711 
64712 -- 4262811 Variables ------------------------------------------------------------------------------------------
64713 l_entered_amt_idx             NUMBER;
64714 l_accted_amt_idx              NUMBER;
64715 l_acc_rev_flag                VARCHAR2(1);
64716 l_accrual_line_num            NUMBER;
64717 l_tmp_amt                     NUMBER;
64718 l_acc_rev_natural_side_code   VARCHAR2(1);
64719 
64720 l_num_entries                 NUMBER;
64721 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
64722 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
64723 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
64724 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
64725 l_recog_line_1                NUMBER;
64726 l_recog_line_2                NUMBER;
64727 
64728 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
64729 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
64730 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
64731 
64732 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
64733 
64734 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
64735 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
64736 
64737 ---------------------------------------------------------------------------------------------------------------
64738 
64739 
64740 --
64741 -- bulk performance
64742 --
64743 l_balance_type_code           VARCHAR2(1);
64744 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
64745 l_log_module                  VARCHAR2(240);
64746 
64747 --
64748 -- Upgrade strategy
64749 --
64750 l_actual_upg_option           VARCHAR2(1);
64751 l_enc_upg_option           VARCHAR2(1);
64752 
64753 --
64754 BEGIN
64755 --
64756 IF g_log_enabled THEN
64757       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_140';
64758 END IF;
64759 --
64760 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
64761 
64762       trace
64763          (p_msg      => 'BEGIN of AcctLineType_140'
64764          ,p_level    => C_LEVEL_PROCEDURE
64765          ,p_module   => l_log_module);
64766 
64767 END IF;
64768 --
64769 l_component_type             := 'AMB_JLT';
64770 l_component_code             := 'RCT_UNID';
64771 l_component_type_code        := 'S';
64775 l_event_class_code           := 'RECEIPT';
64772 l_component_appl_id          :=  222;
64773 l_amb_context_code           := 'DEFAULT';
64774 l_entity_code                := 'RECEIPTS';
64776 l_event_type_code            := 'RECEIPT_ALL';
64777 l_line_definition_owner_code := 'S';
64778 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
64779 --
64780 l_balance_type_code          := 'A';
64781 l_segment                     := NULL;
64782 l_ccid                        := NULL;
64783 l_adr_transaction_coa_id      := NULL;
64784 l_adr_accounting_coa_id       := NULL;
64785 l_adr_flexfield_segment_code  := NULL;
64786 l_adr_flex_value_set_id       := NULL;
64787 l_adr_value_type_code         := NULL;
64788 l_adr_value_combination_id    := NULL;
64789 l_adr_value_segment_code      := NULL;
64790 
64791 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
64792 l_bflow_class_code           := '';    -- 4219869 Business Flow
64793 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
64794 l_budgetary_control_flag     := 'N';
64795 
64796 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
64797 l_bflow_applied_to_amt       := NULL; -- 5132302
64798 l_entered_amt_idx            := NULL;          -- 4262811
64799 l_accted_amt_idx             := NULL;          -- 4262811
64800 l_acc_rev_flag               := NULL;          -- 4262811
64801 l_accrual_line_num           := NULL;          -- 4262811
64802 l_tmp_amt                    := NULL;          -- 4262811
64803 --
64804  
64805 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
64806     l_balance_type_code <> 'B' THEN
64807 IF NVL(p_source_39,'
64808 ') =  'UNID' AND 
64809 NVL(p_source_99,'
64810 ') =  'N'
64811  THEN 
64812 
64813    --
64814    XLA_AE_LINES_PKG.SetNewLine;
64815 
64816    p_balance_type_code          := l_balance_type_code;
64817    -- set the flag so later we will know whether the gain loss line needs to be created
64818    
64819    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
64820      p_actual_flag :='A';
64821    END IF;
64822 
64823    --
64824    -- bulk performance
64825    --
64826    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
64827                                       p_header_num   => 0); -- 4262811
64828    --
64829    -- set accounting line options
64830    --
64831    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
64832            p_natural_side_code          => 'C'
64833          , p_gain_or_loss_flag          => 'N'
64834          , p_gl_transfer_mode_code      => 'S'
64835          , p_acct_entry_type_code       => 'A'
64836          , p_switch_side_flag           => 'Y'
64837          , p_merge_duplicate_code       => 'A'
64838          );
64839    --
64840    l_acc_rev_natural_side_code := 'D';  -- 4262811
64841    -- 
64842    --
64843    -- set accounting line type info
64844    --
64845    xla_ae_lines_pkg.SetAcctLineType
64846       (p_component_type             => l_component_type
64847       ,p_event_type_code            => l_event_type_code
64848       ,p_line_definition_owner_code => l_line_definition_owner_code
64849       ,p_line_definition_code       => l_line_definition_code
64850       ,p_accounting_line_code       => l_component_code
64851       ,p_accounting_line_type_code  => l_component_type_code
64852       ,p_accounting_line_appl_id    => l_component_appl_id
64853       ,p_amb_context_code           => l_amb_context_code
64854       ,p_entity_code                => l_entity_code
64855       ,p_event_class_code           => l_event_class_code);
64856    --
64857    -- set accounting class
64858    --
64859    xla_ae_lines_pkg.SetAcctClass(
64860            p_accounting_class_code  => 'UNID'
64861          , p_ae_header_id           => l_ae_header_id
64862          );
64863 
64864    --
64865    -- set rounding class
64866    --
64867    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
64868                       'RECEIVABLE';
64869 
64870    --
64871    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
64872    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
64873    --
64874    -- bulk performance
64875    --
64876    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
64877 
64878    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
64879       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
64880 
64881    -- 4955764
64882    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
64883       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
64884 
64885    -- 4458381 Public Sector Enh
64886    
64887    --
64888    -- set accounting attributes for the line type
64889    --
64890    l_entered_amt_idx := 8;
64891    l_accted_amt_idx  := 13;
64892    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
64893    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
64894    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
64895    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
64896    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
64900    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
64897    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
64898    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
64899    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
64901    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
64902    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
64903    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
64904    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
64905    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
64906    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
64907    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
64908    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
64909    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
64910    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
64911    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
64912    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
64913    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
64914    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
64915    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
64916    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
64917    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
64918    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
64919    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
64920    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
64921    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
64922    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
64923    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
64924    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
64925 
64926    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
64927    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
64928 
64929    ---------------------------------------------------------------------------------------------------------------
64930    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
64931    ---------------------------------------------------------------------------------------------------------------
64932    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
64933 
64934    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64935    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
64936 
64937    IF xla_accounting_cache_pkg.GetValueChar
64938          (p_source_code         => 'LEDGER_CATEGORY_CODE'
64939          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
64940    AND l_bflow_method_code = 'PRIOR_ENTRY'
64941 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
64942    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
64943          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
64944        )
64945    THEN
64946          xla_ae_lines_pkg.BflowUpgEntry
64947            (p_business_method_code    => l_bflow_method_code
64948            ,p_business_class_code     => l_bflow_class_code
64949            ,p_balance_type            => l_balance_type_code);
64950    ELSE
64951       NULL;
64952 -- No business flow processing for business flow method of NONE.
64953    END IF;
64954 
64955    --
64956    -- call analytical criteria
64957    --
64958    
64959    --
64960    -- call description
64961    --
64962    -- No description or it is inherited.
64963    --
64964    -- call ADRs
64965    -- Bug 4922099
64966    --
64967    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
64968         (NVL(l_actual_upg_option, 'N') = 'O') OR
64969         (NVL(l_enc_upg_option, 'N') = 'O')
64970       )
64971    THEN
64972    NULL;
64973    --
64974    --
64975    
64976   l_ccid := AcctDerRule_29(
64977            p_application_id           => p_application_id
64978          , p_ae_header_id             => l_ae_header_id 
64979 , p_source_32 => p_source_32
64980          , x_transaction_coa_id       => l_adr_transaction_coa_id
64981          , x_accounting_coa_id        => l_adr_accounting_coa_id
64982          , x_value_type_code          => l_adr_value_type_code
64983          , p_side                     => 'NA'
64984    );
64985 
64986    xla_ae_lines_pkg.set_ccid(
64987     p_code_combination_id          => l_ccid
64988   , p_value_type_code              => l_adr_value_type_code
64989   , p_transaction_coa_id           => l_adr_transaction_coa_id
64990   , p_accounting_coa_id            => l_adr_accounting_coa_id
64991   , p_adr_code                     => 'DIST_CCID'
64992   , p_adr_type_code                => 'S'
64993   , p_component_type               => l_component_type
64994   , p_component_code               => l_component_code
64995   , p_component_type_code          => l_component_type_code
64996   , p_component_appl_id            => l_component_appl_id
64997   , p_amb_context_code             => l_amb_context_code
64998   , p_side                         => 'NA'
64999   );
65000 
65001 
65002    --
65003    --
65004    END IF;
65005    --
65006    -- Bug 4922099
65010         (l_bflow_method_code = 'PRIOR_ENTRY')
65007    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65008           (NVL(l_enc_upg_option, 'N') = 'O')
65009         ) AND
65011       )
65012    THEN
65013       IF
65014       --
65015       1 = 2
65016       --
65017       THEN
65018       xla_accounting_err_pkg.build_message
65019                                     (p_appli_s_name            => 'XLA'
65020                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65021                                     ,p_token_1                 => 'LINE_NUMBER'
65022                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
65023                                     ,p_token_2                 => 'LINE_TYPE_NAME'
65024                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
65025                                                                              l_component_type
65026                                                                             ,l_component_code
65027                                                                             ,l_component_type_code
65028                                                                             ,l_component_appl_id
65029                                                                             ,l_amb_context_code
65030                                                                             ,l_entity_code
65031                                                                             ,l_event_class_code
65032                                                                            )
65033                                     ,p_token_3                 => 'OWNER'
65034                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
65035                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
65036                                                                           ,p_lookup_code    => l_component_type_code
65037                                                                          )
65038                                     ,p_token_4                 => 'PRODUCT_NAME'
65039                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65040                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65041                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65042                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65043                                     ,p_ae_header_id            =>  NULL
65044                                        );
65045 
65046         IF (C_LEVEL_ERROR>= g_log_level) THEN
65047                  trace
65048                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65049                       ,p_level    => C_LEVEL_ERROR
65050                       ,p_module   => l_log_module);
65051         END IF;
65052       END IF;
65053    END IF;
65054    --
65055    --
65056    ------------------------------------------------------------------------------------------------
65057    -- 4219869 Business Flow
65058    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
65059    -- Prior Entry.  Currently, the following code is always generated.
65060    ------------------------------------------------------------------------------------------------
65061    XLA_AE_LINES_PKG.ValidateCurrentLine;
65062 
65063    ------------------------------------------------------------------------------------
65064    -- 4219869 Business Flow
65065    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
65066    ------------------------------------------------------------------------------------
65067    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65068 
65069    ----------------------------------------------------------------------------------
65070    -- 4219869 Business Flow
65071    -- Update journal entry status -- Need to generate this within IF <condition>
65072    ----------------------------------------------------------------------------------
65073    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65074          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
65075          ,p_balance_type_code => l_balance_type_code
65076          );
65077 
65078    -------------------------------------------------------------------------------------------
65079    -- 4262811 - Generate the Accrual Reversal lines
65080    -------------------------------------------------------------------------------------------
65081    BEGIN
65082       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
65083                               (g_array_event(p_event_id).array_value_num('header_index'));
65084       IF l_acc_rev_flag IS NULL THEN
65085          l_acc_rev_flag := 'N';
65086       END IF;
65087    EXCEPTION
65088       WHEN OTHERS THEN
65089          l_acc_rev_flag := 'N';
65090    END;
65091    --
65092    IF (l_acc_rev_flag = 'Y') THEN
65093 
65094        -- 4645092  ------------------------------------------------------------------------------
65095        -- To allow MPA report to determine if it should generate report process
65096        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
65097        ------------------------------------------------------------------------------------------
65098 
65102    -- call ADRs
65099        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
65100        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
65101    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
65103    -- Bug 4922099
65104    --
65105    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65106         (NVL(l_actual_upg_option, 'N') = 'O') OR
65107         (NVL(l_enc_upg_option, 'N') = 'O')
65108       )
65109    THEN
65110    NULL;
65111    --
65112    --
65113    
65114   l_ccid := AcctDerRule_29(
65115            p_application_id           => p_application_id
65116          , p_ae_header_id             => l_ae_header_id 
65117 , p_source_32 => p_source_32
65118          , x_transaction_coa_id       => l_adr_transaction_coa_id
65119          , x_accounting_coa_id        => l_adr_accounting_coa_id
65120          , x_value_type_code          => l_adr_value_type_code
65121          , p_side                     => 'NA'
65122    );
65123 
65124    xla_ae_lines_pkg.set_ccid(
65125     p_code_combination_id          => l_ccid
65126   , p_value_type_code              => l_adr_value_type_code
65127   , p_transaction_coa_id           => l_adr_transaction_coa_id
65128   , p_accounting_coa_id            => l_adr_accounting_coa_id
65129   , p_adr_code                     => 'DIST_CCID'
65130   , p_adr_type_code                => 'S'
65131   , p_component_type               => l_component_type
65132   , p_component_code               => l_component_code
65133   , p_component_type_code          => l_component_type_code
65134   , p_component_appl_id            => l_component_appl_id
65135   , p_amb_context_code             => l_amb_context_code
65136   , p_side                         => 'NA'
65137   );
65138 
65139 
65140    --
65141    --
65142    END IF;
65143 
65144        --
65145        -- Update the line information that should be overwritten
65146        --
65147        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
65148                                          p_header_num   => 1);
65149        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
65150 
65151        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
65152 
65153        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
65154           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
65155        END IF;
65156 
65157       --
65158       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
65159       --
65160       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
65161           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
65162       ELSE
65163           ---------------------------------------------------------------------------------------------------
65164           -- 4262811a Switch Sign
65165           ---------------------------------------------------------------------------------------------------
65166           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
65167           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65168                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65169           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65170                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65171           -- 5132302
65172           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65173                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65174 
65175       END IF;
65176 
65177       -- 4955764
65178       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65179       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65180 
65181 
65182       XLA_AE_LINES_PKG.ValidateCurrentLine;
65183       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65184 
65185       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65186                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65187                ,p_balance_type_code => l_balance_type_code);
65188 
65189    END IF;
65190 
65191    -----------------------------------------------------------------------------------------
65192    -- 4262811 Multiperiod Accounting
65193    -----------------------------------------------------------------------------------------
65194      -- No MPA option is assigned.
65195 
65196 
65197 END IF;
65198 END IF;
65199 --
65200 
65201 --
65202 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65203    trace
65204       (p_msg      => 'END of AcctLineType_140'
65205       ,p_level    => C_LEVEL_PROCEDURE
65206       ,p_module   => l_log_module);
65207 END IF;
65208 --
65209 EXCEPTION
65210   WHEN xla_exceptions_pkg.application_exception THEN
65211       RAISE;
65212   WHEN OTHERS THEN
65213        xla_exceptions_pkg.raise_message
65214            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_140');
65215 END AcctLineType_140;
65216 --
65217 
65221 --         AcctLineType_141
65218 ---------------------------------------
65219 --
65220 -- PRIVATE FUNCTION
65222 --
65223 ---------------------------------------
65224 PROCEDURE AcctLineType_141 (
65225   p_application_id        IN NUMBER
65226  ,p_event_id              IN NUMBER
65227  ,p_calculate_acctd_flag  IN VARCHAR2
65228  ,p_calculate_g_l_flag    IN VARCHAR2
65229  ,p_actual_flag           IN OUT VARCHAR2
65230  ,p_balance_type_code     OUT VARCHAR2
65231  ,p_gain_or_loss_ref      OUT VARCHAR2
65232  
65233 --Remittance Bank Account Unidentified Account
65234  , p_source_37            IN NUMBER
65235 --Distribution Source Type
65236  , p_source_39            IN VARCHAR2
65237 --Distribution Line Identifier
65238  , p_source_41            IN NUMBER
65239 --Distribution Type
65240  , p_source_42            IN VARCHAR2
65241 --Entered Amount
65242  , p_source_43            IN NUMBER
65243 --Currency Code
65244  , p_source_44            IN VARCHAR2
65245 --Exchange Date
65246  , p_source_45            IN DATE
65247 --Exchange Rate
65248  , p_source_46            IN NUMBER
65249 --Exchange Rate Type
65250  , p_source_47            IN VARCHAR2
65251 --Accounting Amount
65252  , p_source_52            IN NUMBER
65253 --Transaction Distribution Identifier
65254  , p_source_56            IN NUMBER
65255 --Transaction Distribution Type
65256  , p_source_57            IN VARCHAR2
65257 --Distribution Multi Fund Additional Entry
65258  , p_source_99            IN VARCHAR2
65259 --Receipt Applied To Application Identifier
65260  , p_source_101            IN NUMBER
65261 --Transaction Entity Code
65262  , p_source_102            IN VARCHAR2
65263 --Transaction Identifier
65264  , p_source_103            IN NUMBER
65265 --Distribution Party Identifier
65266  , p_source_106            IN NUMBER
65267 --Distribution Party Site Id
65268  , p_source_107            IN NUMBER
65269 --Distribution Party Type
65270  , p_source_108            IN VARCHAR2
65271 --Distribution Source Table
65272  , p_source_111            IN VARCHAR2
65273 --Receipt Application Status
65274  , p_source_114            IN VARCHAR2
65275 --Receipt Previous Pay From Customer
65276  , p_source_115            IN NUMBER
65277 --Receipt Previous Customer Site Use Id
65278  , p_source_116            IN NUMBER
65279 )
65280 IS
65281 
65282 l_component_type              VARCHAR2(80);
65283 l_component_code              VARCHAR2(30);
65284 l_component_type_code         VARCHAR2(1);
65285 l_component_appl_id           INTEGER;
65286 l_amb_context_code            VARCHAR2(30);
65287 l_entity_code                 VARCHAR2(30);
65288 l_event_class_code            VARCHAR2(30);
65289 l_ae_header_id                NUMBER;
65290 l_event_type_code             VARCHAR2(30);
65291 l_line_definition_code        VARCHAR2(30);
65292 l_line_definition_owner_code  VARCHAR2(1);
65293 --
65294 -- adr variables
65295 l_segment                     VARCHAR2(30);
65296 l_ccid                        NUMBER;
65297 l_adr_transaction_coa_id      NUMBER;
65298 l_adr_accounting_coa_id       NUMBER;
65299 l_adr_flexfield_segment_code  VARCHAR2(30);
65300 l_adr_flex_value_set_id       NUMBER;
65301 l_adr_value_type_code         VARCHAR2(30);
65302 l_adr_value_combination_id    NUMBER;
65303 l_adr_value_segment_code      VARCHAR2(30);
65304 
65305 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
65306 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
65307 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
65308 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
65309 
65310 -- 4262811 Variables ------------------------------------------------------------------------------------------
65311 l_entered_amt_idx             NUMBER;
65312 l_accted_amt_idx              NUMBER;
65313 l_acc_rev_flag                VARCHAR2(1);
65314 l_accrual_line_num            NUMBER;
65315 l_tmp_amt                     NUMBER;
65316 l_acc_rev_natural_side_code   VARCHAR2(1);
65317 
65318 l_num_entries                 NUMBER;
65319 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
65320 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
65321 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
65322 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
65323 l_recog_line_1                NUMBER;
65324 l_recog_line_2                NUMBER;
65325 
65326 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
65327 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
65328 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
65329 
65330 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65331 
65332 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
65333 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
65334 
65335 ---------------------------------------------------------------------------------------------------------------
65336 
65337 
65338 --
65339 -- bulk performance
65340 --
65341 l_balance_type_code           VARCHAR2(1);
65342 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
65343 l_log_module                  VARCHAR2(240);
65344 
65345 --
65349 l_enc_upg_option           VARCHAR2(1);
65346 -- Upgrade strategy
65347 --
65348 l_actual_upg_option           VARCHAR2(1);
65350 
65351 --
65352 BEGIN
65353 --
65354 IF g_log_enabled THEN
65355       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_141';
65356 END IF;
65357 --
65358 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65359 
65360       trace
65361          (p_msg      => 'BEGIN of AcctLineType_141'
65362          ,p_level    => C_LEVEL_PROCEDURE
65363          ,p_module   => l_log_module);
65364 
65365 END IF;
65366 --
65367 l_component_type             := 'AMB_JLT';
65368 l_component_code             := 'RCT_UNID_BALANCE';
65369 l_component_type_code        := 'S';
65370 l_component_appl_id          :=  222;
65371 l_amb_context_code           := 'DEFAULT';
65372 l_entity_code                := 'RECEIPTS';
65373 l_event_class_code           := 'RECEIPT';
65374 l_event_type_code            := 'RECEIPT_ALL';
65375 l_line_definition_owner_code := 'S';
65376 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
65377 --
65378 l_balance_type_code          := 'A';
65379 l_segment                     := NULL;
65380 l_ccid                        := NULL;
65381 l_adr_transaction_coa_id      := NULL;
65382 l_adr_accounting_coa_id       := NULL;
65383 l_adr_flexfield_segment_code  := NULL;
65384 l_adr_flex_value_set_id       := NULL;
65385 l_adr_value_type_code         := NULL;
65386 l_adr_value_combination_id    := NULL;
65387 l_adr_value_segment_code      := NULL;
65388 
65389 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
65390 l_bflow_class_code           := '';    -- 4219869 Business Flow
65391 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
65392 l_budgetary_control_flag     := 'N';
65393 
65394 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
65395 l_bflow_applied_to_amt       := NULL; -- 5132302
65396 l_entered_amt_idx            := NULL;          -- 4262811
65397 l_accted_amt_idx             := NULL;          -- 4262811
65398 l_acc_rev_flag               := NULL;          -- 4262811
65399 l_accrual_line_num           := NULL;          -- 4262811
65400 l_tmp_amt                    := NULL;          -- 4262811
65401 --
65402  
65403 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
65404     l_balance_type_code <> 'B' THEN
65405 IF NVL(p_source_114,'
65406 ') =  'UNID' AND 
65407 p_source_115 IS NULL AND 
65408 p_source_116 IS NULL AND 
65409 ((NVL(p_source_39,'
65410 ') =  'CASH' AND 
65411 NVL(p_source_99,'
65412 ') =  'N') OR 
65413 (NVL(p_source_39,'
65414 ') =  'REMITTANCE' AND 
65415 NVL(p_source_111,'
65416 ') =  'CRH' AND 
65417 NVL(p_source_99,'
65418 ') =  'N') OR 
65419 (NVL(p_source_39,'
65420 ') =  'CONFIRMATION' AND 
65421 NVL(p_source_99,'
65422 ') =  'N') OR 
65423 (NVL(p_source_39,'
65424 ') =  'FACTOR' AND 
65425 NVL(p_source_111,'
65426 ') =  'CRH' AND 
65427 NVL(p_source_99,'
65428 ') =  'N') OR 
65429 (NVL(p_source_39,'
65430 ') =  'SHORT_TERM_DEBT' AND 
65431 NVL(p_source_99,'
65432 ') =  'N') OR 
65433 (NVL(p_source_39,'
65434 ') =  'BANK_CHARGES' AND 
65435 NVL(p_source_99,'
65436 ') =  'N') OR 
65437 (NVL(p_source_39,'
65438 ') =  'UNID' AND 
65439 NVL(p_source_99,'
65440 ') =  'N')
65441 ) THEN 
65442 
65443    --
65444    XLA_AE_LINES_PKG.SetNewLine;
65445 
65446    p_balance_type_code          := l_balance_type_code;
65447    -- set the flag so later we will know whether the gain loss line needs to be created
65448    
65449    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
65450      p_actual_flag :='A';
65451    END IF;
65452 
65453    --
65454    -- bulk performance
65455    --
65456    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
65457                                       p_header_num   => 0); -- 4262811
65458    --
65459    -- set accounting line options
65460    --
65461    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
65462            p_natural_side_code          => 'D'
65463          , p_gain_or_loss_flag          => 'N'
65464          , p_gl_transfer_mode_code      => 'S'
65465          , p_acct_entry_type_code       => 'A'
65466          , p_switch_side_flag           => 'Y'
65467          , p_merge_duplicate_code       => 'A'
65468          );
65469    --
65470    l_acc_rev_natural_side_code := 'C';  -- 4262811
65471    -- 
65472    --
65473    -- set accounting line type info
65474    --
65475    xla_ae_lines_pkg.SetAcctLineType
65476       (p_component_type             => l_component_type
65477       ,p_event_type_code            => l_event_type_code
65478       ,p_line_definition_owner_code => l_line_definition_owner_code
65479       ,p_line_definition_code       => l_line_definition_code
65480       ,p_accounting_line_code       => l_component_code
65481       ,p_accounting_line_type_code  => l_component_type_code
65482       ,p_accounting_line_appl_id    => l_component_appl_id
65483       ,p_amb_context_code           => l_amb_context_code
65484       ,p_entity_code                => l_entity_code
65485       ,p_event_class_code           => l_event_class_code);
65486    --
65487    -- set accounting class
65488    --
65492          );
65489    xla_ae_lines_pkg.SetAcctClass(
65490            p_accounting_class_code  => 'UNID'
65491          , p_ae_header_id           => l_ae_header_id
65493 
65494    --
65495    -- set rounding class
65496    --
65497    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
65498                       'RECEIVABLE';
65499 
65500    --
65501    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
65502    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
65503    --
65504    -- bulk performance
65505    --
65506    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
65507 
65508    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
65509       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
65510 
65511    -- 4955764
65512    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65513       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
65514 
65515    -- 4458381 Public Sector Enh
65516    
65517    --
65518    -- set accounting attributes for the line type
65519    --
65520    l_entered_amt_idx := 8;
65521    l_accted_amt_idx  := 13;
65522    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
65523    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
65524    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
65525    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
65526    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
65527    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
65528    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
65529    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
65530    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
65531    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
65532    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
65533    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
65534    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
65535    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
65536    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
65537    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
65538    l_rec_acct_attrs.array_num_value(8)  := p_source_43;
65539    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
65540    l_rec_acct_attrs.array_char_value(9)  := p_source_44;
65541    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
65542    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
65543    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
65544    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
65545    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
65546    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
65547    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
65548    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
65549    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
65550    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
65551    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
65552    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
65553    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
65554    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
65555 
65556    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
65557    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
65558 
65559    ---------------------------------------------------------------------------------------------------------------
65560    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
65561    ---------------------------------------------------------------------------------------------------------------
65562    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
65563 
65564    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65565    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
65566 
65567    IF xla_accounting_cache_pkg.GetValueChar
65568          (p_source_code         => 'LEDGER_CATEGORY_CODE'
65569          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
65570    AND l_bflow_method_code = 'PRIOR_ENTRY'
65571 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
65572    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
65573          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
65574        )
65575    THEN
65576          xla_ae_lines_pkg.BflowUpgEntry
65577            (p_business_method_code    => l_bflow_method_code
65578            ,p_business_class_code     => l_bflow_class_code
65579            ,p_balance_type            => l_balance_type_code);
65580    ELSE
65581       NULL;
65582 -- No business flow processing for business flow method of NONE.
65583    END IF;
65584 
65585    --
65586    -- call analytical criteria
65587    --
65588    
65589    --
65590    -- call description
65591    --
65592    -- No description or it is inherited.
65593    --
65594    -- call ADRs
65595    -- Bug 4922099
65596    --
65600       )
65597    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65598         (NVL(l_actual_upg_option, 'N') = 'O') OR
65599         (NVL(l_enc_upg_option, 'N') = 'O')
65601    THEN
65602    NULL;
65603    --
65604    --
65605    
65606   l_ccid := AcctDerRule_33(
65607            p_application_id           => p_application_id
65608          , p_ae_header_id             => l_ae_header_id 
65609 , p_source_37 => p_source_37
65610          , x_transaction_coa_id       => l_adr_transaction_coa_id
65611          , x_accounting_coa_id        => l_adr_accounting_coa_id
65612          , x_value_type_code          => l_adr_value_type_code
65613          , p_side                     => 'NA'
65614    );
65615 
65616    xla_ae_lines_pkg.set_ccid(
65617     p_code_combination_id          => l_ccid
65618   , p_value_type_code              => l_adr_value_type_code
65619   , p_transaction_coa_id           => l_adr_transaction_coa_id
65620   , p_accounting_coa_id            => l_adr_accounting_coa_id
65621   , p_adr_code                     => 'RMT_BNK_UNID_CCID'
65622   , p_adr_type_code                => 'S'
65623   , p_component_type               => l_component_type
65624   , p_component_code               => l_component_code
65625   , p_component_type_code          => l_component_type_code
65626   , p_component_appl_id            => l_component_appl_id
65627   , p_amb_context_code             => l_amb_context_code
65628   , p_side                         => 'NA'
65629   );
65630 
65631 
65632    --
65633    --
65634    END IF;
65635    --
65636    -- Bug 4922099
65637    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
65638           (NVL(l_enc_upg_option, 'N') = 'O')
65639         ) AND
65640         (l_bflow_method_code = 'PRIOR_ENTRY')
65641       )
65642    THEN
65643       IF
65644       --
65645       1 = 2
65646       --
65647       THEN
65648       xla_accounting_err_pkg.build_message
65649                                     (p_appli_s_name            => 'XLA'
65650                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65651                                     ,p_token_1                 => 'LINE_NUMBER'
65652                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
65653                                     ,p_token_2                 => 'LINE_TYPE_NAME'
65654                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
65655                                                                              l_component_type
65656                                                                             ,l_component_code
65657                                                                             ,l_component_type_code
65658                                                                             ,l_component_appl_id
65659                                                                             ,l_amb_context_code
65660                                                                             ,l_entity_code
65661                                                                             ,l_event_class_code
65662                                                                            )
65663                                     ,p_token_3                 => 'OWNER'
65664                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
65665                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
65666                                                                           ,p_lookup_code    => l_component_type_code
65667                                                                          )
65668                                     ,p_token_4                 => 'PRODUCT_NAME'
65669                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
65670                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
65671                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
65672                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
65673                                     ,p_ae_header_id            =>  NULL
65674                                        );
65675 
65676         IF (C_LEVEL_ERROR>= g_log_level) THEN
65677                  trace
65678                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
65679                       ,p_level    => C_LEVEL_ERROR
65680                       ,p_module   => l_log_module);
65681         END IF;
65682       END IF;
65683    END IF;
65684    --
65685    --
65686    ------------------------------------------------------------------------------------------------
65687    -- 4219869 Business Flow
65688    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
65689    -- Prior Entry.  Currently, the following code is always generated.
65690    ------------------------------------------------------------------------------------------------
65691    XLA_AE_LINES_PKG.ValidateCurrentLine;
65692 
65693    ------------------------------------------------------------------------------------
65694    -- 4219869 Business Flow
65695    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
65696    ------------------------------------------------------------------------------------
65697    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65698 
65702    ----------------------------------------------------------------------------------
65699    ----------------------------------------------------------------------------------
65700    -- 4219869 Business Flow
65701    -- Update journal entry status -- Need to generate this within IF <condition>
65703    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65704          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
65705          ,p_balance_type_code => l_balance_type_code
65706          );
65707 
65708    -------------------------------------------------------------------------------------------
65709    -- 4262811 - Generate the Accrual Reversal lines
65710    -------------------------------------------------------------------------------------------
65711    BEGIN
65712       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
65713                               (g_array_event(p_event_id).array_value_num('header_index'));
65714       IF l_acc_rev_flag IS NULL THEN
65715          l_acc_rev_flag := 'N';
65716       END IF;
65717    EXCEPTION
65718       WHEN OTHERS THEN
65719          l_acc_rev_flag := 'N';
65720    END;
65721    --
65722    IF (l_acc_rev_flag = 'Y') THEN
65723 
65724        -- 4645092  ------------------------------------------------------------------------------
65725        -- To allow MPA report to determine if it should generate report process
65726        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
65727        ------------------------------------------------------------------------------------------
65728 
65729        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
65730        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
65731    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
65732    -- call ADRs
65733    -- Bug 4922099
65734    --
65735    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
65736         (NVL(l_actual_upg_option, 'N') = 'O') OR
65737         (NVL(l_enc_upg_option, 'N') = 'O')
65738       )
65739    THEN
65740    NULL;
65741    --
65742    --
65743    
65744   l_ccid := AcctDerRule_33(
65745            p_application_id           => p_application_id
65746          , p_ae_header_id             => l_ae_header_id 
65747 , p_source_37 => p_source_37
65748          , x_transaction_coa_id       => l_adr_transaction_coa_id
65749          , x_accounting_coa_id        => l_adr_accounting_coa_id
65750          , x_value_type_code          => l_adr_value_type_code
65751          , p_side                     => 'NA'
65752    );
65753 
65754    xla_ae_lines_pkg.set_ccid(
65755     p_code_combination_id          => l_ccid
65756   , p_value_type_code              => l_adr_value_type_code
65757   , p_transaction_coa_id           => l_adr_transaction_coa_id
65758   , p_accounting_coa_id            => l_adr_accounting_coa_id
65759   , p_adr_code                     => 'RMT_BNK_UNID_CCID'
65760   , p_adr_type_code                => 'S'
65761   , p_component_type               => l_component_type
65762   , p_component_code               => l_component_code
65763   , p_component_type_code          => l_component_type_code
65764   , p_component_appl_id            => l_component_appl_id
65765   , p_amb_context_code             => l_amb_context_code
65766   , p_side                         => 'NA'
65767   );
65768 
65769 
65770    --
65771    --
65772    END IF;
65773 
65774        --
65775        -- Update the line information that should be overwritten
65776        --
65777        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
65778                                          p_header_num   => 1);
65779        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
65780 
65781        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
65782 
65783        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
65784           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
65785        END IF;
65786 
65787       --
65788       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
65789       --
65790       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
65791           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
65792       ELSE
65793           ---------------------------------------------------------------------------------------------------
65797           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65794           -- 4262811a Switch Sign
65795           ---------------------------------------------------------------------------------------------------
65796           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
65798                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65799           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
65800                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65801           -- 5132302
65802           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
65803                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
65804 
65805       END IF;
65806 
65807       -- 4955764
65808       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
65809       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
65810 
65811 
65812       XLA_AE_LINES_PKG.ValidateCurrentLine;
65813       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
65814 
65815       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
65816                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
65817                ,p_balance_type_code => l_balance_type_code);
65818 
65819    END IF;
65820 
65821    -----------------------------------------------------------------------------------------
65822    -- 4262811 Multiperiod Accounting
65823    -----------------------------------------------------------------------------------------
65824      -- No MPA option is assigned.
65825 
65826 
65827 END IF;
65828 END IF;
65829 --
65830 
65831 --
65832 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65833    trace
65834       (p_msg      => 'END of AcctLineType_141'
65835       ,p_level    => C_LEVEL_PROCEDURE
65836       ,p_module   => l_log_module);
65837 END IF;
65838 --
65839 EXCEPTION
65840   WHEN xla_exceptions_pkg.application_exception THEN
65841       RAISE;
65842   WHEN OTHERS THEN
65843        xla_exceptions_pkg.raise_message
65844            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_141');
65845 END AcctLineType_141;
65846 --
65847 
65848 ---------------------------------------
65849 --
65850 -- PRIVATE FUNCTION
65851 --         AcctLineType_142
65852 --
65853 ---------------------------------------
65854 PROCEDURE AcctLineType_142 (
65855   p_application_id        IN NUMBER
65856  ,p_event_id              IN NUMBER
65857  ,p_calculate_acctd_flag  IN VARCHAR2
65858  ,p_calculate_g_l_flag    IN VARCHAR2
65859  ,p_actual_flag           IN OUT VARCHAR2
65860  ,p_balance_type_code     OUT VARCHAR2
65861  ,p_gain_or_loss_ref      OUT VARCHAR2
65862  
65863 --Distribution GL Account
65864  , p_source_32            IN NUMBER
65865 --Distribution Source Type
65866  , p_source_39            IN VARCHAR2
65867 --Receivable Activity Type
65868  , p_source_40            IN VARCHAR2
65869 --Distribution Line Identifier
65870  , p_source_41            IN NUMBER
65871 --Distribution Type
65872  , p_source_42            IN VARCHAR2
65873 --Exchange Date
65874  , p_source_45            IN DATE
65875 --Exchange Rate
65876  , p_source_46            IN NUMBER
65877 --Exchange Rate Type
65878  , p_source_47            IN VARCHAR2
65879 --Accounting Amount
65880  , p_source_52            IN NUMBER
65881 --Transaction Distribution Identifier
65882  , p_source_56            IN NUMBER
65883 --Transaction Distribution Type
65884  , p_source_57            IN VARCHAR2
65885 --Distribution Multi Fund Additional Entry
65886  , p_source_99            IN VARCHAR2
65887 --Receipt Applied To Application Identifier
65888  , p_source_101            IN NUMBER
65889 --Transaction Entity Code
65890  , p_source_102            IN VARCHAR2
65891 --Transaction Identifier
65892  , p_source_103            IN NUMBER
65893 --DIST_ENT_AMT_FROM
65894  , p_source_104            IN NUMBER
65895 --Applying Document Currency Code
65896  , p_source_105            IN VARCHAR2
65897 --Distribution Party Identifier
65898  , p_source_106            IN NUMBER
65899 --Distribution Party Site Id
65900  , p_source_107            IN NUMBER
65901 --Distribution Party Type
65902  , p_source_108            IN VARCHAR2
65903 )
65904 IS
65905 
65906 l_component_type              VARCHAR2(80);
65907 l_component_code              VARCHAR2(30);
65908 l_component_type_code         VARCHAR2(1);
65909 l_component_appl_id           INTEGER;
65910 l_amb_context_code            VARCHAR2(30);
65911 l_entity_code                 VARCHAR2(30);
65912 l_event_class_code            VARCHAR2(30);
65913 l_ae_header_id                NUMBER;
65914 l_event_type_code             VARCHAR2(30);
65915 l_line_definition_code        VARCHAR2(30);
65916 l_line_definition_owner_code  VARCHAR2(1);
65917 --
65918 -- adr variables
65919 l_segment                     VARCHAR2(30);
65920 l_ccid                        NUMBER;
65921 l_adr_transaction_coa_id      NUMBER;
65922 l_adr_accounting_coa_id       NUMBER;
65923 l_adr_flexfield_segment_code  VARCHAR2(30);
65927 l_adr_value_segment_code      VARCHAR2(30);
65924 l_adr_flex_value_set_id       NUMBER;
65925 l_adr_value_type_code         VARCHAR2(30);
65926 l_adr_value_combination_id    NUMBER;
65928 
65929 l_bflow_method_code           VARCHAR2(30);  -- 4219869 Business Flow
65930 l_bflow_class_code            VARCHAR2(30);  -- 4219869 Business Flow
65931 l_inherit_desc_flag           VARCHAR2(1);   -- 4219869 Business Flow
65932 l_budgetary_control_flag      VARCHAR2(1);   -- 4458381 Public Sector Enh
65933 
65934 -- 4262811 Variables ------------------------------------------------------------------------------------------
65935 l_entered_amt_idx             NUMBER;
65936 l_accted_amt_idx              NUMBER;
65937 l_acc_rev_flag                VARCHAR2(1);
65938 l_accrual_line_num            NUMBER;
65939 l_tmp_amt                     NUMBER;
65940 l_acc_rev_natural_side_code   VARCHAR2(1);
65941 
65942 l_num_entries                 NUMBER;
65943 l_gl_dates                    xla_ae_journal_entry_pkg.t_array_date;
65944 l_accted_amts                 xla_ae_journal_entry_pkg.t_array_num;
65945 l_entered_amts                xla_ae_journal_entry_pkg.t_array_num;
65946 l_period_names                xla_ae_journal_entry_pkg.t_array_V15L;
65947 l_recog_line_1                NUMBER;
65948 l_recog_line_2                NUMBER;
65949 
65950 l_bflow_applied_to_amt_idx    NUMBER;                                -- 5132302
65951 l_bflow_applied_to_amt        NUMBER;                                -- 5132302
65952 l_bflow_applied_to_amts       xla_ae_journal_entry_pkg.t_array_num;  -- 5132302
65953 
65954 l_event_id                    NUMBER;  -- To handle MPA header Description: xla_ae_header_pkg.SetHdrDescription
65955 
65956 --l_rounding_ccy                VARCHAR2(15); -- To handle MPA rounding  4262811b
65957 l_same_currency               BOOLEAN;        -- To handle MPA rounding  4262811b
65958 
65959 ---------------------------------------------------------------------------------------------------------------
65960 
65961 
65962 --
65963 -- bulk performance
65964 --
65965 l_balance_type_code           VARCHAR2(1);
65966 l_rec_acct_attrs              XLA_AE_LINES_PKG.t_rec_acct_attrs;
65967 l_log_module                  VARCHAR2(240);
65968 
65969 --
65970 -- Upgrade strategy
65971 --
65972 l_actual_upg_option           VARCHAR2(1);
65973 l_enc_upg_option           VARCHAR2(1);
65974 
65975 --
65976 BEGIN
65977 --
65978 IF g_log_enabled THEN
65979       l_log_module := C_DEFAULT_MODULE||'.AcctLineType_142';
65980 END IF;
65981 --
65982 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
65983 
65984       trace
65985          (p_msg      => 'BEGIN of AcctLineType_142'
65986          ,p_level    => C_LEVEL_PROCEDURE
65987          ,p_module   => l_log_module);
65988 
65989 END IF;
65990 --
65991 l_component_type             := 'AMB_JLT';
65992 l_component_code             := 'RCT_WRITEOFF';
65993 l_component_type_code        := 'S';
65994 l_component_appl_id          :=  222;
65995 l_amb_context_code           := 'DEFAULT';
65996 l_entity_code                := 'RECEIPTS';
65997 l_event_class_code           := 'RECEIPT';
65998 l_event_type_code            := 'RECEIPT_ALL';
65999 l_line_definition_owner_code := 'S';
66000 l_line_definition_code       := 'AR_RCT_DEFAULT_ACCRUAL';
66001 --
66002 l_balance_type_code          := 'A';
66003 l_segment                     := NULL;
66004 l_ccid                        := NULL;
66005 l_adr_transaction_coa_id      := NULL;
66006 l_adr_accounting_coa_id       := NULL;
66007 l_adr_flexfield_segment_code  := NULL;
66008 l_adr_flex_value_set_id       := NULL;
66009 l_adr_value_type_code         := NULL;
66010 l_adr_value_combination_id    := NULL;
66011 l_adr_value_segment_code      := NULL;
66012 
66013 l_bflow_method_code          := 'NONE';   -- 4219869 Business Flow
66014 l_bflow_class_code           := '';    -- 4219869 Business Flow
66015 l_inherit_desc_flag          := 'N';   -- 4219869 Business Flow
66016 l_budgetary_control_flag     := 'N';
66017 
66018 l_bflow_applied_to_amt_idx   := NULL; -- 5132302
66019 l_bflow_applied_to_amt       := NULL; -- 5132302
66020 l_entered_amt_idx            := NULL;          -- 4262811
66021 l_accted_amt_idx             := NULL;          -- 4262811
66022 l_acc_rev_flag               := NULL;          -- 4262811
66023 l_accrual_line_num           := NULL;          -- 4262811
66024 l_tmp_amt                    := NULL;          -- 4262811
66025 --
66026  
66027 IF XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id = XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id OR
66028     l_balance_type_code <> 'B' THEN
66029 IF NVL(p_source_39,'
66030 ') =  'ACTIVITY' AND 
66031 NVL(p_source_40,'
66032 ') =  'WRITEOFF' AND 
66033 NVL(p_source_99,'
66034 ') =  'N'
66035  THEN 
66036 
66037    --
66038    XLA_AE_LINES_PKG.SetNewLine;
66039 
66040    p_balance_type_code          := l_balance_type_code;
66041    -- set the flag so later we will know whether the gain loss line needs to be created
66042    
66043    IF(l_balance_type_code = 'A' and p_actual_flag is null) THEN
66044      p_actual_flag :='A';
66045    END IF;
66046 
66047    --
66048    -- bulk performance
66049    --
66050    XLA_AE_LINES_PKG.set_ae_header_id (p_ae_header_id => p_event_id ,
66051                                       p_header_num   => 0); -- 4262811
66052    --
66053    -- set accounting line options
66054    --
66058          , p_gl_transfer_mode_code      => 'S'
66055    l_ae_header_id:= xla_ae_lines_pkg.SetAcctLineOption(
66056            p_natural_side_code          => 'C'
66057          , p_gain_or_loss_flag          => 'N'
66059          , p_acct_entry_type_code       => 'A'
66060          , p_switch_side_flag           => 'Y'
66061          , p_merge_duplicate_code       => 'A'
66062          );
66063    --
66064    l_acc_rev_natural_side_code := 'D';  -- 4262811
66065    -- 
66066    --
66067    -- set accounting line type info
66068    --
66069    xla_ae_lines_pkg.SetAcctLineType
66070       (p_component_type             => l_component_type
66071       ,p_event_type_code            => l_event_type_code
66072       ,p_line_definition_owner_code => l_line_definition_owner_code
66073       ,p_line_definition_code       => l_line_definition_code
66074       ,p_accounting_line_code       => l_component_code
66075       ,p_accounting_line_type_code  => l_component_type_code
66076       ,p_accounting_line_appl_id    => l_component_appl_id
66077       ,p_amb_context_code           => l_amb_context_code
66078       ,p_entity_code                => l_entity_code
66079       ,p_event_class_code           => l_event_class_code);
66080    --
66081    -- set accounting class
66082    --
66083    xla_ae_lines_pkg.SetAcctClass(
66084            p_accounting_class_code  => 'WRITE_OFF'
66085          , p_ae_header_id           => l_ae_header_id
66086          );
66087 
66088    --
66089    -- set rounding class
66090    --
66091    XLA_AE_LINES_PKG.g_rec_lines.array_rounding_class(XLA_AE_LINES_PKG.g_LineNumber) :=
66092                       'RECEIVABLE';
66093 
66094    --
66095    xla_ae_lines_pkg.g_rec_lines.array_calculate_acctd_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_acctd_flag;
66096    xla_ae_lines_pkg.g_rec_lines.array_calculate_g_l_flag(xla_ae_lines_pkg.g_LineNumber) := p_calculate_g_l_flag;
66097    --
66098    -- bulk performance
66099    --
66100    XLA_AE_LINES_PKG.g_rec_lines.array_balance_type_code(XLA_AE_LINES_PKG.g_LineNumber) := l_balance_type_code;
66101 
66102    XLA_AE_LINES_PKG.g_rec_lines.array_ledger_id(XLA_AE_LINES_PKG.g_LineNumber) :=
66103       XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id;
66104 
66105    -- 4955764
66106    XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66107       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('header_index'));
66108 
66109    -- 4458381 Public Sector Enh
66110    
66111    --
66112    -- set accounting attributes for the line type
66113    --
66114    l_entered_amt_idx := 8;
66115    l_accted_amt_idx  := 13;
66116    l_bflow_applied_to_amt_idx  := NULL;  -- 5132302
66117    l_rec_acct_attrs.array_acct_attr_code(1) := 'APPLIED_TO_APPLICATION_ID';
66118    l_rec_acct_attrs.array_num_value(1)  := p_source_101;
66119    l_rec_acct_attrs.array_acct_attr_code(2) := 'APPLIED_TO_DISTRIBUTION_TYPE';
66120    l_rec_acct_attrs.array_char_value(2)  := p_source_57;
66121    l_rec_acct_attrs.array_acct_attr_code(3) := 'APPLIED_TO_ENTITY_CODE';
66122    l_rec_acct_attrs.array_char_value(3)  := p_source_102;
66123    l_rec_acct_attrs.array_acct_attr_code(4) := 'APPLIED_TO_FIRST_DIST_ID';
66124    l_rec_acct_attrs.array_num_value(4)  :=  to_char(p_source_56);
66125    l_rec_acct_attrs.array_acct_attr_code(5) := 'APPLIED_TO_FIRST_SYS_TRAN_ID';
66126    l_rec_acct_attrs.array_num_value(5)  :=  to_char(p_source_103);
66127    l_rec_acct_attrs.array_acct_attr_code(6) := 'DISTRIBUTION_IDENTIFIER_1';
66128    l_rec_acct_attrs.array_num_value(6)  :=  to_char(p_source_41);
66129    l_rec_acct_attrs.array_acct_attr_code(7) := 'DISTRIBUTION_TYPE';
66130    l_rec_acct_attrs.array_char_value(7)  := p_source_42;
66131    l_rec_acct_attrs.array_acct_attr_code(8) := 'ENTERED_CURRENCY_AMOUNT';
66132    l_rec_acct_attrs.array_num_value(8)  := p_source_104;
66133    l_rec_acct_attrs.array_acct_attr_code(9) := 'ENTERED_CURRENCY_CODE';
66134    l_rec_acct_attrs.array_char_value(9)  := p_source_105;
66135    l_rec_acct_attrs.array_acct_attr_code(10) := 'EXCHANGE_DATE';
66136    l_rec_acct_attrs.array_date_value(10)  := p_source_45;
66137    l_rec_acct_attrs.array_acct_attr_code(11) := 'EXCHANGE_RATE';
66138    l_rec_acct_attrs.array_num_value(11)  := p_source_46;
66139    l_rec_acct_attrs.array_acct_attr_code(12) := 'EXCHANGE_RATE_TYPE';
66140    l_rec_acct_attrs.array_char_value(12)  := p_source_47;
66141    l_rec_acct_attrs.array_acct_attr_code(13) := 'LEDGER_AMOUNT';
66142    l_rec_acct_attrs.array_num_value(13)  := p_source_52;
66143    l_rec_acct_attrs.array_acct_attr_code(14) := 'PARTY_ID';
66144    l_rec_acct_attrs.array_num_value(14)  := p_source_106;
66145    l_rec_acct_attrs.array_acct_attr_code(15) := 'PARTY_SITE_ID';
66146    l_rec_acct_attrs.array_num_value(15)  := p_source_107;
66147    l_rec_acct_attrs.array_acct_attr_code(16) := 'PARTY_TYPE';
66148    l_rec_acct_attrs.array_char_value(16)  := p_source_108;
66149 
66150    XLA_AE_LINES_PKG.SetLineAcctAttrs(l_rec_acct_attrs);
66151    p_gain_or_loss_ref  := XLA_AE_LINES_PKG.g_rec_lines.array_gain_or_loss_ref(XLA_AE_LINES_PKG.g_LineNumber);
66152 
66153    ---------------------------------------------------------------------------------------------------------------
66154    -- 4336173 -- assign Business Flow Class (replace code in xla_ae_lines_pkg.Business_Flow_Validation)
66155    ---------------------------------------------------------------------------------------------------------------
66156    XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := l_bflow_class_code;
66157 
66158    l_actual_upg_option  := XLA_AE_LINES_PKG.g_rec_lines.array_actual_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66162          (p_source_code         => 'LEDGER_CATEGORY_CODE'
66159    l_enc_upg_option     := XLA_AE_LINES_PKG.g_rec_lines.array_enc_upg_option(XLA_AE_LINES_PKG.g_LineNumber);
66160 
66161    IF xla_accounting_cache_pkg.GetValueChar
66163          ,p_target_ledger_id    => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id) IN ('PRIMARY','ALC')
66164    AND l_bflow_method_code = 'PRIOR_ENTRY'
66165 --   AND (l_actual_upg_option = 'Y' OR l_enc_upg_option = 'Y') Bug 4922099
66166    AND ( (NVL(l_actual_upg_option, 'N') IN ('Y', 'O')) OR
66167          (NVL(l_enc_upg_option, 'N') IN ('Y', 'O'))
66168        )
66169    THEN
66170          xla_ae_lines_pkg.BflowUpgEntry
66171            (p_business_method_code    => l_bflow_method_code
66172            ,p_business_class_code     => l_bflow_class_code
66173            ,p_balance_type            => l_balance_type_code);
66174    ELSE
66175       NULL;
66176 -- No business flow processing for business flow method of NONE.
66177    END IF;
66178 
66179    --
66180    -- call analytical criteria
66181    --
66182    
66183    --
66184    -- call description
66185    --
66186    -- No description or it is inherited.
66187    --
66188    -- call ADRs
66189    -- Bug 4922099
66190    --
66191    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66192         (NVL(l_actual_upg_option, 'N') = 'O') OR
66193         (NVL(l_enc_upg_option, 'N') = 'O')
66194       )
66195    THEN
66196    NULL;
66197    --
66198    --
66199    
66200   l_ccid := AcctDerRule_29(
66201            p_application_id           => p_application_id
66202          , p_ae_header_id             => l_ae_header_id 
66203 , p_source_32 => p_source_32
66204          , x_transaction_coa_id       => l_adr_transaction_coa_id
66205          , x_accounting_coa_id        => l_adr_accounting_coa_id
66206          , x_value_type_code          => l_adr_value_type_code
66207          , p_side                     => 'NA'
66208    );
66209 
66210    xla_ae_lines_pkg.set_ccid(
66211     p_code_combination_id          => l_ccid
66212   , p_value_type_code              => l_adr_value_type_code
66213   , p_transaction_coa_id           => l_adr_transaction_coa_id
66214   , p_accounting_coa_id            => l_adr_accounting_coa_id
66215   , p_adr_code                     => 'DIST_CCID'
66216   , p_adr_type_code                => 'S'
66217   , p_component_type               => l_component_type
66218   , p_component_code               => l_component_code
66219   , p_component_type_code          => l_component_type_code
66220   , p_component_appl_id            => l_component_appl_id
66221   , p_amb_context_code             => l_amb_context_code
66222   , p_side                         => 'NA'
66223   );
66224 
66225 
66226    --
66227    --
66228    END IF;
66229    --
66230    -- Bug 4922099
66231    IF ( ( (NVL(l_actual_upg_option, 'N') = 'O') OR
66232           (NVL(l_enc_upg_option, 'N') = 'O')
66233         ) AND
66234         (l_bflow_method_code = 'PRIOR_ENTRY')
66235       )
66236    THEN
66237       IF
66238       --
66239       1 = 2
66240       --
66241       THEN
66242       xla_accounting_err_pkg.build_message
66243                                     (p_appli_s_name            => 'XLA'
66244                                     ,p_msg_name                => 'XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66245                                     ,p_token_1                 => 'LINE_NUMBER'
66246                                     ,p_value_1                 => XLA_AE_LINES_PKG.g_LineNumber
66247                                     ,p_token_2                 => 'LINE_TYPE_NAME'
66248                                     ,p_value_2                 => XLA_AE_SOURCES_PKG.GetComponentName (
66249                                                                              l_component_type
66250                                                                             ,l_component_code
66251                                                                             ,l_component_type_code
66252                                                                             ,l_component_appl_id
66253                                                                             ,l_amb_context_code
66254                                                                             ,l_entity_code
66255                                                                             ,l_event_class_code
66256                                                                            )
66257                                     ,p_token_3                 => 'OWNER'
66258                                     ,p_value_3                 => xla_lookups_pkg.get_meaning(
66259                                                                           p_lookup_type     => 'XLA_OWNER_TYPE'
66260                                                                           ,p_lookup_code    => l_component_type_code
66261                                                                          )
66262                                     ,p_token_4                 => 'PRODUCT_NAME'
66263                                     ,p_value_4                 => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.application_name
66264                                     ,p_entity_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.entity_id
66265                                     ,p_event_id                => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.event_id
66266                                     ,p_ledger_id               => XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id
66270         IF (C_LEVEL_ERROR>= g_log_level) THEN
66267                                     ,p_ae_header_id            =>  NULL
66268                                        );
66269 
66271                  trace
66272                       (p_msg      => 'ERROR: XLA_UPG_OVERRIDE_ADR_UNDEFINED'
66273                       ,p_level    => C_LEVEL_ERROR
66274                       ,p_module   => l_log_module);
66275         END IF;
66276       END IF;
66277    END IF;
66278    --
66279    --
66280    ------------------------------------------------------------------------------------------------
66281    -- 4219869 Business Flow
66282    -- NOTE: XLA_AE_LINES_PKG.ValidateCurrentLine should NOT be generated if business flow method is
66283    -- Prior Entry.  Currently, the following code is always generated.
66284    ------------------------------------------------------------------------------------------------
66285    XLA_AE_LINES_PKG.ValidateCurrentLine;
66286 
66287    ------------------------------------------------------------------------------------
66288    -- 4219869 Business Flow
66289    -- Populated credit and debit amounts -- Need to generate this within IF <condition>
66290    ------------------------------------------------------------------------------------
66291    XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66292 
66293    ----------------------------------------------------------------------------------
66294    -- 4219869 Business Flow
66295    -- Update journal entry status -- Need to generate this within IF <condition>
66296    ----------------------------------------------------------------------------------
66297    XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66298          (p_hdr_idx => g_array_event(p_event_id).array_value_num('header_index')
66299          ,p_balance_type_code => l_balance_type_code
66300          );
66301 
66302    -------------------------------------------------------------------------------------------
66303    -- 4262811 - Generate the Accrual Reversal lines
66304    -------------------------------------------------------------------------------------------
66305    BEGIN
66306       l_acc_rev_flag := XLA_AE_HEADER_PKG.g_rec_header_new.array_accrual_reversal_flag
66307                               (g_array_event(p_event_id).array_value_num('header_index'));
66308       IF l_acc_rev_flag IS NULL THEN
66309          l_acc_rev_flag := 'N';
66310       END IF;
66311    EXCEPTION
66312       WHEN OTHERS THEN
66313          l_acc_rev_flag := 'N';
66314    END;
66315    --
66316    IF (l_acc_rev_flag = 'Y') THEN
66317 
66318        -- 4645092  ------------------------------------------------------------------------------
66319        -- To allow MPA report to determine if it should generate report process
66320        XLA_ACCOUNTING_PKG.g_mpa_accrual_exists := 'Y';
66321        ------------------------------------------------------------------------------------------
66322 
66323        l_accrual_line_num := XLA_AE_LINES_PKG.g_LineNumber;
66324        XLA_AE_LINES_PKG.CopyLineInfo(l_accrual_line_num);
66325    -- added call to set_ccid to execute mapping  for secondary accrual reversal entries bug 7444204
66326    -- call ADRs
66327    -- Bug 4922099
66328    --
66329    IF ( (l_bflow_method_code <> 'PRIOR_ENTRY') OR
66330         (NVL(l_actual_upg_option, 'N') = 'O') OR
66331         (NVL(l_enc_upg_option, 'N') = 'O')
66332       )
66333    THEN
66334    NULL;
66335    --
66336    --
66337    
66338   l_ccid := AcctDerRule_29(
66339            p_application_id           => p_application_id
66340          , p_ae_header_id             => l_ae_header_id 
66341 , p_source_32 => p_source_32
66342          , x_transaction_coa_id       => l_adr_transaction_coa_id
66343          , x_accounting_coa_id        => l_adr_accounting_coa_id
66344          , x_value_type_code          => l_adr_value_type_code
66345          , p_side                     => 'NA'
66346    );
66347 
66348    xla_ae_lines_pkg.set_ccid(
66349     p_code_combination_id          => l_ccid
66350   , p_value_type_code              => l_adr_value_type_code
66351   , p_transaction_coa_id           => l_adr_transaction_coa_id
66352   , p_accounting_coa_id            => l_adr_accounting_coa_id
66353   , p_adr_code                     => 'DIST_CCID'
66354   , p_adr_type_code                => 'S'
66355   , p_component_type               => l_component_type
66356   , p_component_code               => l_component_code
66357   , p_component_type_code          => l_component_type_code
66358   , p_component_appl_id            => l_component_appl_id
66359   , p_amb_context_code             => l_amb_context_code
66360   , p_side                         => 'NA'
66361   );
66362 
66363 
66364    --
66365    --
66366    END IF;
66367 
66368        --
66369        -- Update the line information that should be overwritten
66370        --
66371        XLA_AE_LINES_PKG.set_ae_header_id(p_ae_header_id => p_event_id ,
66372                                          p_header_num   => 1);
66373        XLA_AE_LINES_PKG.g_rec_lines.array_header_num(XLA_AE_LINES_PKG.g_LineNumber)  :=1;
66374 
66375        XLA_AE_LINES_PKG.g_rec_lines.array_business_class_code(XLA_AE_LINES_PKG.g_LineNumber) := NULL; -- 4669271
66376 
66377        IF l_bflow_method_code <> 'NONE' THEN  -- 4655713b
66378           XLA_AE_LINES_PKG.g_rec_lines.array_reversal_code(XLA_AE_LINES_PKG.g_LineNumber) := CONCAT('MPA_',l_bflow_method_code);
66379        END IF;
66380 
66381       --
66385           XLA_AE_LINES_PKG.g_rec_lines.array_natural_side_code(XLA_AE_LINES_PKG.g_LineNumber) :=  l_acc_rev_natural_side_code;
66382       -- Depending on the Reversal Method setup, do a switch side or changes sign for the amounts
66383       --
66384       IF (XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_reversal_option = 'SIDE') THEN
66386       ELSE
66387           ---------------------------------------------------------------------------------------------------
66388           -- 4262811a Switch Sign
66389           ---------------------------------------------------------------------------------------------------
66390           XLA_AE_LINES_PKG.g_rec_lines.array_switch_side_flag(XLA_AE_LINES_PKG.g_LineNumber) := 'N';  -- 5052518
66391           XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66392                       XLA_AE_LINES_PKG.g_rec_lines.array_ledger_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66393           XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) :=
66394                       XLA_AE_LINES_PKG.g_rec_lines.array_entered_amount(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66395           -- 5132302
66396           XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) :=
66397                       XLA_AE_LINES_PKG.g_rec_lines.array_bflow_applied_to_amt(XLA_AE_LINES_PKG.g_LineNumber) * -1;
66398 
66399       END IF;
66400 
66401       -- 4955764
66402       XLA_AE_LINES_PKG.g_rec_lines.array_gl_date(XLA_AE_LINES_PKG.g_LineNumber) :=
66403       XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(g_array_event(p_event_id).array_value_num('acc_rev_header_index'));
66404 
66405 
66406       XLA_AE_LINES_PKG.ValidateCurrentLine;
66407       XLA_AE_LINES_PKG.SetDebitCreditAmounts;
66408 
66409       XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus
66410                (p_hdr_idx           => g_array_event(p_event_id).array_value_num('acc_rev_header_index')
66411                ,p_balance_type_code => l_balance_type_code);
66412 
66413    END IF;
66414 
66415    -----------------------------------------------------------------------------------------
66416    -- 4262811 Multiperiod Accounting
66417    -----------------------------------------------------------------------------------------
66418      -- No MPA option is assigned.
66419 
66420 
66421 END IF;
66422 END IF;
66423 --
66424 
66425 --
66426 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66427    trace
66428       (p_msg      => 'END of AcctLineType_142'
66429       ,p_level    => C_LEVEL_PROCEDURE
66430       ,p_module   => l_log_module);
66431 END IF;
66432 --
66433 EXCEPTION
66434   WHEN xla_exceptions_pkg.application_exception THEN
66435       RAISE;
66436   WHEN OTHERS THEN
66437        xla_exceptions_pkg.raise_message
66438            (p_location => 'XLA_00222_AAD_S_000002_PKG.AcctLineType_142');
66439 END AcctLineType_142;
66440 --
66441 
66442 ---------------------------------------
66443 --
66444 -- PRIVATE PROCEDURE
66445 --         insert_sources_143
66446 --
66447 ----------------------------------------
66448 --
66449 PROCEDURE insert_sources_143(
66450                                 p_target_ledger_id       IN NUMBER
66451                               , p_language               IN VARCHAR2
66452                               , p_sla_ledger_id          IN NUMBER
66453                               , p_pad_start_date         IN DATE
66454                               , p_pad_end_date           IN DATE
66455                          )
66456 IS
66457 
66458 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ADJUSTMENT_ALL';
66459 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'ADJUSTMENT';
66460 p_apps_owner                   VARCHAR2(30);
66461 l_log_module                   VARCHAR2(240);
66462 BEGIN
66463 IF g_log_enabled THEN
66464       l_log_module := C_DEFAULT_MODULE||'.insert_sources_143';
66465 END IF;
66466 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66467 
66468       trace
66469          (p_msg      => 'BEGIN of insert_sources_143'
66470          ,p_level    => C_LEVEL_PROCEDURE
66471          ,p_module   => l_log_module);
66472 
66473 END IF;
66474 
66475 -- select APPS owner
66476 SELECT oracle_username
66477   INTO p_apps_owner
66478   FROM fnd_oracle_userid
66479  WHERE read_only_flag = 'U'
66480 ;
66481 
66482 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66483       trace
66484          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
66485                         ' - p_language = '||p_language||
66486                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
66487                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
66488                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
66489                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
66490          ,p_level    => C_LEVEL_STATEMENT
66491          ,p_module   => l_log_module);
66492 END IF;
66493 
66494 
66495 --
66496 INSERT INTO xla_diag_sources --hdr2
66497 (
66498         event_id
66499       , ledger_id
66500       , sla_ledger_id
66501       , description_language
66502       , object_name
66503       , object_type_code
66504       , line_number
66505       , source_application_id
66506       , source_type_code
66507       , source_code
66508       , source_value
66512       , last_update_date
66509       , source_meaning
66510       , created_by
66511       , creation_date
66513       , last_updated_by
66514       , last_update_login
66515       , program_update_date
66516       , program_application_id
66517       , program_id
66518       , request_id
66519 )
66520 SELECT
66521         event_id
66522       , p_target_ledger_id
66523       , p_sla_ledger_id
66524       , p_language
66525       , object_name
66526       , object_type_code
66527       , line_number
66528       , source_application_id
66529       , source_type_code
66530       , source_code
66531       , SUBSTR(source_value ,1,1996)
66532       , SUBSTR(source_meaning ,1,200)
66533       , xla_environment_pkg.g_Usr_Id
66534       , TRUNC(SYSDATE)
66535       , TRUNC(SYSDATE)
66536       , xla_environment_pkg.g_Usr_Id
66537       , xla_environment_pkg.g_Login_Id
66538       , TRUNC(SYSDATE)
66539       , xla_environment_pkg.g_Prog_Appl_Id
66540       , xla_environment_pkg.g_Prog_Id
66541       , xla_environment_pkg.g_Req_Id
66542   FROM (
66543        SELECT xet.event_id                  event_id
66544             , 0                          line_number
66545             , CASE r
66546                WHEN 1 THEN 'AR_ADJUSTMENTS_H_V' 
66547                 WHEN 2 THEN 'AR_ADJUSTMENTS_H_V' 
66548                 WHEN 3 THEN 'AR_RECEIVABLES_TRX_ACT_S_V' 
66549                 WHEN 4 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
66550                 WHEN 5 THEN 'AR_BILL_TO_SITE_USES_S_V' 
66551                 WHEN 6 THEN 'AR_TRANSACTIONS_S_V' 
66552                 WHEN 7 THEN 'AR_ADJUSTMENTS_H_V' 
66553                 WHEN 8 THEN 'AR_ADJUSTMENTS_H_V' 
66554                 
66555                ELSE null
66556               END                           object_name
66557             , CASE r
66558                 WHEN 1 THEN 'HEADER' 
66559                 WHEN 2 THEN 'HEADER' 
66560                 WHEN 3 THEN 'HEADER' 
66561                 WHEN 4 THEN 'HEADER' 
66562                 WHEN 5 THEN 'HEADER' 
66563                 WHEN 6 THEN 'HEADER' 
66564                 WHEN 7 THEN 'HEADER' 
66565                 WHEN 8 THEN 'HEADER' 
66566                 
66567                 ELSE null
66568               END                           object_type_code
66569             , CASE r
66570                 WHEN 1 THEN '222' 
66571                 WHEN 2 THEN '222' 
66572                 WHEN 3 THEN '222' 
66573                 WHEN 4 THEN '222' 
66574                 WHEN 5 THEN '222' 
66575                 WHEN 6 THEN '222' 
66576                 WHEN 7 THEN '222' 
66577                 WHEN 8 THEN '222' 
66578                 
66579                 ELSE null
66580               END                           source_application_id
66581             , 'S'             source_type_code
66582             , CASE r
66583                 WHEN 1 THEN 'ADJ_NUMBER' 
66584                 WHEN 2 THEN 'ADJ_DOC_SEQUENCE_VALUE' 
66585                 WHEN 3 THEN 'REC_ACT_TYPE' 
66586                 WHEN 4 THEN 'BILL_CUST_ACCOUNT_ID' 
66587                 WHEN 5 THEN 'BILL_USES_SITE_USE_ID' 
66588                 WHEN 6 THEN 'XLA_PARTY_TYPE' 
66589                 WHEN 7 THEN 'ADJ_DOC_SEQUENCE_CATEGORY' 
66590                 WHEN 8 THEN 'ADJ_DOC_SEQUENCE_ID' 
66591                 
66592                 ELSE null
66593               END                           source_code
66594             , CASE r
66595                 WHEN 1 THEN TO_CHAR(h1.ADJ_NUMBER)
66596                 WHEN 2 THEN TO_CHAR(h1.ADJ_DOC_SEQUENCE_VALUE)
66597                 WHEN 3 THEN TO_CHAR(h6.REC_ACT_TYPE)
66598                 WHEN 4 THEN TO_CHAR(h2.BILL_CUST_ACCOUNT_ID)
66599                 WHEN 5 THEN TO_CHAR(h3.BILL_USES_SITE_USE_ID)
66600                 WHEN 6 THEN TO_CHAR(h7.XLA_PARTY_TYPE)
66601                 WHEN 7 THEN TO_CHAR(h1.ADJ_DOC_SEQUENCE_CATEGORY)
66602                 WHEN 8 THEN TO_CHAR(h1.ADJ_DOC_SEQUENCE_ID)
66603                 
66604                 ELSE null
66605               END                           source_value
66606             , null              source_meaning
66607          FROM xla_events_gt     xet  
66608       , AR_ADJUSTMENTS_H_V  h1
66609       , AR_BILL_TO_CUSTOMERS_S_V  h2
66610       , AR_BILL_TO_SITE_USES_S_V  h3
66611       , AR_RECEIVABLES_TRX_ACT_S_V  h6
66612       , AR_TRANSACTIONS_S_V  h7
66613              ,(select rownum r from all_objects where rownum <= 8 and owner = p_apps_owner)
66614          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
66615            AND xet.event_class_code = C_EVENT_CLASS_CODE
66616               AND h1.event_id = xet.event_id
66617   AND h2.event_id  = h1.event_id
66618   AND h3.event_id  = h1.event_id
66619   AND h6.event_id (+) = h1.event_id
66620   AND h7.event_id  = h1.event_id
66621 
66622 )
66623 ;
66624 --
66625 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66626 
66627       trace
66628          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
66629          ,p_level    => C_LEVEL_STATEMENT
66630          ,p_module   => l_log_module);
66631 
66632 END IF;
66633 --
66634 
66635 
66636 
66637 --
66638 INSERT INTO xla_diag_sources  --line2
66639 (
66640         event_id
66641       , ledger_id
66642       , sla_ledger_id
66643       , description_language
66644       , object_name
66645       , object_type_code
66646       , line_number
66650       , source_value
66647       , source_application_id
66648       , source_type_code
66649       , source_code
66651       , source_meaning
66652       , created_by
66653       , creation_date
66654       , last_update_date
66655       , last_updated_by
66656       , last_update_login
66657       , program_update_date
66658       , program_application_id
66659       , program_id
66660       , request_id
66661 )
66662 SELECT  event_id
66663       , p_target_ledger_id
66664       , p_sla_ledger_id
66665       , p_language
66666       , object_name
66667       , object_type_code
66668       , line_number
66669       , source_application_id
66670       , source_type_code
66671       , source_code
66672       , SUBSTR(source_value,1,1996)
66673       , SUBSTR(source_meaning ,1,200)
66674       , xla_environment_pkg.g_Usr_Id
66675       , TRUNC(SYSDATE)
66676       , TRUNC(SYSDATE)
66677       , xla_environment_pkg.g_Usr_Id
66678       , xla_environment_pkg.g_Login_Id
66679       , TRUNC(SYSDATE)
66680       , xla_environment_pkg.g_Prog_Appl_Id
66681       , xla_environment_pkg.g_Prog_Id
66682       , xla_environment_pkg.g_Req_Id
66683   FROM (
66684        SELECT xet.event_id                  event_id
66685             , l5.line_number                 line_number
66686             , CASE r
66687                WHEN 1 THEN 'AR_DISTRIBUTIONS_L_V' 
66688                 WHEN 2 THEN 'AR_DISTRIBUTIONS_L_V' 
66689                 WHEN 3 THEN 'AR_DISTRIBUTIONS_L_V' 
66690                 WHEN 4 THEN 'AR_DISTRIBUTIONS_L_V' 
66691                 WHEN 5 THEN 'AR_DISTRIBUTIONS_L_V' 
66692                 WHEN 6 THEN 'AR_DISTRIBUTIONS_L_V' 
66693                 WHEN 7 THEN 'AR_DISTRIBUTIONS_BASE_V' 
66694                 WHEN 8 THEN 'AR_DISTRIBUTIONS_BASE_V' 
66695                 WHEN 9 THEN 'AR_DISTRIBUTIONS_BASE_V' 
66696                 WHEN 10 THEN 'AR_DISTRIBUTIONS_BASE_V' 
66697                 
66698                ELSE null
66699               END                           object_name
66700             , CASE r
66701                 WHEN 1 THEN 'LINE' 
66702                 WHEN 2 THEN 'LINE' 
66703                 WHEN 3 THEN 'LINE' 
66704                 WHEN 4 THEN 'LINE' 
66705                 WHEN 5 THEN 'LINE' 
66706                 WHEN 6 THEN 'LINE' 
66707                 WHEN 7 THEN 'LINE' 
66708                 WHEN 8 THEN 'LINE' 
66709                 WHEN 9 THEN 'LINE' 
66710                 WHEN 10 THEN 'LINE' 
66711                 
66712                 ELSE null
66713               END                           object_type_code
66714             , CASE r
66715                 WHEN 1 THEN '222' 
66716                 WHEN 2 THEN '222' 
66717                 WHEN 3 THEN '222' 
66718                 WHEN 4 THEN '222' 
66719                 WHEN 5 THEN '222' 
66720                 WHEN 6 THEN '222' 
66721                 WHEN 7 THEN '222' 
66722                 WHEN 8 THEN '222' 
66723                 WHEN 9 THEN '222' 
66724                 WHEN 10 THEN '222' 
66725                 
66726                 ELSE null
66727               END                           source_application_id
66728             , 'S'             source_type_code
66729             , CASE r
66730                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
66731                 WHEN 2 THEN 'DIST_SOURCE_TYPE' 
66732                 WHEN 3 THEN 'DIST_LINE_ID' 
66733                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
66734                 WHEN 5 THEN 'DIST_ENT_AMT' 
66735                 WHEN 6 THEN 'DIST_CURRENCY_CODE' 
66736                 WHEN 7 THEN 'DIST_CUR_CONVERSION_DATE' 
66737                 WHEN 8 THEN 'DIST_CUR_CONVERSION_RATE' 
66738                 WHEN 9 THEN 'DIST_CUR_CONVERSION_TYPE' 
66739                 WHEN 10 THEN 'DIST_TO_ACCTD_AMT' 
66740                 
66741                 ELSE null
66742               END                           source_code
66743             , CASE r
66744                 WHEN 1 THEN TO_CHAR(l5.DIST_CODE_COMBINATION_ID)
66745                 WHEN 2 THEN TO_CHAR(l5.DIST_SOURCE_TYPE)
66746                 WHEN 3 THEN TO_CHAR(l5.DIST_LINE_ID)
66747                 WHEN 4 THEN TO_CHAR(l5.DISTRIBUTION_TYPE)
66748                 WHEN 5 THEN TO_CHAR(l5.DIST_ENT_AMT)
66749                 WHEN 6 THEN TO_CHAR(l5.DIST_CURRENCY_CODE)
66750                 WHEN 7 THEN TO_CHAR(l4.DIST_CUR_CONVERSION_DATE)
66751                 WHEN 8 THEN TO_CHAR(l4.DIST_CUR_CONVERSION_RATE)
66752                 WHEN 9 THEN TO_CHAR(l4.DIST_CUR_CONVERSION_TYPE)
66753                 WHEN 10 THEN TO_CHAR(l4.DIST_TO_ACCTD_AMT)
66754                 
66755                 ELSE null
66756               END                           source_value
66757             , null              source_meaning
66758          FROM  xla_events_gt     xet  
66759         , AR_DISTRIBUTIONS_BASE_V  l4
66760         , AR_DISTRIBUTIONS_L_V  l5
66761             , (select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
66762         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
66763           AND xet.event_class_code = C_EVENT_CLASS_CODE
66764             AND l4.event_id          = xet.event_id
66765   AND l5.event_id    = l4.event_id
66766   AND l5.line_number = l4.line_number
66767 
66768 )
66769 ;
66770 --
66771 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
66772 
66773       trace
66774          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
66775          ,p_level    => C_LEVEL_STATEMENT
66776          ,p_module   => l_log_module);
66777 
66781 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
66778 END IF;
66779 
66780 
66782       trace
66783          (p_msg      => 'END of insert_sources_143'
66784          ,p_level    => C_LEVEL_PROCEDURE
66785          ,p_module   => l_log_module);
66786 END IF;
66787 EXCEPTION
66788   WHEN xla_exceptions_pkg.application_exception THEN
66789       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
66790             trace
66791                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
66792                ,p_level    => C_LEVEL_EXCEPTION
66793                ,p_module   => l_log_module);
66794       END IF;
66795       RAISE;
66796   WHEN OTHERS THEN
66797       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
66798             trace
66799                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
66800                ,p_level    => C_LEVEL_EXCEPTION
66801                ,p_module   => l_log_module);
66802        END IF;
66803        xla_exceptions_pkg.raise_message
66804            (p_location => 'XLA_00222_AAD_S_000002_PKG.insert_sources_143');
66805 END insert_sources_143;
66806 --
66807 
66808 ---------------------------------------
66809 --
66810 -- PRIVATE FUNCTION
66811 --         EventClass_143
66812 --
66813 ----------------------------------------
66814 --
66815 FUNCTION EventClass_143
66816        (p_application_id         IN NUMBER
66817        ,p_base_ledger_id         IN NUMBER
66818        ,p_target_ledger_id       IN NUMBER
66819        ,p_language               IN VARCHAR2
66820        ,p_currency_code          IN VARCHAR2
66821        ,p_sla_ledger_id          IN NUMBER
66822        ,p_pad_start_date         IN DATE
66823        ,p_pad_end_date           IN DATE
66824        ,p_primary_ledger_id      IN NUMBER)
66825 RETURN BOOLEAN IS
66826 --
66827 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'ADJUSTMENT_ALL';
66828 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'ADJUSTMENT';
66829 
66830 l_calculate_acctd_flag   VARCHAR2(1) :='N';
66831 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
66832 --
66833 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66834 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66835 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66836 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66837 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66838 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66839 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66840 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66841 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66842 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66843 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66844 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66845 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66846 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
66847 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66848 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66849 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66850 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
66851 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66852 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66853 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66854 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
66855 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
66856 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
66857 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
66858 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
66859 
66860 l_event_id                             NUMBER;
66861 l_previous_event_id                    NUMBER;
66862 l_first_event_id                       NUMBER;
66863 l_last_event_id                        NUMBER;
66864 
66865 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
66866 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
66867 --
66868 --
66869 l_result                    BOOLEAN := TRUE;
66870 l_rows                      NUMBER  := 1000;
66871 l_event_type_name           VARCHAR2(80) := 'All';
66872 l_event_class_name          VARCHAR2(80) := 'Adjustment';
66873 l_description               VARCHAR2(4000);
66874 l_transaction_reversal      NUMBER;
66875 l_ae_header_id              NUMBER;
66876 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
66877 l_log_module                VARCHAR2(240);
66878 --
66879 l_acct_reversal_source      VARCHAR2(30);
66880 l_trx_reversal_source       VARCHAR2(30);
66881 
66882 l_continue_with_lines       BOOLEAN := TRUE;
66883 --
66884 l_acc_rev_gl_date_source    DATE;                      -- 4262811
66885 --
66886 type t_array_event_id is table of number index by binary_integer;
66887 
66888 l_rec_array_event                    t_rec_array_event;
66889 l_null_rec_array_event               t_rec_array_event;
66890 l_array_ae_header_id                 xla_number_array_type;
66894 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
66891 l_actual_flag                        VARCHAR2(1) := NULL;
66892 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
66893 l_balance_type_code                  VARCHAR2(1) :=NULL;
66895 
66896 --
66897 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
66898 --
66899 
66900 TYPE t_array_source_1 IS TABLE OF AR_ADJUSTMENTS_H_V.ADJ_NUMBER%TYPE INDEX BY BINARY_INTEGER;
66901 TYPE t_array_source_2 IS TABLE OF AR_ADJUSTMENTS_H_V.ADJ_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
66902 TYPE t_array_source_40 IS TABLE OF AR_RECEIVABLES_TRX_ACT_S_V.REC_ACT_TYPE%TYPE INDEX BY BINARY_INTEGER;
66903 TYPE t_array_source_49 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
66904 TYPE t_array_source_50 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
66905 TYPE t_array_source_51 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
66906 TYPE t_array_source_117 IS TABLE OF AR_ADJUSTMENTS_H_V.ADJ_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
66907 TYPE t_array_source_118 IS TABLE OF AR_ADJUSTMENTS_H_V.ADJ_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
66908 
66909 TYPE t_array_source_32 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
66910 TYPE t_array_source_39 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_SOURCE_TYPE%TYPE INDEX BY BINARY_INTEGER;
66911 TYPE t_array_source_41 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
66912 TYPE t_array_source_42 IS TABLE OF AR_DISTRIBUTIONS_L_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
66913 TYPE t_array_source_43 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_ENT_AMT%TYPE INDEX BY BINARY_INTEGER;
66914 TYPE t_array_source_44 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
66915 TYPE t_array_source_45 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
66916 TYPE t_array_source_46 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
66917 TYPE t_array_source_47 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
66918 TYPE t_array_source_48 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_TO_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
66919 
66920 l_array_source_1              t_array_source_1;
66921 l_array_source_2              t_array_source_2;
66922 l_array_source_40              t_array_source_40;
66923 l_array_source_49              t_array_source_49;
66924 l_array_source_50              t_array_source_50;
66925 l_array_source_51              t_array_source_51;
66926 l_array_source_117              t_array_source_117;
66927 l_array_source_118              t_array_source_118;
66928 
66929 l_array_source_32      t_array_source_32;
66930 l_array_source_39      t_array_source_39;
66931 l_array_source_41      t_array_source_41;
66932 l_array_source_42      t_array_source_42;
66933 l_array_source_43      t_array_source_43;
66934 l_array_source_44      t_array_source_44;
66935 l_array_source_45      t_array_source_45;
66936 l_array_source_46      t_array_source_46;
66937 l_array_source_47      t_array_source_47;
66938 l_array_source_48      t_array_source_48;
66939 
66940 --
66941 CURSOR header_cur
66942 IS
66943 SELECT /*+ leading(xet) cardinality(xet,1) */
66944 -- Event Class Code: ADJUSTMENT
66945     xet.entity_id
66946    ,xet.legal_entity_id
66947    ,xet.entity_code
66948    ,xet.transaction_number
66949    ,xet.event_id
66950    ,xet.event_class_code
66951    ,xet.event_type_code
66952    ,xet.event_number
66953    ,xet.event_date
66954    ,xet.transaction_date
66955    ,xet.reference_num_1
66956    ,xet.reference_num_2
66957    ,xet.reference_num_3
66958    ,xet.reference_num_4
66959    ,xet.reference_char_1
66960    ,xet.reference_char_2
66961    ,xet.reference_char_3
66962    ,xet.reference_char_4
66963    ,xet.reference_date_1
66964    ,xet.reference_date_2
66965    ,xet.reference_date_3
66966    ,xet.reference_date_4
66967    ,xet.event_created_by
66968    ,xet.budgetary_control_flag 
66969   , h1.ADJ_NUMBER    source_1
66970   , h1.ADJ_DOC_SEQUENCE_VALUE    source_2
66971   , h6.REC_ACT_TYPE    source_40
66972   , h2.BILL_CUST_ACCOUNT_ID    source_49
66973   , h3.BILL_USES_SITE_USE_ID    source_50
66974   , h7.XLA_PARTY_TYPE    source_51
66975   , h1.ADJ_DOC_SEQUENCE_CATEGORY    source_117
66976   , h1.ADJ_DOC_SEQUENCE_ID    source_118
66977   FROM xla_events_gt     xet 
66978   , AR_ADJUSTMENTS_H_V  h1
66979   , AR_BILL_TO_CUSTOMERS_S_V  h2
66980   , AR_BILL_TO_SITE_USES_S_V  h3
66981   , AR_RECEIVABLES_TRX_ACT_S_V  h6
66982   , AR_TRANSACTIONS_S_V  h7
66983  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
66984    and xet.event_class_code = C_EVENT_CLASS_CODE
66985    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
66986   AND h2.event_id  = h1.event_id
66987   AND h3.event_id  = h1.event_id
66988   AND h6.event_id (+) = h1.event_id
66989   AND h7.event_id  = h1.event_id
66990 
66991  ORDER BY event_id
66992 ;
66993 
66994 
66995 --
66996 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
66997 IS
66998 SELECT  /*+ leading(xet) cardinality(xet,1) */
66999 -- Event Class Code: ADJUSTMENT
67000     xet.entity_id
67001    ,xet.legal_entity_id
67002    ,xet.entity_code
67003    ,xet.transaction_number
67007    ,xet.event_number
67004    ,xet.event_id
67005    ,xet.event_class_code
67006    ,xet.event_type_code
67008    ,xet.event_date
67009    ,xet.transaction_date
67010    ,xet.reference_num_1
67011    ,xet.reference_num_2
67012    ,xet.reference_num_3
67013    ,xet.reference_num_4
67014    ,xet.reference_char_1
67015    ,xet.reference_char_2
67016    ,xet.reference_char_3
67017    ,xet.reference_char_4
67018    ,xet.reference_date_1
67019    ,xet.reference_date_2
67020    ,xet.reference_date_3
67021    ,xet.reference_date_4
67022    ,xet.event_created_by
67023    ,xet.budgetary_control_flag
67024  , l4.LINE_NUMBER  
67025   , l5.DIST_CODE_COMBINATION_ID    source_32
67026   , l5.DIST_SOURCE_TYPE    source_39
67027   , l5.DIST_LINE_ID    source_41
67028   , l5.DISTRIBUTION_TYPE    source_42
67029   , l5.DIST_ENT_AMT    source_43
67030   , l5.DIST_CURRENCY_CODE    source_44
67031   , l4.DIST_CUR_CONVERSION_DATE    source_45
67032   , l4.DIST_CUR_CONVERSION_RATE    source_46
67033   , l4.DIST_CUR_CONVERSION_TYPE    source_47
67034   , l4.DIST_TO_ACCTD_AMT    source_48
67035   FROM xla_events_gt     xet 
67036   , AR_DISTRIBUTIONS_BASE_V  l4
67037   , AR_DISTRIBUTIONS_L_V  l5
67038  WHERE xet.event_id between x_first_event_id and x_last_event_id
67039    and xet.event_date between p_pad_start_date and p_pad_end_date
67040    and xet.event_class_code = C_EVENT_CLASS_CODE
67041    and xet.event_status_code <> 'N'   AND l4.event_id      = xet.event_id
67042   AND l5.event_id    = l4.event_id
67043   AND l5.line_number = l4.line_number
67044 ;
67045 
67046 --
67047 BEGIN
67048 IF g_log_enabled THEN
67049    l_log_module := C_DEFAULT_MODULE||'.EventClass_143';
67050 END IF;
67051 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67052    trace
67053       (p_msg      => 'BEGIN of EventClass_143'
67054       ,p_level    => C_LEVEL_PROCEDURE
67055       ,p_module   => l_log_module);
67056 END IF;
67057 
67058 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67059    trace
67060       (p_msg      => 'p_application_id = '||p_application_id||
67061                      ' - p_base_ledger_id = '||p_base_ledger_id||
67062                      ' - p_target_ledger_id  = '||p_target_ledger_id||
67063                      ' - p_language = '||p_language||
67064                      ' - p_currency_code = '||p_currency_code||
67065                      ' - p_sla_ledger_id = '||p_sla_ledger_id
67066       ,p_level    => C_LEVEL_STATEMENT
67067       ,p_module   => l_log_module);
67068 END IF;
67069 --
67070 -- initialze arrays
67071 --
67072 g_array_event.DELETE;
67073 l_rec_array_event := l_null_rec_array_event;
67074 --
67075 --------------------------------------
67076 -- 4262811 Initialze MPA Line Number
67077 --------------------------------------
67078 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
67079 
67080 --
67081 
67082 --
67083 OPEN header_cur;
67084 --
67085 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67086    trace
67087    (p_msg      => 'SQL - FETCH header_cur'
67088    ,p_level    => C_LEVEL_STATEMENT
67089    ,p_module   => l_log_module);
67090 END IF;
67091 --
67092 LOOP
67093 FETCH header_cur BULK COLLECT INTO
67094         l_array_entity_id
67095       , l_array_legal_entity_id
67096       , l_array_entity_code
67097       , l_array_transaction_num
67098       , l_array_event_id
67099       , l_array_class_code
67100       , l_array_event_type
67101       , l_array_event_number
67102       , l_array_event_date
67103       , l_array_transaction_date
67104       , l_array_reference_num_1
67105       , l_array_reference_num_2
67106       , l_array_reference_num_3
67107       , l_array_reference_num_4
67108       , l_array_reference_char_1
67109       , l_array_reference_char_2
67110       , l_array_reference_char_3
67111       , l_array_reference_char_4
67112       , l_array_reference_date_1
67113       , l_array_reference_date_2
67114       , l_array_reference_date_3
67115       , l_array_reference_date_4
67116       , l_array_event_created_by
67117       , l_array_budgetary_control_flag 
67118       , l_array_source_1
67119       , l_array_source_2
67120       , l_array_source_40
67121       , l_array_source_49
67122       , l_array_source_50
67123       , l_array_source_51
67124       , l_array_source_117
67125       , l_array_source_118
67126       LIMIT l_rows;
67127 --
67128 IF (C_LEVEL_EVENT >= g_log_level) THEN
67129    trace
67130    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
67131    ,p_level    => C_LEVEL_EVENT
67132    ,p_module   => l_log_module);
67133 END IF;
67134 --
67135 EXIT WHEN l_array_entity_id.COUNT = 0;
67136 
67137 -- initialize arrays
67138 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
67139 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
67140 
67141 --
67142 -- Bug 4458708
67143 --
67144 XLA_AE_LINES_PKG.g_LineNumber := 0;
67145 
67146 
67147 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
67148 g_last_hdr_idx := l_array_event_id.LAST;
67149 --
67150 -- loop for the headers. Each iteration is for each header extract row
67151 -- fetched in header cursor
67152 --
67156 -- set event info as cache for other routines to refer event attributes
67153 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
67154 
67155 --
67157 --
67158 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
67159    (p_application_id           => p_application_id
67160    ,p_primary_ledger_id        => p_primary_ledger_id
67161    ,p_base_ledger_id           => p_base_ledger_id
67162    ,p_target_ledger_id         => p_target_ledger_id
67163    ,p_entity_id                => l_array_entity_id(hdr_idx)
67164    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
67165    ,p_entity_code              => l_array_entity_code(hdr_idx)
67166    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
67167    ,p_event_id                 => l_array_event_id(hdr_idx)
67168    ,p_event_class_code         => l_array_class_code(hdr_idx)
67169    ,p_event_type_code          => l_array_event_type(hdr_idx)
67170    ,p_event_number             => l_array_event_number(hdr_idx)
67171    ,p_event_date               => l_array_event_date(hdr_idx)
67172    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
67173    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
67174    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
67175    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
67176    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
67177    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
67178    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
67179    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
67180    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
67181    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
67182    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
67183    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
67184    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
67185    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
67186    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
67187 
67188 --
67189 -- set the status of entry to C_VALID (0)
67190 --
67191 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
67192 
67193 --
67194 -- initialize a row for ae header
67195 --
67196 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
67197 
67198 l_event_id := l_array_event_id(hdr_idx);
67199 
67200 --
67201 -- storing the hdr_idx for event. May be used by line cursor.
67202 --
67203 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
67204 
67205 --
67206 -- store sources from header extract. This can be improved to
67207 -- store only those sources from header extract that may be used in lines
67208 --
67209 
67210 g_array_event(l_event_id).array_value_char('source_1') := l_array_source_1(hdr_idx);
67211 g_array_event(l_event_id).array_value_num('source_2') := l_array_source_2(hdr_idx);
67212 g_array_event(l_event_id).array_value_char('source_40') := l_array_source_40(hdr_idx);
67213 g_array_event(l_event_id).array_value_num('source_49') := l_array_source_49(hdr_idx);
67214 g_array_event(l_event_id).array_value_num('source_50') := l_array_source_50(hdr_idx);
67215 g_array_event(l_event_id).array_value_char('source_51') := l_array_source_51(hdr_idx);
67216 g_array_event(l_event_id).array_value_char('source_117') := l_array_source_117(hdr_idx);
67217 g_array_event(l_event_id).array_value_num('source_118') := l_array_source_118(hdr_idx);
67218 
67219 --
67220 -- initilaize the status of ae headers for diffrent balance types
67221 -- the status is initialised to C_NOT_CREATED (2)
67222 --
67223 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
67224 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
67225 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
67226 
67227 --
67228 -- call api to validate and store accounting attributes for header
67229 --
67230 
67231 ------------------------------------------------------------
67232 -- Accrual Reversal : to get date for Standard Source (NONE)
67233 ------------------------------------------------------------
67234 l_acc_rev_gl_date_source := NULL;
67235 
67236      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
67237       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_117');
67238      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
67239       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_118');
67240      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
67241       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_2');
67242      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
67243       l_rec_acct_attrs.array_date_value(4) := 
67244 xla_ae_sources_pkg.GetSystemSourceDate(
67245    p_source_code           => 'XLA_EVENT_DATE'
67246  , p_source_type_code      => 'Y'
67247  , p_source_application_id =>  602
67248 );
67249 
67250 
67251 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
67252 
67253 XLA_AE_HEADER_PKG.SetJeCategoryName;
67254 
67255 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
67256 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
67257 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
67261 
67258 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
67259 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
67260 
67262 --
67263 xla_ae_header_pkg.SetHdrDescription(
67264    p_description => Description_1 (
67265    p_application_id => p_application_id 
67266  , p_source_1 => g_array_event(l_event_id).array_value_char('source_1')
67267  , p_source_2 => g_array_event(l_event_id).array_value_num('source_2')
67268    )
67269 );
67270 --
67271 
67272 -- No header level analytical criteria
67273 
67274 --
67275 --accounting attribute enhancement, bug 3612931
67276 --
67277 l_trx_reversal_source := SUBSTR(NULL, 1,30);
67278 
67279 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
67280    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
67281 
67282    xla_accounting_err_pkg.build_message
67283       (p_appli_s_name            => 'XLA'
67284       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
67285       ,p_token_1                 => 'ACCT_ATTR_NAME'
67286       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
67287       ,p_token_2                 => 'PRODUCT_NAME'
67288       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
67289       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
67290       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
67291       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
67292 
67293 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
67294    --
67295    -- following sets the accounting attributes needed to reverse
67296    -- accounting for a distributeion
67297    --
67298    xla_ae_lines_pkg.SetTrxReversalAttrs
67299       (p_event_id              => l_event_id
67300       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
67301       ,p_trx_reversal_source   => l_trx_reversal_source);
67302 
67303 END IF;
67304 
67305 
67306 ----------------------------------------------------------------
67307 -- 4262811 -  update the header statuses to invalid in need be
67308 ----------------------------------------------------------------
67309 --
67310 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
67311 
67312 
67313   -----------------------------------------------
67314   -- No accrual reversal for the event class/type
67315   -----------------------------------------------
67316 ----------------------------------------------------------------
67317 
67318 --
67319 -- this ends the header loop iteration for one bulk fetch
67320 --
67321 END LOOP;
67322 
67323 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
67324 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
67325 
67326 --
67327 -- insert dummy rows into lines gt table that were created due to
67328 -- transaction reversals
67329 --
67330 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
67331    l_result := XLA_AE_LINES_PKG.InsertLines;
67332 END IF;
67333 
67334 --
67335 -- reset the temp_line_num for each set of events fetched from header
67336 -- cursor rather than doing it for each new event in line cursor
67337 -- Bug 3939231
67338 --
67339 xla_ae_lines_pkg.g_temp_line_num := 0;
67340 
67341 
67342 
67343 --
67344 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
67345 --
67346 --
67347 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67348 
67349       trace
67350          (p_msg      => 'SQL - FETCH line_cur'
67351          ,p_level    => C_LEVEL_STATEMENT
67352          ,p_module   => l_log_module);
67353 
67354 END IF;
67355 --
67356 --
67357 LOOP
67358   --
67359   FETCH line_cur BULK COLLECT INTO
67360         l_array_entity_id
67361       , l_array_legal_entity_id
67362       , l_array_entity_code
67363       , l_array_transaction_num
67364       , l_array_event_id
67365       , l_array_class_code
67366       , l_array_event_type
67367       , l_array_event_number
67368       , l_array_event_date
67369       , l_array_transaction_date
67370       , l_array_reference_num_1
67371       , l_array_reference_num_2
67372       , l_array_reference_num_3
67373       , l_array_reference_num_4
67374       , l_array_reference_char_1
67375       , l_array_reference_char_2
67376       , l_array_reference_char_3
67377       , l_array_reference_char_4
67378       , l_array_reference_date_1
67379       , l_array_reference_date_2
67380       , l_array_reference_date_3
67381       , l_array_reference_date_4
67382       , l_array_event_created_by
67383       , l_array_budgetary_control_flag
67384       , l_array_extract_line_num 
67385       , l_array_source_32
67386       , l_array_source_39
67387       , l_array_source_41
67388       , l_array_source_42
67389       , l_array_source_43
67390       , l_array_source_44
67391       , l_array_source_45
67392       , l_array_source_46
67393       , l_array_source_47
67394       , l_array_source_48
67395       LIMIT l_rows;
67396 
67397   --
67398   IF (C_LEVEL_EVENT >= g_log_level) THEN
67399             trace
67403   END IF;
67400                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
67401                ,p_level    => C_LEVEL_EVENT
67402                ,p_module   => l_log_module);
67404   --
67405   EXIT WHEN l_array_entity_id.count = 0;
67406 
67407   XLA_AE_LINES_PKG.g_rec_lines := null;
67408 
67409 --
67410 -- Bug 4458708
67411 --
67412 XLA_AE_LINES_PKG.g_LineNumber := 0;
67413 --
67414 --
67415 
67416 FOR Idx IN 1..l_array_event_id.count LOOP
67417    --
67418    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
67419    --
67420    l_event_id := l_array_event_id(idx);  -- 5648433
67421 
67422    --
67423    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
67424    --
67425 
67426    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
67427              (g_array_event(l_event_id).array_value_num('header_index'))
67428          ,'N'
67429          ) <> 'Y'
67430    THEN
67431       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67432          trace
67433             (p_msg      => 'Trancaction revesal option is not Y '
67434             ,p_level    => C_LEVEL_STATEMENT
67435             ,p_module   => l_log_module);
67436       END IF;
67437 
67438 --
67439 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
67440 --
67441 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
67442 --
67443 -- set event info as cache for other routines to refer event attributes
67444 --
67445 
67446 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
67447    l_previous_event_id := l_event_id;
67448 
67449    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
67450       (p_application_id           => p_application_id
67451       ,p_primary_ledger_id        => p_primary_ledger_id
67452       ,p_base_ledger_id           => p_base_ledger_id
67453       ,p_target_ledger_id         => p_target_ledger_id
67454       ,p_entity_id                => l_array_entity_id(Idx)
67455       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
67456       ,p_entity_code              => l_array_entity_code(Idx)
67457       ,p_transaction_num          => l_array_transaction_num(Idx)
67458       ,p_event_id                 => l_array_event_id(Idx)
67459       ,p_event_class_code         => l_array_class_code(Idx)
67460       ,p_event_type_code          => l_array_event_type(Idx)
67461       ,p_event_number             => l_array_event_number(Idx)
67462       ,p_event_date               => l_array_event_date(Idx)
67463       ,p_transaction_date         => l_array_transaction_date(Idx)
67464       ,p_reference_num_1          => l_array_reference_num_1(Idx)
67465       ,p_reference_num_2          => l_array_reference_num_2(Idx)
67466       ,p_reference_num_3          => l_array_reference_num_3(Idx)
67467       ,p_reference_num_4          => l_array_reference_num_4(Idx)
67468       ,p_reference_char_1         => l_array_reference_char_1(Idx)
67469       ,p_reference_char_2         => l_array_reference_char_2(Idx)
67470       ,p_reference_char_3         => l_array_reference_char_3(Idx)
67471       ,p_reference_char_4         => l_array_reference_char_4(Idx)
67472       ,p_reference_date_1         => l_array_reference_date_1(Idx)
67473       ,p_reference_date_2         => l_array_reference_date_2(Idx)
67474       ,p_reference_date_3         => l_array_reference_date_3(Idx)
67475       ,p_reference_date_4         => l_array_reference_date_4(Idx)
67476       ,p_event_created_by         => l_array_event_created_by(Idx)
67477       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
67478        --
67479 END IF;
67480 
67481 
67482 
67483 --
67484 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
67485 
67486 l_acct_reversal_source := SUBSTR(NULL, 1,30);
67487 
67488 IF l_continue_with_lines THEN
67489    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
67490       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
67491 
67492       xla_accounting_err_pkg.build_message
67493          (p_appli_s_name            => 'XLA'
67494          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
67495          ,p_token_1                 => 'LINE_NUMBER'
67496          ,p_value_1                 => l_array_extract_line_num(Idx)
67497          ,p_token_2                 => 'PRODUCT_NAME'
67498          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
67499          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
67500          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
67501          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
67502 
67503    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
67504       --
67505       -- following sets the accounting attributes needed to reverse
67506       -- accounting for a distributeion
67507       --
67508 
67509       --
67510       -- 5217187
67511       --
67512       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
67513       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
67514                                        g_array_event(l_event_id).array_value_num('header_index'));
67515       --
67516       --
67517 
67518       -- No reversal code generated
67519 
67520       xla_ae_lines_pkg.SetAcctReversalAttrs
67524          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
67521          (p_event_id             => l_event_id
67522          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
67523          ,p_calculate_acctd_flag => l_calculate_acctd_flag
67525    END IF;
67526 
67527    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
67528        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
67529 
67530 --
67531 AcctLineType_37 (
67532  p_application_id  => p_application_id
67533  ,p_event_id     => l_event_id
67534  ,p_calculate_acctd_flag => l_calculate_acctd_flag
67535  ,p_calculate_g_l_flag => l_calculate_g_l_flag
67536  ,p_actual_flag => l_actual_flag
67537  ,p_balance_type_code => l_balance_type_code
67538  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
67539  
67540  , p_source_32 => l_array_source_32(Idx)
67541  , p_source_39 => l_array_source_39(Idx)
67542  , p_source_40 => g_array_event(l_event_id).array_value_char('source_40')
67543  , p_source_41 => l_array_source_41(Idx)
67544  , p_source_42 => l_array_source_42(Idx)
67545  , p_source_43 => l_array_source_43(Idx)
67546  , p_source_44 => l_array_source_44(Idx)
67547  , p_source_45 => l_array_source_45(Idx)
67548  , p_source_46 => l_array_source_46(Idx)
67549  , p_source_47 => l_array_source_47(Idx)
67550  , p_source_48 => l_array_source_48(Idx)
67551  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
67552  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
67553  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
67554  );
67555 If(l_balance_type_code = 'A') THEN
67556   l_actual_gain_loss_ref := l_gain_or_loss_ref;
67557 END IF;
67558 
67559 --
67560 
67561 
67562 --
67563 AcctLineType_38 (
67564  p_application_id  => p_application_id
67565  ,p_event_id     => l_event_id
67566  ,p_calculate_acctd_flag => l_calculate_acctd_flag
67567  ,p_calculate_g_l_flag => l_calculate_g_l_flag
67568  ,p_actual_flag => l_actual_flag
67569  ,p_balance_type_code => l_balance_type_code
67570  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
67571  
67572  , p_source_32 => l_array_source_32(Idx)
67573  , p_source_39 => l_array_source_39(Idx)
67574  , p_source_40 => g_array_event(l_event_id).array_value_char('source_40')
67575  , p_source_41 => l_array_source_41(Idx)
67576  , p_source_42 => l_array_source_42(Idx)
67577  , p_source_43 => l_array_source_43(Idx)
67578  , p_source_44 => l_array_source_44(Idx)
67579  , p_source_45 => l_array_source_45(Idx)
67580  , p_source_46 => l_array_source_46(Idx)
67581  , p_source_47 => l_array_source_47(Idx)
67582  , p_source_48 => l_array_source_48(Idx)
67583  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
67584  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
67585  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
67586  );
67587 If(l_balance_type_code = 'A') THEN
67588   l_actual_gain_loss_ref := l_gain_or_loss_ref;
67589 END IF;
67590 
67591 --
67592 
67593 
67594 --
67595 AcctLineType_39 (
67596  p_application_id  => p_application_id
67597  ,p_event_id     => l_event_id
67598  ,p_calculate_acctd_flag => l_calculate_acctd_flag
67599  ,p_calculate_g_l_flag => l_calculate_g_l_flag
67600  ,p_actual_flag => l_actual_flag
67601  ,p_balance_type_code => l_balance_type_code
67602  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
67603  
67604  , p_source_32 => l_array_source_32(Idx)
67605  , p_source_39 => l_array_source_39(Idx)
67606  , p_source_41 => l_array_source_41(Idx)
67607  , p_source_42 => l_array_source_42(Idx)
67608  , p_source_43 => l_array_source_43(Idx)
67609  , p_source_44 => l_array_source_44(Idx)
67610  , p_source_45 => l_array_source_45(Idx)
67611  , p_source_46 => l_array_source_46(Idx)
67612  , p_source_47 => l_array_source_47(Idx)
67613  , p_source_48 => l_array_source_48(Idx)
67614  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
67615  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
67616  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
67617  );
67618 If(l_balance_type_code = 'A') THEN
67619   l_actual_gain_loss_ref := l_gain_or_loss_ref;
67620 END IF;
67621 
67622 --
67623 
67624 
67625 --
67626 AcctLineType_40 (
67627  p_application_id  => p_application_id
67628  ,p_event_id     => l_event_id
67629  ,p_calculate_acctd_flag => l_calculate_acctd_flag
67630  ,p_calculate_g_l_flag => l_calculate_g_l_flag
67631  ,p_actual_flag => l_actual_flag
67632  ,p_balance_type_code => l_balance_type_code
67633  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
67634  
67635  , p_source_32 => l_array_source_32(Idx)
67636  , p_source_39 => l_array_source_39(Idx)
67637  , p_source_41 => l_array_source_41(Idx)
67638  , p_source_42 => l_array_source_42(Idx)
67639  , p_source_43 => l_array_source_43(Idx)
67640  , p_source_44 => l_array_source_44(Idx)
67641  , p_source_45 => l_array_source_45(Idx)
67642  , p_source_46 => l_array_source_46(Idx)
67643  , p_source_47 => l_array_source_47(Idx)
67644  , p_source_48 => l_array_source_48(Idx)
67645  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
67646  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
67647  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
67648  );
67649 If(l_balance_type_code = 'A') THEN
67653 --
67650   l_actual_gain_loss_ref := l_gain_or_loss_ref;
67651 END IF;
67652 
67654 
67655 
67656 --
67657 AcctLineType_41 (
67658  p_application_id  => p_application_id
67659  ,p_event_id     => l_event_id
67660  ,p_calculate_acctd_flag => l_calculate_acctd_flag
67661  ,p_calculate_g_l_flag => l_calculate_g_l_flag
67662  ,p_actual_flag => l_actual_flag
67663  ,p_balance_type_code => l_balance_type_code
67664  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
67665  
67666  , p_source_32 => l_array_source_32(Idx)
67667  , p_source_39 => l_array_source_39(Idx)
67668  , p_source_41 => l_array_source_41(Idx)
67669  , p_source_42 => l_array_source_42(Idx)
67670  , p_source_43 => l_array_source_43(Idx)
67671  , p_source_44 => l_array_source_44(Idx)
67672  , p_source_45 => l_array_source_45(Idx)
67673  , p_source_46 => l_array_source_46(Idx)
67674  , p_source_47 => l_array_source_47(Idx)
67675  , p_source_48 => l_array_source_48(Idx)
67676  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
67677  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
67678  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
67679  );
67680 If(l_balance_type_code = 'A') THEN
67681   l_actual_gain_loss_ref := l_gain_or_loss_ref;
67682 END IF;
67683 
67684 --
67685 
67686 
67687 --
67688 AcctLineType_42 (
67689  p_application_id  => p_application_id
67690  ,p_event_id     => l_event_id
67691  ,p_calculate_acctd_flag => l_calculate_acctd_flag
67692  ,p_calculate_g_l_flag => l_calculate_g_l_flag
67693  ,p_actual_flag => l_actual_flag
67694  ,p_balance_type_code => l_balance_type_code
67695  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
67696  
67697  , p_source_32 => l_array_source_32(Idx)
67698  , p_source_39 => l_array_source_39(Idx)
67699  , p_source_41 => l_array_source_41(Idx)
67700  , p_source_42 => l_array_source_42(Idx)
67701  , p_source_43 => l_array_source_43(Idx)
67702  , p_source_44 => l_array_source_44(Idx)
67703  , p_source_45 => l_array_source_45(Idx)
67704  , p_source_46 => l_array_source_46(Idx)
67705  , p_source_47 => l_array_source_47(Idx)
67706  , p_source_48 => l_array_source_48(Idx)
67707  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
67708  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
67709  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
67710  );
67711 If(l_balance_type_code = 'A') THEN
67712   l_actual_gain_loss_ref := l_gain_or_loss_ref;
67713 END IF;
67714 
67715 --
67716 
67717 
67718 --
67719 AcctLineType_43 (
67720  p_application_id  => p_application_id
67721  ,p_event_id     => l_event_id
67722  ,p_calculate_acctd_flag => l_calculate_acctd_flag
67723  ,p_calculate_g_l_flag => l_calculate_g_l_flag
67724  ,p_actual_flag => l_actual_flag
67725  ,p_balance_type_code => l_balance_type_code
67726  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
67727  
67728  , p_source_32 => l_array_source_32(Idx)
67729  , p_source_39 => l_array_source_39(Idx)
67730  , p_source_41 => l_array_source_41(Idx)
67731  , p_source_42 => l_array_source_42(Idx)
67732  , p_source_43 => l_array_source_43(Idx)
67733  , p_source_44 => l_array_source_44(Idx)
67734  , p_source_45 => l_array_source_45(Idx)
67735  , p_source_46 => l_array_source_46(Idx)
67736  , p_source_47 => l_array_source_47(Idx)
67737  , p_source_48 => l_array_source_48(Idx)
67738  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
67739  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
67740  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
67741  );
67742 If(l_balance_type_code = 'A') THEN
67743   l_actual_gain_loss_ref := l_gain_or_loss_ref;
67744 END IF;
67745 
67746 --
67747 
67748 
67749 --
67750 AcctLineType_44 (
67751  p_application_id  => p_application_id
67752  ,p_event_id     => l_event_id
67753  ,p_calculate_acctd_flag => l_calculate_acctd_flag
67754  ,p_calculate_g_l_flag => l_calculate_g_l_flag
67755  ,p_actual_flag => l_actual_flag
67756  ,p_balance_type_code => l_balance_type_code
67757  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
67758  
67759  , p_source_32 => l_array_source_32(Idx)
67760  , p_source_39 => l_array_source_39(Idx)
67761  , p_source_41 => l_array_source_41(Idx)
67762  , p_source_42 => l_array_source_42(Idx)
67763  , p_source_43 => l_array_source_43(Idx)
67764  , p_source_44 => l_array_source_44(Idx)
67765  , p_source_45 => l_array_source_45(Idx)
67766  , p_source_46 => l_array_source_46(Idx)
67767  , p_source_47 => l_array_source_47(Idx)
67768  , p_source_48 => l_array_source_48(Idx)
67769  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
67770  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
67771  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
67772  );
67773 If(l_balance_type_code = 'A') THEN
67774   l_actual_gain_loss_ref := l_gain_or_loss_ref;
67775 END IF;
67776 
67777 --
67778 
67779       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
67780       -- or secondary ledger that has different currency with primary
67781       -- or alc that is calculated by sla
67782       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
67786 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
67783             (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'))
67784 
67785 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
67787           AND (l_actual_flag = 'A')) THEN
67788         XLA_AE_LINES_PKG.CreateGainOrLossLines(
67789           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
67790          ,p_application_id   => p_application_id
67791          ,p_amb_context_code => 'DEFAULT'
67792          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
67793          ,p_event_class_code => C_EVENT_CLASS_CODE
67794          ,p_event_type_code  => C_EVENT_TYPE_CODE
67795          
67796          ,p_gain_ccid        => -1
67797          ,p_loss_ccid        => -1
67798 
67799          ,p_actual_flag      => l_actual_flag
67800          ,p_enc_flag         => null
67801          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
67802          ,p_enc_g_l_ref      => null
67803          );
67804       END IF;
67805    END IF;
67806 END IF;
67807 
67808    ELSE
67809       --
67810       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
67811       --
67812       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67813          trace
67814             (p_msg      => 'Trancaction revesal option is Y'
67815             ,p_level    => C_LEVEL_STATEMENT
67816             ,p_module   => l_log_module);
67817       END IF;
67818    END IF;
67819 
67820 END LOOP;
67821 l_result := XLA_AE_LINES_PKG.InsertLines ;
67822 end loop;
67823 close line_cur;
67824 
67825 
67826 --
67827 -- insert headers into xla_ae_headers_gt table
67828 --
67829 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
67830 
67831 -- insert into errors table here.
67832 
67833 END LOOP;
67834 
67835 --
67836 -- 4865292
67837 --
67838 -- Compare g_hdr_extract_count with event count in
67839 -- CreateHeadersAndLines.
67840 --
67841 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
67842 
67843 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67844    trace (p_msg     => '# rows extracted from header extract objects '
67845                     || ' (running total): '
67846                     || g_hdr_extract_count
67847          ,p_level   => C_LEVEL_STATEMENT
67848          ,p_module  => l_log_module);
67849 END IF;
67850 
67851 CLOSE header_cur;
67852 --
67853 
67854 --
67855 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67856    trace
67857       (p_msg      => 'END of EventClass_143'
67858       ,p_level    => C_LEVEL_PROCEDURE
67859       ,p_module   => l_log_module);
67860 END IF;
67861 --
67862 RETURN l_result;
67863 EXCEPTION
67864 WHEN xla_exceptions_pkg.application_exception THEN
67865    
67866 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
67867 
67868    
67869 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
67870 
67871    RAISE;
67872 
67873 WHEN NO_DATA_FOUND THEN
67874 
67875 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
67876 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
67877 
67878 FOR header_record IN header_cur
67879 LOOP
67880     l_array_header_events(header_record.event_id) := header_record.event_id;
67881 END LOOP;
67882 
67883 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
67884 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
67885 
67886 fnd_file.put_line(fnd_file.LOG, '                    ');
67887 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
67888 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
67889 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
67890 
67891 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
67892 LOOP
67893 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
67894 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
67895         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
67896 	END IF;
67897 END LOOP;
67898 
67899 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
67900 fnd_file.put_line(fnd_file.LOG, '                    ');
67901 
67902 
67903 xla_exceptions_pkg.raise_message
67904       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_143');
67905 
67906 
67907 WHEN OTHERS THEN
67908    xla_exceptions_pkg.raise_message
67909       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_143');
67910 END EventClass_143;
67911 --
67912 
67913 ---------------------------------------
67914 --
67915 -- PRIVATE PROCEDURE
67916 --         insert_sources_144
67917 --
67918 ----------------------------------------
67919 --
67920 PROCEDURE insert_sources_144(
67921                                 p_target_ledger_id       IN NUMBER
67922                               , p_language               IN VARCHAR2
67923                               , p_sla_ledger_id          IN NUMBER
67924                               , p_pad_start_date         IN DATE
67928 
67925                               , p_pad_end_date           IN DATE
67926                          )
67927 IS
67929 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BILL_ALL';
67930 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'BILL';
67931 p_apps_owner                   VARCHAR2(30);
67932 l_log_module                   VARCHAR2(240);
67933 BEGIN
67934 IF g_log_enabled THEN
67935       l_log_module := C_DEFAULT_MODULE||'.insert_sources_144';
67936 END IF;
67937 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
67938 
67939       trace
67940          (p_msg      => 'BEGIN of insert_sources_144'
67941          ,p_level    => C_LEVEL_PROCEDURE
67942          ,p_module   => l_log_module);
67943 
67944 END IF;
67945 
67946 -- select APPS owner
67947 SELECT oracle_username
67948   INTO p_apps_owner
67949   FROM fnd_oracle_userid
67950  WHERE read_only_flag = 'U'
67951 ;
67952 
67953 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
67954       trace
67955          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
67956                         ' - p_language = '||p_language||
67957                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
67958                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
67959                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
67960                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
67961          ,p_level    => C_LEVEL_STATEMENT
67962          ,p_module   => l_log_module);
67963 END IF;
67964 
67965 
67966 --
67967 INSERT INTO xla_diag_sources --hdr2
67968 (
67969         event_id
67970       , ledger_id
67971       , sla_ledger_id
67972       , description_language
67973       , object_name
67974       , object_type_code
67975       , line_number
67976       , source_application_id
67977       , source_type_code
67978       , source_code
67979       , source_value
67980       , source_meaning
67981       , created_by
67982       , creation_date
67983       , last_update_date
67984       , last_updated_by
67985       , last_update_login
67986       , program_update_date
67987       , program_application_id
67988       , program_id
67989       , request_id
67990 )
67991 SELECT
67992         event_id
67993       , p_target_ledger_id
67994       , p_sla_ledger_id
67995       , p_language
67996       , object_name
67997       , object_type_code
67998       , line_number
67999       , source_application_id
68000       , source_type_code
68001       , source_code
68002       , SUBSTR(source_value ,1,1996)
68003       , SUBSTR(source_meaning ,1,200)
68004       , xla_environment_pkg.g_Usr_Id
68005       , TRUNC(SYSDATE)
68006       , TRUNC(SYSDATE)
68007       , xla_environment_pkg.g_Usr_Id
68008       , xla_environment_pkg.g_Login_Id
68009       , TRUNC(SYSDATE)
68010       , xla_environment_pkg.g_Prog_Appl_Id
68011       , xla_environment_pkg.g_Prog_Id
68012       , xla_environment_pkg.g_Req_Id
68013   FROM (
68014        SELECT xet.event_id                  event_id
68015             , 0                          line_number
68016             , CASE r
68017                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
68018                 WHEN 2 THEN 'AR_TRANSACTIONS_S_V' 
68019                 WHEN 3 THEN 'AR_SYSTEM_PARAM_H_V' 
68020                 WHEN 4 THEN 'AR_SYSTEM_PARAM_H_V' 
68021                 WHEN 5 THEN 'AR_TRANSACTIONS_S_V' 
68022                 WHEN 6 THEN 'AR_DRAWEE_CUSTOMERS_H_V' 
68023                 WHEN 7 THEN 'AR_DRAWEE_SITE_USES_H_V' 
68024                 
68025                ELSE null
68026               END                           object_name
68027             , CASE r
68028                 WHEN 1 THEN 'HEADER' 
68029                 WHEN 2 THEN 'HEADER' 
68030                 WHEN 3 THEN 'HEADER' 
68031                 WHEN 4 THEN 'HEADER' 
68032                 WHEN 5 THEN 'HEADER' 
68033                 WHEN 6 THEN 'HEADER' 
68034                 WHEN 7 THEN 'HEADER' 
68035                 
68036                 ELSE null
68037               END                           object_type_code
68038             , CASE r
68039                 WHEN 1 THEN '222' 
68040                 WHEN 2 THEN '222' 
68041                 WHEN 3 THEN '222' 
68042                 WHEN 4 THEN '222' 
68043                 WHEN 5 THEN '222' 
68044                 WHEN 6 THEN '222' 
68045                 WHEN 7 THEN '222' 
68046                 
68047                 ELSE null
68048               END                           source_application_id
68049             , 'S'             source_type_code
68050             , CASE r
68051                 WHEN 1 THEN 'TRX_TYPE_NAME' 
68052                 WHEN 2 THEN 'TRX_NUMBER' 
68053                 WHEN 3 THEN 'CODE_COMBINATION_ID_GAIN' 
68054                 WHEN 4 THEN 'CODE_COMBINATION_ID_LOSS' 
68055                 WHEN 5 THEN 'XLA_PARTY_TYPE' 
68056                 WHEN 6 THEN 'DRAW_CUST_ACCOUNT_ID' 
68057                 WHEN 7 THEN 'DRAW_SITE_SITE_USE_ID' 
68058                 
68059                 ELSE null
68060               END                           source_code
68061             , CASE r
68062                 WHEN 1 THEN TO_CHAR(h6.TRX_TYPE_NAME)
68063                 WHEN 2 THEN TO_CHAR(h6.TRX_NUMBER)
68064                 WHEN 3 THEN TO_CHAR(h5.CODE_COMBINATION_ID_GAIN)
68068                 WHEN 7 THEN TO_CHAR(h4.DRAW_SITE_SITE_USE_ID)
68065                 WHEN 4 THEN TO_CHAR(h5.CODE_COMBINATION_ID_LOSS)
68066                 WHEN 5 THEN TO_CHAR(h6.XLA_PARTY_TYPE)
68067                 WHEN 6 THEN TO_CHAR(h3.DRAW_CUST_ACCOUNT_ID)
68069                 
68070                 ELSE null
68071               END                           source_value
68072             , null              source_meaning
68073          FROM xla_events_gt     xet  
68074       , AR_DRAWEE_CUSTOMERS_H_V  h3
68075       , AR_DRAWEE_SITE_USES_H_V  h4
68076       , AR_SYSTEM_PARAM_H_V  h5
68077       , AR_TRANSACTIONS_S_V  h6
68078              ,(select rownum r from all_objects where rownum <= 7 and owner = p_apps_owner)
68079          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
68080            AND xet.event_class_code = C_EVENT_CLASS_CODE
68081               AND h3.event_id = xet.event_id
68082   AND h4.event_id  = h3.event_id
68083   AND h5.event_id (+) = h3.event_id
68084   AND h6.event_id (+) = h3.event_id
68085 
68086 )
68087 ;
68088 --
68089 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68090 
68091       trace
68092          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
68093          ,p_level    => C_LEVEL_STATEMENT
68094          ,p_module   => l_log_module);
68095 
68096 END IF;
68097 --
68098 
68099 
68100 
68101 --
68102 INSERT INTO xla_diag_sources  --line2
68103 (
68104         event_id
68105       , ledger_id
68106       , sla_ledger_id
68107       , description_language
68108       , object_name
68109       , object_type_code
68110       , line_number
68111       , source_application_id
68112       , source_type_code
68113       , source_code
68114       , source_value
68115       , source_meaning
68116       , created_by
68117       , creation_date
68118       , last_update_date
68119       , last_updated_by
68120       , last_update_login
68121       , program_update_date
68122       , program_application_id
68123       , program_id
68124       , request_id
68125 )
68126 SELECT  event_id
68127       , p_target_ledger_id
68128       , p_sla_ledger_id
68129       , p_language
68130       , object_name
68131       , object_type_code
68132       , line_number
68133       , source_application_id
68134       , source_type_code
68135       , source_code
68136       , SUBSTR(source_value,1,1996)
68137       , SUBSTR(source_meaning ,1,200)
68138       , xla_environment_pkg.g_Usr_Id
68139       , TRUNC(SYSDATE)
68140       , TRUNC(SYSDATE)
68141       , xla_environment_pkg.g_Usr_Id
68142       , xla_environment_pkg.g_Login_Id
68143       , TRUNC(SYSDATE)
68144       , xla_environment_pkg.g_Prog_Appl_Id
68145       , xla_environment_pkg.g_Prog_Id
68146       , xla_environment_pkg.g_Req_Id
68147   FROM (
68148        SELECT xet.event_id                  event_id
68149             , l2.line_number                 line_number
68150             , CASE r
68151                WHEN 1 THEN 'AR_DISTRIBUTIONS_L_V' 
68152                 WHEN 2 THEN 'AR_DISTRIBUTIONS_L_V' 
68153                 WHEN 3 THEN 'AR_DISTRIBUTIONS_L_V' 
68154                 WHEN 4 THEN 'AR_DISTRIBUTIONS_L_V' 
68155                 WHEN 5 THEN 'AR_DISTRIBUTIONS_L_V' 
68156                 WHEN 6 THEN 'AR_DISTRIBUTIONS_L_V' 
68157                 WHEN 7 THEN 'AR_DISTRIBUTIONS_BASE_V' 
68158                 WHEN 8 THEN 'AR_DISTRIBUTIONS_BASE_V' 
68159                 WHEN 9 THEN 'AR_DISTRIBUTIONS_BASE_V' 
68160                 WHEN 10 THEN 'AR_DISTRIBUTIONS_BASE_V' 
68161                 
68162                ELSE null
68163               END                           object_name
68164             , CASE r
68165                 WHEN 1 THEN 'LINE' 
68166                 WHEN 2 THEN 'LINE' 
68167                 WHEN 3 THEN 'LINE' 
68168                 WHEN 4 THEN 'LINE' 
68169                 WHEN 5 THEN 'LINE' 
68170                 WHEN 6 THEN 'LINE' 
68171                 WHEN 7 THEN 'LINE' 
68172                 WHEN 8 THEN 'LINE' 
68173                 WHEN 9 THEN 'LINE' 
68174                 WHEN 10 THEN 'LINE' 
68175                 
68176                 ELSE null
68177               END                           object_type_code
68178             , CASE r
68179                 WHEN 1 THEN '222' 
68180                 WHEN 2 THEN '222' 
68181                 WHEN 3 THEN '222' 
68182                 WHEN 4 THEN '222' 
68183                 WHEN 5 THEN '222' 
68184                 WHEN 6 THEN '222' 
68185                 WHEN 7 THEN '222' 
68186                 WHEN 8 THEN '222' 
68187                 WHEN 9 THEN '222' 
68188                 WHEN 10 THEN '222' 
68189                 
68190                 ELSE null
68191               END                           source_application_id
68192             , 'S'             source_type_code
68193             , CASE r
68194                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
68195                 WHEN 2 THEN 'DIST_SOURCE_TYPE' 
68196                 WHEN 3 THEN 'DIST_LINE_ID' 
68197                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
68198                 WHEN 5 THEN 'DIST_ENT_AMT' 
68199                 WHEN 6 THEN 'DIST_CURRENCY_CODE' 
68200                 WHEN 7 THEN 'DIST_CUR_CONVERSION_DATE' 
68201                 WHEN 8 THEN 'DIST_CUR_CONVERSION_RATE' 
68205                 ELSE null
68202                 WHEN 9 THEN 'DIST_CUR_CONVERSION_TYPE' 
68203                 WHEN 10 THEN 'DIST_ACCTD_AMT' 
68204                 
68206               END                           source_code
68207             , CASE r
68208                 WHEN 1 THEN TO_CHAR(l2.DIST_CODE_COMBINATION_ID)
68209                 WHEN 2 THEN TO_CHAR(l2.DIST_SOURCE_TYPE)
68210                 WHEN 3 THEN TO_CHAR(l2.DIST_LINE_ID)
68211                 WHEN 4 THEN TO_CHAR(l2.DISTRIBUTION_TYPE)
68212                 WHEN 5 THEN TO_CHAR(l2.DIST_ENT_AMT)
68213                 WHEN 6 THEN TO_CHAR(l2.DIST_CURRENCY_CODE)
68214                 WHEN 7 THEN TO_CHAR(l1.DIST_CUR_CONVERSION_DATE)
68215                 WHEN 8 THEN TO_CHAR(l1.DIST_CUR_CONVERSION_RATE)
68216                 WHEN 9 THEN TO_CHAR(l1.DIST_CUR_CONVERSION_TYPE)
68217                 WHEN 10 THEN TO_CHAR(l1.DIST_ACCTD_AMT)
68218                 
68219                 ELSE null
68220               END                           source_value
68221             , null              source_meaning
68222          FROM  xla_events_gt     xet  
68223         , AR_DISTRIBUTIONS_BASE_V  l1
68224         , AR_DISTRIBUTIONS_L_V  l2
68225             , (select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
68226         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
68227           AND xet.event_class_code = C_EVENT_CLASS_CODE
68228             AND l1.event_id          = xet.event_id
68229   AND l2.event_id    = l1.event_id
68230   AND l2.line_number = l1.line_number
68231 
68232 )
68233 ;
68234 --
68235 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68236 
68237       trace
68238          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
68239          ,p_level    => C_LEVEL_STATEMENT
68240          ,p_module   => l_log_module);
68241 
68242 END IF;
68243 
68244 
68245 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68246       trace
68247          (p_msg      => 'END of insert_sources_144'
68248          ,p_level    => C_LEVEL_PROCEDURE
68249          ,p_module   => l_log_module);
68250 END IF;
68251 EXCEPTION
68252   WHEN xla_exceptions_pkg.application_exception THEN
68253       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
68254             trace
68255                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
68256                ,p_level    => C_LEVEL_EXCEPTION
68257                ,p_module   => l_log_module);
68258       END IF;
68259       RAISE;
68260   WHEN OTHERS THEN
68261       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
68262             trace
68263                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
68264                ,p_level    => C_LEVEL_EXCEPTION
68265                ,p_module   => l_log_module);
68266        END IF;
68267        xla_exceptions_pkg.raise_message
68268            (p_location => 'XLA_00222_AAD_S_000002_PKG.insert_sources_144');
68269 END insert_sources_144;
68270 --
68271 
68272 ---------------------------------------
68273 --
68274 -- PRIVATE FUNCTION
68275 --         EventClass_144
68276 --
68277 ----------------------------------------
68278 --
68279 FUNCTION EventClass_144
68280        (p_application_id         IN NUMBER
68281        ,p_base_ledger_id         IN NUMBER
68282        ,p_target_ledger_id       IN NUMBER
68283        ,p_language               IN VARCHAR2
68284        ,p_currency_code          IN VARCHAR2
68285        ,p_sla_ledger_id          IN NUMBER
68286        ,p_pad_start_date         IN DATE
68287        ,p_pad_end_date           IN DATE
68288        ,p_primary_ledger_id      IN NUMBER)
68289 RETURN BOOLEAN IS
68290 --
68291 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'BILL_ALL';
68292 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'BILL';
68293 
68294 l_calculate_acctd_flag   VARCHAR2(1) :='N';
68295 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
68296 --
68297 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68298 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68299 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
68300 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68301 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68302 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
68303 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
68304 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68305 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68306 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68307 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68308 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68309 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68310 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
68311 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68312 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68313 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68314 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
68315 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68319 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
68316 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68317 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68318 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
68320 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
68321 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
68322 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
68323 
68324 l_event_id                             NUMBER;
68325 l_previous_event_id                    NUMBER;
68326 l_first_event_id                       NUMBER;
68327 l_last_event_id                        NUMBER;
68328 
68329 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
68330 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
68331 --
68332 --
68333 l_result                    BOOLEAN := TRUE;
68334 l_rows                      NUMBER  := 1000;
68335 l_event_type_name           VARCHAR2(80) := 'All';
68336 l_event_class_name          VARCHAR2(80) := 'Bills Receivable';
68337 l_description               VARCHAR2(4000);
68338 l_transaction_reversal      NUMBER;
68339 l_ae_header_id              NUMBER;
68340 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
68341 l_log_module                VARCHAR2(240);
68342 --
68343 l_acct_reversal_source      VARCHAR2(30);
68344 l_trx_reversal_source       VARCHAR2(30);
68345 
68346 l_continue_with_lines       BOOLEAN := TRUE;
68347 --
68348 l_acc_rev_gl_date_source    DATE;                      -- 4262811
68349 --
68350 type t_array_event_id is table of number index by binary_integer;
68351 
68352 l_rec_array_event                    t_rec_array_event;
68353 l_null_rec_array_event               t_rec_array_event;
68354 l_array_ae_header_id                 xla_number_array_type;
68355 l_actual_flag                        VARCHAR2(1) := NULL;
68356 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
68357 l_balance_type_code                  VARCHAR2(1) :=NULL;
68358 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
68359 
68360 --
68361 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
68362 --
68363 
68364 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_TYPE_NAME%TYPE INDEX BY BINARY_INTEGER;
68365 TYPE t_array_source_4 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_NUMBER%TYPE INDEX BY BINARY_INTEGER;
68366 TYPE t_array_source_34 IS TABLE OF AR_SYSTEM_PARAM_H_V.CODE_COMBINATION_ID_GAIN%TYPE INDEX BY BINARY_INTEGER;
68367 TYPE t_array_source_35 IS TABLE OF AR_SYSTEM_PARAM_H_V.CODE_COMBINATION_ID_LOSS%TYPE INDEX BY BINARY_INTEGER;
68368 TYPE t_array_source_51 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
68369 TYPE t_array_source_53 IS TABLE OF AR_DRAWEE_CUSTOMERS_H_V.DRAW_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
68370 TYPE t_array_source_54 IS TABLE OF AR_DRAWEE_SITE_USES_H_V.DRAW_SITE_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
68371 
68372 TYPE t_array_source_32 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
68373 TYPE t_array_source_39 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_SOURCE_TYPE%TYPE INDEX BY BINARY_INTEGER;
68374 TYPE t_array_source_41 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
68375 TYPE t_array_source_42 IS TABLE OF AR_DISTRIBUTIONS_L_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
68376 TYPE t_array_source_43 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_ENT_AMT%TYPE INDEX BY BINARY_INTEGER;
68377 TYPE t_array_source_44 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
68378 TYPE t_array_source_45 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
68379 TYPE t_array_source_46 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
68380 TYPE t_array_source_47 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
68381 TYPE t_array_source_52 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
68382 
68383 l_array_source_3              t_array_source_3;
68384 l_array_source_4              t_array_source_4;
68385 l_array_source_34              t_array_source_34;
68386 l_array_source_35              t_array_source_35;
68387 l_array_source_51              t_array_source_51;
68388 l_array_source_53              t_array_source_53;
68389 l_array_source_54              t_array_source_54;
68390 
68391 l_array_source_32      t_array_source_32;
68392 l_array_source_39      t_array_source_39;
68393 l_array_source_41      t_array_source_41;
68394 l_array_source_42      t_array_source_42;
68395 l_array_source_43      t_array_source_43;
68396 l_array_source_44      t_array_source_44;
68397 l_array_source_45      t_array_source_45;
68398 l_array_source_46      t_array_source_46;
68399 l_array_source_47      t_array_source_47;
68400 l_array_source_52      t_array_source_52;
68401 
68402 --
68403 CURSOR header_cur
68404 IS
68405 SELECT /*+ leading(xet) cardinality(xet,1) */
68406 -- Event Class Code: BILL
68407     xet.entity_id
68408    ,xet.legal_entity_id
68409    ,xet.entity_code
68410    ,xet.transaction_number
68411    ,xet.event_id
68412    ,xet.event_class_code
68413    ,xet.event_type_code
68414    ,xet.event_number
68415    ,xet.event_date
68416    ,xet.transaction_date
68417    ,xet.reference_num_1
68418    ,xet.reference_num_2
68419    ,xet.reference_num_3
68420    ,xet.reference_num_4
68421    ,xet.reference_char_1
68422    ,xet.reference_char_2
68426    ,xet.reference_date_2
68423    ,xet.reference_char_3
68424    ,xet.reference_char_4
68425    ,xet.reference_date_1
68427    ,xet.reference_date_3
68428    ,xet.reference_date_4
68429    ,xet.event_created_by
68430    ,xet.budgetary_control_flag 
68431   , h6.TRX_TYPE_NAME    source_3
68432   , h6.TRX_NUMBER    source_4
68433   , h5.CODE_COMBINATION_ID_GAIN    source_34
68434   , h5.CODE_COMBINATION_ID_LOSS    source_35
68435   , h6.XLA_PARTY_TYPE    source_51
68436   , h3.DRAW_CUST_ACCOUNT_ID    source_53
68437   , h4.DRAW_SITE_SITE_USE_ID    source_54
68438   FROM xla_events_gt     xet 
68439   , AR_DRAWEE_CUSTOMERS_H_V  h3
68440   , AR_DRAWEE_SITE_USES_H_V  h4
68441   , AR_SYSTEM_PARAM_H_V  h5
68442   , AR_TRANSACTIONS_S_V  h6
68443  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
68444    and xet.event_class_code = C_EVENT_CLASS_CODE
68445    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
68446   AND h4.event_id  = h3.event_id
68447   AND h5.event_id (+) = h3.event_id
68448   AND h6.event_id (+) = h3.event_id
68449 
68450  ORDER BY event_id
68451 ;
68452 
68453 
68454 --
68455 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
68456 IS
68457 SELECT  /*+ leading(xet) cardinality(xet,1) */
68458 -- Event Class Code: BILL
68459     xet.entity_id
68460    ,xet.legal_entity_id
68461    ,xet.entity_code
68462    ,xet.transaction_number
68463    ,xet.event_id
68464    ,xet.event_class_code
68465    ,xet.event_type_code
68466    ,xet.event_number
68467    ,xet.event_date
68468    ,xet.transaction_date
68469    ,xet.reference_num_1
68470    ,xet.reference_num_2
68471    ,xet.reference_num_3
68472    ,xet.reference_num_4
68473    ,xet.reference_char_1
68474    ,xet.reference_char_2
68475    ,xet.reference_char_3
68476    ,xet.reference_char_4
68477    ,xet.reference_date_1
68478    ,xet.reference_date_2
68479    ,xet.reference_date_3
68480    ,xet.reference_date_4
68481    ,xet.event_created_by
68482    ,xet.budgetary_control_flag
68483  , l1.LINE_NUMBER  
68484   , l2.DIST_CODE_COMBINATION_ID    source_32
68485   , l2.DIST_SOURCE_TYPE    source_39
68486   , l2.DIST_LINE_ID    source_41
68487   , l2.DISTRIBUTION_TYPE    source_42
68488   , l2.DIST_ENT_AMT    source_43
68489   , l2.DIST_CURRENCY_CODE    source_44
68490   , l1.DIST_CUR_CONVERSION_DATE    source_45
68491   , l1.DIST_CUR_CONVERSION_RATE    source_46
68492   , l1.DIST_CUR_CONVERSION_TYPE    source_47
68493   , l1.DIST_ACCTD_AMT    source_52
68494   FROM xla_events_gt     xet 
68495   , AR_DISTRIBUTIONS_BASE_V  l1
68496   , AR_DISTRIBUTIONS_L_V  l2
68497  WHERE xet.event_id between x_first_event_id and x_last_event_id
68498    and xet.event_date between p_pad_start_date and p_pad_end_date
68499    and xet.event_class_code = C_EVENT_CLASS_CODE
68500    and xet.event_status_code <> 'N'   AND l1.event_id      = xet.event_id
68501   AND l2.event_id    = l1.event_id
68502   AND l2.line_number = l1.line_number
68503 ;
68504 
68505 --
68506 BEGIN
68507 IF g_log_enabled THEN
68508    l_log_module := C_DEFAULT_MODULE||'.EventClass_144';
68509 END IF;
68510 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
68511    trace
68512       (p_msg      => 'BEGIN of EventClass_144'
68513       ,p_level    => C_LEVEL_PROCEDURE
68514       ,p_module   => l_log_module);
68515 END IF;
68516 
68517 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68518    trace
68519       (p_msg      => 'p_application_id = '||p_application_id||
68520                      ' - p_base_ledger_id = '||p_base_ledger_id||
68521                      ' - p_target_ledger_id  = '||p_target_ledger_id||
68522                      ' - p_language = '||p_language||
68523                      ' - p_currency_code = '||p_currency_code||
68524                      ' - p_sla_ledger_id = '||p_sla_ledger_id
68525       ,p_level    => C_LEVEL_STATEMENT
68526       ,p_module   => l_log_module);
68527 END IF;
68528 --
68529 -- initialze arrays
68530 --
68531 g_array_event.DELETE;
68532 l_rec_array_event := l_null_rec_array_event;
68533 --
68534 --------------------------------------
68535 -- 4262811 Initialze MPA Line Number
68536 --------------------------------------
68537 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
68538 
68539 --
68540 
68541 --
68542 OPEN header_cur;
68543 --
68544 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68545    trace
68546    (p_msg      => 'SQL - FETCH header_cur'
68547    ,p_level    => C_LEVEL_STATEMENT
68548    ,p_module   => l_log_module);
68549 END IF;
68550 --
68551 LOOP
68552 FETCH header_cur BULK COLLECT INTO
68553         l_array_entity_id
68554       , l_array_legal_entity_id
68555       , l_array_entity_code
68556       , l_array_transaction_num
68557       , l_array_event_id
68558       , l_array_class_code
68559       , l_array_event_type
68560       , l_array_event_number
68561       , l_array_event_date
68562       , l_array_transaction_date
68563       , l_array_reference_num_1
68564       , l_array_reference_num_2
68565       , l_array_reference_num_3
68566       , l_array_reference_num_4
68567       , l_array_reference_char_1
68568       , l_array_reference_char_2
68569       , l_array_reference_char_3
68570       , l_array_reference_char_4
68571       , l_array_reference_date_1
68572       , l_array_reference_date_2
68576       , l_array_budgetary_control_flag 
68573       , l_array_reference_date_3
68574       , l_array_reference_date_4
68575       , l_array_event_created_by
68577       , l_array_source_3
68578       , l_array_source_4
68579       , l_array_source_34
68580       , l_array_source_35
68581       , l_array_source_51
68582       , l_array_source_53
68583       , l_array_source_54
68584       LIMIT l_rows;
68585 --
68586 IF (C_LEVEL_EVENT >= g_log_level) THEN
68587    trace
68588    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
68589    ,p_level    => C_LEVEL_EVENT
68590    ,p_module   => l_log_module);
68591 END IF;
68592 --
68593 EXIT WHEN l_array_entity_id.COUNT = 0;
68594 
68595 -- initialize arrays
68596 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
68597 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
68598 
68599 --
68600 -- Bug 4458708
68601 --
68602 XLA_AE_LINES_PKG.g_LineNumber := 0;
68603 
68604 
68605 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
68606 g_last_hdr_idx := l_array_event_id.LAST;
68607 --
68608 -- loop for the headers. Each iteration is for each header extract row
68609 -- fetched in header cursor
68610 --
68611 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
68612 
68613 --
68614 -- set event info as cache for other routines to refer event attributes
68615 --
68616 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
68617    (p_application_id           => p_application_id
68618    ,p_primary_ledger_id        => p_primary_ledger_id
68619    ,p_base_ledger_id           => p_base_ledger_id
68620    ,p_target_ledger_id         => p_target_ledger_id
68621    ,p_entity_id                => l_array_entity_id(hdr_idx)
68622    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
68623    ,p_entity_code              => l_array_entity_code(hdr_idx)
68624    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
68625    ,p_event_id                 => l_array_event_id(hdr_idx)
68626    ,p_event_class_code         => l_array_class_code(hdr_idx)
68627    ,p_event_type_code          => l_array_event_type(hdr_idx)
68628    ,p_event_number             => l_array_event_number(hdr_idx)
68629    ,p_event_date               => l_array_event_date(hdr_idx)
68630    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
68631    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
68632    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
68633    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
68634    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
68635    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
68636    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
68637    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
68638    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
68639    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
68640    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
68641    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
68642    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
68643    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
68644    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
68645 
68646 --
68647 -- set the status of entry to C_VALID (0)
68648 --
68649 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
68650 
68651 --
68652 -- initialize a row for ae header
68653 --
68654 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
68655 
68656 l_event_id := l_array_event_id(hdr_idx);
68657 
68658 --
68659 -- storing the hdr_idx for event. May be used by line cursor.
68660 --
68661 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
68662 
68663 --
68664 -- store sources from header extract. This can be improved to
68665 -- store only those sources from header extract that may be used in lines
68666 --
68667 
68668 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
68669 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
68670 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
68671 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
68672 g_array_event(l_event_id).array_value_char('source_51') := l_array_source_51(hdr_idx);
68673 g_array_event(l_event_id).array_value_num('source_53') := l_array_source_53(hdr_idx);
68674 g_array_event(l_event_id).array_value_num('source_54') := l_array_source_54(hdr_idx);
68675 
68676 --
68677 -- initilaize the status of ae headers for diffrent balance types
68678 -- the status is initialised to C_NOT_CREATED (2)
68679 --
68683 
68680 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
68681 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
68682 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
68684 --
68685 -- call api to validate and store accounting attributes for header
68686 --
68687 
68688 ------------------------------------------------------------
68689 -- Accrual Reversal : to get date for Standard Source (NONE)
68690 ------------------------------------------------------------
68691 l_acc_rev_gl_date_source := NULL;
68692 
68693      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
68694       l_rec_acct_attrs.array_date_value(1) := 
68695 xla_ae_sources_pkg.GetSystemSourceDate(
68696    p_source_code           => 'XLA_EVENT_DATE'
68697  , p_source_type_code      => 'Y'
68698  , p_source_application_id =>  602
68699 );
68700 
68701 
68702 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
68703 
68704 XLA_AE_HEADER_PKG.SetJeCategoryName;
68705 
68706 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
68707 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
68708 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
68709 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
68710 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
68711 
68712 
68713 --
68714 xla_ae_header_pkg.SetHdrDescription(
68715    p_description => Description_2 (
68716    p_application_id => p_application_id 
68717  , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
68718  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
68719    )
68720 );
68721 --
68722 
68723 -- No header level analytical criteria
68724 
68725 --
68726 --accounting attribute enhancement, bug 3612931
68727 --
68728 l_trx_reversal_source := SUBSTR(NULL, 1,30);
68729 
68730 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
68731    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
68732 
68733    xla_accounting_err_pkg.build_message
68734       (p_appli_s_name            => 'XLA'
68735       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
68736       ,p_token_1                 => 'ACCT_ATTR_NAME'
68737       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
68738       ,p_token_2                 => 'PRODUCT_NAME'
68739       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
68740       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
68741       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
68742       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
68743 
68744 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
68745    --
68746    -- following sets the accounting attributes needed to reverse
68747    -- accounting for a distributeion
68748    --
68749    xla_ae_lines_pkg.SetTrxReversalAttrs
68750       (p_event_id              => l_event_id
68751       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
68752       ,p_trx_reversal_source   => l_trx_reversal_source);
68753 
68754 END IF;
68755 
68756 
68757 ----------------------------------------------------------------
68758 -- 4262811 -  update the header statuses to invalid in need be
68759 ----------------------------------------------------------------
68760 --
68761 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
68762 
68763 
68764   -----------------------------------------------
68765   -- No accrual reversal for the event class/type
68766   -----------------------------------------------
68767 ----------------------------------------------------------------
68768 
68769 --
68770 -- this ends the header loop iteration for one bulk fetch
68771 --
68772 END LOOP;
68773 
68774 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
68775 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
68776 
68777 --
68778 -- insert dummy rows into lines gt table that were created due to
68779 -- transaction reversals
68780 --
68781 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
68782    l_result := XLA_AE_LINES_PKG.InsertLines;
68783 END IF;
68784 
68785 --
68786 -- reset the temp_line_num for each set of events fetched from header
68787 -- cursor rather than doing it for each new event in line cursor
68788 -- Bug 3939231
68789 --
68790 xla_ae_lines_pkg.g_temp_line_num := 0;
68791 
68792 
68793 
68794 --
68795 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
68796 --
68797 --
68798 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68799 
68800       trace
68801          (p_msg      => 'SQL - FETCH line_cur'
68802          ,p_level    => C_LEVEL_STATEMENT
68803          ,p_module   => l_log_module);
68804 
68805 END IF;
68806 --
68807 --
68808 LOOP
68809   --
68810   FETCH line_cur BULK COLLECT INTO
68814       , l_array_transaction_num
68811         l_array_entity_id
68812       , l_array_legal_entity_id
68813       , l_array_entity_code
68815       , l_array_event_id
68816       , l_array_class_code
68817       , l_array_event_type
68818       , l_array_event_number
68819       , l_array_event_date
68820       , l_array_transaction_date
68821       , l_array_reference_num_1
68822       , l_array_reference_num_2
68823       , l_array_reference_num_3
68824       , l_array_reference_num_4
68825       , l_array_reference_char_1
68826       , l_array_reference_char_2
68827       , l_array_reference_char_3
68828       , l_array_reference_char_4
68829       , l_array_reference_date_1
68830       , l_array_reference_date_2
68831       , l_array_reference_date_3
68832       , l_array_reference_date_4
68833       , l_array_event_created_by
68834       , l_array_budgetary_control_flag
68835       , l_array_extract_line_num 
68836       , l_array_source_32
68837       , l_array_source_39
68838       , l_array_source_41
68839       , l_array_source_42
68840       , l_array_source_43
68841       , l_array_source_44
68842       , l_array_source_45
68843       , l_array_source_46
68844       , l_array_source_47
68845       , l_array_source_52
68846       LIMIT l_rows;
68847 
68848   --
68849   IF (C_LEVEL_EVENT >= g_log_level) THEN
68850             trace
68851                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
68852                ,p_level    => C_LEVEL_EVENT
68853                ,p_module   => l_log_module);
68854   END IF;
68855   --
68856   EXIT WHEN l_array_entity_id.count = 0;
68857 
68858   XLA_AE_LINES_PKG.g_rec_lines := null;
68859 
68860 --
68861 -- Bug 4458708
68862 --
68863 XLA_AE_LINES_PKG.g_LineNumber := 0;
68864 --
68865 --
68866 
68867 FOR Idx IN 1..l_array_event_id.count LOOP
68868    --
68869    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
68870    --
68871    l_event_id := l_array_event_id(idx);  -- 5648433
68872 
68873    --
68874    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
68875    --
68876 
68877    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
68878              (g_array_event(l_event_id).array_value_num('header_index'))
68879          ,'N'
68880          ) <> 'Y'
68881    THEN
68882       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
68883          trace
68884             (p_msg      => 'Trancaction revesal option is not Y '
68885             ,p_level    => C_LEVEL_STATEMENT
68886             ,p_module   => l_log_module);
68887       END IF;
68888 
68889 --
68890 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
68891 --
68892 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
68893 --
68894 -- set event info as cache for other routines to refer event attributes
68895 --
68896 
68897 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
68898    l_previous_event_id := l_event_id;
68899 
68900    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
68901       (p_application_id           => p_application_id
68902       ,p_primary_ledger_id        => p_primary_ledger_id
68903       ,p_base_ledger_id           => p_base_ledger_id
68904       ,p_target_ledger_id         => p_target_ledger_id
68905       ,p_entity_id                => l_array_entity_id(Idx)
68906       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
68907       ,p_entity_code              => l_array_entity_code(Idx)
68908       ,p_transaction_num          => l_array_transaction_num(Idx)
68909       ,p_event_id                 => l_array_event_id(Idx)
68910       ,p_event_class_code         => l_array_class_code(Idx)
68911       ,p_event_type_code          => l_array_event_type(Idx)
68912       ,p_event_number             => l_array_event_number(Idx)
68913       ,p_event_date               => l_array_event_date(Idx)
68914       ,p_transaction_date         => l_array_transaction_date(Idx)
68915       ,p_reference_num_1          => l_array_reference_num_1(Idx)
68916       ,p_reference_num_2          => l_array_reference_num_2(Idx)
68917       ,p_reference_num_3          => l_array_reference_num_3(Idx)
68918       ,p_reference_num_4          => l_array_reference_num_4(Idx)
68919       ,p_reference_char_1         => l_array_reference_char_1(Idx)
68920       ,p_reference_char_2         => l_array_reference_char_2(Idx)
68921       ,p_reference_char_3         => l_array_reference_char_3(Idx)
68922       ,p_reference_char_4         => l_array_reference_char_4(Idx)
68923       ,p_reference_date_1         => l_array_reference_date_1(Idx)
68924       ,p_reference_date_2         => l_array_reference_date_2(Idx)
68925       ,p_reference_date_3         => l_array_reference_date_3(Idx)
68926       ,p_reference_date_4         => l_array_reference_date_4(Idx)
68927       ,p_event_created_by         => l_array_event_created_by(Idx)
68928       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
68929        --
68930 END IF;
68931 
68932 
68933 
68934 --
68935 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
68936 
68937 l_acct_reversal_source := SUBSTR(NULL, 1,30);
68938 
68939 IF l_continue_with_lines THEN
68940    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
68944          (p_appli_s_name            => 'XLA'
68941       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
68942 
68943       xla_accounting_err_pkg.build_message
68945          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
68946          ,p_token_1                 => 'LINE_NUMBER'
68947          ,p_value_1                 => l_array_extract_line_num(Idx)
68948          ,p_token_2                 => 'PRODUCT_NAME'
68949          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
68950          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
68951          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
68952          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
68953 
68954    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
68955       --
68956       -- following sets the accounting attributes needed to reverse
68957       -- accounting for a distributeion
68958       --
68959 
68960       --
68961       -- 5217187
68962       --
68963       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
68964       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
68965                                        g_array_event(l_event_id).array_value_num('header_index'));
68966       --
68967       --
68968 
68969       -- No reversal code generated
68970 
68971       xla_ae_lines_pkg.SetAcctReversalAttrs
68972          (p_event_id             => l_event_id
68973          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
68974          ,p_calculate_acctd_flag => l_calculate_acctd_flag
68975          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
68976    END IF;
68977 
68978    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
68979        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
68980 
68981 --
68982 AcctLineType_45 (
68983  p_application_id  => p_application_id
68984  ,p_event_id     => l_event_id
68985  ,p_calculate_acctd_flag => l_calculate_acctd_flag
68986  ,p_calculate_g_l_flag => l_calculate_g_l_flag
68987  ,p_actual_flag => l_actual_flag
68988  ,p_balance_type_code => l_balance_type_code
68989  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
68990  
68991  , p_source_32 => l_array_source_32(Idx)
68992  , p_source_39 => l_array_source_39(Idx)
68993  , p_source_41 => l_array_source_41(Idx)
68994  , p_source_42 => l_array_source_42(Idx)
68995  , p_source_43 => l_array_source_43(Idx)
68996  , p_source_44 => l_array_source_44(Idx)
68997  , p_source_45 => l_array_source_45(Idx)
68998  , p_source_46 => l_array_source_46(Idx)
68999  , p_source_47 => l_array_source_47(Idx)
69000  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
69001  , p_source_52 => l_array_source_52(Idx)
69002  , p_source_53 => g_array_event(l_event_id).array_value_num('source_53')
69003  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
69004  );
69005 If(l_balance_type_code = 'A') THEN
69006   l_actual_gain_loss_ref := l_gain_or_loss_ref;
69007 END IF;
69008 
69009 --
69010 
69011 
69012 --
69013 AcctLineType_46 (
69014  p_application_id  => p_application_id
69015  ,p_event_id     => l_event_id
69016  ,p_calculate_acctd_flag => l_calculate_acctd_flag
69017  ,p_calculate_g_l_flag => l_calculate_g_l_flag
69018  ,p_actual_flag => l_actual_flag
69019  ,p_balance_type_code => l_balance_type_code
69020  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
69021  
69022  , p_source_32 => l_array_source_32(Idx)
69023  , p_source_39 => l_array_source_39(Idx)
69024  , p_source_41 => l_array_source_41(Idx)
69025  , p_source_42 => l_array_source_42(Idx)
69026  , p_source_43 => l_array_source_43(Idx)
69027  , p_source_44 => l_array_source_44(Idx)
69028  , p_source_45 => l_array_source_45(Idx)
69029  , p_source_46 => l_array_source_46(Idx)
69030  , p_source_47 => l_array_source_47(Idx)
69031  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
69032  , p_source_52 => l_array_source_52(Idx)
69033  , p_source_53 => g_array_event(l_event_id).array_value_num('source_53')
69034  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
69035  );
69036 If(l_balance_type_code = 'A') THEN
69037   l_actual_gain_loss_ref := l_gain_or_loss_ref;
69038 END IF;
69039 
69040 --
69041 
69042 
69043 --
69044 AcctLineType_47 (
69045  p_application_id  => p_application_id
69046  ,p_event_id     => l_event_id
69047  ,p_calculate_acctd_flag => l_calculate_acctd_flag
69048  ,p_calculate_g_l_flag => l_calculate_g_l_flag
69049  ,p_actual_flag => l_actual_flag
69050  ,p_balance_type_code => l_balance_type_code
69051  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
69052  
69053  , p_source_32 => l_array_source_32(Idx)
69054  , p_source_39 => l_array_source_39(Idx)
69055  , p_source_41 => l_array_source_41(Idx)
69056  , p_source_42 => l_array_source_42(Idx)
69057  , p_source_43 => l_array_source_43(Idx)
69058  , p_source_44 => l_array_source_44(Idx)
69059  , p_source_45 => l_array_source_45(Idx)
69060  , p_source_46 => l_array_source_46(Idx)
69061  , p_source_47 => l_array_source_47(Idx)
69062  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
69063  , p_source_52 => l_array_source_52(Idx)
69064  , p_source_53 => g_array_event(l_event_id).array_value_num('source_53')
69065  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
69066  );
69067 If(l_balance_type_code = 'A') THEN
69071 --
69068   l_actual_gain_loss_ref := l_gain_or_loss_ref;
69069 END IF;
69070 
69072 
69073 
69074 --
69075 AcctLineType_48 (
69076  p_application_id  => p_application_id
69077  ,p_event_id     => l_event_id
69078  ,p_calculate_acctd_flag => l_calculate_acctd_flag
69079  ,p_calculate_g_l_flag => l_calculate_g_l_flag
69080  ,p_actual_flag => l_actual_flag
69081  ,p_balance_type_code => l_balance_type_code
69082  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
69083  
69084  , p_source_32 => l_array_source_32(Idx)
69085  , p_source_39 => l_array_source_39(Idx)
69086  , p_source_41 => l_array_source_41(Idx)
69087  , p_source_42 => l_array_source_42(Idx)
69088  , p_source_43 => l_array_source_43(Idx)
69089  , p_source_44 => l_array_source_44(Idx)
69090  , p_source_45 => l_array_source_45(Idx)
69091  , p_source_46 => l_array_source_46(Idx)
69092  , p_source_47 => l_array_source_47(Idx)
69093  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
69094  , p_source_52 => l_array_source_52(Idx)
69095  , p_source_53 => g_array_event(l_event_id).array_value_num('source_53')
69096  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
69097  );
69098 If(l_balance_type_code = 'A') THEN
69099   l_actual_gain_loss_ref := l_gain_or_loss_ref;
69100 END IF;
69101 
69102 --
69103 
69104 
69105 --
69106 AcctLineType_49 (
69107  p_application_id  => p_application_id
69108  ,p_event_id     => l_event_id
69109  ,p_calculate_acctd_flag => l_calculate_acctd_flag
69110  ,p_calculate_g_l_flag => l_calculate_g_l_flag
69111  ,p_actual_flag => l_actual_flag
69112  ,p_balance_type_code => l_balance_type_code
69113  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
69114  
69115  , p_source_32 => l_array_source_32(Idx)
69116  , p_source_39 => l_array_source_39(Idx)
69117  , p_source_41 => l_array_source_41(Idx)
69118  , p_source_42 => l_array_source_42(Idx)
69119  , p_source_43 => l_array_source_43(Idx)
69120  , p_source_44 => l_array_source_44(Idx)
69121  , p_source_45 => l_array_source_45(Idx)
69122  , p_source_46 => l_array_source_46(Idx)
69123  , p_source_47 => l_array_source_47(Idx)
69124  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
69125  , p_source_52 => l_array_source_52(Idx)
69126  , p_source_53 => g_array_event(l_event_id).array_value_num('source_53')
69127  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
69128  );
69129 If(l_balance_type_code = 'A') THEN
69130   l_actual_gain_loss_ref := l_gain_or_loss_ref;
69131 END IF;
69132 
69133 --
69134 
69135 
69136 --
69137 AcctLineType_50 (
69138  p_application_id  => p_application_id
69139  ,p_event_id     => l_event_id
69140  ,p_calculate_acctd_flag => l_calculate_acctd_flag
69141  ,p_calculate_g_l_flag => l_calculate_g_l_flag
69142  ,p_actual_flag => l_actual_flag
69143  ,p_balance_type_code => l_balance_type_code
69144  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
69145  
69146  , p_source_32 => l_array_source_32(Idx)
69147  , p_source_39 => l_array_source_39(Idx)
69148  , p_source_41 => l_array_source_41(Idx)
69149  , p_source_42 => l_array_source_42(Idx)
69150  , p_source_43 => l_array_source_43(Idx)
69151  , p_source_44 => l_array_source_44(Idx)
69152  , p_source_45 => l_array_source_45(Idx)
69153  , p_source_46 => l_array_source_46(Idx)
69154  , p_source_47 => l_array_source_47(Idx)
69155  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
69156  , p_source_52 => l_array_source_52(Idx)
69157  , p_source_53 => g_array_event(l_event_id).array_value_num('source_53')
69158  , p_source_54 => g_array_event(l_event_id).array_value_num('source_54')
69159  );
69160 If(l_balance_type_code = 'A') THEN
69161   l_actual_gain_loss_ref := l_gain_or_loss_ref;
69162 END IF;
69163 
69164 --
69165 
69166       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
69167       -- or secondary ledger that has different currency with primary
69168       -- or alc that is calculated by sla
69169       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
69170             (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'))
69171 
69172 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
69173 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
69174           AND (l_actual_flag = 'A')) THEN
69175         XLA_AE_LINES_PKG.CreateGainOrLossLines(
69176           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
69177          ,p_application_id   => p_application_id
69178          ,p_amb_context_code => 'DEFAULT'
69179          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
69180          ,p_event_class_code => C_EVENT_CLASS_CODE
69181          ,p_event_type_code  => C_EVENT_TYPE_CODE
69182          
69183          ,p_gain_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_34'))
69184          ,p_loss_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_35'))
69185 
69186          ,p_actual_flag      => l_actual_flag
69187          ,p_enc_flag         => null
69188          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
69189          ,p_enc_g_l_ref      => null
69190          );
69191       END IF;
69192    END IF;
69193 END IF;
69194 
69195    ELSE
69196       --
69200          trace
69197       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
69198       --
69199       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69201             (p_msg      => 'Trancaction revesal option is Y'
69202             ,p_level    => C_LEVEL_STATEMENT
69203             ,p_module   => l_log_module);
69204       END IF;
69205    END IF;
69206 
69207 END LOOP;
69208 l_result := XLA_AE_LINES_PKG.InsertLines ;
69209 end loop;
69210 close line_cur;
69211 
69212 
69213 --
69214 -- insert headers into xla_ae_headers_gt table
69215 --
69216 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
69217 
69218 -- insert into errors table here.
69219 
69220 END LOOP;
69221 
69222 --
69223 -- 4865292
69224 --
69225 -- Compare g_hdr_extract_count with event count in
69226 -- CreateHeadersAndLines.
69227 --
69228 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
69229 
69230 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69231    trace (p_msg     => '# rows extracted from header extract objects '
69232                     || ' (running total): '
69233                     || g_hdr_extract_count
69234          ,p_level   => C_LEVEL_STATEMENT
69235          ,p_module  => l_log_module);
69236 END IF;
69237 
69238 CLOSE header_cur;
69239 --
69240 
69241 --
69242 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69243    trace
69244       (p_msg      => 'END of EventClass_144'
69245       ,p_level    => C_LEVEL_PROCEDURE
69246       ,p_module   => l_log_module);
69247 END IF;
69248 --
69249 RETURN l_result;
69250 EXCEPTION
69251 WHEN xla_exceptions_pkg.application_exception THEN
69252    
69253 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
69254 
69255    
69256 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
69257 
69258    RAISE;
69259 
69260 WHEN NO_DATA_FOUND THEN
69261 
69262 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
69263 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
69264 
69265 FOR header_record IN header_cur
69266 LOOP
69267     l_array_header_events(header_record.event_id) := header_record.event_id;
69268 END LOOP;
69269 
69270 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
69271 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
69272 
69273 fnd_file.put_line(fnd_file.LOG, '                    ');
69274 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
69275 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
69276 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
69277 
69278 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
69279 LOOP
69280 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
69281 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
69282         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
69283 	END IF;
69284 END LOOP;
69285 
69286 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
69287 fnd_file.put_line(fnd_file.LOG, '                    ');
69288 
69289 
69290 xla_exceptions_pkg.raise_message
69291       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_144');
69292 
69293 
69294 WHEN OTHERS THEN
69295    xla_exceptions_pkg.raise_message
69296       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_144');
69297 END EventClass_144;
69298 --
69299 
69300 ---------------------------------------
69301 --
69302 -- PRIVATE PROCEDURE
69303 --         insert_sources_145
69304 --
69305 ----------------------------------------
69306 --
69307 PROCEDURE insert_sources_145(
69308                                 p_target_ledger_id       IN NUMBER
69309                               , p_language               IN VARCHAR2
69310                               , p_sla_ledger_id          IN NUMBER
69311                               , p_pad_start_date         IN DATE
69312                               , p_pad_end_date           IN DATE
69313                          )
69314 IS
69315 
69316 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CHARGEBACK_ALL';
69317 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'CHARGEBACK';
69318 p_apps_owner                   VARCHAR2(30);
69319 l_log_module                   VARCHAR2(240);
69320 BEGIN
69321 IF g_log_enabled THEN
69322       l_log_module := C_DEFAULT_MODULE||'.insert_sources_145';
69323 END IF;
69324 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69325 
69326       trace
69327          (p_msg      => 'BEGIN of insert_sources_145'
69328          ,p_level    => C_LEVEL_PROCEDURE
69329          ,p_module   => l_log_module);
69330 
69331 END IF;
69332 
69333 -- select APPS owner
69334 SELECT oracle_username
69335   INTO p_apps_owner
69336   FROM fnd_oracle_userid
69337  WHERE read_only_flag = 'U'
69338 ;
69339 
69340 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69341       trace
69342          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
69343                         ' - p_language = '||p_language||
69347                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
69344                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
69345                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
69346                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
69348          ,p_level    => C_LEVEL_STATEMENT
69349          ,p_module   => l_log_module);
69350 END IF;
69351 
69352 
69353 --
69354 INSERT INTO xla_diag_sources --hdr2
69355 (
69356         event_id
69357       , ledger_id
69358       , sla_ledger_id
69359       , description_language
69360       , object_name
69361       , object_type_code
69362       , line_number
69363       , source_application_id
69364       , source_type_code
69365       , source_code
69366       , source_value
69367       , source_meaning
69368       , created_by
69369       , creation_date
69370       , last_update_date
69371       , last_updated_by
69372       , last_update_login
69373       , program_update_date
69374       , program_application_id
69375       , program_id
69376       , request_id
69377 )
69378 SELECT
69379         event_id
69380       , p_target_ledger_id
69381       , p_sla_ledger_id
69382       , p_language
69383       , object_name
69384       , object_type_code
69385       , line_number
69386       , source_application_id
69387       , source_type_code
69388       , source_code
69389       , SUBSTR(source_value ,1,1996)
69390       , SUBSTR(source_meaning ,1,200)
69391       , xla_environment_pkg.g_Usr_Id
69392       , TRUNC(SYSDATE)
69393       , TRUNC(SYSDATE)
69394       , xla_environment_pkg.g_Usr_Id
69395       , xla_environment_pkg.g_Login_Id
69396       , TRUNC(SYSDATE)
69397       , xla_environment_pkg.g_Prog_Appl_Id
69398       , xla_environment_pkg.g_Prog_Id
69399       , xla_environment_pkg.g_Req_Id
69400   FROM (
69401        SELECT xet.event_id                  event_id
69402             , 0                          line_number
69403             , CASE r
69404                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
69405                 WHEN 2 THEN 'AR_TRANSACTIONS_S_V' 
69406                 WHEN 3 THEN 'AR_TRANSACTIONS_S_V' 
69407                 WHEN 4 THEN 'AR_TRANSACTIONS_S_V' 
69408                 WHEN 5 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
69409                 WHEN 6 THEN 'AR_BILL_TO_SITE_USES_S_V' 
69410                 WHEN 7 THEN 'AR_TRANSACTIONS_S_V' 
69411                 WHEN 8 THEN 'AR_TRANSACTIONS_S_V' 
69412                 WHEN 9 THEN 'AR_TRANSACTIONS_S_V' 
69413                 
69414                ELSE null
69415               END                           object_name
69416             , CASE r
69417                 WHEN 1 THEN 'HEADER' 
69418                 WHEN 2 THEN 'HEADER' 
69419                 WHEN 3 THEN 'HEADER' 
69420                 WHEN 4 THEN 'HEADER' 
69421                 WHEN 5 THEN 'HEADER' 
69422                 WHEN 6 THEN 'HEADER' 
69423                 WHEN 7 THEN 'HEADER' 
69424                 WHEN 8 THEN 'HEADER' 
69425                 WHEN 9 THEN 'HEADER' 
69426                 
69427                 ELSE null
69428               END                           object_type_code
69429             , CASE r
69430                 WHEN 1 THEN '222' 
69431                 WHEN 2 THEN '222' 
69432                 WHEN 3 THEN '222' 
69433                 WHEN 4 THEN '222' 
69434                 WHEN 5 THEN '222' 
69435                 WHEN 6 THEN '222' 
69436                 WHEN 7 THEN '222' 
69437                 WHEN 8 THEN '222' 
69438                 WHEN 9 THEN '222' 
69439                 
69440                 ELSE null
69441               END                           source_application_id
69442             , 'S'             source_type_code
69443             , CASE r
69444                 WHEN 1 THEN 'TRX_TYPE_NAME' 
69445                 WHEN 2 THEN 'TRX_NUMBER' 
69446                 WHEN 3 THEN 'TRX_DOC_SEQUENCE_CATEGORY' 
69447                 WHEN 4 THEN 'TRX_DOC_SEQUENCE_VALUE' 
69448                 WHEN 5 THEN 'BILL_CUST_ACCOUNT_ID' 
69449                 WHEN 6 THEN 'BILL_USES_SITE_USE_ID' 
69450                 WHEN 7 THEN 'XLA_PARTY_TYPE' 
69451                 WHEN 8 THEN 'TRX_INVOICE_CURRENCY_CODE' 
69452                 WHEN 9 THEN 'TRX_DOC_SEQUENCE_ID' 
69453                 
69454                 ELSE null
69455               END                           source_code
69456             , CASE r
69457                 WHEN 1 THEN TO_CHAR(h5.TRX_TYPE_NAME)
69458                 WHEN 2 THEN TO_CHAR(h5.TRX_NUMBER)
69459                 WHEN 3 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_CATEGORY)
69460                 WHEN 4 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_VALUE)
69461                 WHEN 5 THEN TO_CHAR(h1.BILL_CUST_ACCOUNT_ID)
69462                 WHEN 6 THEN TO_CHAR(h2.BILL_USES_SITE_USE_ID)
69463                 WHEN 7 THEN TO_CHAR(h5.XLA_PARTY_TYPE)
69464                 WHEN 8 THEN TO_CHAR(h5.TRX_INVOICE_CURRENCY_CODE)
69465                 WHEN 9 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_ID)
69466                 
69467                 ELSE null
69468               END                           source_value
69469             , null              source_meaning
69470          FROM xla_events_gt     xet  
69471       , AR_BILL_TO_CUSTOMERS_S_V  h1
69472       , AR_BILL_TO_SITE_USES_S_V  h2
69473       , AR_TRANSACTIONS_S_V  h5
69477               AND h1.event_id = xet.event_id
69474              ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
69475          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
69476            AND xet.event_class_code = C_EVENT_CLASS_CODE
69478   AND h2.event_id  = h1.event_id
69479   AND h5.event_id  = h1.event_id
69480 
69481 )
69482 ;
69483 --
69484 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69485 
69486       trace
69487          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
69488          ,p_level    => C_LEVEL_STATEMENT
69489          ,p_module   => l_log_module);
69490 
69491 END IF;
69492 --
69493 
69494 
69495 
69496 --
69497 INSERT INTO xla_diag_sources  --line2
69498 (
69499         event_id
69500       , ledger_id
69501       , sla_ledger_id
69502       , description_language
69503       , object_name
69504       , object_type_code
69505       , line_number
69506       , source_application_id
69507       , source_type_code
69508       , source_code
69509       , source_value
69510       , source_meaning
69511       , created_by
69512       , creation_date
69513       , last_update_date
69514       , last_updated_by
69515       , last_update_login
69516       , program_update_date
69517       , program_application_id
69518       , program_id
69519       , request_id
69520 )
69521 SELECT  event_id
69522       , p_target_ledger_id
69523       , p_sla_ledger_id
69524       , p_language
69525       , object_name
69526       , object_type_code
69527       , line_number
69528       , source_application_id
69529       , source_type_code
69530       , source_code
69531       , SUBSTR(source_value,1,1996)
69532       , SUBSTR(source_meaning ,1,200)
69533       , xla_environment_pkg.g_Usr_Id
69534       , TRUNC(SYSDATE)
69535       , TRUNC(SYSDATE)
69536       , xla_environment_pkg.g_Usr_Id
69537       , xla_environment_pkg.g_Login_Id
69538       , TRUNC(SYSDATE)
69539       , xla_environment_pkg.g_Prog_Appl_Id
69540       , xla_environment_pkg.g_Prog_Id
69541       , xla_environment_pkg.g_Req_Id
69542   FROM (
69543        SELECT xet.event_id                  event_id
69544             , l4.line_number                 line_number
69545             , CASE r
69546                WHEN 1 THEN 'AR_CUST_TRX_LINES_L_V' 
69547                 WHEN 2 THEN 'AR_CUST_TRX_LINES_L_V' 
69548                 WHEN 3 THEN 'AR_CUST_TRX_LINES_L_V' 
69549                 WHEN 4 THEN 'AR_CUST_TRX_LINES_L_V' 
69550                 WHEN 5 THEN 'AR_CUST_TRX_LINES_L_V' 
69551                 WHEN 6 THEN 'AR_CUST_TRX_LINES_BASE_V' 
69552                 WHEN 7 THEN 'AR_CUST_TRX_LINES_BASE_V' 
69553                 WHEN 8 THEN 'AR_CUST_TRX_LINES_BASE_V' 
69554                 WHEN 9 THEN 'AR_CUST_TRX_LINES_BASE_V' 
69555                 
69556                ELSE null
69557               END                           object_name
69558             , CASE r
69559                 WHEN 1 THEN 'LINE' 
69560                 WHEN 2 THEN 'LINE' 
69561                 WHEN 3 THEN 'LINE' 
69562                 WHEN 4 THEN 'LINE' 
69563                 WHEN 5 THEN 'LINE' 
69564                 WHEN 6 THEN 'LINE' 
69565                 WHEN 7 THEN 'LINE' 
69566                 WHEN 8 THEN 'LINE' 
69567                 WHEN 9 THEN 'LINE' 
69568                 
69569                 ELSE null
69570               END                           object_type_code
69571             , CASE r
69572                 WHEN 1 THEN '222' 
69573                 WHEN 2 THEN '222' 
69574                 WHEN 3 THEN '222' 
69575                 WHEN 4 THEN '222' 
69576                 WHEN 5 THEN '222' 
69577                 WHEN 6 THEN '222' 
69578                 WHEN 7 THEN '222' 
69579                 WHEN 8 THEN '222' 
69580                 WHEN 9 THEN '222' 
69581                 
69582                 ELSE null
69583               END                           source_application_id
69584             , 'S'             source_type_code
69585             , CASE r
69586                 WHEN 1 THEN 'TRX_LINE_DIST_CCID' 
69587                 WHEN 2 THEN 'TRX_LINE_DIST_ACCOUNT_CLASS' 
69588                 WHEN 3 THEN 'TRX_LINE_DIST_ID' 
69589                 WHEN 4 THEN 'TRX_DISTRIBUTION_TYPE' 
69590                 WHEN 5 THEN 'TRX_LINE_DIST_AMT' 
69591                 WHEN 6 THEN 'TRX_LINE_CUR_CONVERSION_DATE' 
69592                 WHEN 7 THEN 'TRX_LINE_CUR_CONVERSION_RATE' 
69593                 WHEN 8 THEN 'TRX_LINE_CUR_CONVERSION_TYPE' 
69594                 WHEN 9 THEN 'TRX_LINE_ACCTD_AMT' 
69595                 
69596                 ELSE null
69597               END                           source_code
69598             , CASE r
69599                 WHEN 1 THEN TO_CHAR(l4.TRX_LINE_DIST_CCID)
69600                 WHEN 2 THEN TO_CHAR(l4.TRX_LINE_DIST_ACCOUNT_CLASS)
69601                 WHEN 3 THEN TO_CHAR(l4.TRX_LINE_DIST_ID)
69602                 WHEN 4 THEN TO_CHAR(l4.TRX_DISTRIBUTION_TYPE)
69603                 WHEN 5 THEN TO_CHAR(l4.TRX_LINE_DIST_AMT)
69604                 WHEN 6 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_DATE)
69605                 WHEN 7 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_RATE)
69606                 WHEN 8 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_TYPE)
69607                 WHEN 9 THEN TO_CHAR(l3.TRX_LINE_ACCTD_AMT)
69608                 
69609                 ELSE null
69610               END                           source_value
69614         , AR_CUST_TRX_LINES_L_V  l4
69611             , null              source_meaning
69612          FROM  xla_events_gt     xet  
69613         , AR_CUST_TRX_LINES_BASE_V  l3
69615             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
69616         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
69617           AND xet.event_class_code = C_EVENT_CLASS_CODE
69618             AND l3.event_id          = xet.event_id
69619   AND l4.event_id    = l3.event_id
69620   AND l4.line_number = l3.line_number
69621 
69622 )
69623 ;
69624 --
69625 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69626 
69627       trace
69628          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
69629          ,p_level    => C_LEVEL_STATEMENT
69630          ,p_module   => l_log_module);
69631 
69632 END IF;
69633 
69634 
69635 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69636       trace
69637          (p_msg      => 'END of insert_sources_145'
69638          ,p_level    => C_LEVEL_PROCEDURE
69639          ,p_module   => l_log_module);
69640 END IF;
69641 EXCEPTION
69642   WHEN xla_exceptions_pkg.application_exception THEN
69643       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
69644             trace
69645                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
69646                ,p_level    => C_LEVEL_EXCEPTION
69647                ,p_module   => l_log_module);
69648       END IF;
69649       RAISE;
69650   WHEN OTHERS THEN
69651       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
69652             trace
69653                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
69654                ,p_level    => C_LEVEL_EXCEPTION
69655                ,p_module   => l_log_module);
69656        END IF;
69657        xla_exceptions_pkg.raise_message
69658            (p_location => 'XLA_00222_AAD_S_000002_PKG.insert_sources_145');
69659 END insert_sources_145;
69660 --
69661 
69662 ---------------------------------------
69663 --
69664 -- PRIVATE FUNCTION
69665 --         EventClass_145
69666 --
69667 ----------------------------------------
69668 --
69669 FUNCTION EventClass_145
69670        (p_application_id         IN NUMBER
69671        ,p_base_ledger_id         IN NUMBER
69672        ,p_target_ledger_id       IN NUMBER
69673        ,p_language               IN VARCHAR2
69674        ,p_currency_code          IN VARCHAR2
69675        ,p_sla_ledger_id          IN NUMBER
69676        ,p_pad_start_date         IN DATE
69677        ,p_pad_end_date           IN DATE
69678        ,p_primary_ledger_id      IN NUMBER)
69679 RETURN BOOLEAN IS
69680 --
69681 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CHARGEBACK_ALL';
69682 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'CHARGEBACK';
69683 
69684 l_calculate_acctd_flag   VARCHAR2(1) :='N';
69685 l_calculate_g_l_flag     VARCHAR2(1) :='N';
69686 --
69687 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69688 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69689 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69690 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69691 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69692 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69693 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69694 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69695 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69696 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69697 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69698 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69699 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69700 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
69701 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69702 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69703 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69704 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
69705 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69706 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69707 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69708 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
69709 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
69710 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
69711 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
69712 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
69713 
69714 l_event_id                             NUMBER;
69715 l_previous_event_id                    NUMBER;
69716 l_first_event_id                       NUMBER;
69717 l_last_event_id                        NUMBER;
69718 
69719 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
69720 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
69721 --
69722 --
69723 l_result                    BOOLEAN := TRUE;
69724 l_rows                      NUMBER  := 1000;
69728 l_transaction_reversal      NUMBER;
69725 l_event_type_name           VARCHAR2(80) := 'All';
69726 l_event_class_name          VARCHAR2(80) := 'Chargeback';
69727 l_description               VARCHAR2(4000);
69729 l_ae_header_id              NUMBER;
69730 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
69731 l_log_module                VARCHAR2(240);
69732 --
69733 l_acct_reversal_source      VARCHAR2(30);
69734 l_trx_reversal_source       VARCHAR2(30);
69735 
69736 l_continue_with_lines       BOOLEAN := TRUE;
69737 --
69738 l_acc_rev_gl_date_source    DATE;                      -- 4262811
69739 --
69740 type t_array_event_id is table of number index by binary_integer;
69741 
69742 l_rec_array_event                    t_rec_array_event;
69743 l_null_rec_array_event               t_rec_array_event;
69744 l_array_ae_header_id                 xla_number_array_type;
69745 l_actual_flag                        VARCHAR2(1) := NULL;
69746 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
69747 l_balance_type_code                  VARCHAR2(1) :=NULL;
69748 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
69749 
69750 --
69751 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
69752 --
69753 
69754 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_TYPE_NAME%TYPE INDEX BY BINARY_INTEGER;
69755 TYPE t_array_source_4 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_NUMBER%TYPE INDEX BY BINARY_INTEGER;
69756 TYPE t_array_source_5 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
69757 TYPE t_array_source_6 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
69758 TYPE t_array_source_49 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
69759 TYPE t_array_source_50 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
69760 TYPE t_array_source_51 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
69761 TYPE t_array_source_59 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
69762 TYPE t_array_source_120 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
69763 
69764 TYPE t_array_source_38 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
69765 TYPE t_array_source_55 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ACCOUNT_CLASS%TYPE INDEX BY BINARY_INTEGER;
69766 TYPE t_array_source_56 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
69767 TYPE t_array_source_57 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
69768 TYPE t_array_source_58 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_AMT%TYPE INDEX BY BINARY_INTEGER;
69769 TYPE t_array_source_60 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
69770 TYPE t_array_source_61 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
69771 TYPE t_array_source_62 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
69772 TYPE t_array_source_63 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
69773 
69774 l_array_source_3              t_array_source_3;
69775 l_array_source_4              t_array_source_4;
69776 l_array_source_5              t_array_source_5;
69777 l_array_source_6              t_array_source_6;
69778 l_array_source_49              t_array_source_49;
69779 l_array_source_50              t_array_source_50;
69780 l_array_source_51              t_array_source_51;
69781 l_array_source_59              t_array_source_59;
69782 l_array_source_120              t_array_source_120;
69783 
69784 l_array_source_38      t_array_source_38;
69785 l_array_source_55      t_array_source_55;
69786 l_array_source_56      t_array_source_56;
69787 l_array_source_57      t_array_source_57;
69788 l_array_source_58      t_array_source_58;
69789 l_array_source_60      t_array_source_60;
69790 l_array_source_61      t_array_source_61;
69791 l_array_source_62      t_array_source_62;
69792 l_array_source_63      t_array_source_63;
69793 
69794 --
69795 CURSOR header_cur
69796 IS
69797 SELECT /*+ leading(xet) cardinality(xet,1) */
69798 -- Event Class Code: CHARGEBACK
69799     xet.entity_id
69800    ,xet.legal_entity_id
69801    ,xet.entity_code
69802    ,xet.transaction_number
69803    ,xet.event_id
69804    ,xet.event_class_code
69805    ,xet.event_type_code
69806    ,xet.event_number
69807    ,xet.event_date
69808    ,xet.transaction_date
69809    ,xet.reference_num_1
69810    ,xet.reference_num_2
69811    ,xet.reference_num_3
69812    ,xet.reference_num_4
69813    ,xet.reference_char_1
69814    ,xet.reference_char_2
69815    ,xet.reference_char_3
69816    ,xet.reference_char_4
69817    ,xet.reference_date_1
69818    ,xet.reference_date_2
69819    ,xet.reference_date_3
69820    ,xet.reference_date_4
69821    ,xet.event_created_by
69822    ,xet.budgetary_control_flag 
69823   , h5.TRX_TYPE_NAME    source_3
69824   , h5.TRX_NUMBER    source_4
69825   , h5.TRX_DOC_SEQUENCE_CATEGORY    source_5
69826   , h5.TRX_DOC_SEQUENCE_VALUE    source_6
69827   , h1.BILL_CUST_ACCOUNT_ID    source_49
69828   , h2.BILL_USES_SITE_USE_ID    source_50
69829   , h5.XLA_PARTY_TYPE    source_51
69830   , h5.TRX_INVOICE_CURRENCY_CODE    source_59
69831   , h5.TRX_DOC_SEQUENCE_ID    source_120
69832   FROM xla_events_gt     xet 
69836  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
69833   , AR_BILL_TO_CUSTOMERS_S_V  h1
69834   , AR_BILL_TO_SITE_USES_S_V  h2
69835   , AR_TRANSACTIONS_S_V  h5
69837    and xet.event_class_code = C_EVENT_CLASS_CODE
69838    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
69839   AND h2.event_id  = h1.event_id
69840   AND h5.event_id  = h1.event_id
69841 
69842  ORDER BY event_id
69843 ;
69844 
69845 
69846 --
69847 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
69848 IS
69849 SELECT  /*+ leading(xet) cardinality(xet,1) */
69850 -- Event Class Code: CHARGEBACK
69851     xet.entity_id
69852    ,xet.legal_entity_id
69853    ,xet.entity_code
69854    ,xet.transaction_number
69855    ,xet.event_id
69856    ,xet.event_class_code
69857    ,xet.event_type_code
69858    ,xet.event_number
69859    ,xet.event_date
69860    ,xet.transaction_date
69861    ,xet.reference_num_1
69862    ,xet.reference_num_2
69863    ,xet.reference_num_3
69864    ,xet.reference_num_4
69865    ,xet.reference_char_1
69866    ,xet.reference_char_2
69867    ,xet.reference_char_3
69868    ,xet.reference_char_4
69869    ,xet.reference_date_1
69870    ,xet.reference_date_2
69871    ,xet.reference_date_3
69872    ,xet.reference_date_4
69873    ,xet.event_created_by
69874    ,xet.budgetary_control_flag
69875  , l3.LINE_NUMBER  
69876   , l4.TRX_LINE_DIST_CCID    source_38
69877   , l4.TRX_LINE_DIST_ACCOUNT_CLASS    source_55
69878   , l4.TRX_LINE_DIST_ID    source_56
69879   , l4.TRX_DISTRIBUTION_TYPE    source_57
69880   , l4.TRX_LINE_DIST_AMT    source_58
69881   , l3.TRX_LINE_CUR_CONVERSION_DATE    source_60
69882   , l3.TRX_LINE_CUR_CONVERSION_RATE    source_61
69883   , l3.TRX_LINE_CUR_CONVERSION_TYPE    source_62
69884   , l3.TRX_LINE_ACCTD_AMT    source_63
69885   FROM xla_events_gt     xet 
69886   , AR_CUST_TRX_LINES_BASE_V  l3
69887   , AR_CUST_TRX_LINES_L_V  l4
69888  WHERE xet.event_id between x_first_event_id and x_last_event_id
69889    and xet.event_date between p_pad_start_date and p_pad_end_date
69890    and xet.event_class_code = C_EVENT_CLASS_CODE
69891    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
69892   AND l4.event_id    = l3.event_id
69893   AND l4.line_number = l3.line_number
69894 ;
69895 
69896 --
69897 BEGIN
69898 IF g_log_enabled THEN
69899    l_log_module := C_DEFAULT_MODULE||'.EventClass_145';
69900 END IF;
69901 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
69902    trace
69903       (p_msg      => 'BEGIN of EventClass_145'
69904       ,p_level    => C_LEVEL_PROCEDURE
69905       ,p_module   => l_log_module);
69906 END IF;
69907 
69908 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69909    trace
69910       (p_msg      => 'p_application_id = '||p_application_id||
69911                      ' - p_base_ledger_id = '||p_base_ledger_id||
69912                      ' - p_target_ledger_id  = '||p_target_ledger_id||
69913                      ' - p_language = '||p_language||
69914                      ' - p_currency_code = '||p_currency_code||
69915                      ' - p_sla_ledger_id = '||p_sla_ledger_id
69916       ,p_level    => C_LEVEL_STATEMENT
69917       ,p_module   => l_log_module);
69918 END IF;
69919 --
69920 -- initialze arrays
69921 --
69922 g_array_event.DELETE;
69923 l_rec_array_event := l_null_rec_array_event;
69924 --
69925 --------------------------------------
69926 -- 4262811 Initialze MPA Line Number
69927 --------------------------------------
69928 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
69929 
69930 --
69931 
69932 --
69933 OPEN header_cur;
69934 --
69935 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
69936    trace
69937    (p_msg      => 'SQL - FETCH header_cur'
69938    ,p_level    => C_LEVEL_STATEMENT
69939    ,p_module   => l_log_module);
69940 END IF;
69941 --
69942 LOOP
69943 FETCH header_cur BULK COLLECT INTO
69944         l_array_entity_id
69945       , l_array_legal_entity_id
69946       , l_array_entity_code
69947       , l_array_transaction_num
69948       , l_array_event_id
69949       , l_array_class_code
69950       , l_array_event_type
69951       , l_array_event_number
69952       , l_array_event_date
69953       , l_array_transaction_date
69954       , l_array_reference_num_1
69955       , l_array_reference_num_2
69956       , l_array_reference_num_3
69957       , l_array_reference_num_4
69958       , l_array_reference_char_1
69959       , l_array_reference_char_2
69960       , l_array_reference_char_3
69961       , l_array_reference_char_4
69962       , l_array_reference_date_1
69963       , l_array_reference_date_2
69964       , l_array_reference_date_3
69965       , l_array_reference_date_4
69966       , l_array_event_created_by
69967       , l_array_budgetary_control_flag 
69968       , l_array_source_3
69969       , l_array_source_4
69970       , l_array_source_5
69971       , l_array_source_6
69972       , l_array_source_49
69973       , l_array_source_50
69974       , l_array_source_51
69975       , l_array_source_59
69976       , l_array_source_120
69977       LIMIT l_rows;
69978 --
69979 IF (C_LEVEL_EVENT >= g_log_level) THEN
69980    trace
69984 END IF;
69981    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
69982    ,p_level    => C_LEVEL_EVENT
69983    ,p_module   => l_log_module);
69985 --
69986 EXIT WHEN l_array_entity_id.COUNT = 0;
69987 
69988 -- initialize arrays
69989 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
69990 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
69991 
69992 --
69993 -- Bug 4458708
69994 --
69995 XLA_AE_LINES_PKG.g_LineNumber := 0;
69996 
69997 
69998 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
69999 g_last_hdr_idx := l_array_event_id.LAST;
70000 --
70001 -- loop for the headers. Each iteration is for each header extract row
70002 -- fetched in header cursor
70003 --
70004 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
70005 
70006 --
70007 -- set event info as cache for other routines to refer event attributes
70008 --
70009 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
70010    (p_application_id           => p_application_id
70011    ,p_primary_ledger_id        => p_primary_ledger_id
70012    ,p_base_ledger_id           => p_base_ledger_id
70013    ,p_target_ledger_id         => p_target_ledger_id
70014    ,p_entity_id                => l_array_entity_id(hdr_idx)
70015    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
70016    ,p_entity_code              => l_array_entity_code(hdr_idx)
70017    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
70018    ,p_event_id                 => l_array_event_id(hdr_idx)
70019    ,p_event_class_code         => l_array_class_code(hdr_idx)
70020    ,p_event_type_code          => l_array_event_type(hdr_idx)
70021    ,p_event_number             => l_array_event_number(hdr_idx)
70022    ,p_event_date               => l_array_event_date(hdr_idx)
70023    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
70024    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
70025    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
70026    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
70027    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
70028    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
70029    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
70030    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
70031    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
70032    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
70033    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
70034    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
70035    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
70036    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
70037    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
70038 
70039 --
70040 -- set the status of entry to C_VALID (0)
70041 --
70042 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
70043 
70044 --
70045 -- initialize a row for ae header
70046 --
70047 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
70048 
70049 l_event_id := l_array_event_id(hdr_idx);
70050 
70051 --
70052 -- storing the hdr_idx for event. May be used by line cursor.
70053 --
70054 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
70055 
70056 --
70057 -- store sources from header extract. This can be improved to
70058 -- store only those sources from header extract that may be used in lines
70059 --
70060 
70061 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
70062 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
70063 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
70064 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
70065 g_array_event(l_event_id).array_value_num('source_49') := l_array_source_49(hdr_idx);
70066 g_array_event(l_event_id).array_value_num('source_50') := l_array_source_50(hdr_idx);
70067 g_array_event(l_event_id).array_value_char('source_51') := l_array_source_51(hdr_idx);
70068 g_array_event(l_event_id).array_value_char('source_59') := l_array_source_59(hdr_idx);
70069 g_array_event(l_event_id).array_value_num('source_120') := l_array_source_120(hdr_idx);
70070 
70071 --
70072 -- initilaize the status of ae headers for diffrent balance types
70073 -- the status is initialised to C_NOT_CREATED (2)
70074 --
70075 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
70076 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
70077 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
70078 
70079 --
70080 -- call api to validate and store accounting attributes for header
70081 --
70082 
70083 ------------------------------------------------------------
70084 -- Accrual Reversal : to get date for Standard Source (NONE)
70085 ------------------------------------------------------------
70086 l_acc_rev_gl_date_source := NULL;
70087 
70088      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
70089       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_5');
70090      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
70091       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_120');
70095       l_rec_acct_attrs.array_date_value(4) := 
70092      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
70093       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_6');
70094      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
70096 xla_ae_sources_pkg.GetSystemSourceDate(
70097    p_source_code           => 'XLA_EVENT_DATE'
70098  , p_source_type_code      => 'Y'
70099  , p_source_application_id =>  602
70100 );
70101 
70102 
70103 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
70104 
70105 XLA_AE_HEADER_PKG.SetJeCategoryName;
70106 
70107 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
70108 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
70109 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
70110 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
70111 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
70112 
70113 
70114 --
70115 xla_ae_header_pkg.SetHdrDescription(
70116    p_description => Description_3 (
70117    p_application_id => p_application_id 
70118  , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
70119  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
70120  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
70121  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
70122    )
70123 );
70124 --
70125 
70126 -- No header level analytical criteria
70127 
70128 --
70129 --accounting attribute enhancement, bug 3612931
70130 --
70131 l_trx_reversal_source := SUBSTR(NULL, 1,30);
70132 
70133 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
70134    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
70135 
70136    xla_accounting_err_pkg.build_message
70137       (p_appli_s_name            => 'XLA'
70138       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
70139       ,p_token_1                 => 'ACCT_ATTR_NAME'
70140       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
70141       ,p_token_2                 => 'PRODUCT_NAME'
70142       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
70143       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
70144       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
70145       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
70146 
70147 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
70148    --
70149    -- following sets the accounting attributes needed to reverse
70150    -- accounting for a distributeion
70151    --
70152    xla_ae_lines_pkg.SetTrxReversalAttrs
70153       (p_event_id              => l_event_id
70154       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
70155       ,p_trx_reversal_source   => l_trx_reversal_source);
70156 
70157 END IF;
70158 
70159 
70160 ----------------------------------------------------------------
70161 -- 4262811 -  update the header statuses to invalid in need be
70162 ----------------------------------------------------------------
70163 --
70164 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
70165 
70166 
70167   -----------------------------------------------
70168   -- No accrual reversal for the event class/type
70169   -----------------------------------------------
70170 ----------------------------------------------------------------
70171 
70172 --
70173 -- this ends the header loop iteration for one bulk fetch
70174 --
70175 END LOOP;
70176 
70177 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
70178 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
70179 
70180 --
70181 -- insert dummy rows into lines gt table that were created due to
70182 -- transaction reversals
70183 --
70184 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
70185    l_result := XLA_AE_LINES_PKG.InsertLines;
70186 END IF;
70187 
70188 --
70189 -- reset the temp_line_num for each set of events fetched from header
70190 -- cursor rather than doing it for each new event in line cursor
70191 -- Bug 3939231
70192 --
70193 xla_ae_lines_pkg.g_temp_line_num := 0;
70194 
70195 
70196 
70197 --
70198 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
70199 --
70200 --
70201 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70202 
70203       trace
70204          (p_msg      => 'SQL - FETCH line_cur'
70205          ,p_level    => C_LEVEL_STATEMENT
70206          ,p_module   => l_log_module);
70207 
70208 END IF;
70209 --
70210 --
70211 LOOP
70212   --
70213   FETCH line_cur BULK COLLECT INTO
70214         l_array_entity_id
70215       , l_array_legal_entity_id
70216       , l_array_entity_code
70217       , l_array_transaction_num
70218       , l_array_event_id
70219       , l_array_class_code
70220       , l_array_event_type
70221       , l_array_event_number
70222       , l_array_event_date
70223       , l_array_transaction_date
70224       , l_array_reference_num_1
70225       , l_array_reference_num_2
70229       , l_array_reference_char_2
70226       , l_array_reference_num_3
70227       , l_array_reference_num_4
70228       , l_array_reference_char_1
70230       , l_array_reference_char_3
70231       , l_array_reference_char_4
70232       , l_array_reference_date_1
70233       , l_array_reference_date_2
70234       , l_array_reference_date_3
70235       , l_array_reference_date_4
70236       , l_array_event_created_by
70237       , l_array_budgetary_control_flag
70238       , l_array_extract_line_num 
70239       , l_array_source_38
70240       , l_array_source_55
70241       , l_array_source_56
70242       , l_array_source_57
70243       , l_array_source_58
70244       , l_array_source_60
70245       , l_array_source_61
70246       , l_array_source_62
70247       , l_array_source_63
70248       LIMIT l_rows;
70249 
70250   --
70251   IF (C_LEVEL_EVENT >= g_log_level) THEN
70252             trace
70253                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
70254                ,p_level    => C_LEVEL_EVENT
70255                ,p_module   => l_log_module);
70256   END IF;
70257   --
70258   EXIT WHEN l_array_entity_id.count = 0;
70259 
70260   XLA_AE_LINES_PKG.g_rec_lines := null;
70261 
70262 --
70263 -- Bug 4458708
70264 --
70265 XLA_AE_LINES_PKG.g_LineNumber := 0;
70266 --
70267 --
70268 
70269 FOR Idx IN 1..l_array_event_id.count LOOP
70270    --
70271    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
70272    --
70273    l_event_id := l_array_event_id(idx);  -- 5648433
70274 
70275    --
70276    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
70277    --
70278 
70279    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
70280              (g_array_event(l_event_id).array_value_num('header_index'))
70281          ,'N'
70282          ) <> 'Y'
70283    THEN
70284       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70285          trace
70286             (p_msg      => 'Trancaction revesal option is not Y '
70287             ,p_level    => C_LEVEL_STATEMENT
70288             ,p_module   => l_log_module);
70289       END IF;
70290 
70291 --
70292 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
70293 --
70294 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
70295 --
70296 -- set event info as cache for other routines to refer event attributes
70297 --
70298 
70299 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
70300    l_previous_event_id := l_event_id;
70301 
70302    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
70303       (p_application_id           => p_application_id
70304       ,p_primary_ledger_id        => p_primary_ledger_id
70305       ,p_base_ledger_id           => p_base_ledger_id
70306       ,p_target_ledger_id         => p_target_ledger_id
70307       ,p_entity_id                => l_array_entity_id(Idx)
70308       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
70309       ,p_entity_code              => l_array_entity_code(Idx)
70310       ,p_transaction_num          => l_array_transaction_num(Idx)
70311       ,p_event_id                 => l_array_event_id(Idx)
70312       ,p_event_class_code         => l_array_class_code(Idx)
70313       ,p_event_type_code          => l_array_event_type(Idx)
70314       ,p_event_number             => l_array_event_number(Idx)
70315       ,p_event_date               => l_array_event_date(Idx)
70316       ,p_transaction_date         => l_array_transaction_date(Idx)
70317       ,p_reference_num_1          => l_array_reference_num_1(Idx)
70318       ,p_reference_num_2          => l_array_reference_num_2(Idx)
70319       ,p_reference_num_3          => l_array_reference_num_3(Idx)
70320       ,p_reference_num_4          => l_array_reference_num_4(Idx)
70321       ,p_reference_char_1         => l_array_reference_char_1(Idx)
70322       ,p_reference_char_2         => l_array_reference_char_2(Idx)
70323       ,p_reference_char_3         => l_array_reference_char_3(Idx)
70324       ,p_reference_char_4         => l_array_reference_char_4(Idx)
70325       ,p_reference_date_1         => l_array_reference_date_1(Idx)
70326       ,p_reference_date_2         => l_array_reference_date_2(Idx)
70327       ,p_reference_date_3         => l_array_reference_date_3(Idx)
70328       ,p_reference_date_4         => l_array_reference_date_4(Idx)
70329       ,p_event_created_by         => l_array_event_created_by(Idx)
70330       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
70331        --
70332 END IF;
70333 
70334 
70335 
70336 --
70337 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
70338 
70339 l_acct_reversal_source := SUBSTR(NULL, 1,30);
70340 
70341 IF l_continue_with_lines THEN
70342    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
70343       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
70344 
70345       xla_accounting_err_pkg.build_message
70346          (p_appli_s_name            => 'XLA'
70347          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
70348          ,p_token_1                 => 'LINE_NUMBER'
70349          ,p_value_1                 => l_array_extract_line_num(Idx)
70350          ,p_token_2                 => 'PRODUCT_NAME'
70351          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
70355 
70352          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
70353          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
70354          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
70356    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
70357       --
70358       -- following sets the accounting attributes needed to reverse
70359       -- accounting for a distributeion
70360       --
70361 
70362       --
70363       -- 5217187
70364       --
70365       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
70366       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
70367                                        g_array_event(l_event_id).array_value_num('header_index'));
70368       --
70369       --
70370 
70371       -- No reversal code generated
70372 
70373       xla_ae_lines_pkg.SetAcctReversalAttrs
70374          (p_event_id             => l_event_id
70375          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
70376          ,p_calculate_acctd_flag => l_calculate_acctd_flag
70377          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
70378    END IF;
70379 
70380    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
70381        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
70382 
70383 --
70384 AcctLineType_51 (
70385  p_application_id  => p_application_id
70386  ,p_event_id     => l_event_id
70387  ,p_calculate_acctd_flag => l_calculate_acctd_flag
70388  ,p_calculate_g_l_flag => l_calculate_g_l_flag
70389  ,p_actual_flag => l_actual_flag
70390  ,p_balance_type_code => l_balance_type_code
70391  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
70392  
70393  , p_source_38 => l_array_source_38(Idx)
70394  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
70395  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
70396  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
70397  , p_source_55 => l_array_source_55(Idx)
70398  , p_source_56 => l_array_source_56(Idx)
70399  , p_source_57 => l_array_source_57(Idx)
70400  , p_source_58 => l_array_source_58(Idx)
70401  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
70402  , p_source_60 => l_array_source_60(Idx)
70403  , p_source_61 => l_array_source_61(Idx)
70404  , p_source_62 => l_array_source_62(Idx)
70405  , p_source_63 => l_array_source_63(Idx)
70406  );
70407 If(l_balance_type_code = 'A') THEN
70408   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70409 END IF;
70410 
70411 --
70412 
70413 
70414 --
70415 AcctLineType_52 (
70416  p_application_id  => p_application_id
70417  ,p_event_id     => l_event_id
70418  ,p_calculate_acctd_flag => l_calculate_acctd_flag
70419  ,p_calculate_g_l_flag => l_calculate_g_l_flag
70420  ,p_actual_flag => l_actual_flag
70421  ,p_balance_type_code => l_balance_type_code
70422  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
70423  
70424  , p_source_38 => l_array_source_38(Idx)
70425  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
70426  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
70427  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
70428  , p_source_55 => l_array_source_55(Idx)
70429  , p_source_56 => l_array_source_56(Idx)
70430  , p_source_57 => l_array_source_57(Idx)
70431  , p_source_58 => l_array_source_58(Idx)
70432  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
70433  , p_source_60 => l_array_source_60(Idx)
70434  , p_source_61 => l_array_source_61(Idx)
70435  , p_source_62 => l_array_source_62(Idx)
70436  , p_source_63 => l_array_source_63(Idx)
70437  );
70438 If(l_balance_type_code = 'A') THEN
70439   l_actual_gain_loss_ref := l_gain_or_loss_ref;
70440 END IF;
70441 
70442 --
70443 
70444       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
70445       -- or secondary ledger that has different currency with primary
70446       -- or alc that is calculated by sla
70447       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
70448             (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'))
70449 
70450 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
70451 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
70452           AND (l_actual_flag = 'A')) THEN
70453         XLA_AE_LINES_PKG.CreateGainOrLossLines(
70454           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
70455          ,p_application_id   => p_application_id
70456          ,p_amb_context_code => 'DEFAULT'
70457          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
70458          ,p_event_class_code => C_EVENT_CLASS_CODE
70459          ,p_event_type_code  => C_EVENT_TYPE_CODE
70460          
70461          ,p_gain_ccid        => -1
70462          ,p_loss_ccid        => -1
70463 
70464          ,p_actual_flag      => l_actual_flag
70465          ,p_enc_flag         => null
70466          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
70467          ,p_enc_g_l_ref      => null
70468          );
70469       END IF;
70470    END IF;
70471 END IF;
70472 
70476       --
70473    ELSE
70474       --
70475       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
70477       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70478          trace
70479             (p_msg      => 'Trancaction revesal option is Y'
70480             ,p_level    => C_LEVEL_STATEMENT
70481             ,p_module   => l_log_module);
70482       END IF;
70483    END IF;
70484 
70485 END LOOP;
70486 l_result := XLA_AE_LINES_PKG.InsertLines ;
70487 end loop;
70488 close line_cur;
70489 
70490 
70491 --
70492 -- insert headers into xla_ae_headers_gt table
70493 --
70494 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
70495 
70496 -- insert into errors table here.
70497 
70498 END LOOP;
70499 
70500 --
70501 -- 4865292
70502 --
70503 -- Compare g_hdr_extract_count with event count in
70504 -- CreateHeadersAndLines.
70505 --
70506 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
70507 
70508 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70509    trace (p_msg     => '# rows extracted from header extract objects '
70510                     || ' (running total): '
70511                     || g_hdr_extract_count
70512          ,p_level   => C_LEVEL_STATEMENT
70513          ,p_module  => l_log_module);
70514 END IF;
70515 
70516 CLOSE header_cur;
70517 --
70518 
70519 --
70520 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70521    trace
70522       (p_msg      => 'END of EventClass_145'
70523       ,p_level    => C_LEVEL_PROCEDURE
70524       ,p_module   => l_log_module);
70525 END IF;
70526 --
70527 RETURN l_result;
70528 EXCEPTION
70529 WHEN xla_exceptions_pkg.application_exception THEN
70530    
70531 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
70532 
70533    
70534 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
70535 
70536    RAISE;
70537 
70538 WHEN NO_DATA_FOUND THEN
70539 
70540 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
70541 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
70542 
70543 FOR header_record IN header_cur
70544 LOOP
70545     l_array_header_events(header_record.event_id) := header_record.event_id;
70546 END LOOP;
70547 
70548 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
70549 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
70550 
70551 fnd_file.put_line(fnd_file.LOG, '                    ');
70552 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
70553 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
70554 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
70555 
70556 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
70557 LOOP
70558 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
70559 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
70560         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
70561 	END IF;
70562 END LOOP;
70563 
70564 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
70565 fnd_file.put_line(fnd_file.LOG, '                    ');
70566 
70567 
70568 xla_exceptions_pkg.raise_message
70569       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_145');
70570 
70571 
70572 WHEN OTHERS THEN
70573    xla_exceptions_pkg.raise_message
70574       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_145');
70575 END EventClass_145;
70576 --
70577 
70578 ---------------------------------------
70579 --
70580 -- PRIVATE PROCEDURE
70581 --         insert_sources_146
70582 --
70583 ----------------------------------------
70584 --
70585 PROCEDURE insert_sources_146(
70586                                 p_target_ledger_id       IN NUMBER
70587                               , p_language               IN VARCHAR2
70588                               , p_sla_ledger_id          IN NUMBER
70589                               , p_pad_start_date         IN DATE
70590                               , p_pad_end_date           IN DATE
70591                          )
70592 IS
70593 
70594 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'COLLECTION_OCC_DOCUMENT_ALL';
70595 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'COLLECTION_OCC_DOCUMENT';
70596 p_apps_owner                   VARCHAR2(30);
70597 l_log_module                   VARCHAR2(240);
70598 BEGIN
70599 IF g_log_enabled THEN
70600       l_log_module := C_DEFAULT_MODULE||'.insert_sources_146';
70601 END IF;
70602 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
70603 
70604       trace
70605          (p_msg      => 'BEGIN of insert_sources_146'
70606          ,p_level    => C_LEVEL_PROCEDURE
70607          ,p_module   => l_log_module);
70608 
70609 END IF;
70610 
70611 -- select APPS owner
70612 SELECT oracle_username
70613   INTO p_apps_owner
70614   FROM fnd_oracle_userid
70615  WHERE read_only_flag = 'U'
70616 ;
70617 
70618 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70619       trace
70620          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
70624                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
70621                         ' - p_language = '||p_language||
70622                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
70623                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
70625                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
70626          ,p_level    => C_LEVEL_STATEMENT
70627          ,p_module   => l_log_module);
70628 END IF;
70629 
70630 
70631 --
70632 INSERT INTO xla_diag_sources --hdr2
70633 (
70634         event_id
70635       , ledger_id
70636       , sla_ledger_id
70637       , description_language
70638       , object_name
70639       , object_type_code
70640       , line_number
70641       , source_application_id
70642       , source_type_code
70643       , source_code
70644       , source_value
70645       , source_meaning
70646       , created_by
70647       , creation_date
70648       , last_update_date
70649       , last_updated_by
70650       , last_update_login
70651       , program_update_date
70652       , program_application_id
70653       , program_id
70654       , request_id
70655 )
70656 SELECT
70657         event_id
70658       , p_target_ledger_id
70659       , p_sla_ledger_id
70660       , p_language
70661       , object_name
70662       , object_type_code
70663       , line_number
70664       , source_application_id
70665       , source_type_code
70666       , source_code
70667       , SUBSTR(source_value ,1,1996)
70668       , SUBSTR(source_meaning ,1,200)
70669       , xla_environment_pkg.g_Usr_Id
70670       , TRUNC(SYSDATE)
70671       , TRUNC(SYSDATE)
70672       , xla_environment_pkg.g_Usr_Id
70673       , xla_environment_pkg.g_Login_Id
70674       , TRUNC(SYSDATE)
70675       , xla_environment_pkg.g_Prog_Appl_Id
70676       , xla_environment_pkg.g_Prog_Id
70677       , xla_environment_pkg.g_Req_Id
70678   FROM (
70679        SELECT xet.event_id                  event_id
70680             , 0                          line_number
70681             , CASE r
70682                WHEN 1 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
70683                 WHEN 2 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
70684                 WHEN 3 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
70685                 WHEN 4 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
70686                 WHEN 5 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
70687                 WHEN 6 THEN 'AR_REMIT_BANK_ACCT_H_V' 
70688                 WHEN 7 THEN 'AR_REMIT_BANK_ACCT_H_V' 
70689                 WHEN 8 THEN 'AR_REMIT_BANK_ACCT_H_V' 
70690                 WHEN 9 THEN 'AR_REMIT_BANK_ACCT_H_V' 
70691                 WHEN 10 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
70692                 WHEN 11 THEN 'AR_BILL_TO_SITE_USES_S_V' 
70693                 WHEN 12 THEN 'AR_TRANSACTIONS_S_V' 
70694                 WHEN 13 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
70695                 WHEN 14 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
70696                 WHEN 15 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
70697                 WHEN 16 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
70698                 WHEN 17 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
70699                 
70700                ELSE null
70701               END                           object_name
70702             , CASE r
70703                 WHEN 1 THEN 'HEADER' 
70704                 WHEN 2 THEN 'HEADER' 
70705                 WHEN 3 THEN 'HEADER' 
70706                 WHEN 4 THEN 'HEADER' 
70707                 WHEN 5 THEN 'HEADER' 
70708                 WHEN 6 THEN 'HEADER' 
70709                 WHEN 7 THEN 'HEADER' 
70710                 WHEN 8 THEN 'HEADER' 
70711                 WHEN 9 THEN 'HEADER' 
70712                 WHEN 10 THEN 'HEADER' 
70713                 WHEN 11 THEN 'HEADER' 
70714                 WHEN 12 THEN 'HEADER' 
70715                 WHEN 13 THEN 'HEADER' 
70716                 WHEN 14 THEN 'HEADER' 
70717                 WHEN 15 THEN 'HEADER' 
70718                 WHEN 16 THEN 'HEADER' 
70719                 WHEN 17 THEN 'HEADER' 
70720                 
70721                 ELSE null
70722               END                           object_type_code
70723             , CASE r
70724                 WHEN 1 THEN '222' 
70725                 WHEN 2 THEN '222' 
70726                 WHEN 3 THEN '222' 
70727                 WHEN 4 THEN '222' 
70728                 WHEN 5 THEN '222' 
70729                 WHEN 6 THEN '222' 
70730                 WHEN 7 THEN '222' 
70731                 WHEN 8 THEN '222' 
70732                 WHEN 9 THEN '222' 
70733                 WHEN 10 THEN '222' 
70734                 WHEN 11 THEN '222' 
70735                 WHEN 12 THEN '222' 
70736                 WHEN 13 THEN '222' 
70737                 WHEN 14 THEN '222' 
70738                 WHEN 15 THEN '222' 
70739                 WHEN 16 THEN '222' 
70740                 WHEN 17 THEN '222' 
70741                 
70742                 ELSE null
70743               END                           source_application_id
70744             , 'S'             source_type_code
70745             , CASE r
70746                 WHEN 1 THEN 'JLBR_BANK_OCC_DESC' 
70747                 WHEN 2 THEN 'JLBR_DOCUMENT_NUMBER' 
70748                 WHEN 3 THEN 'JLBR_TRADE_NOTE_NUMBER' 
70749                 WHEN 4 THEN 'BILL_CUST_PARTY_NAME' 
70750                 WHEN 5 THEN 'BILL_CUST_PARTY_NUMBER' 
70751                 WHEN 6 THEN 'RMT_BNK_ACCOUNT_NAME' 
70752                 WHEN 7 THEN 'RMT_BNK_ACCOUNT_NUM' 
70753                 WHEN 8 THEN 'RMT_BANK_NAME' 
70757                 WHEN 12 THEN 'XLA_PARTY_TYPE' 
70754                 WHEN 9 THEN 'RMT_BANK_NUM' 
70755                 WHEN 10 THEN 'BILL_CUST_ACCOUNT_ID' 
70756                 WHEN 11 THEN 'BILL_USES_SITE_USE_ID' 
70758                 WHEN 13 THEN 'JLBR_OCCURRENCE_ID' 
70759                 WHEN 14 THEN 'JLBR_EXCHG_GAIN_CCID' 
70760                 WHEN 15 THEN 'JLBR_EXCHG_LOSS_CCID' 
70761                 WHEN 16 THEN 'JLBR_GL_DATE' 
70762                 WHEN 17 THEN 'JLBR_TRANSFER_TO_GL_FLAG' 
70763                 
70764                 ELSE null
70765               END                           source_code
70766             , CASE r
70767                 WHEN 1 THEN TO_CHAR(h6.JLBR_BANK_OCC_DESC)
70768                 WHEN 2 THEN TO_CHAR(h6.JLBR_DOCUMENT_NUMBER)
70769                 WHEN 3 THEN TO_CHAR(h6.JLBR_TRADE_NOTE_NUMBER)
70770                 WHEN 4 THEN TO_CHAR(h1.BILL_CUST_PARTY_NAME)
70771                 WHEN 5 THEN TO_CHAR(h1.BILL_CUST_PARTY_NUMBER)
70772                 WHEN 6 THEN TO_CHAR(h3.RMT_BNK_ACCOUNT_NAME)
70773                 WHEN 7 THEN TO_CHAR(h3.RMT_BNK_ACCOUNT_NUM)
70774                 WHEN 8 THEN TO_CHAR(h3.RMT_BANK_NAME)
70775                 WHEN 9 THEN TO_CHAR(h3.RMT_BANK_NUM)
70776                 WHEN 10 THEN TO_CHAR(h1.BILL_CUST_ACCOUNT_ID)
70777                 WHEN 11 THEN TO_CHAR(h2.BILL_USES_SITE_USE_ID)
70778                 WHEN 12 THEN TO_CHAR(h4.XLA_PARTY_TYPE)
70779                 WHEN 13 THEN TO_CHAR(h6.JLBR_OCCURRENCE_ID)
70780                 WHEN 14 THEN TO_CHAR(h6.JLBR_EXCHG_GAIN_CCID)
70781                 WHEN 15 THEN TO_CHAR(h6.JLBR_EXCHG_LOSS_CCID)
70782                 WHEN 16 THEN TO_CHAR(h6.JLBR_GL_DATE)
70783                 WHEN 17 THEN TO_CHAR(h6.JLBR_TRANSFER_TO_GL_FLAG)
70784                 
70785                 ELSE null
70786               END                           source_value
70787             , CASE r
70788                 WHEN 17 THEN fvl124.meaning
70789                 
70790                 ELSE null
70791               END               source_meaning
70792          FROM xla_events_gt     xet  
70793       , AR_BILL_TO_CUSTOMERS_S_V  h1
70794       , AR_BILL_TO_SITE_USES_S_V  h2
70795       , AR_REMIT_BANK_ACCT_H_V  h3
70796       , AR_TRANSACTIONS_S_V  h4
70797       , JL_BR_AR_COLL_OCC_DOCS_H_V  h6
70798   , fnd_lookup_values    fvl124
70799              ,(select rownum r from all_objects where rownum <= 17 and owner = p_apps_owner)
70800          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
70801            AND xet.event_class_code = C_EVENT_CLASS_CODE
70802               AND h3.event_id = xet.event_id
70803   AND h1.event_id (+) = h3.event_id
70804   AND h2.event_id (+) = h3.event_id
70805   AND h4.event_id (+) = h3.event_id
70806   AND h6.event_id  = h3.event_id
70807    AND fvl124.lookup_type(+)         = 'YES_NO'
70808   AND fvl124.lookup_code(+)         = h6.JLBR_TRANSFER_TO_GL_FLAG
70809   AND fvl124.view_application_id(+) = 0
70810   AND fvl124.language(+)            = USERENV('LANG')
70811   
70812 )
70813 ;
70814 --
70815 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
70816 
70817       trace
70818          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
70819          ,p_level    => C_LEVEL_STATEMENT
70820          ,p_module   => l_log_module);
70821 
70822 END IF;
70823 --
70824 
70825 
70826 
70827 --
70828 INSERT INTO xla_diag_sources  --line2
70829 (
70830         event_id
70831       , ledger_id
70832       , sla_ledger_id
70833       , description_language
70834       , object_name
70835       , object_type_code
70836       , line_number
70837       , source_application_id
70838       , source_type_code
70839       , source_code
70840       , source_value
70841       , source_meaning
70842       , created_by
70843       , creation_date
70844       , last_update_date
70845       , last_updated_by
70846       , last_update_login
70847       , program_update_date
70848       , program_application_id
70849       , program_id
70850       , request_id
70851 )
70852 SELECT  event_id
70853       , p_target_ledger_id
70854       , p_sla_ledger_id
70855       , p_language
70856       , object_name
70857       , object_type_code
70858       , line_number
70859       , source_application_id
70860       , source_type_code
70861       , source_code
70862       , SUBSTR(source_value,1,1996)
70863       , SUBSTR(source_meaning ,1,200)
70864       , xla_environment_pkg.g_Usr_Id
70865       , TRUNC(SYSDATE)
70866       , TRUNC(SYSDATE)
70867       , xla_environment_pkg.g_Usr_Id
70868       , xla_environment_pkg.g_Login_Id
70869       , TRUNC(SYSDATE)
70870       , xla_environment_pkg.g_Prog_Appl_Id
70871       , xla_environment_pkg.g_Prog_Id
70872       , xla_environment_pkg.g_Req_Id
70873   FROM (
70874        SELECT xet.event_id                  event_id
70875             , l5.line_number                 line_number
70876             , CASE r
70877                WHEN 1 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70878                 WHEN 2 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70879                 WHEN 3 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70880                 WHEN 4 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70881                 WHEN 5 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70882                 WHEN 6 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70883                 WHEN 7 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70887                 WHEN 11 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70884                 WHEN 8 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70885                 WHEN 9 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70886                 WHEN 10 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70888                 WHEN 12 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70889                 WHEN 13 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70890                 WHEN 14 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70891                 WHEN 15 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70892                 WHEN 16 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70893                 WHEN 17 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70894                 WHEN 18 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70895                 WHEN 19 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70896                 WHEN 20 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70897                 WHEN 21 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70898                 WHEN 22 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
70899                 
70900                ELSE null
70901               END                           object_name
70902             , CASE r
70903                 WHEN 1 THEN 'LINE' 
70904                 WHEN 2 THEN 'LINE' 
70905                 WHEN 3 THEN 'LINE' 
70906                 WHEN 4 THEN 'LINE' 
70907                 WHEN 5 THEN 'LINE' 
70908                 WHEN 6 THEN 'LINE' 
70909                 WHEN 7 THEN 'LINE' 
70910                 WHEN 8 THEN 'LINE' 
70911                 WHEN 9 THEN 'LINE' 
70912                 WHEN 10 THEN 'LINE' 
70913                 WHEN 11 THEN 'LINE' 
70914                 WHEN 12 THEN 'LINE' 
70915                 WHEN 13 THEN 'LINE' 
70916                 WHEN 14 THEN 'LINE' 
70917                 WHEN 15 THEN 'LINE' 
70918                 WHEN 16 THEN 'LINE' 
70919                 WHEN 17 THEN 'LINE' 
70920                 WHEN 18 THEN 'LINE' 
70921                 WHEN 19 THEN 'LINE' 
70922                 WHEN 20 THEN 'LINE' 
70923                 WHEN 21 THEN 'LINE' 
70924                 WHEN 22 THEN 'LINE' 
70925                 
70926                 ELSE null
70927               END                           object_type_code
70928             , CASE r
70929                 WHEN 1 THEN '222' 
70930                 WHEN 2 THEN '222' 
70931                 WHEN 3 THEN '222' 
70932                 WHEN 4 THEN '222' 
70933                 WHEN 5 THEN '222' 
70934                 WHEN 6 THEN '222' 
70935                 WHEN 7 THEN '222' 
70936                 WHEN 8 THEN '222' 
70937                 WHEN 9 THEN '222' 
70938                 WHEN 10 THEN '222' 
70939                 WHEN 11 THEN '222' 
70940                 WHEN 12 THEN '222' 
70941                 WHEN 13 THEN '222' 
70942                 WHEN 14 THEN '222' 
70943                 WHEN 15 THEN '222' 
70944                 WHEN 16 THEN '222' 
70945                 WHEN 17 THEN '222' 
70946                 WHEN 18 THEN '222' 
70947                 WHEN 19 THEN '222' 
70948                 WHEN 20 THEN '222' 
70949                 WHEN 21 THEN '222' 
70950                 WHEN 22 THEN '222' 
70951                 
70952                 ELSE null
70953               END                           source_application_id
70954             , 'S'             source_type_code
70955             , CASE r
70956                 WHEN 1 THEN 'JLBR_BORDERO_TYPE' 
70957                 WHEN 2 THEN 'JLBR_CD_BANK_CHARGES_CCID' 
70958                 WHEN 3 THEN 'JLBR_CD_BIL_UND_COLL_CCID' 
70959                 WHEN 4 THEN 'JLBR_CD_CASH_CCID' 
70960                 WHEN 5 THEN 'JLBR_CD_COLL_ENDRSMNT_CCID' 
70961                 WHEN 6 THEN 'JLBR_DISTRIBUTION_TYPE' 
70962                 WHEN 7 THEN 'JLBR_ACCT_REVERSING_OPTN' 
70963                 WHEN 8 THEN 'JLBR_PRIOR_DIST_LINK_TYPE' 
70964                 WHEN 9 THEN 'JLBR_PRIOR_DIST_ID' 
70965                 WHEN 10 THEN 'JLBR_PRIOR_DOCUMENT_ID' 
70966                 WHEN 11 THEN 'JLBR_PRIOR_OCCURRENCE_ID' 
70967                 WHEN 12 THEN 'JLBR_DISTRIBUTION_ID' 
70968                 WHEN 13 THEN 'JLBR_DISTRIBUTION_LINK_TYPE' 
70969                 WHEN 14 THEN 'JLBR_ENTERED_AMT' 
70970                 WHEN 15 THEN 'JLBR_ENTERED_CURRENCY_CODE' 
70971                 WHEN 16 THEN 'JLBR_CONVERSION_DATE' 
70972                 WHEN 17 THEN 'JLBR_CONVERSION_RATE' 
70973                 WHEN 18 THEN 'JLBR_CONVERSION_RATE_TYPE' 
70974                 WHEN 19 THEN 'JLBR_ACCTD_AMT' 
70975                 WHEN 20 THEN 'JLBR_REVERSED_DIST_ID' 
70976                 WHEN 21 THEN 'JLBR_REVERSED_DIST_LINK_TYPE' 
70977                 WHEN 22 THEN 'JLBR_BANK_OCC_TYPE' 
70978                 
70979                 ELSE null
70980               END                           source_code
70981             , CASE r
70982                 WHEN 1 THEN TO_CHAR(l5.JLBR_BORDERO_TYPE)
70983                 WHEN 2 THEN TO_CHAR(l5.JLBR_CD_BANK_CHARGES_CCID)
70984                 WHEN 3 THEN TO_CHAR(l5.JLBR_CD_BIL_UND_COLL_CCID)
70985                 WHEN 4 THEN TO_CHAR(l5.JLBR_CD_CASH_CCID)
70986                 WHEN 5 THEN TO_CHAR(l5.JLBR_CD_COLL_ENDRSMNT_CCID)
70987                 WHEN 6 THEN TO_CHAR(l5.JLBR_DISTRIBUTION_TYPE)
70988                 WHEN 7 THEN TO_CHAR(l5.JLBR_ACCT_REVERSING_OPTN)
70989                 WHEN 8 THEN TO_CHAR(l5.JLBR_PRIOR_DIST_LINK_TYPE)
70990                 WHEN 9 THEN TO_CHAR(l5.JLBR_PRIOR_DIST_ID)
70991                 WHEN 10 THEN TO_CHAR(l5.JLBR_PRIOR_DOCUMENT_ID)
70992                 WHEN 11 THEN TO_CHAR(l5.JLBR_PRIOR_OCCURRENCE_ID)
70996                 WHEN 15 THEN TO_CHAR(l5.JLBR_ENTERED_CURRENCY_CODE)
70993                 WHEN 12 THEN TO_CHAR(l5.JLBR_DISTRIBUTION_ID)
70994                 WHEN 13 THEN TO_CHAR(l5.JLBR_DISTRIBUTION_LINK_TYPE)
70995                 WHEN 14 THEN TO_CHAR(l5.JLBR_ENTERED_AMT)
70997                 WHEN 16 THEN TO_CHAR(l5.JLBR_CONVERSION_DATE)
70998                 WHEN 17 THEN TO_CHAR(l5.JLBR_CONVERSION_RATE)
70999                 WHEN 18 THEN TO_CHAR(l5.JLBR_CONVERSION_RATE_TYPE)
71000                 WHEN 19 THEN TO_CHAR(l5.JLBR_ACCTD_AMT)
71001                 WHEN 20 THEN TO_CHAR(l5.JLBR_REVERSED_DIST_ID)
71002                 WHEN 21 THEN TO_CHAR(l5.JLBR_REVERSED_DIST_LINK_TYPE)
71003                 WHEN 22 THEN TO_CHAR(l5.JLBR_BANK_OCC_TYPE)
71004                 
71005                 ELSE null
71006               END                           source_value
71007             , CASE r
71008                 WHEN 1 THEN fvl13.meaning
71009                 WHEN 6 THEN fvl77.meaning
71010                 WHEN 7 THEN fvl78.meaning
71011                 WHEN 22 THEN fvl96.meaning
71012                 
71013                 ELSE null
71014               END               source_meaning
71015          FROM  xla_events_gt     xet  
71016         , JL_BR_AR_COLL_DOC_DISTS_L_V  l5
71017   , fnd_lookup_values    fvl13
71018   , fnd_lookup_values    fvl77
71019   , fnd_lookup_values    fvl78
71020   , fnd_lookup_values    fvl96
71021             , (select rownum r from all_objects where rownum <= 22 and owner = p_apps_owner)
71022         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
71023           AND xet.event_class_code = C_EVENT_CLASS_CODE
71024             AND l5.event_id          = xet.event_id
71025    AND fvl13.lookup_type(+)         = 'JLBR_AR_BORDERO_TYPE'
71026   AND fvl13.lookup_code(+)         = l5.JLBR_BORDERO_TYPE
71027   AND fvl13.view_application_id(+) = 0
71028   AND fvl13.language(+)            = USERENV('LANG')
71029      AND fvl77.lookup_type(+)         = 'JLBR_AR_DIST_TYPE'
71030   AND fvl77.lookup_code(+)         = l5.JLBR_DISTRIBUTION_TYPE
71031   AND fvl77.view_application_id(+) = 0
71032   AND fvl77.language(+)            = USERENV('LANG')
71033      AND fvl78.lookup_type(+)         = 'YES_NO'
71034   AND fvl78.lookup_code(+)         = l5.JLBR_ACCT_REVERSING_OPTN
71035   AND fvl78.view_application_id(+) = 0
71036   AND fvl78.language(+)            = USERENV('LANG')
71037      AND fvl96.lookup_type(+)         = 'JLBR_AR_BANK_OCCURRENCE_TYPE'
71038   AND fvl96.lookup_code(+)         = l5.JLBR_BANK_OCC_TYPE
71039   AND fvl96.view_application_id(+) = 0
71040   AND fvl96.language(+)            = USERENV('LANG')
71041   
71042 )
71043 ;
71044 --
71045 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71046 
71047       trace
71048          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
71049          ,p_level    => C_LEVEL_STATEMENT
71050          ,p_module   => l_log_module);
71051 
71052 END IF;
71053 
71054 
71055 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71056       trace
71057          (p_msg      => 'END of insert_sources_146'
71058          ,p_level    => C_LEVEL_PROCEDURE
71059          ,p_module   => l_log_module);
71060 END IF;
71061 EXCEPTION
71062   WHEN xla_exceptions_pkg.application_exception THEN
71063       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
71064             trace
71065                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
71066                ,p_level    => C_LEVEL_EXCEPTION
71067                ,p_module   => l_log_module);
71068       END IF;
71069       RAISE;
71070   WHEN OTHERS THEN
71071       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
71072             trace
71073                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
71074                ,p_level    => C_LEVEL_EXCEPTION
71075                ,p_module   => l_log_module);
71076        END IF;
71077        xla_exceptions_pkg.raise_message
71078            (p_location => 'XLA_00222_AAD_S_000002_PKG.insert_sources_146');
71079 END insert_sources_146;
71080 --
71081 
71082 ---------------------------------------
71083 --
71084 -- PRIVATE FUNCTION
71085 --         EventClass_146
71086 --
71087 ----------------------------------------
71088 --
71089 FUNCTION EventClass_146
71090        (p_application_id         IN NUMBER
71091        ,p_base_ledger_id         IN NUMBER
71092        ,p_target_ledger_id       IN NUMBER
71093        ,p_language               IN VARCHAR2
71094        ,p_currency_code          IN VARCHAR2
71095        ,p_sla_ledger_id          IN NUMBER
71096        ,p_pad_start_date         IN DATE
71097        ,p_pad_end_date           IN DATE
71098        ,p_primary_ledger_id      IN NUMBER)
71099 RETURN BOOLEAN IS
71100 --
71101 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'COLLECTION_OCC_DOCUMENT_ALL';
71102 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'COLLECTION_OCC_DOCUMENT';
71103 
71104 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
71105 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
71106 --
71107 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
71108 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
71109 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
71110 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
71111 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
71115 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
71112 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
71113 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
71114 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
71116 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
71117 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
71118 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
71119 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
71120 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
71121 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
71122 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
71123 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
71124 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
71125 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
71126 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
71127 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
71128 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
71129 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
71130 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
71131 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
71132 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
71133 
71134 l_event_id                             NUMBER;
71135 l_previous_event_id                    NUMBER;
71136 l_first_event_id                       NUMBER;
71137 l_last_event_id                        NUMBER;
71138 
71139 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
71140 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
71141 --
71142 --
71143 l_result                    BOOLEAN := TRUE;
71144 l_rows                      NUMBER  := 1000;
71145 l_event_type_name           VARCHAR2(80) := 'All';
71146 l_event_class_name          VARCHAR2(80) := 'Collection Occurrence Documents';
71147 l_description               VARCHAR2(4000);
71148 l_transaction_reversal      NUMBER;
71149 l_ae_header_id              NUMBER;
71150 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
71151 l_log_module                VARCHAR2(240);
71152 --
71153 l_acct_reversal_source      VARCHAR2(30);
71154 l_trx_reversal_source       VARCHAR2(30);
71155 
71156 l_continue_with_lines       BOOLEAN := TRUE;
71157 --
71158 l_acc_rev_gl_date_source    DATE;                      -- 4262811
71159 --
71160 type t_array_event_id is table of number index by binary_integer;
71161 
71162 l_rec_array_event                    t_rec_array_event;
71163 l_null_rec_array_event               t_rec_array_event;
71164 l_array_ae_header_id                 xla_number_array_type;
71165 l_actual_flag                        VARCHAR2(1) := NULL;
71166 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
71167 l_balance_type_code                  VARCHAR2(1) :=NULL;
71168 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
71169 
71170 --
71171 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
71172 --
71173 
71174 TYPE t_array_source_10 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_BANK_OCC_DESC%TYPE INDEX BY BINARY_INTEGER;
71175 TYPE t_array_source_11 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_DOCUMENT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
71176 TYPE t_array_source_12 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_TRADE_NOTE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
71177 TYPE t_array_source_14 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_PARTY_NAME%TYPE INDEX BY BINARY_INTEGER;
71178 TYPE t_array_source_15 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_PARTY_NUMBER%TYPE INDEX BY BINARY_INTEGER;
71179 TYPE t_array_source_16 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BNK_ACCOUNT_NAME%TYPE INDEX BY BINARY_INTEGER;
71180 TYPE t_array_source_17 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BNK_ACCOUNT_NUM%TYPE INDEX BY BINARY_INTEGER;
71181 TYPE t_array_source_18 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BANK_NAME%TYPE INDEX BY BINARY_INTEGER;
71182 TYPE t_array_source_19 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BANK_NUM%TYPE INDEX BY BINARY_INTEGER;
71183 TYPE t_array_source_49 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
71184 TYPE t_array_source_50 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
71185 TYPE t_array_source_51 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
71186 TYPE t_array_source_93 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_OCCURRENCE_ID%TYPE INDEX BY BINARY_INTEGER;
71187 TYPE t_array_source_121 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_EXCHG_GAIN_CCID%TYPE INDEX BY BINARY_INTEGER;
71188 TYPE t_array_source_122 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_EXCHG_LOSS_CCID%TYPE INDEX BY BINARY_INTEGER;
71189 TYPE t_array_source_123 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_GL_DATE%TYPE INDEX BY BINARY_INTEGER;
71190 TYPE t_array_source_124 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_TRANSFER_TO_GL_FLAG%TYPE INDEX BY BINARY_INTEGER;
71191 
71192 TYPE t_array_source_13 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_BORDERO_TYPE%TYPE INDEX BY BINARY_INTEGER;
71193 TYPE t_array_source_25 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_BANK_CHARGES_CCID%TYPE INDEX BY BINARY_INTEGER;
71194 TYPE t_array_source_26 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_BIL_UND_COLL_CCID%TYPE INDEX BY BINARY_INTEGER;
71198 TYPE t_array_source_78 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ACCT_REVERSING_OPTN%TYPE INDEX BY BINARY_INTEGER;
71195 TYPE t_array_source_28 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_CASH_CCID%TYPE INDEX BY BINARY_INTEGER;
71196 TYPE t_array_source_29 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_COLL_ENDRSMNT_CCID%TYPE INDEX BY BINARY_INTEGER;
71197 TYPE t_array_source_77 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
71199 TYPE t_array_source_80 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
71200 TYPE t_array_source_82 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
71201 TYPE t_array_source_83 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_DOCUMENT_ID%TYPE INDEX BY BINARY_INTEGER;
71202 TYPE t_array_source_84 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_OCCURRENCE_ID%TYPE INDEX BY BINARY_INTEGER;
71203 TYPE t_array_source_85 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
71204 TYPE t_array_source_86 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_DISTRIBUTION_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
71205 TYPE t_array_source_87 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ENTERED_AMT%TYPE INDEX BY BINARY_INTEGER;
71206 TYPE t_array_source_88 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
71207 TYPE t_array_source_89 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
71208 TYPE t_array_source_90 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
71209 TYPE t_array_source_91 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CONVERSION_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
71210 TYPE t_array_source_92 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
71211 TYPE t_array_source_94 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_REVERSED_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
71212 TYPE t_array_source_95 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_REVERSED_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
71213 TYPE t_array_source_96 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_BANK_OCC_TYPE%TYPE INDEX BY BINARY_INTEGER;
71214 
71215 l_array_source_10              t_array_source_10;
71216 l_array_source_11              t_array_source_11;
71217 l_array_source_12              t_array_source_12;
71218 l_array_source_14              t_array_source_14;
71219 l_array_source_15              t_array_source_15;
71220 l_array_source_16              t_array_source_16;
71221 l_array_source_17              t_array_source_17;
71222 l_array_source_18              t_array_source_18;
71223 l_array_source_19              t_array_source_19;
71224 l_array_source_49              t_array_source_49;
71225 l_array_source_50              t_array_source_50;
71226 l_array_source_51              t_array_source_51;
71227 l_array_source_93              t_array_source_93;
71228 l_array_source_121              t_array_source_121;
71229 l_array_source_122              t_array_source_122;
71230 l_array_source_123              t_array_source_123;
71231 l_array_source_124              t_array_source_124;
71232 l_array_source_124_meaning      t_array_lookup_meaning;
71233 
71234 l_array_source_13      t_array_source_13;
71235 l_array_source_13_meaning      t_array_lookup_meaning;
71236 l_array_source_25      t_array_source_25;
71237 l_array_source_26      t_array_source_26;
71238 l_array_source_28      t_array_source_28;
71239 l_array_source_29      t_array_source_29;
71240 l_array_source_77      t_array_source_77;
71241 l_array_source_77_meaning      t_array_lookup_meaning;
71242 l_array_source_78      t_array_source_78;
71243 l_array_source_78_meaning      t_array_lookup_meaning;
71244 l_array_source_80      t_array_source_80;
71245 l_array_source_82      t_array_source_82;
71246 l_array_source_83      t_array_source_83;
71247 l_array_source_84      t_array_source_84;
71248 l_array_source_85      t_array_source_85;
71249 l_array_source_86      t_array_source_86;
71250 l_array_source_87      t_array_source_87;
71251 l_array_source_88      t_array_source_88;
71252 l_array_source_89      t_array_source_89;
71253 l_array_source_90      t_array_source_90;
71254 l_array_source_91      t_array_source_91;
71255 l_array_source_92      t_array_source_92;
71256 l_array_source_94      t_array_source_94;
71257 l_array_source_95      t_array_source_95;
71258 l_array_source_96      t_array_source_96;
71259 l_array_source_96_meaning      t_array_lookup_meaning;
71260 
71261 --
71262 CURSOR header_cur
71263 IS
71264 SELECT /*+ leading(xet) cardinality(xet,1) */
71265 -- Event Class Code: COLLECTION_OCC_DOCUMENT
71266     xet.entity_id
71267    ,xet.legal_entity_id
71268    ,xet.entity_code
71269    ,xet.transaction_number
71270    ,xet.event_id
71271    ,xet.event_class_code
71272    ,xet.event_type_code
71273    ,xet.event_number
71274    ,xet.event_date
71275    ,xet.transaction_date
71276    ,xet.reference_num_1
71277    ,xet.reference_num_2
71278    ,xet.reference_num_3
71279    ,xet.reference_num_4
71280    ,xet.reference_char_1
71281    ,xet.reference_char_2
71282    ,xet.reference_char_3
71283    ,xet.reference_char_4
71284    ,xet.reference_date_1
71285    ,xet.reference_date_2
71286    ,xet.reference_date_3
71287    ,xet.reference_date_4
71288    ,xet.event_created_by
71289    ,xet.budgetary_control_flag 
71290   , h6.JLBR_BANK_OCC_DESC    source_10
71291   , h6.JLBR_DOCUMENT_NUMBER    source_11
71292   , h6.JLBR_TRADE_NOTE_NUMBER    source_12
71293   , h1.BILL_CUST_PARTY_NAME    source_14
71294   , h1.BILL_CUST_PARTY_NUMBER    source_15
71295   , h3.RMT_BNK_ACCOUNT_NAME    source_16
71299   , h1.BILL_CUST_ACCOUNT_ID    source_49
71296   , h3.RMT_BNK_ACCOUNT_NUM    source_17
71297   , h3.RMT_BANK_NAME    source_18
71298   , h3.RMT_BANK_NUM    source_19
71300   , h2.BILL_USES_SITE_USE_ID    source_50
71301   , h4.XLA_PARTY_TYPE    source_51
71302   , h6.JLBR_OCCURRENCE_ID    source_93
71303   , h6.JLBR_EXCHG_GAIN_CCID    source_121
71304   , h6.JLBR_EXCHG_LOSS_CCID    source_122
71305   , h6.JLBR_GL_DATE    source_123
71306   , h6.JLBR_TRANSFER_TO_GL_FLAG    source_124
71307   , fvl124.meaning   source_124_meaning
71308   FROM xla_events_gt     xet 
71309   , AR_BILL_TO_CUSTOMERS_S_V  h1
71310   , AR_BILL_TO_SITE_USES_S_V  h2
71311   , AR_REMIT_BANK_ACCT_H_V  h3
71312   , AR_TRANSACTIONS_S_V  h4
71313   , JL_BR_AR_COLL_OCC_DOCS_H_V  h6
71314   , fnd_lookup_values    fvl124
71315  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
71316    and xet.event_class_code = C_EVENT_CLASS_CODE
71317    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
71318   AND h1.event_id (+) = h3.event_id
71319   AND h2.event_id (+) = h3.event_id
71320   AND h4.event_id (+) = h3.event_id
71321   AND h6.event_id  = h3.event_id
71322    AND fvl124.lookup_type(+)         = 'YES_NO'
71323   AND fvl124.lookup_code(+)         = h6.JLBR_TRANSFER_TO_GL_FLAG
71324   AND fvl124.view_application_id(+) = 0
71325   AND fvl124.language(+)            = USERENV('LANG')
71326   
71327  ORDER BY event_id
71328 ;
71329 
71330 
71331 --
71332 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
71333 IS
71334 SELECT  /*+ leading(xet) cardinality(xet,1) */
71335 -- Event Class Code: COLLECTION_OCC_DOCUMENT
71336     xet.entity_id
71337    ,xet.legal_entity_id
71338    ,xet.entity_code
71339    ,xet.transaction_number
71340    ,xet.event_id
71341    ,xet.event_class_code
71342    ,xet.event_type_code
71343    ,xet.event_number
71344    ,xet.event_date
71345    ,xet.transaction_date
71346    ,xet.reference_num_1
71347    ,xet.reference_num_2
71348    ,xet.reference_num_3
71349    ,xet.reference_num_4
71350    ,xet.reference_char_1
71351    ,xet.reference_char_2
71352    ,xet.reference_char_3
71353    ,xet.reference_char_4
71354    ,xet.reference_date_1
71355    ,xet.reference_date_2
71356    ,xet.reference_date_3
71357    ,xet.reference_date_4
71358    ,xet.event_created_by
71359    ,xet.budgetary_control_flag
71360  , l5.LINE_NUMBER  
71361   , l5.JLBR_BORDERO_TYPE    source_13
71362   , fvl13.meaning   source_13_meaning
71363   , l5.JLBR_CD_BANK_CHARGES_CCID    source_25
71364   , l5.JLBR_CD_BIL_UND_COLL_CCID    source_26
71365   , l5.JLBR_CD_CASH_CCID    source_28
71366   , l5.JLBR_CD_COLL_ENDRSMNT_CCID    source_29
71367   , l5.JLBR_DISTRIBUTION_TYPE    source_77
71368   , fvl77.meaning   source_77_meaning
71369   , l5.JLBR_ACCT_REVERSING_OPTN    source_78
71370   , fvl78.meaning   source_78_meaning
71371   , l5.JLBR_PRIOR_DIST_LINK_TYPE    source_80
71372   , l5.JLBR_PRIOR_DIST_ID    source_82
71373   , l5.JLBR_PRIOR_DOCUMENT_ID    source_83
71374   , l5.JLBR_PRIOR_OCCURRENCE_ID    source_84
71375   , l5.JLBR_DISTRIBUTION_ID    source_85
71376   , l5.JLBR_DISTRIBUTION_LINK_TYPE    source_86
71377   , l5.JLBR_ENTERED_AMT    source_87
71378   , l5.JLBR_ENTERED_CURRENCY_CODE    source_88
71379   , l5.JLBR_CONVERSION_DATE    source_89
71380   , l5.JLBR_CONVERSION_RATE    source_90
71381   , l5.JLBR_CONVERSION_RATE_TYPE    source_91
71382   , l5.JLBR_ACCTD_AMT    source_92
71383   , l5.JLBR_REVERSED_DIST_ID    source_94
71384   , l5.JLBR_REVERSED_DIST_LINK_TYPE    source_95
71385   , l5.JLBR_BANK_OCC_TYPE    source_96
71386   , fvl96.meaning   source_96_meaning
71387   FROM xla_events_gt     xet 
71388   , JL_BR_AR_COLL_DOC_DISTS_L_V  l5
71389   , fnd_lookup_values    fvl13
71390   , fnd_lookup_values    fvl77
71391   , fnd_lookup_values    fvl78
71392   , fnd_lookup_values    fvl96
71393  WHERE xet.event_id between x_first_event_id and x_last_event_id
71394    and xet.event_date between p_pad_start_date and p_pad_end_date
71395    and xet.event_class_code = C_EVENT_CLASS_CODE
71396    and xet.event_status_code <> 'N'   AND l5.event_id      = xet.event_id
71397    AND fvl13.lookup_type(+)         = 'JLBR_AR_BORDERO_TYPE'
71398   AND fvl13.lookup_code(+)         = l5.JLBR_BORDERO_TYPE
71399   AND fvl13.view_application_id(+) = 0
71400   AND fvl13.language(+)            = USERENV('LANG')
71401      AND fvl77.lookup_type(+)         = 'JLBR_AR_DIST_TYPE'
71402   AND fvl77.lookup_code(+)         = l5.JLBR_DISTRIBUTION_TYPE
71403   AND fvl77.view_application_id(+) = 0
71404   AND fvl77.language(+)            = USERENV('LANG')
71405      AND fvl78.lookup_type(+)         = 'YES_NO'
71406   AND fvl78.lookup_code(+)         = l5.JLBR_ACCT_REVERSING_OPTN
71407   AND fvl78.view_application_id(+) = 0
71408   AND fvl78.language(+)            = USERENV('LANG')
71409      AND fvl96.lookup_type(+)         = 'JLBR_AR_BANK_OCCURRENCE_TYPE'
71410   AND fvl96.lookup_code(+)         = l5.JLBR_BANK_OCC_TYPE
71411   AND fvl96.view_application_id(+) = 0
71412   AND fvl96.language(+)            = USERENV('LANG')
71413   ;
71414 
71415 --
71416 BEGIN
71417 IF g_log_enabled THEN
71418    l_log_module := C_DEFAULT_MODULE||'.EventClass_146';
71419 END IF;
71420 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
71421    trace
71422       (p_msg      => 'BEGIN of EventClass_146'
71423       ,p_level    => C_LEVEL_PROCEDURE
71424       ,p_module   => l_log_module);
71425 END IF;
71426 
71427 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71431                      ' - p_target_ledger_id  = '||p_target_ledger_id||
71428    trace
71429       (p_msg      => 'p_application_id = '||p_application_id||
71430                      ' - p_base_ledger_id = '||p_base_ledger_id||
71432                      ' - p_language = '||p_language||
71433                      ' - p_currency_code = '||p_currency_code||
71434                      ' - p_sla_ledger_id = '||p_sla_ledger_id
71435       ,p_level    => C_LEVEL_STATEMENT
71436       ,p_module   => l_log_module);
71437 END IF;
71438 --
71439 -- initialze arrays
71440 --
71441 g_array_event.DELETE;
71442 l_rec_array_event := l_null_rec_array_event;
71443 --
71444 --------------------------------------
71445 -- 4262811 Initialze MPA Line Number
71446 --------------------------------------
71447 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
71448 
71449 --
71450 
71451 --
71452 OPEN header_cur;
71453 --
71454 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71455    trace
71456    (p_msg      => 'SQL - FETCH header_cur'
71457    ,p_level    => C_LEVEL_STATEMENT
71458    ,p_module   => l_log_module);
71459 END IF;
71460 --
71461 LOOP
71462 FETCH header_cur BULK COLLECT INTO
71463         l_array_entity_id
71464       , l_array_legal_entity_id
71465       , l_array_entity_code
71466       , l_array_transaction_num
71467       , l_array_event_id
71468       , l_array_class_code
71469       , l_array_event_type
71470       , l_array_event_number
71471       , l_array_event_date
71472       , l_array_transaction_date
71473       , l_array_reference_num_1
71474       , l_array_reference_num_2
71475       , l_array_reference_num_3
71476       , l_array_reference_num_4
71477       , l_array_reference_char_1
71478       , l_array_reference_char_2
71479       , l_array_reference_char_3
71480       , l_array_reference_char_4
71481       , l_array_reference_date_1
71482       , l_array_reference_date_2
71483       , l_array_reference_date_3
71484       , l_array_reference_date_4
71485       , l_array_event_created_by
71486       , l_array_budgetary_control_flag 
71487       , l_array_source_10
71488       , l_array_source_11
71489       , l_array_source_12
71490       , l_array_source_14
71491       , l_array_source_15
71492       , l_array_source_16
71493       , l_array_source_17
71494       , l_array_source_18
71495       , l_array_source_19
71496       , l_array_source_49
71497       , l_array_source_50
71498       , l_array_source_51
71499       , l_array_source_93
71500       , l_array_source_121
71501       , l_array_source_122
71502       , l_array_source_123
71503       , l_array_source_124
71504       , l_array_source_124_meaning
71505       LIMIT l_rows;
71506 --
71507 IF (C_LEVEL_EVENT >= g_log_level) THEN
71508    trace
71509    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
71510    ,p_level    => C_LEVEL_EVENT
71511    ,p_module   => l_log_module);
71512 END IF;
71513 --
71514 EXIT WHEN l_array_entity_id.COUNT = 0;
71515 
71516 -- initialize arrays
71517 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
71518 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
71519 
71520 --
71521 -- Bug 4458708
71522 --
71523 XLA_AE_LINES_PKG.g_LineNumber := 0;
71524 
71525 
71526 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
71527 g_last_hdr_idx := l_array_event_id.LAST;
71528 --
71529 -- loop for the headers. Each iteration is for each header extract row
71530 -- fetched in header cursor
71531 --
71532 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
71533 
71534 --
71535 -- set event info as cache for other routines to refer event attributes
71536 --
71537 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
71538    (p_application_id           => p_application_id
71539    ,p_primary_ledger_id        => p_primary_ledger_id
71540    ,p_base_ledger_id           => p_base_ledger_id
71541    ,p_target_ledger_id         => p_target_ledger_id
71542    ,p_entity_id                => l_array_entity_id(hdr_idx)
71543    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
71544    ,p_entity_code              => l_array_entity_code(hdr_idx)
71545    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
71546    ,p_event_id                 => l_array_event_id(hdr_idx)
71547    ,p_event_class_code         => l_array_class_code(hdr_idx)
71548    ,p_event_type_code          => l_array_event_type(hdr_idx)
71549    ,p_event_number             => l_array_event_number(hdr_idx)
71550    ,p_event_date               => l_array_event_date(hdr_idx)
71551    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
71552    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
71553    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
71554    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
71555    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
71556    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
71557    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
71558    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
71559    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
71560    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
71561    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
71565    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
71562    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
71563    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
71564    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
71566 
71567 --
71568 -- set the status of entry to C_VALID (0)
71569 --
71570 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
71571 
71572 --
71573 -- initialize a row for ae header
71574 --
71575 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
71576 
71577 l_event_id := l_array_event_id(hdr_idx);
71578 
71579 --
71580 -- storing the hdr_idx for event. May be used by line cursor.
71581 --
71582 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
71583 
71584 --
71585 -- store sources from header extract. This can be improved to
71586 -- store only those sources from header extract that may be used in lines
71587 --
71588 
71589 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
71590 g_array_event(l_event_id).array_value_num('source_11') := l_array_source_11(hdr_idx);
71591 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
71592 g_array_event(l_event_id).array_value_char('source_14') := l_array_source_14(hdr_idx);
71593 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
71594 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
71595 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
71596 g_array_event(l_event_id).array_value_char('source_18') := l_array_source_18(hdr_idx);
71597 g_array_event(l_event_id).array_value_char('source_19') := l_array_source_19(hdr_idx);
71598 g_array_event(l_event_id).array_value_num('source_49') := l_array_source_49(hdr_idx);
71599 g_array_event(l_event_id).array_value_num('source_50') := l_array_source_50(hdr_idx);
71600 g_array_event(l_event_id).array_value_char('source_51') := l_array_source_51(hdr_idx);
71601 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
71602 g_array_event(l_event_id).array_value_num('source_121') := l_array_source_121(hdr_idx);
71603 g_array_event(l_event_id).array_value_num('source_122') := l_array_source_122(hdr_idx);
71604 g_array_event(l_event_id).array_value_date('source_123') := l_array_source_123(hdr_idx);
71605 g_array_event(l_event_id).array_value_char('source_124') := l_array_source_124(hdr_idx);
71606 g_array_event(l_event_id).array_value_char('source_124_meaning') := l_array_source_124_meaning(hdr_idx);
71607 
71608 --
71609 -- initilaize the status of ae headers for diffrent balance types
71610 -- the status is initialised to C_NOT_CREATED (2)
71611 --
71612 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
71613 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
71614 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
71615 
71616 --
71617 -- call api to validate and store accounting attributes for header
71618 --
71619 
71620 ------------------------------------------------------------
71621 -- Accrual Reversal : to get date for Standard Source (NONE)
71622 ------------------------------------------------------------
71623 l_acc_rev_gl_date_source := NULL;
71624 
71625      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
71626       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_123');
71627      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
71628       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_124');
71629 
71630 
71631 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
71632 
71633 XLA_AE_HEADER_PKG.SetJeCategoryName;
71634 
71635 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
71636 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
71637 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
71638 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
71639 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
71640 
71641 
71642 --
71643 xla_ae_header_pkg.SetHdrDescription(
71644    p_description => Description_15 (
71645    p_application_id => p_application_id 
71646  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
71647  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
71648  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
71649  , p_source_14 => g_array_event(l_event_id).array_value_char('source_14')
71650  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
71651  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
71652  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
71653  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
71654  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
71655    )
71656 );
71657 --
71658 
71659 -- No header level analytical criteria
71660 
71661 --
71662 --accounting attribute enhancement, bug 3612931
71663 --
71664 l_trx_reversal_source := SUBSTR(NULL, 1,30);
71665 
71669    xla_accounting_err_pkg.build_message
71666 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
71667    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
71668 
71670       (p_appli_s_name            => 'XLA'
71671       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
71672       ,p_token_1                 => 'ACCT_ATTR_NAME'
71673       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
71674       ,p_token_2                 => 'PRODUCT_NAME'
71675       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
71676       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
71677       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
71678       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
71679 
71680 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
71681    --
71682    -- following sets the accounting attributes needed to reverse
71683    -- accounting for a distributeion
71684    --
71685    xla_ae_lines_pkg.SetTrxReversalAttrs
71686       (p_event_id              => l_event_id
71687       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
71688       ,p_trx_reversal_source   => l_trx_reversal_source);
71689 
71690 END IF;
71691 
71692 
71693 ----------------------------------------------------------------
71694 -- 4262811 -  update the header statuses to invalid in need be
71695 ----------------------------------------------------------------
71696 --
71697 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
71698 
71699 
71700   -----------------------------------------------
71701   -- No accrual reversal for the event class/type
71702   -----------------------------------------------
71703 ----------------------------------------------------------------
71704 
71705 --
71706 -- this ends the header loop iteration for one bulk fetch
71707 --
71708 END LOOP;
71709 
71710 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
71711 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
71712 
71713 --
71714 -- insert dummy rows into lines gt table that were created due to
71715 -- transaction reversals
71716 --
71717 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
71718    l_result := XLA_AE_LINES_PKG.InsertLines;
71719 END IF;
71720 
71721 --
71722 -- reset the temp_line_num for each set of events fetched from header
71723 -- cursor rather than doing it for each new event in line cursor
71724 -- Bug 3939231
71725 --
71726 xla_ae_lines_pkg.g_temp_line_num := 0;
71727 
71728 
71729 
71730 --
71731 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
71732 --
71733 --
71734 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71735 
71736       trace
71737          (p_msg      => 'SQL - FETCH line_cur'
71738          ,p_level    => C_LEVEL_STATEMENT
71739          ,p_module   => l_log_module);
71740 
71741 END IF;
71742 --
71743 --
71744 LOOP
71745   --
71746   FETCH line_cur BULK COLLECT INTO
71747         l_array_entity_id
71748       , l_array_legal_entity_id
71749       , l_array_entity_code
71750       , l_array_transaction_num
71751       , l_array_event_id
71752       , l_array_class_code
71753       , l_array_event_type
71754       , l_array_event_number
71755       , l_array_event_date
71756       , l_array_transaction_date
71757       , l_array_reference_num_1
71758       , l_array_reference_num_2
71759       , l_array_reference_num_3
71760       , l_array_reference_num_4
71761       , l_array_reference_char_1
71762       , l_array_reference_char_2
71763       , l_array_reference_char_3
71764       , l_array_reference_char_4
71765       , l_array_reference_date_1
71766       , l_array_reference_date_2
71767       , l_array_reference_date_3
71768       , l_array_reference_date_4
71769       , l_array_event_created_by
71770       , l_array_budgetary_control_flag
71771       , l_array_extract_line_num 
71772       , l_array_source_13
71773       , l_array_source_13_meaning
71774       , l_array_source_25
71775       , l_array_source_26
71776       , l_array_source_28
71777       , l_array_source_29
71778       , l_array_source_77
71779       , l_array_source_77_meaning
71780       , l_array_source_78
71781       , l_array_source_78_meaning
71782       , l_array_source_80
71783       , l_array_source_82
71784       , l_array_source_83
71785       , l_array_source_84
71786       , l_array_source_85
71787       , l_array_source_86
71788       , l_array_source_87
71789       , l_array_source_88
71790       , l_array_source_89
71791       , l_array_source_90
71792       , l_array_source_91
71793       , l_array_source_92
71794       , l_array_source_94
71795       , l_array_source_95
71796       , l_array_source_96
71797       , l_array_source_96_meaning
71798       LIMIT l_rows;
71799 
71800   --
71801   IF (C_LEVEL_EVENT >= g_log_level) THEN
71802             trace
71803                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
71804                ,p_level    => C_LEVEL_EVENT
71805                ,p_module   => l_log_module);
71806   END IF;
71807   --
71808   EXIT WHEN l_array_entity_id.count = 0;
71809 
71810   XLA_AE_LINES_PKG.g_rec_lines := null;
71811 
71815 XLA_AE_LINES_PKG.g_LineNumber := 0;
71812 --
71813 -- Bug 4458708
71814 --
71816 --
71817 --
71818 
71819 FOR Idx IN 1..l_array_event_id.count LOOP
71820    --
71821    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
71822    --
71823    l_event_id := l_array_event_id(idx);  -- 5648433
71824 
71825    --
71826    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
71827    --
71828 
71829    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
71830              (g_array_event(l_event_id).array_value_num('header_index'))
71831          ,'N'
71832          ) <> 'Y'
71833    THEN
71834       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
71835          trace
71836             (p_msg      => 'Trancaction revesal option is not Y '
71837             ,p_level    => C_LEVEL_STATEMENT
71838             ,p_module   => l_log_module);
71839       END IF;
71840 
71841 --
71842 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
71843 --
71844 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
71845 --
71846 -- set event info as cache for other routines to refer event attributes
71847 --
71848 
71849 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
71850    l_previous_event_id := l_event_id;
71851 
71852    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
71853       (p_application_id           => p_application_id
71854       ,p_primary_ledger_id        => p_primary_ledger_id
71855       ,p_base_ledger_id           => p_base_ledger_id
71856       ,p_target_ledger_id         => p_target_ledger_id
71857       ,p_entity_id                => l_array_entity_id(Idx)
71858       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
71859       ,p_entity_code              => l_array_entity_code(Idx)
71860       ,p_transaction_num          => l_array_transaction_num(Idx)
71861       ,p_event_id                 => l_array_event_id(Idx)
71862       ,p_event_class_code         => l_array_class_code(Idx)
71863       ,p_event_type_code          => l_array_event_type(Idx)
71864       ,p_event_number             => l_array_event_number(Idx)
71865       ,p_event_date               => l_array_event_date(Idx)
71866       ,p_transaction_date         => l_array_transaction_date(Idx)
71867       ,p_reference_num_1          => l_array_reference_num_1(Idx)
71868       ,p_reference_num_2          => l_array_reference_num_2(Idx)
71869       ,p_reference_num_3          => l_array_reference_num_3(Idx)
71870       ,p_reference_num_4          => l_array_reference_num_4(Idx)
71871       ,p_reference_char_1         => l_array_reference_char_1(Idx)
71872       ,p_reference_char_2         => l_array_reference_char_2(Idx)
71873       ,p_reference_char_3         => l_array_reference_char_3(Idx)
71874       ,p_reference_char_4         => l_array_reference_char_4(Idx)
71875       ,p_reference_date_1         => l_array_reference_date_1(Idx)
71876       ,p_reference_date_2         => l_array_reference_date_2(Idx)
71877       ,p_reference_date_3         => l_array_reference_date_3(Idx)
71878       ,p_reference_date_4         => l_array_reference_date_4(Idx)
71879       ,p_event_created_by         => l_array_event_created_by(Idx)
71880       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
71881        --
71882 END IF;
71883 
71884 
71885 
71886 --
71887 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
71888 
71889 l_acct_reversal_source := SUBSTR(l_array_source_78(Idx), 1,30);
71890 
71891 IF l_continue_with_lines THEN
71892    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
71893       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
71894 
71895       xla_accounting_err_pkg.build_message
71896          (p_appli_s_name            => 'XLA'
71897          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
71898          ,p_token_1                 => 'LINE_NUMBER'
71899          ,p_value_1                 => l_array_extract_line_num(Idx)
71900          ,p_token_2                 => 'PRODUCT_NAME'
71901          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
71902          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
71903          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
71904          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
71905 
71906    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
71907       --
71908       -- following sets the accounting attributes needed to reverse
71909       -- accounting for a distributeion
71910       --
71911 
71912       --
71913       -- 5217187
71914       --
71915       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
71916       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
71917                                        g_array_event(l_event_id).array_value_num('header_index'));
71918       --
71919       --
71920 
71921       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
71922       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_78(Idx);
71923       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
71924       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_85(Idx);
71925       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
71929       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'REVERSED_DISTRIBUTION_ID1';
71926       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_86(Idx);
71927       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'PARTY_TYPE';
71928       l_rec_rev_acct_attrs.array_char_value(5)  := g_array_event(l_event_id).array_value_char('source_51');
71930       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_94(Idx);
71931       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'REVERSED_DISTRIBUTION_TYPE';
71932       l_rec_rev_acct_attrs.array_char_value(7)  := l_array_source_95(Idx);
71933 
71934 
71935       xla_ae_lines_pkg.SetAcctReversalAttrs
71936          (p_event_id             => l_event_id
71937          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
71938          ,p_calculate_acctd_flag => l_calculate_acctd_flag
71939          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
71940    END IF;
71941 
71942    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
71943        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
71944 
71945 --
71946 AcctLineType_67 (
71947  p_application_id  => p_application_id
71948  ,p_event_id     => l_event_id
71949  ,p_calculate_acctd_flag => l_calculate_acctd_flag
71950  ,p_calculate_g_l_flag => l_calculate_g_l_flag
71951  ,p_actual_flag => l_actual_flag
71952  ,p_balance_type_code => l_balance_type_code
71953  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
71954  
71955  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
71956  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
71957  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
71958  , p_source_13 => l_array_source_13(Idx)
71959  , p_source_13_meaning => l_array_source_13_meaning(Idx)
71960  , p_source_25 => l_array_source_25(Idx)
71961  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
71962  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
71963  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
71964  , p_source_77 => l_array_source_77(Idx)
71965  , p_source_77_meaning => l_array_source_77_meaning(Idx)
71966  , p_source_78 => l_array_source_78(Idx)
71967  , p_source_78_meaning => l_array_source_78_meaning(Idx)
71968  , p_source_80 => l_array_source_80(Idx)
71969  , p_source_82 => l_array_source_82(Idx)
71970  , p_source_83 => l_array_source_83(Idx)
71971  , p_source_84 => l_array_source_84(Idx)
71972  , p_source_85 => l_array_source_85(Idx)
71973  , p_source_86 => l_array_source_86(Idx)
71974  , p_source_87 => l_array_source_87(Idx)
71975  , p_source_88 => l_array_source_88(Idx)
71976  , p_source_89 => l_array_source_89(Idx)
71977  , p_source_90 => l_array_source_90(Idx)
71978  , p_source_91 => l_array_source_91(Idx)
71979  , p_source_92 => l_array_source_92(Idx)
71980  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
71981  , p_source_94 => l_array_source_94(Idx)
71982  , p_source_95 => l_array_source_95(Idx)
71983  );
71984 If(l_balance_type_code = 'A') THEN
71985   l_actual_gain_loss_ref := l_gain_or_loss_ref;
71986 END IF;
71987 
71988 --
71989 
71990 
71991 --
71992 AcctLineType_68 (
71993  p_application_id  => p_application_id
71994  ,p_event_id     => l_event_id
71995  ,p_calculate_acctd_flag => l_calculate_acctd_flag
71996  ,p_calculate_g_l_flag => l_calculate_g_l_flag
71997  ,p_actual_flag => l_actual_flag
71998  ,p_balance_type_code => l_balance_type_code
71999  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
72000  
72001  , p_source_13 => l_array_source_13(Idx)
72002  , p_source_13_meaning => l_array_source_13_meaning(Idx)
72003  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
72004  , p_source_77 => l_array_source_77(Idx)
72005  , p_source_77_meaning => l_array_source_77_meaning(Idx)
72006  , p_source_78 => l_array_source_78(Idx)
72007  , p_source_78_meaning => l_array_source_78_meaning(Idx)
72008  , p_source_80 => l_array_source_80(Idx)
72009  , p_source_82 => l_array_source_82(Idx)
72010  , p_source_83 => l_array_source_83(Idx)
72011  , p_source_84 => l_array_source_84(Idx)
72012  , p_source_85 => l_array_source_85(Idx)
72013  , p_source_86 => l_array_source_86(Idx)
72014  , p_source_87 => l_array_source_87(Idx)
72015  , p_source_88 => l_array_source_88(Idx)
72016  , p_source_92 => l_array_source_92(Idx)
72017  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
72018  , p_source_94 => l_array_source_94(Idx)
72019  , p_source_95 => l_array_source_95(Idx)
72020  , p_source_96 => l_array_source_96(Idx)
72021  , p_source_96_meaning => l_array_source_96_meaning(Idx)
72022  );
72023 If(l_balance_type_code = 'A') THEN
72024   l_actual_gain_loss_ref := l_gain_or_loss_ref;
72025 END IF;
72026 
72027 --
72028 
72029 
72030 --
72031 AcctLineType_69 (
72032  p_application_id  => p_application_id
72033  ,p_event_id     => l_event_id
72034  ,p_calculate_acctd_flag => l_calculate_acctd_flag
72035  ,p_calculate_g_l_flag => l_calculate_g_l_flag
72036  ,p_actual_flag => l_actual_flag
72037  ,p_balance_type_code => l_balance_type_code
72038  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
72039  
72040  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
72041  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
72042  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
72043  , p_source_13 => l_array_source_13(Idx)
72047  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
72044  , p_source_13_meaning => l_array_source_13_meaning(Idx)
72045  , p_source_26 => l_array_source_26(Idx)
72046  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
72048  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
72049  , p_source_77 => l_array_source_77(Idx)
72050  , p_source_77_meaning => l_array_source_77_meaning(Idx)
72051  , p_source_78 => l_array_source_78(Idx)
72052  , p_source_78_meaning => l_array_source_78_meaning(Idx)
72053  , p_source_80 => l_array_source_80(Idx)
72054  , p_source_82 => l_array_source_82(Idx)
72055  , p_source_83 => l_array_source_83(Idx)
72056  , p_source_84 => l_array_source_84(Idx)
72057  , p_source_85 => l_array_source_85(Idx)
72058  , p_source_86 => l_array_source_86(Idx)
72059  , p_source_87 => l_array_source_87(Idx)
72060  , p_source_88 => l_array_source_88(Idx)
72061  , p_source_89 => l_array_source_89(Idx)
72062  , p_source_90 => l_array_source_90(Idx)
72063  , p_source_91 => l_array_source_91(Idx)
72064  , p_source_92 => l_array_source_92(Idx)
72065  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
72066  , p_source_94 => l_array_source_94(Idx)
72067  , p_source_95 => l_array_source_95(Idx)
72068  , p_source_96 => l_array_source_96(Idx)
72069  , p_source_96_meaning => l_array_source_96_meaning(Idx)
72070  );
72071 If(l_balance_type_code = 'A') THEN
72072   l_actual_gain_loss_ref := l_gain_or_loss_ref;
72073 END IF;
72074 
72075 --
72076 
72077 
72078 --
72079 AcctLineType_70 (
72080  p_application_id  => p_application_id
72081  ,p_event_id     => l_event_id
72082  ,p_calculate_acctd_flag => l_calculate_acctd_flag
72083  ,p_calculate_g_l_flag => l_calculate_g_l_flag
72084  ,p_actual_flag => l_actual_flag
72085  ,p_balance_type_code => l_balance_type_code
72086  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
72087  
72088  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
72089  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
72090  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
72091  , p_source_13 => l_array_source_13(Idx)
72092  , p_source_13_meaning => l_array_source_13_meaning(Idx)
72093  , p_source_28 => l_array_source_28(Idx)
72094  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
72095  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
72096  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
72097  , p_source_77 => l_array_source_77(Idx)
72098  , p_source_77_meaning => l_array_source_77_meaning(Idx)
72099  , p_source_78 => l_array_source_78(Idx)
72100  , p_source_78_meaning => l_array_source_78_meaning(Idx)
72101  , p_source_80 => l_array_source_80(Idx)
72102  , p_source_82 => l_array_source_82(Idx)
72103  , p_source_83 => l_array_source_83(Idx)
72104  , p_source_84 => l_array_source_84(Idx)
72105  , p_source_85 => l_array_source_85(Idx)
72106  , p_source_86 => l_array_source_86(Idx)
72107  , p_source_87 => l_array_source_87(Idx)
72108  , p_source_88 => l_array_source_88(Idx)
72109  , p_source_89 => l_array_source_89(Idx)
72110  , p_source_90 => l_array_source_90(Idx)
72111  , p_source_91 => l_array_source_91(Idx)
72112  , p_source_92 => l_array_source_92(Idx)
72113  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
72114  , p_source_94 => l_array_source_94(Idx)
72115  , p_source_95 => l_array_source_95(Idx)
72116  );
72117 If(l_balance_type_code = 'A') THEN
72118   l_actual_gain_loss_ref := l_gain_or_loss_ref;
72119 END IF;
72120 
72121 --
72122 
72123 
72124 --
72125 AcctLineType_71 (
72126  p_application_id  => p_application_id
72127  ,p_event_id     => l_event_id
72128  ,p_calculate_acctd_flag => l_calculate_acctd_flag
72129  ,p_calculate_g_l_flag => l_calculate_g_l_flag
72130  ,p_actual_flag => l_actual_flag
72131  ,p_balance_type_code => l_balance_type_code
72132  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
72133  
72134  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
72135  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
72136  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
72137  , p_source_13 => l_array_source_13(Idx)
72138  , p_source_13_meaning => l_array_source_13_meaning(Idx)
72139  , p_source_29 => l_array_source_29(Idx)
72140  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
72141  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
72142  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
72143  , p_source_77 => l_array_source_77(Idx)
72144  , p_source_77_meaning => l_array_source_77_meaning(Idx)
72145  , p_source_78 => l_array_source_78(Idx)
72146  , p_source_78_meaning => l_array_source_78_meaning(Idx)
72147  , p_source_80 => l_array_source_80(Idx)
72148  , p_source_82 => l_array_source_82(Idx)
72149  , p_source_83 => l_array_source_83(Idx)
72150  , p_source_84 => l_array_source_84(Idx)
72151  , p_source_85 => l_array_source_85(Idx)
72152  , p_source_86 => l_array_source_86(Idx)
72153  , p_source_87 => l_array_source_87(Idx)
72154  , p_source_88 => l_array_source_88(Idx)
72155  , p_source_89 => l_array_source_89(Idx)
72156  , p_source_90 => l_array_source_90(Idx)
72157  , p_source_91 => l_array_source_91(Idx)
72158  , p_source_92 => l_array_source_92(Idx)
72162  , p_source_96 => l_array_source_96(Idx)
72159  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
72160  , p_source_94 => l_array_source_94(Idx)
72161  , p_source_95 => l_array_source_95(Idx)
72163  , p_source_96_meaning => l_array_source_96_meaning(Idx)
72164  );
72165 If(l_balance_type_code = 'A') THEN
72166   l_actual_gain_loss_ref := l_gain_or_loss_ref;
72167 END IF;
72168 
72169 --
72170 
72171 
72172 --
72173 AcctLineType_72 (
72174  p_application_id  => p_application_id
72175  ,p_event_id     => l_event_id
72176  ,p_calculate_acctd_flag => l_calculate_acctd_flag
72177  ,p_calculate_g_l_flag => l_calculate_g_l_flag
72178  ,p_actual_flag => l_actual_flag
72179  ,p_balance_type_code => l_balance_type_code
72180  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
72181  
72182  , p_source_13 => l_array_source_13(Idx)
72183  , p_source_13_meaning => l_array_source_13_meaning(Idx)
72184  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
72185  , p_source_77 => l_array_source_77(Idx)
72186  , p_source_77_meaning => l_array_source_77_meaning(Idx)
72187  , p_source_78 => l_array_source_78(Idx)
72188  , p_source_78_meaning => l_array_source_78_meaning(Idx)
72189  , p_source_80 => l_array_source_80(Idx)
72190  , p_source_82 => l_array_source_82(Idx)
72191  , p_source_83 => l_array_source_83(Idx)
72192  , p_source_84 => l_array_source_84(Idx)
72193  , p_source_85 => l_array_source_85(Idx)
72194  , p_source_86 => l_array_source_86(Idx)
72195  , p_source_87 => l_array_source_87(Idx)
72196  , p_source_88 => l_array_source_88(Idx)
72197  , p_source_92 => l_array_source_92(Idx)
72198  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
72199  , p_source_94 => l_array_source_94(Idx)
72200  , p_source_95 => l_array_source_95(Idx)
72201  , p_source_96 => l_array_source_96(Idx)
72202  , p_source_96_meaning => l_array_source_96_meaning(Idx)
72203  );
72204 If(l_balance_type_code = 'A') THEN
72205   l_actual_gain_loss_ref := l_gain_or_loss_ref;
72206 END IF;
72207 
72208 --
72209 
72210       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
72211       -- or secondary ledger that has different currency with primary
72212       -- or alc that is calculated by sla
72213       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
72214             (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'))
72215 
72216 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
72217 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
72218           AND (l_actual_flag = 'A')) THEN
72219         XLA_AE_LINES_PKG.CreateGainOrLossLines(
72220           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
72221          ,p_application_id   => p_application_id
72222          ,p_amb_context_code => 'DEFAULT'
72223          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
72224          ,p_event_class_code => C_EVENT_CLASS_CODE
72225          ,p_event_type_code  => C_EVENT_TYPE_CODE
72226          
72227          ,p_gain_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_121'))
72228          ,p_loss_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_122'))
72229 
72230          ,p_actual_flag      => l_actual_flag
72231          ,p_enc_flag         => null
72232          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
72233          ,p_enc_g_l_ref      => null
72234          );
72235       END IF;
72236    END IF;
72237 END IF;
72238 
72239    ELSE
72240       --
72241       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
72242       --
72243       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72244          trace
72245             (p_msg      => 'Trancaction revesal option is Y'
72246             ,p_level    => C_LEVEL_STATEMENT
72247             ,p_module   => l_log_module);
72248       END IF;
72249    END IF;
72250 
72251 END LOOP;
72252 l_result := XLA_AE_LINES_PKG.InsertLines ;
72253 end loop;
72254 close line_cur;
72255 
72256 
72257 --
72258 -- insert headers into xla_ae_headers_gt table
72259 --
72260 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
72261 
72262 -- insert into errors table here.
72263 
72264 END LOOP;
72265 
72266 --
72267 -- 4865292
72268 --
72269 -- Compare g_hdr_extract_count with event count in
72270 -- CreateHeadersAndLines.
72271 --
72272 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
72273 
72274 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72275    trace (p_msg     => '# rows extracted from header extract objects '
72276                     || ' (running total): '
72277                     || g_hdr_extract_count
72278          ,p_level   => C_LEVEL_STATEMENT
72279          ,p_module  => l_log_module);
72280 END IF;
72281 
72282 CLOSE header_cur;
72283 --
72284 
72285 --
72286 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72287    trace
72288       (p_msg      => 'END of EventClass_146'
72289       ,p_level    => C_LEVEL_PROCEDURE
72290       ,p_module   => l_log_module);
72291 END IF;
72292 --
72293 RETURN l_result;
72294 EXCEPTION
72295 WHEN xla_exceptions_pkg.application_exception THEN
72296    
72300 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
72297 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
72298 
72299    
72301 
72302    RAISE;
72303 
72304 WHEN NO_DATA_FOUND THEN
72305 
72306 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
72307 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
72308 
72309 FOR header_record IN header_cur
72310 LOOP
72311     l_array_header_events(header_record.event_id) := header_record.event_id;
72312 END LOOP;
72313 
72314 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
72315 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
72316 
72317 fnd_file.put_line(fnd_file.LOG, '                    ');
72318 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
72319 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
72320 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
72321 
72322 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
72323 LOOP
72324 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
72325 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
72326         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
72327 	END IF;
72328 END LOOP;
72329 
72330 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
72331 fnd_file.put_line(fnd_file.LOG, '                    ');
72332 
72333 
72334 xla_exceptions_pkg.raise_message
72335       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_146');
72336 
72337 
72338 WHEN OTHERS THEN
72339    xla_exceptions_pkg.raise_message
72340       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_146');
72341 END EventClass_146;
72342 --
72343 
72344 ---------------------------------------
72345 --
72346 -- PRIVATE PROCEDURE
72347 --         insert_sources_147
72348 --
72349 ----------------------------------------
72350 --
72351 PROCEDURE insert_sources_147(
72352                                 p_target_ledger_id       IN NUMBER
72353                               , p_language               IN VARCHAR2
72354                               , p_sla_ledger_id          IN NUMBER
72355                               , p_pad_start_date         IN DATE
72356                               , p_pad_end_date           IN DATE
72357                          )
72358 IS
72359 
72360 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CREDIT_MEMO_ALL';
72361 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'CREDIT_MEMO';
72362 p_apps_owner                   VARCHAR2(30);
72363 l_log_module                   VARCHAR2(240);
72364 BEGIN
72365 IF g_log_enabled THEN
72366       l_log_module := C_DEFAULT_MODULE||'.insert_sources_147';
72367 END IF;
72368 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72369 
72370       trace
72371          (p_msg      => 'BEGIN of insert_sources_147'
72372          ,p_level    => C_LEVEL_PROCEDURE
72373          ,p_module   => l_log_module);
72374 
72375 END IF;
72376 
72377 -- select APPS owner
72378 SELECT oracle_username
72379   INTO p_apps_owner
72380   FROM fnd_oracle_userid
72381  WHERE read_only_flag = 'U'
72382 ;
72383 
72384 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72385       trace
72386          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
72387                         ' - p_language = '||p_language||
72388                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
72389                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
72390                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
72391                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
72392          ,p_level    => C_LEVEL_STATEMENT
72393          ,p_module   => l_log_module);
72394 END IF;
72395 
72396 
72397 --
72398 INSERT INTO xla_diag_sources --hdr2
72399 (
72400         event_id
72401       , ledger_id
72402       , sla_ledger_id
72403       , description_language
72404       , object_name
72405       , object_type_code
72406       , line_number
72407       , source_application_id
72408       , source_type_code
72409       , source_code
72410       , source_value
72411       , source_meaning
72412       , created_by
72413       , creation_date
72414       , last_update_date
72415       , last_updated_by
72416       , last_update_login
72417       , program_update_date
72418       , program_application_id
72419       , program_id
72420       , request_id
72421 )
72422 SELECT
72423         event_id
72424       , p_target_ledger_id
72425       , p_sla_ledger_id
72426       , p_language
72427       , object_name
72428       , object_type_code
72429       , line_number
72430       , source_application_id
72431       , source_type_code
72432       , source_code
72433       , SUBSTR(source_value ,1,1996)
72434       , SUBSTR(source_meaning ,1,200)
72435       , xla_environment_pkg.g_Usr_Id
72436       , TRUNC(SYSDATE)
72437       , TRUNC(SYSDATE)
72438       , xla_environment_pkg.g_Usr_Id
72439       , xla_environment_pkg.g_Login_Id
72440       , TRUNC(SYSDATE)
72441       , xla_environment_pkg.g_Prog_Appl_Id
72442       , xla_environment_pkg.g_Prog_Id
72446             , 0                          line_number
72443       , xla_environment_pkg.g_Req_Id
72444   FROM (
72445        SELECT xet.event_id                  event_id
72447             , CASE r
72448                WHEN 1 THEN 'AR_CREDIT_MEMO_H_V' 
72449                 WHEN 2 THEN 'AR_CREDIT_MEMO_H_V' 
72450                 WHEN 3 THEN 'AR_CREDIT_MEMO_H_V' 
72451                 WHEN 4 THEN 'AR_SYSTEM_PARAM_H_V' 
72452                 WHEN 5 THEN 'AR_SYSTEM_PARAM_H_V' 
72453                 WHEN 6 THEN 'AR_CREDIT_MEMO_H_V' 
72454                 WHEN 7 THEN 'AR_CREDIT_MEMO_H_V' 
72455                 WHEN 8 THEN 'AR_CM_BILL_TO_CUST_H_V' 
72456                 WHEN 9 THEN 'AR_CM_BILL_SITE_USES_H_V' 
72457                 
72458                ELSE null
72459               END                           object_name
72460             , CASE r
72461                 WHEN 1 THEN 'HEADER' 
72462                 WHEN 2 THEN 'HEADER' 
72463                 WHEN 3 THEN 'HEADER' 
72464                 WHEN 4 THEN 'HEADER' 
72465                 WHEN 5 THEN 'HEADER' 
72466                 WHEN 6 THEN 'HEADER' 
72467                 WHEN 7 THEN 'HEADER' 
72468                 WHEN 8 THEN 'HEADER' 
72469                 WHEN 9 THEN 'HEADER' 
72470                 
72471                 ELSE null
72472               END                           object_type_code
72473             , CASE r
72474                 WHEN 1 THEN '222' 
72475                 WHEN 2 THEN '222' 
72476                 WHEN 3 THEN '222' 
72477                 WHEN 4 THEN '222' 
72478                 WHEN 5 THEN '222' 
72479                 WHEN 6 THEN '222' 
72480                 WHEN 7 THEN '222' 
72481                 WHEN 8 THEN '222' 
72482                 WHEN 9 THEN '222' 
72483                 
72484                 ELSE null
72485               END                           source_application_id
72486             , 'S'             source_type_code
72487             , CASE r
72488                 WHEN 1 THEN 'CM_TRX_TYPE_NAME' 
72489                 WHEN 2 THEN 'CM_TRX_NUMBER' 
72490                 WHEN 3 THEN 'CM_DOC_SEQUENCE_VALUE' 
72491                 WHEN 4 THEN 'CODE_COMBINATION_ID_GAIN' 
72492                 WHEN 5 THEN 'CODE_COMBINATION_ID_LOSS' 
72493                 WHEN 6 THEN 'XLA_PARTY_TYPE' 
72494                 WHEN 7 THEN 'CM_INVOICE_CURRENCY_CODE' 
72495                 WHEN 8 THEN 'CM_BILL_CUST_ACCOUNT_ID' 
72496                 WHEN 9 THEN 'CM_BILL_USES_SITE_USE_ID' 
72497                 
72498                 ELSE null
72499               END                           source_code
72500             , CASE r
72501                 WHEN 1 THEN TO_CHAR(h5.CM_TRX_TYPE_NAME)
72502                 WHEN 2 THEN TO_CHAR(h5.CM_TRX_NUMBER)
72503                 WHEN 3 THEN TO_CHAR(h5.CM_DOC_SEQUENCE_VALUE)
72504                 WHEN 4 THEN TO_CHAR(h8.CODE_COMBINATION_ID_GAIN)
72505                 WHEN 5 THEN TO_CHAR(h8.CODE_COMBINATION_ID_LOSS)
72506                 WHEN 6 THEN TO_CHAR(h5.XLA_PARTY_TYPE)
72507                 WHEN 7 THEN TO_CHAR(h5.CM_INVOICE_CURRENCY_CODE)
72508                 WHEN 8 THEN TO_CHAR(h2.CM_BILL_CUST_ACCOUNT_ID)
72509                 WHEN 9 THEN TO_CHAR(h1.CM_BILL_USES_SITE_USE_ID)
72510                 
72511                 ELSE null
72512               END                           source_value
72513             , null              source_meaning
72514          FROM xla_events_gt     xet  
72515       , AR_CM_BILL_SITE_USES_H_V  h1
72516       , AR_CM_BILL_TO_CUST_H_V  h2
72517       , AR_CREDIT_MEMO_H_V  h5
72518       , AR_SYSTEM_PARAM_H_V  h8
72519              ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
72520          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
72521            AND xet.event_class_code = C_EVENT_CLASS_CODE
72522               AND h1.event_id = xet.event_id
72523   AND h2.event_id  = h1.event_id
72524   AND h5.event_id  = h1.event_id
72525   AND h8.event_id (+) = h1.event_id
72526 
72527 )
72528 ;
72529 --
72530 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72531 
72532       trace
72533          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
72534          ,p_level    => C_LEVEL_STATEMENT
72535          ,p_module   => l_log_module);
72536 
72537 END IF;
72538 --
72539 
72540 
72541 
72542 --
72543 INSERT INTO xla_diag_sources  --line2
72544 (
72545         event_id
72546       , ledger_id
72547       , sla_ledger_id
72548       , description_language
72549       , object_name
72550       , object_type_code
72551       , line_number
72552       , source_application_id
72553       , source_type_code
72554       , source_code
72555       , source_value
72556       , source_meaning
72557       , created_by
72558       , creation_date
72559       , last_update_date
72560       , last_updated_by
72561       , last_update_login
72562       , program_update_date
72563       , program_application_id
72564       , program_id
72565       , request_id
72566 )
72567 SELECT  event_id
72568       , p_target_ledger_id
72569       , p_sla_ledger_id
72570       , p_language
72571       , object_name
72572       , object_type_code
72573       , line_number
72574       , source_application_id
72575       , source_type_code
72576       , source_code
72577       , SUBSTR(source_value,1,1996)
72578       , SUBSTR(source_meaning ,1,200)
72579       , xla_environment_pkg.g_Usr_Id
72583       , xla_environment_pkg.g_Login_Id
72580       , TRUNC(SYSDATE)
72581       , TRUNC(SYSDATE)
72582       , xla_environment_pkg.g_Usr_Id
72584       , TRUNC(SYSDATE)
72585       , xla_environment_pkg.g_Prog_Appl_Id
72586       , xla_environment_pkg.g_Prog_Id
72587       , xla_environment_pkg.g_Req_Id
72588   FROM (
72589        SELECT xet.event_id                  event_id
72590             , l3.line_number                 line_number
72591             , CASE r
72592                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
72593                 WHEN 2 THEN 'AR_TRANSACTIONS_S_V' 
72594                 WHEN 3 THEN 'AR_TRANSACTIONS_S_V' 
72595                 WHEN 4 THEN 'AR_CM_LINES_L_V' 
72596                 WHEN 5 THEN 'AR_DISTRIBUTIONS_L_V' 
72597                 WHEN 6 THEN 'AR_DISTRIBUTIONS_L_V' 
72598                 WHEN 7 THEN 'AR_RECEIVABLES_TRX_ACT_S_V' 
72599                 WHEN 8 THEN 'AR_DISTRIBUTIONS_L_V' 
72600                 WHEN 9 THEN 'AR_CM_LINES_BASE_V' 
72601                 WHEN 10 THEN 'AR_CM_LINES_BASE_V' 
72602                 WHEN 11 THEN 'AR_CM_LINES_BASE_V' 
72603                 WHEN 12 THEN 'AR_CM_LINES_BASE_V' 
72604                 WHEN 13 THEN 'AR_CM_LINES_BASE_V' 
72605                 WHEN 14 THEN 'AR_CM_LINES_BASE_V' 
72606                 WHEN 15 THEN 'AR_CM_LINES_BASE_V' 
72607                 WHEN 16 THEN 'AR_CM_LINES_L_V' 
72608                 WHEN 17 THEN 'AR_CM_LINES_L_V' 
72609                 WHEN 18 THEN 'AR_CM_LINES_L_V' 
72610                 
72611                ELSE null
72612               END                           object_name
72613             , CASE r
72614                 WHEN 1 THEN 'LINE' 
72615                 WHEN 2 THEN 'LINE' 
72616                 WHEN 3 THEN 'LINE' 
72617                 WHEN 4 THEN 'LINE' 
72618                 WHEN 5 THEN 'LINE' 
72619                 WHEN 6 THEN 'LINE' 
72620                 WHEN 7 THEN 'LINE' 
72621                 WHEN 8 THEN 'LINE' 
72622                 WHEN 9 THEN 'LINE' 
72623                 WHEN 10 THEN 'LINE' 
72624                 WHEN 11 THEN 'LINE' 
72625                 WHEN 12 THEN 'LINE' 
72626                 WHEN 13 THEN 'LINE' 
72627                 WHEN 14 THEN 'LINE' 
72628                 WHEN 15 THEN 'LINE' 
72629                 WHEN 16 THEN 'LINE' 
72630                 WHEN 17 THEN 'LINE' 
72631                 WHEN 18 THEN 'LINE' 
72632                 
72633                 ELSE null
72634               END                           object_type_code
72635             , CASE r
72636                 WHEN 1 THEN '222' 
72637                 WHEN 2 THEN '222' 
72638                 WHEN 3 THEN '222' 
72639                 WHEN 4 THEN '222' 
72640                 WHEN 5 THEN '222' 
72641                 WHEN 6 THEN '222' 
72642                 WHEN 7 THEN '222' 
72643                 WHEN 8 THEN '222' 
72644                 WHEN 9 THEN '222' 
72645                 WHEN 10 THEN '222' 
72646                 WHEN 11 THEN '222' 
72647                 WHEN 12 THEN '222' 
72648                 WHEN 13 THEN '222' 
72649                 WHEN 14 THEN '222' 
72650                 WHEN 15 THEN '222' 
72651                 WHEN 16 THEN '222' 
72652                 WHEN 17 THEN '222' 
72653                 WHEN 18 THEN '222' 
72654                 
72655                 ELSE null
72656               END                           source_application_id
72657             , 'S'             source_type_code
72658             , CASE r
72659                 WHEN 1 THEN 'TRX_TYPE_NAME' 
72660                 WHEN 2 THEN 'TRX_NUMBER' 
72661                 WHEN 3 THEN 'TRX_DOC_SEQUENCE_VALUE' 
72662                 WHEN 4 THEN 'CM_LINE_DIST_CCID' 
72663                 WHEN 5 THEN 'DIST_CODE_COMBINATION_ID' 
72664                 WHEN 6 THEN 'DIST_SOURCE_TYPE' 
72665                 WHEN 7 THEN 'REC_ACT_TYPE' 
72666                 WHEN 8 THEN 'DIST_ENT_AMT' 
72667                 WHEN 9 THEN 'CM_DIST_IDENTIFER' 
72668                 WHEN 10 THEN 'CM_DIST_TYPE' 
72669                 WHEN 11 THEN 'CM_LINE_CUR_CONVERSION_DATE' 
72670                 WHEN 12 THEN 'CM_LINE_CUR_CONVERSION_RATE' 
72671                 WHEN 13 THEN 'CM_LINE_CUR_CONVERSION_TYPE' 
72672                 WHEN 14 THEN 'GAIN_LOSS_REF' 
72673                 WHEN 15 THEN 'CM_LINE_ACCTD_AMT' 
72674                 WHEN 16 THEN 'CM_TAX_LINE_ID' 
72675                 WHEN 17 THEN 'CM_LINE_DIST_ACCOUNT_CLASS' 
72676                 WHEN 18 THEN 'CM_LINE_DIST_AMT' 
72677                 
72678                 ELSE null
72679               END                           source_code
72680             , CASE r
72681                 WHEN 1 THEN TO_CHAR(l9.TRX_TYPE_NAME)
72682                 WHEN 2 THEN TO_CHAR(l9.TRX_NUMBER)
72683                 WHEN 3 THEN TO_CHAR(l9.TRX_DOC_SEQUENCE_VALUE)
72684                 WHEN 4 THEN TO_CHAR(l4.CM_LINE_DIST_CCID)
72685                 WHEN 5 THEN TO_CHAR(l6.DIST_CODE_COMBINATION_ID)
72686                 WHEN 6 THEN TO_CHAR(l6.DIST_SOURCE_TYPE)
72687                 WHEN 7 THEN TO_CHAR(l7.REC_ACT_TYPE)
72688                 WHEN 8 THEN TO_CHAR(l6.DIST_ENT_AMT)
72689                 WHEN 9 THEN TO_CHAR(l3.CM_DIST_IDENTIFER)
72690                 WHEN 10 THEN TO_CHAR(l3.CM_DIST_TYPE)
72691                 WHEN 11 THEN TO_CHAR(l3.CM_LINE_CUR_CONVERSION_DATE)
72692                 WHEN 12 THEN TO_CHAR(l3.CM_LINE_CUR_CONVERSION_RATE)
72693                 WHEN 13 THEN TO_CHAR(l3.CM_LINE_CUR_CONVERSION_TYPE)
72694                 WHEN 14 THEN TO_CHAR(l3.GAIN_LOSS_REF)
72698                 WHEN 18 THEN TO_CHAR(l4.CM_LINE_DIST_AMT)
72695                 WHEN 15 THEN TO_CHAR(l3.CM_LINE_ACCTD_AMT)
72696                 WHEN 16 THEN TO_CHAR(l4.CM_TAX_LINE_ID)
72697                 WHEN 17 THEN TO_CHAR(l4.CM_LINE_DIST_ACCOUNT_CLASS)
72699                 
72700                 ELSE null
72701               END                           source_value
72702             , null              source_meaning
72703          FROM  xla_events_gt     xet  
72704         , AR_CM_LINES_BASE_V  l3
72705         , AR_CM_LINES_L_V  l4
72706         , AR_DISTRIBUTIONS_L_V  l6
72707         , AR_RECEIVABLES_TRX_ACT_S_V  l7
72708         , AR_TRANSACTIONS_S_V  l9
72709             , (select rownum r from all_objects where rownum <= 18 and owner = p_apps_owner)
72710         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
72711           AND xet.event_class_code = C_EVENT_CLASS_CODE
72712             AND l3.event_id          = xet.event_id
72713   AND l4.event_id (+)    = l3.event_id
72714   AND l4.line_number (+) = l3.line_number
72715   AND l6.event_id (+)    = l3.event_id
72716   AND l6.line_number (+) = l3.line_number
72717   AND l7.event_id (+)    = l3.event_id
72718   AND l7.line_number (+) = l3.line_number
72719   AND l9.event_id (+)    = l3.event_id
72720   AND l9.line_number (+) = l3.line_number
72721 
72722 )
72723 ;
72724 --
72725 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
72726 
72727       trace
72728          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
72729          ,p_level    => C_LEVEL_STATEMENT
72730          ,p_module   => l_log_module);
72731 
72732 END IF;
72733 
72734 
72735 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
72736       trace
72737          (p_msg      => 'END of insert_sources_147'
72738          ,p_level    => C_LEVEL_PROCEDURE
72739          ,p_module   => l_log_module);
72740 END IF;
72741 EXCEPTION
72742   WHEN xla_exceptions_pkg.application_exception THEN
72743       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
72744             trace
72745                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
72746                ,p_level    => C_LEVEL_EXCEPTION
72747                ,p_module   => l_log_module);
72748       END IF;
72749       RAISE;
72750   WHEN OTHERS THEN
72751       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
72752             trace
72753                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
72754                ,p_level    => C_LEVEL_EXCEPTION
72755                ,p_module   => l_log_module);
72756        END IF;
72757        xla_exceptions_pkg.raise_message
72758            (p_location => 'XLA_00222_AAD_S_000002_PKG.insert_sources_147');
72759 END insert_sources_147;
72760 --
72761 
72762 ---------------------------------------
72763 --
72764 -- PRIVATE FUNCTION
72765 --         EventClass_147
72766 --
72767 ----------------------------------------
72768 --
72769 FUNCTION EventClass_147
72770        (p_application_id         IN NUMBER
72771        ,p_base_ledger_id         IN NUMBER
72772        ,p_target_ledger_id       IN NUMBER
72773        ,p_language               IN VARCHAR2
72774        ,p_currency_code          IN VARCHAR2
72775        ,p_sla_ledger_id          IN NUMBER
72776        ,p_pad_start_date         IN DATE
72777        ,p_pad_end_date           IN DATE
72778        ,p_primary_ledger_id      IN NUMBER)
72779 RETURN BOOLEAN IS
72780 --
72781 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'CREDIT_MEMO_ALL';
72782 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'CREDIT_MEMO';
72783 
72784 l_calculate_acctd_flag   VARCHAR2(1) :='N';
72785 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
72786 --
72787 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72788 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72789 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72790 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72791 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72792 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72793 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72794 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72795 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72796 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72797 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72798 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72799 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72800 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
72801 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72802 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72803 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72804 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
72805 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72806 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72807 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72808 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
72812 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
72809 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
72810 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
72811 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
72813 
72814 l_event_id                             NUMBER;
72815 l_previous_event_id                    NUMBER;
72816 l_first_event_id                       NUMBER;
72817 l_last_event_id                        NUMBER;
72818 
72819 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
72820 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
72821 --
72822 --
72823 l_result                    BOOLEAN := TRUE;
72824 l_rows                      NUMBER  := 1000;
72825 l_event_type_name           VARCHAR2(80) := 'All';
72826 l_event_class_name          VARCHAR2(80) := 'Credit Memo';
72827 l_description               VARCHAR2(4000);
72828 l_transaction_reversal      NUMBER;
72829 l_ae_header_id              NUMBER;
72830 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
72831 l_log_module                VARCHAR2(240);
72832 --
72833 l_acct_reversal_source      VARCHAR2(30);
72834 l_trx_reversal_source       VARCHAR2(30);
72835 
72836 l_continue_with_lines       BOOLEAN := TRUE;
72837 --
72838 l_acc_rev_gl_date_source    DATE;                      -- 4262811
72839 --
72840 type t_array_event_id is table of number index by binary_integer;
72841 
72842 l_rec_array_event                    t_rec_array_event;
72843 l_null_rec_array_event               t_rec_array_event;
72844 l_array_ae_header_id                 xla_number_array_type;
72845 l_actual_flag                        VARCHAR2(1) := NULL;
72846 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
72847 l_balance_type_code                  VARCHAR2(1) :=NULL;
72848 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
72849 
72850 --
72851 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
72852 --
72853 
72854 TYPE t_array_source_7 IS TABLE OF AR_CREDIT_MEMO_H_V.CM_TRX_TYPE_NAME%TYPE INDEX BY BINARY_INTEGER;
72855 TYPE t_array_source_8 IS TABLE OF AR_CREDIT_MEMO_H_V.CM_TRX_NUMBER%TYPE INDEX BY BINARY_INTEGER;
72856 TYPE t_array_source_9 IS TABLE OF AR_CREDIT_MEMO_H_V.CM_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
72857 TYPE t_array_source_34 IS TABLE OF AR_SYSTEM_PARAM_H_V.CODE_COMBINATION_ID_GAIN%TYPE INDEX BY BINARY_INTEGER;
72858 TYPE t_array_source_35 IS TABLE OF AR_SYSTEM_PARAM_H_V.CODE_COMBINATION_ID_LOSS%TYPE INDEX BY BINARY_INTEGER;
72859 TYPE t_array_source_51 IS TABLE OF AR_CREDIT_MEMO_H_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
72860 TYPE t_array_source_66 IS TABLE OF AR_CREDIT_MEMO_H_V.CM_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
72861 TYPE t_array_source_72 IS TABLE OF AR_CM_BILL_TO_CUST_H_V.CM_BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
72862 TYPE t_array_source_73 IS TABLE OF AR_CM_BILL_SITE_USES_H_V.CM_BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
72863 
72864 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_TYPE_NAME%TYPE INDEX BY BINARY_INTEGER;
72865 TYPE t_array_source_4 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_NUMBER%TYPE INDEX BY BINARY_INTEGER;
72866 TYPE t_array_source_6 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
72867 TYPE t_array_source_24 IS TABLE OF AR_CM_LINES_L_V.CM_LINE_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
72868 TYPE t_array_source_32 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
72869 TYPE t_array_source_39 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_SOURCE_TYPE%TYPE INDEX BY BINARY_INTEGER;
72870 TYPE t_array_source_40 IS TABLE OF AR_RECEIVABLES_TRX_ACT_S_V.REC_ACT_TYPE%TYPE INDEX BY BINARY_INTEGER;
72871 TYPE t_array_source_43 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_ENT_AMT%TYPE INDEX BY BINARY_INTEGER;
72872 TYPE t_array_source_64 IS TABLE OF AR_CM_LINES_BASE_V.CM_DIST_IDENTIFER%TYPE INDEX BY BINARY_INTEGER;
72873 TYPE t_array_source_65 IS TABLE OF AR_CM_LINES_BASE_V.CM_DIST_TYPE%TYPE INDEX BY BINARY_INTEGER;
72874 TYPE t_array_source_67 IS TABLE OF AR_CM_LINES_BASE_V.CM_LINE_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
72875 TYPE t_array_source_68 IS TABLE OF AR_CM_LINES_BASE_V.CM_LINE_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
72876 TYPE t_array_source_69 IS TABLE OF AR_CM_LINES_BASE_V.CM_LINE_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
72877 TYPE t_array_source_70 IS TABLE OF AR_CM_LINES_BASE_V.GAIN_LOSS_REF%TYPE INDEX BY BINARY_INTEGER;
72878 TYPE t_array_source_71 IS TABLE OF AR_CM_LINES_BASE_V.CM_LINE_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
72879 TYPE t_array_source_74 IS TABLE OF AR_CM_LINES_L_V.CM_TAX_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
72880 TYPE t_array_source_75 IS TABLE OF AR_CM_LINES_L_V.CM_LINE_DIST_ACCOUNT_CLASS%TYPE INDEX BY BINARY_INTEGER;
72881 TYPE t_array_source_76 IS TABLE OF AR_CM_LINES_L_V.CM_LINE_DIST_AMT%TYPE INDEX BY BINARY_INTEGER;
72882 
72883 l_array_source_7              t_array_source_7;
72884 l_array_source_8              t_array_source_8;
72885 l_array_source_9              t_array_source_9;
72886 l_array_source_34              t_array_source_34;
72887 l_array_source_35              t_array_source_35;
72888 l_array_source_51              t_array_source_51;
72889 l_array_source_66              t_array_source_66;
72890 l_array_source_72              t_array_source_72;
72891 l_array_source_73              t_array_source_73;
72892 
72893 l_array_source_3      t_array_source_3;
72894 l_array_source_4      t_array_source_4;
72895 l_array_source_6      t_array_source_6;
72896 l_array_source_24      t_array_source_24;
72897 l_array_source_32      t_array_source_32;
72898 l_array_source_39      t_array_source_39;
72899 l_array_source_40      t_array_source_40;
72903 l_array_source_67      t_array_source_67;
72900 l_array_source_43      t_array_source_43;
72901 l_array_source_64      t_array_source_64;
72902 l_array_source_65      t_array_source_65;
72904 l_array_source_68      t_array_source_68;
72905 l_array_source_69      t_array_source_69;
72906 l_array_source_70      t_array_source_70;
72907 l_array_source_71      t_array_source_71;
72908 l_array_source_74      t_array_source_74;
72909 l_array_source_75      t_array_source_75;
72910 l_array_source_76      t_array_source_76;
72911 
72912 --
72913 CURSOR header_cur
72914 IS
72915 SELECT /*+ leading(xet) cardinality(xet,1) */
72916 -- Event Class Code: CREDIT_MEMO
72917     xet.entity_id
72918    ,xet.legal_entity_id
72919    ,xet.entity_code
72920    ,xet.transaction_number
72921    ,xet.event_id
72922    ,xet.event_class_code
72923    ,xet.event_type_code
72924    ,xet.event_number
72925    ,xet.event_date
72926    ,xet.transaction_date
72927    ,xet.reference_num_1
72928    ,xet.reference_num_2
72929    ,xet.reference_num_3
72930    ,xet.reference_num_4
72931    ,xet.reference_char_1
72932    ,xet.reference_char_2
72933    ,xet.reference_char_3
72934    ,xet.reference_char_4
72935    ,xet.reference_date_1
72936    ,xet.reference_date_2
72937    ,xet.reference_date_3
72938    ,xet.reference_date_4
72939    ,xet.event_created_by
72940    ,xet.budgetary_control_flag 
72941   , h5.CM_TRX_TYPE_NAME    source_7
72942   , h5.CM_TRX_NUMBER    source_8
72943   , h5.CM_DOC_SEQUENCE_VALUE    source_9
72944   , h8.CODE_COMBINATION_ID_GAIN    source_34
72945   , h8.CODE_COMBINATION_ID_LOSS    source_35
72946   , h5.XLA_PARTY_TYPE    source_51
72947   , h5.CM_INVOICE_CURRENCY_CODE    source_66
72948   , h2.CM_BILL_CUST_ACCOUNT_ID    source_72
72949   , h1.CM_BILL_USES_SITE_USE_ID    source_73
72950   FROM xla_events_gt     xet 
72951   , AR_CM_BILL_SITE_USES_H_V  h1
72952   , AR_CM_BILL_TO_CUST_H_V  h2
72953   , AR_CREDIT_MEMO_H_V  h5
72954   , AR_SYSTEM_PARAM_H_V  h8
72955  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
72956    and xet.event_class_code = C_EVENT_CLASS_CODE
72957    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
72958   AND h2.event_id  = h1.event_id
72959   AND h5.event_id  = h1.event_id
72960   AND h8.event_id (+) = h1.event_id
72961 
72962  ORDER BY event_id
72963 ;
72964 
72965 
72966 --
72967 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
72968 IS
72969 SELECT  /*+ leading(xet) cardinality(xet,1) */
72970 -- Event Class Code: CREDIT_MEMO
72971     xet.entity_id
72972    ,xet.legal_entity_id
72973    ,xet.entity_code
72974    ,xet.transaction_number
72975    ,xet.event_id
72976    ,xet.event_class_code
72977    ,xet.event_type_code
72978    ,xet.event_number
72979    ,xet.event_date
72980    ,xet.transaction_date
72981    ,xet.reference_num_1
72982    ,xet.reference_num_2
72983    ,xet.reference_num_3
72984    ,xet.reference_num_4
72985    ,xet.reference_char_1
72986    ,xet.reference_char_2
72987    ,xet.reference_char_3
72988    ,xet.reference_char_4
72989    ,xet.reference_date_1
72990    ,xet.reference_date_2
72991    ,xet.reference_date_3
72992    ,xet.reference_date_4
72993    ,xet.event_created_by
72994    ,xet.budgetary_control_flag
72995  , l3.LINE_NUMBER  
72996   , l9.TRX_TYPE_NAME    source_3
72997   , l9.TRX_NUMBER    source_4
72998   , l9.TRX_DOC_SEQUENCE_VALUE    source_6
72999   , l4.CM_LINE_DIST_CCID    source_24
73000   , l6.DIST_CODE_COMBINATION_ID    source_32
73001   , l6.DIST_SOURCE_TYPE    source_39
73002   , l7.REC_ACT_TYPE    source_40
73003   , l6.DIST_ENT_AMT    source_43
73004   , l3.CM_DIST_IDENTIFER    source_64
73005   , l3.CM_DIST_TYPE    source_65
73006   , l3.CM_LINE_CUR_CONVERSION_DATE    source_67
73007   , l3.CM_LINE_CUR_CONVERSION_RATE    source_68
73008   , l3.CM_LINE_CUR_CONVERSION_TYPE    source_69
73009   , l3.GAIN_LOSS_REF    source_70
73010   , l3.CM_LINE_ACCTD_AMT    source_71
73011   , l4.CM_TAX_LINE_ID    source_74
73012   , l4.CM_LINE_DIST_ACCOUNT_CLASS    source_75
73013   , l4.CM_LINE_DIST_AMT    source_76
73014   FROM xla_events_gt     xet 
73015   , AR_CM_LINES_BASE_V  l3
73016   , AR_CM_LINES_L_V  l4
73017   , AR_DISTRIBUTIONS_L_V  l6
73018   , AR_RECEIVABLES_TRX_ACT_S_V  l7
73019   , AR_TRANSACTIONS_S_V  l9
73020  WHERE xet.event_id between x_first_event_id and x_last_event_id
73021    and xet.event_date between p_pad_start_date and p_pad_end_date
73022    and xet.event_class_code = C_EVENT_CLASS_CODE
73023    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
73024   AND l4.event_id (+)    = l3.event_id
73025   AND l4.line_number (+) = l3.line_number
73026   AND l6.event_id (+)    = l3.event_id
73027   AND l6.line_number (+) = l3.line_number
73028   AND l7.event_id (+)    = l3.event_id
73029   AND l7.line_number (+) = l3.line_number
73030   AND l9.event_id (+)    = l3.event_id
73031   AND l9.line_number (+) = l3.line_number
73032 ;
73033 
73034 --
73035 BEGIN
73036 IF g_log_enabled THEN
73037    l_log_module := C_DEFAULT_MODULE||'.EventClass_147';
73038 END IF;
73039 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
73040    trace
73041       (p_msg      => 'BEGIN of EventClass_147'
73042       ,p_level    => C_LEVEL_PROCEDURE
73043       ,p_module   => l_log_module);
73044 END IF;
73045 
73049                      ' - p_base_ledger_id = '||p_base_ledger_id||
73046 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73047    trace
73048       (p_msg      => 'p_application_id = '||p_application_id||
73050                      ' - p_target_ledger_id  = '||p_target_ledger_id||
73051                      ' - p_language = '||p_language||
73052                      ' - p_currency_code = '||p_currency_code||
73053                      ' - p_sla_ledger_id = '||p_sla_ledger_id
73054       ,p_level    => C_LEVEL_STATEMENT
73055       ,p_module   => l_log_module);
73056 END IF;
73057 --
73058 -- initialze arrays
73059 --
73060 g_array_event.DELETE;
73061 l_rec_array_event := l_null_rec_array_event;
73062 --
73063 --------------------------------------
73064 -- 4262811 Initialze MPA Line Number
73065 --------------------------------------
73066 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
73067 
73068 --
73069 
73070 --
73071 OPEN header_cur;
73072 --
73073 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73074    trace
73075    (p_msg      => 'SQL - FETCH header_cur'
73076    ,p_level    => C_LEVEL_STATEMENT
73077    ,p_module   => l_log_module);
73078 END IF;
73079 --
73080 LOOP
73081 FETCH header_cur BULK COLLECT INTO
73082         l_array_entity_id
73083       , l_array_legal_entity_id
73084       , l_array_entity_code
73085       , l_array_transaction_num
73086       , l_array_event_id
73087       , l_array_class_code
73088       , l_array_event_type
73089       , l_array_event_number
73090       , l_array_event_date
73091       , l_array_transaction_date
73092       , l_array_reference_num_1
73093       , l_array_reference_num_2
73094       , l_array_reference_num_3
73095       , l_array_reference_num_4
73096       , l_array_reference_char_1
73097       , l_array_reference_char_2
73098       , l_array_reference_char_3
73099       , l_array_reference_char_4
73100       , l_array_reference_date_1
73101       , l_array_reference_date_2
73102       , l_array_reference_date_3
73103       , l_array_reference_date_4
73104       , l_array_event_created_by
73105       , l_array_budgetary_control_flag 
73106       , l_array_source_7
73107       , l_array_source_8
73108       , l_array_source_9
73109       , l_array_source_34
73110       , l_array_source_35
73111       , l_array_source_51
73112       , l_array_source_66
73113       , l_array_source_72
73114       , l_array_source_73
73115       LIMIT l_rows;
73116 --
73117 IF (C_LEVEL_EVENT >= g_log_level) THEN
73118    trace
73119    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
73120    ,p_level    => C_LEVEL_EVENT
73121    ,p_module   => l_log_module);
73122 END IF;
73123 --
73124 EXIT WHEN l_array_entity_id.COUNT = 0;
73125 
73126 -- initialize arrays
73127 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
73128 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
73129 
73130 --
73131 -- Bug 4458708
73132 --
73133 XLA_AE_LINES_PKG.g_LineNumber := 0;
73134 
73135 
73136 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
73137 g_last_hdr_idx := l_array_event_id.LAST;
73138 --
73139 -- loop for the headers. Each iteration is for each header extract row
73140 -- fetched in header cursor
73141 --
73142 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
73143 
73144 --
73145 -- set event info as cache for other routines to refer event attributes
73146 --
73147 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
73148    (p_application_id           => p_application_id
73149    ,p_primary_ledger_id        => p_primary_ledger_id
73150    ,p_base_ledger_id           => p_base_ledger_id
73151    ,p_target_ledger_id         => p_target_ledger_id
73152    ,p_entity_id                => l_array_entity_id(hdr_idx)
73153    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
73154    ,p_entity_code              => l_array_entity_code(hdr_idx)
73155    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
73156    ,p_event_id                 => l_array_event_id(hdr_idx)
73157    ,p_event_class_code         => l_array_class_code(hdr_idx)
73158    ,p_event_type_code          => l_array_event_type(hdr_idx)
73159    ,p_event_number             => l_array_event_number(hdr_idx)
73160    ,p_event_date               => l_array_event_date(hdr_idx)
73161    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
73162    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
73163    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
73164    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
73165    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
73166    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
73167    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
73168    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
73169    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
73170    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
73171    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
73172    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
73173    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
73174    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
73178 -- set the status of entry to C_VALID (0)
73175    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
73176 
73177 --
73179 --
73180 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
73181 
73182 --
73183 -- initialize a row for ae header
73184 --
73185 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
73186 
73187 l_event_id := l_array_event_id(hdr_idx);
73188 
73189 --
73190 -- storing the hdr_idx for event. May be used by line cursor.
73191 --
73192 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
73193 
73194 --
73195 -- store sources from header extract. This can be improved to
73196 -- store only those sources from header extract that may be used in lines
73197 --
73198 
73199 g_array_event(l_event_id).array_value_char('source_7') := l_array_source_7(hdr_idx);
73200 g_array_event(l_event_id).array_value_char('source_8') := l_array_source_8(hdr_idx);
73201 g_array_event(l_event_id).array_value_num('source_9') := l_array_source_9(hdr_idx);
73202 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
73203 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
73204 g_array_event(l_event_id).array_value_char('source_51') := l_array_source_51(hdr_idx);
73205 g_array_event(l_event_id).array_value_char('source_66') := l_array_source_66(hdr_idx);
73206 g_array_event(l_event_id).array_value_num('source_72') := l_array_source_72(hdr_idx);
73207 g_array_event(l_event_id).array_value_num('source_73') := l_array_source_73(hdr_idx);
73208 
73209 --
73210 -- initilaize the status of ae headers for diffrent balance types
73211 -- the status is initialised to C_NOT_CREATED (2)
73212 --
73213 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
73214 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
73215 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
73216 
73217 --
73218 -- call api to validate and store accounting attributes for header
73219 --
73220 
73221 ------------------------------------------------------------
73222 -- Accrual Reversal : to get date for Standard Source (NONE)
73223 ------------------------------------------------------------
73224 l_acc_rev_gl_date_source := NULL;
73225 
73226      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
73227       l_rec_acct_attrs.array_date_value(1) := 
73228 xla_ae_sources_pkg.GetSystemSourceDate(
73229    p_source_code           => 'XLA_EVENT_DATE'
73230  , p_source_type_code      => 'Y'
73231  , p_source_application_id =>  602
73232 );
73233 
73234 
73235 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
73236 
73237 XLA_AE_HEADER_PKG.SetJeCategoryName;
73238 
73239 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
73240 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
73241 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
73242 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
73243 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
73244 
73245 
73246 --
73247 xla_ae_header_pkg.SetHdrDescription(
73248    p_description => Description_4 (
73249    p_application_id => p_application_id 
73250  , p_source_7 => g_array_event(l_event_id).array_value_char('source_7')
73251  , p_source_8 => g_array_event(l_event_id).array_value_char('source_8')
73252  , p_source_9 => g_array_event(l_event_id).array_value_num('source_9')
73253    )
73254 );
73255 --
73256 
73257 -- No header level analytical criteria
73258 
73259 --
73260 --accounting attribute enhancement, bug 3612931
73261 --
73262 l_trx_reversal_source := SUBSTR(NULL, 1,30);
73263 
73264 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
73265    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
73266 
73267    xla_accounting_err_pkg.build_message
73268       (p_appli_s_name            => 'XLA'
73269       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
73270       ,p_token_1                 => 'ACCT_ATTR_NAME'
73271       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
73272       ,p_token_2                 => 'PRODUCT_NAME'
73273       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
73274       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
73275       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
73276       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
73277 
73278 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
73279    --
73280    -- following sets the accounting attributes needed to reverse
73281    -- accounting for a distributeion
73282    --
73283    xla_ae_lines_pkg.SetTrxReversalAttrs
73284       (p_event_id              => l_event_id
73285       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
73286       ,p_trx_reversal_source   => l_trx_reversal_source);
73287 
73288 END IF;
73289 
73290 
73291 ----------------------------------------------------------------
73295 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
73292 -- 4262811 -  update the header statuses to invalid in need be
73293 ----------------------------------------------------------------
73294 --
73296 
73297 
73298   -----------------------------------------------
73299   -- No accrual reversal for the event class/type
73300   -----------------------------------------------
73301 ----------------------------------------------------------------
73302 
73303 --
73304 -- this ends the header loop iteration for one bulk fetch
73305 --
73306 END LOOP;
73307 
73308 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
73309 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
73310 
73311 --
73312 -- insert dummy rows into lines gt table that were created due to
73313 -- transaction reversals
73314 --
73315 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
73316    l_result := XLA_AE_LINES_PKG.InsertLines;
73317 END IF;
73318 
73319 --
73320 -- reset the temp_line_num for each set of events fetched from header
73321 -- cursor rather than doing it for each new event in line cursor
73322 -- Bug 3939231
73323 --
73324 xla_ae_lines_pkg.g_temp_line_num := 0;
73325 
73326 
73327 
73328 --
73329 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
73330 --
73331 --
73332 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73333 
73334       trace
73335          (p_msg      => 'SQL - FETCH line_cur'
73336          ,p_level    => C_LEVEL_STATEMENT
73337          ,p_module   => l_log_module);
73338 
73339 END IF;
73340 --
73341 --
73342 LOOP
73343   --
73344   FETCH line_cur BULK COLLECT INTO
73345         l_array_entity_id
73346       , l_array_legal_entity_id
73347       , l_array_entity_code
73348       , l_array_transaction_num
73349       , l_array_event_id
73350       , l_array_class_code
73351       , l_array_event_type
73352       , l_array_event_number
73353       , l_array_event_date
73354       , l_array_transaction_date
73355       , l_array_reference_num_1
73356       , l_array_reference_num_2
73357       , l_array_reference_num_3
73358       , l_array_reference_num_4
73359       , l_array_reference_char_1
73360       , l_array_reference_char_2
73361       , l_array_reference_char_3
73362       , l_array_reference_char_4
73363       , l_array_reference_date_1
73364       , l_array_reference_date_2
73365       , l_array_reference_date_3
73366       , l_array_reference_date_4
73367       , l_array_event_created_by
73368       , l_array_budgetary_control_flag
73369       , l_array_extract_line_num 
73370       , l_array_source_3
73371       , l_array_source_4
73372       , l_array_source_6
73373       , l_array_source_24
73374       , l_array_source_32
73375       , l_array_source_39
73376       , l_array_source_40
73377       , l_array_source_43
73378       , l_array_source_64
73379       , l_array_source_65
73380       , l_array_source_67
73381       , l_array_source_68
73382       , l_array_source_69
73383       , l_array_source_70
73384       , l_array_source_71
73385       , l_array_source_74
73386       , l_array_source_75
73387       , l_array_source_76
73388       LIMIT l_rows;
73389 
73390   --
73391   IF (C_LEVEL_EVENT >= g_log_level) THEN
73392             trace
73393                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
73394                ,p_level    => C_LEVEL_EVENT
73395                ,p_module   => l_log_module);
73396   END IF;
73397   --
73398   EXIT WHEN l_array_entity_id.count = 0;
73399 
73400   XLA_AE_LINES_PKG.g_rec_lines := null;
73401 
73402 --
73403 -- Bug 4458708
73404 --
73405 XLA_AE_LINES_PKG.g_LineNumber := 0;
73406 --
73407 --
73408 
73409 FOR Idx IN 1..l_array_event_id.count LOOP
73410    --
73411    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
73412    --
73413    l_event_id := l_array_event_id(idx);  -- 5648433
73414 
73415    --
73416    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
73417    --
73418 
73419    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
73420              (g_array_event(l_event_id).array_value_num('header_index'))
73421          ,'N'
73422          ) <> 'Y'
73423    THEN
73424       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
73425          trace
73426             (p_msg      => 'Trancaction revesal option is not Y '
73427             ,p_level    => C_LEVEL_STATEMENT
73428             ,p_module   => l_log_module);
73429       END IF;
73430 
73431 --
73432 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
73433 --
73434 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
73435 --
73436 -- set event info as cache for other routines to refer event attributes
73437 --
73438 
73439 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
73440    l_previous_event_id := l_event_id;
73441 
73442    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
73443       (p_application_id           => p_application_id
73444       ,p_primary_ledger_id        => p_primary_ledger_id
73445       ,p_base_ledger_id           => p_base_ledger_id
73449       ,p_entity_code              => l_array_entity_code(Idx)
73446       ,p_target_ledger_id         => p_target_ledger_id
73447       ,p_entity_id                => l_array_entity_id(Idx)
73448       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
73450       ,p_transaction_num          => l_array_transaction_num(Idx)
73451       ,p_event_id                 => l_array_event_id(Idx)
73452       ,p_event_class_code         => l_array_class_code(Idx)
73453       ,p_event_type_code          => l_array_event_type(Idx)
73454       ,p_event_number             => l_array_event_number(Idx)
73455       ,p_event_date               => l_array_event_date(Idx)
73456       ,p_transaction_date         => l_array_transaction_date(Idx)
73457       ,p_reference_num_1          => l_array_reference_num_1(Idx)
73458       ,p_reference_num_2          => l_array_reference_num_2(Idx)
73459       ,p_reference_num_3          => l_array_reference_num_3(Idx)
73460       ,p_reference_num_4          => l_array_reference_num_4(Idx)
73461       ,p_reference_char_1         => l_array_reference_char_1(Idx)
73462       ,p_reference_char_2         => l_array_reference_char_2(Idx)
73463       ,p_reference_char_3         => l_array_reference_char_3(Idx)
73464       ,p_reference_char_4         => l_array_reference_char_4(Idx)
73465       ,p_reference_date_1         => l_array_reference_date_1(Idx)
73466       ,p_reference_date_2         => l_array_reference_date_2(Idx)
73467       ,p_reference_date_3         => l_array_reference_date_3(Idx)
73468       ,p_reference_date_4         => l_array_reference_date_4(Idx)
73469       ,p_event_created_by         => l_array_event_created_by(Idx)
73470       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
73471        --
73472 END IF;
73473 
73474 
73475 
73476 --
73477 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
73478 
73479 l_acct_reversal_source := SUBSTR(NULL, 1,30);
73480 
73481 IF l_continue_with_lines THEN
73482    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
73483       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
73484 
73485       xla_accounting_err_pkg.build_message
73486          (p_appli_s_name            => 'XLA'
73487          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
73488          ,p_token_1                 => 'LINE_NUMBER'
73489          ,p_value_1                 => l_array_extract_line_num(Idx)
73490          ,p_token_2                 => 'PRODUCT_NAME'
73491          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
73492          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
73493          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
73494          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
73495 
73496    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
73497       --
73498       -- following sets the accounting attributes needed to reverse
73499       -- accounting for a distributeion
73500       --
73501 
73502       --
73503       -- 5217187
73504       --
73505       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
73506       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
73507                                        g_array_event(l_event_id).array_value_num('header_index'));
73508       --
73509       --
73510 
73511       -- No reversal code generated
73512 
73513       xla_ae_lines_pkg.SetAcctReversalAttrs
73514          (p_event_id             => l_event_id
73515          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
73516          ,p_calculate_acctd_flag => l_calculate_acctd_flag
73517          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
73518    END IF;
73519 
73520    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
73521        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
73522 
73523 --
73524 AcctLineType_53 (
73525  p_application_id  => p_application_id
73526  ,p_event_id     => l_event_id
73527  ,p_calculate_acctd_flag => l_calculate_acctd_flag
73528  ,p_calculate_g_l_flag => l_calculate_g_l_flag
73529  ,p_actual_flag => l_actual_flag
73530  ,p_balance_type_code => l_balance_type_code
73531  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
73532  
73533  , p_source_32 => l_array_source_32(Idx)
73534  , p_source_39 => l_array_source_39(Idx)
73535  , p_source_43 => l_array_source_43(Idx)
73536  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
73537  , p_source_64 => l_array_source_64(Idx)
73538  , p_source_65 => l_array_source_65(Idx)
73539  , p_source_66 => g_array_event(l_event_id).array_value_char('source_66')
73540  , p_source_67 => l_array_source_67(Idx)
73541  , p_source_68 => l_array_source_68(Idx)
73542  , p_source_69 => l_array_source_69(Idx)
73543  , p_source_70 => l_array_source_70(Idx)
73544  , p_source_71 => l_array_source_71(Idx)
73545  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
73546  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
73547  , p_source_74 => l_array_source_74(Idx)
73548  );
73549 If(l_balance_type_code = 'A') THEN
73550   l_actual_gain_loss_ref := l_gain_or_loss_ref;
73551 END IF;
73552 
73553 --
73554 
73555 
73556 --
73557 AcctLineType_54 (
73558  p_application_id  => p_application_id
73559  ,p_event_id     => l_event_id
73560  ,p_calculate_acctd_flag => l_calculate_acctd_flag
73561  ,p_calculate_g_l_flag => l_calculate_g_l_flag
73565  
73562  ,p_actual_flag => l_actual_flag
73563  ,p_balance_type_code => l_balance_type_code
73564  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
73566  , p_source_3 => l_array_source_3(Idx)
73567  , p_source_4 => l_array_source_4(Idx)
73568  , p_source_6 => l_array_source_6(Idx)
73569  , p_source_32 => l_array_source_32(Idx)
73570  , p_source_39 => l_array_source_39(Idx)
73571  , p_source_43 => l_array_source_43(Idx)
73572  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
73573  , p_source_64 => l_array_source_64(Idx)
73574  , p_source_65 => l_array_source_65(Idx)
73575  , p_source_66 => g_array_event(l_event_id).array_value_char('source_66')
73576  , p_source_67 => l_array_source_67(Idx)
73577  , p_source_68 => l_array_source_68(Idx)
73578  , p_source_69 => l_array_source_69(Idx)
73579  , p_source_70 => l_array_source_70(Idx)
73580  , p_source_71 => l_array_source_71(Idx)
73581  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
73582  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
73583  , p_source_74 => l_array_source_74(Idx)
73584  );
73585 If(l_balance_type_code = 'A') THEN
73586   l_actual_gain_loss_ref := l_gain_or_loss_ref;
73587 END IF;
73588 
73589 --
73590 
73591 
73592 --
73593 AcctLineType_55 (
73594  p_application_id  => p_application_id
73595  ,p_event_id     => l_event_id
73596  ,p_calculate_acctd_flag => l_calculate_acctd_flag
73597  ,p_calculate_g_l_flag => l_calculate_g_l_flag
73598  ,p_actual_flag => l_actual_flag
73599  ,p_balance_type_code => l_balance_type_code
73600  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
73601  
73602  , p_source_32 => l_array_source_32(Idx)
73603  , p_source_39 => l_array_source_39(Idx)
73604  , p_source_43 => l_array_source_43(Idx)
73605  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
73606  , p_source_64 => l_array_source_64(Idx)
73607  , p_source_65 => l_array_source_65(Idx)
73608  , p_source_66 => g_array_event(l_event_id).array_value_char('source_66')
73609  , p_source_67 => l_array_source_67(Idx)
73610  , p_source_68 => l_array_source_68(Idx)
73611  , p_source_69 => l_array_source_69(Idx)
73612  , p_source_70 => l_array_source_70(Idx)
73613  , p_source_71 => l_array_source_71(Idx)
73614  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
73615  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
73616  , p_source_74 => l_array_source_74(Idx)
73617  );
73618 If(l_balance_type_code = 'A') THEN
73619   l_actual_gain_loss_ref := l_gain_or_loss_ref;
73620 END IF;
73621 
73622 --
73623 
73624 
73625 --
73626 AcctLineType_56 (
73627  p_application_id  => p_application_id
73628  ,p_event_id     => l_event_id
73629  ,p_calculate_acctd_flag => l_calculate_acctd_flag
73630  ,p_calculate_g_l_flag => l_calculate_g_l_flag
73631  ,p_actual_flag => l_actual_flag
73632  ,p_balance_type_code => l_balance_type_code
73633  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
73634  
73635  , p_source_32 => l_array_source_32(Idx)
73636  , p_source_39 => l_array_source_39(Idx)
73637  , p_source_40 => l_array_source_40(Idx)
73638  , p_source_43 => l_array_source_43(Idx)
73639  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
73640  , p_source_64 => l_array_source_64(Idx)
73641  , p_source_65 => l_array_source_65(Idx)
73642  , p_source_66 => g_array_event(l_event_id).array_value_char('source_66')
73643  , p_source_67 => l_array_source_67(Idx)
73644  , p_source_68 => l_array_source_68(Idx)
73645  , p_source_69 => l_array_source_69(Idx)
73646  , p_source_70 => l_array_source_70(Idx)
73647  , p_source_71 => l_array_source_71(Idx)
73648  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
73649  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
73650  , p_source_74 => l_array_source_74(Idx)
73651  );
73652 If(l_balance_type_code = 'A') THEN
73653   l_actual_gain_loss_ref := l_gain_or_loss_ref;
73654 END IF;
73655 
73656 --
73657 
73658 
73659 --
73660 AcctLineType_57 (
73661  p_application_id  => p_application_id
73662  ,p_event_id     => l_event_id
73663  ,p_calculate_acctd_flag => l_calculate_acctd_flag
73664  ,p_calculate_g_l_flag => l_calculate_g_l_flag
73665  ,p_actual_flag => l_actual_flag
73666  ,p_balance_type_code => l_balance_type_code
73667  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
73668  
73669  , p_source_24 => l_array_source_24(Idx)
73670  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
73671  , p_source_64 => l_array_source_64(Idx)
73672  , p_source_65 => l_array_source_65(Idx)
73673  , p_source_66 => g_array_event(l_event_id).array_value_char('source_66')
73674  , p_source_67 => l_array_source_67(Idx)
73675  , p_source_68 => l_array_source_68(Idx)
73676  , p_source_69 => l_array_source_69(Idx)
73677  , p_source_70 => l_array_source_70(Idx)
73678  , p_source_71 => l_array_source_71(Idx)
73679  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
73680  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
73681  , p_source_74 => l_array_source_74(Idx)
73682  , p_source_75 => l_array_source_75(Idx)
73683  , p_source_76 => l_array_source_76(Idx)
73684  );
73685 If(l_balance_type_code = 'A') THEN
73686   l_actual_gain_loss_ref := l_gain_or_loss_ref;
73687 END IF;
73688 
73689 --
73690 
73691 
73692 --
73693 AcctLineType_58 (
73697  ,p_calculate_g_l_flag => l_calculate_g_l_flag
73694  p_application_id  => p_application_id
73695  ,p_event_id     => l_event_id
73696  ,p_calculate_acctd_flag => l_calculate_acctd_flag
73698  ,p_actual_flag => l_actual_flag
73699  ,p_balance_type_code => l_balance_type_code
73700  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
73701  
73702  , p_source_24 => l_array_source_24(Idx)
73703  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
73704  , p_source_64 => l_array_source_64(Idx)
73705  , p_source_65 => l_array_source_65(Idx)
73706  , p_source_66 => g_array_event(l_event_id).array_value_char('source_66')
73707  , p_source_67 => l_array_source_67(Idx)
73708  , p_source_68 => l_array_source_68(Idx)
73709  , p_source_69 => l_array_source_69(Idx)
73710  , p_source_70 => l_array_source_70(Idx)
73711  , p_source_71 => l_array_source_71(Idx)
73712  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
73713  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
73714  , p_source_74 => l_array_source_74(Idx)
73715  , p_source_75 => l_array_source_75(Idx)
73716  , p_source_76 => l_array_source_76(Idx)
73717  );
73718 If(l_balance_type_code = 'A') THEN
73719   l_actual_gain_loss_ref := l_gain_or_loss_ref;
73720 END IF;
73721 
73722 --
73723 
73724 
73725 --
73726 AcctLineType_59 (
73727  p_application_id  => p_application_id
73728  ,p_event_id     => l_event_id
73729  ,p_calculate_acctd_flag => l_calculate_acctd_flag
73730  ,p_calculate_g_l_flag => l_calculate_g_l_flag
73731  ,p_actual_flag => l_actual_flag
73732  ,p_balance_type_code => l_balance_type_code
73733  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
73734  
73735  , p_source_24 => l_array_source_24(Idx)
73736  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
73737  , p_source_64 => l_array_source_64(Idx)
73738  , p_source_65 => l_array_source_65(Idx)
73739  , p_source_66 => g_array_event(l_event_id).array_value_char('source_66')
73740  , p_source_67 => l_array_source_67(Idx)
73741  , p_source_68 => l_array_source_68(Idx)
73742  , p_source_69 => l_array_source_69(Idx)
73743  , p_source_70 => l_array_source_70(Idx)
73744  , p_source_71 => l_array_source_71(Idx)
73745  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
73746  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
73747  , p_source_74 => l_array_source_74(Idx)
73748  , p_source_75 => l_array_source_75(Idx)
73749  , p_source_76 => l_array_source_76(Idx)
73750  );
73751 If(l_balance_type_code = 'A') THEN
73752   l_actual_gain_loss_ref := l_gain_or_loss_ref;
73753 END IF;
73754 
73755 --
73756 
73757 
73758 --
73759 AcctLineType_60 (
73760  p_application_id  => p_application_id
73761  ,p_event_id     => l_event_id
73762  ,p_calculate_acctd_flag => l_calculate_acctd_flag
73763  ,p_calculate_g_l_flag => l_calculate_g_l_flag
73764  ,p_actual_flag => l_actual_flag
73765  ,p_balance_type_code => l_balance_type_code
73766  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
73767  
73768  , p_source_24 => l_array_source_24(Idx)
73769  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
73770  , p_source_64 => l_array_source_64(Idx)
73771  , p_source_65 => l_array_source_65(Idx)
73772  , p_source_66 => g_array_event(l_event_id).array_value_char('source_66')
73773  , p_source_67 => l_array_source_67(Idx)
73774  , p_source_68 => l_array_source_68(Idx)
73775  , p_source_69 => l_array_source_69(Idx)
73776  , p_source_70 => l_array_source_70(Idx)
73777  , p_source_71 => l_array_source_71(Idx)
73778  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
73779  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
73780  , p_source_74 => l_array_source_74(Idx)
73781  , p_source_75 => l_array_source_75(Idx)
73782  , p_source_76 => l_array_source_76(Idx)
73783  );
73784 If(l_balance_type_code = 'A') THEN
73785   l_actual_gain_loss_ref := l_gain_or_loss_ref;
73786 END IF;
73787 
73788 --
73789 
73790 
73791 --
73792 AcctLineType_61 (
73793  p_application_id  => p_application_id
73794  ,p_event_id     => l_event_id
73795  ,p_calculate_acctd_flag => l_calculate_acctd_flag
73796  ,p_calculate_g_l_flag => l_calculate_g_l_flag
73797  ,p_actual_flag => l_actual_flag
73798  ,p_balance_type_code => l_balance_type_code
73799  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
73800  
73801  , p_source_24 => l_array_source_24(Idx)
73802  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
73803  , p_source_64 => l_array_source_64(Idx)
73804  , p_source_65 => l_array_source_65(Idx)
73805  , p_source_66 => g_array_event(l_event_id).array_value_char('source_66')
73806  , p_source_67 => l_array_source_67(Idx)
73807  , p_source_68 => l_array_source_68(Idx)
73808  , p_source_69 => l_array_source_69(Idx)
73809  , p_source_70 => l_array_source_70(Idx)
73810  , p_source_71 => l_array_source_71(Idx)
73811  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
73812  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
73813  , p_source_74 => l_array_source_74(Idx)
73814  , p_source_75 => l_array_source_75(Idx)
73815  , p_source_76 => l_array_source_76(Idx)
73816  );
73817 If(l_balance_type_code = 'A') THEN
73818   l_actual_gain_loss_ref := l_gain_or_loss_ref;
73819 END IF;
73820 
73821 --
73822 
73823 
73824 --
73825 AcctLineType_62 (
73829  ,p_calculate_g_l_flag => l_calculate_g_l_flag
73826  p_application_id  => p_application_id
73827  ,p_event_id     => l_event_id
73828  ,p_calculate_acctd_flag => l_calculate_acctd_flag
73830  ,p_actual_flag => l_actual_flag
73831  ,p_balance_type_code => l_balance_type_code
73832  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
73833  
73834  , p_source_24 => l_array_source_24(Idx)
73835  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
73836  , p_source_64 => l_array_source_64(Idx)
73837  , p_source_65 => l_array_source_65(Idx)
73838  , p_source_66 => g_array_event(l_event_id).array_value_char('source_66')
73839  , p_source_67 => l_array_source_67(Idx)
73840  , p_source_68 => l_array_source_68(Idx)
73841  , p_source_69 => l_array_source_69(Idx)
73842  , p_source_70 => l_array_source_70(Idx)
73843  , p_source_71 => l_array_source_71(Idx)
73844  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
73845  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
73846  , p_source_74 => l_array_source_74(Idx)
73847  , p_source_75 => l_array_source_75(Idx)
73848  , p_source_76 => l_array_source_76(Idx)
73849  );
73850 If(l_balance_type_code = 'A') THEN
73851   l_actual_gain_loss_ref := l_gain_or_loss_ref;
73852 END IF;
73853 
73854 --
73855 
73856 
73857 --
73858 AcctLineType_63 (
73859  p_application_id  => p_application_id
73860  ,p_event_id     => l_event_id
73861  ,p_calculate_acctd_flag => l_calculate_acctd_flag
73862  ,p_calculate_g_l_flag => l_calculate_g_l_flag
73863  ,p_actual_flag => l_actual_flag
73864  ,p_balance_type_code => l_balance_type_code
73865  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
73866  
73867  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
73868  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
73869  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
73870  , p_source_64 => l_array_source_64(Idx)
73871  , p_source_65 => l_array_source_65(Idx)
73872  , p_source_70 => l_array_source_70(Idx)
73873  , p_source_71 => l_array_source_71(Idx)
73874  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
73875  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
73876  , p_source_74 => l_array_source_74(Idx)
73877  );
73878 If(l_balance_type_code = 'A') THEN
73879   l_actual_gain_loss_ref := l_gain_or_loss_ref;
73880 END IF;
73881 
73882 --
73883 
73884 
73885 --
73886 AcctLineType_64 (
73887  p_application_id  => p_application_id
73888  ,p_event_id     => l_event_id
73889  ,p_calculate_acctd_flag => l_calculate_acctd_flag
73890  ,p_calculate_g_l_flag => l_calculate_g_l_flag
73891  ,p_actual_flag => l_actual_flag
73892  ,p_balance_type_code => l_balance_type_code
73893  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
73894  
73895  , p_source_24 => l_array_source_24(Idx)
73896  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
73897  , p_source_64 => l_array_source_64(Idx)
73898  , p_source_65 => l_array_source_65(Idx)
73899  , p_source_66 => g_array_event(l_event_id).array_value_char('source_66')
73900  , p_source_67 => l_array_source_67(Idx)
73901  , p_source_68 => l_array_source_68(Idx)
73902  , p_source_69 => l_array_source_69(Idx)
73903  , p_source_70 => l_array_source_70(Idx)
73904  , p_source_71 => l_array_source_71(Idx)
73905  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
73906  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
73907  , p_source_74 => l_array_source_74(Idx)
73908  , p_source_75 => l_array_source_75(Idx)
73909  , p_source_76 => l_array_source_76(Idx)
73910  );
73911 If(l_balance_type_code = 'A') THEN
73912   l_actual_gain_loss_ref := l_gain_or_loss_ref;
73913 END IF;
73914 
73915 --
73916 
73917 
73918 --
73919 AcctLineType_65 (
73920  p_application_id  => p_application_id
73921  ,p_event_id     => l_event_id
73922  ,p_calculate_acctd_flag => l_calculate_acctd_flag
73923  ,p_calculate_g_l_flag => l_calculate_g_l_flag
73924  ,p_actual_flag => l_actual_flag
73925  ,p_balance_type_code => l_balance_type_code
73926  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
73927  
73928  , p_source_24 => l_array_source_24(Idx)
73929  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
73930  , p_source_64 => l_array_source_64(Idx)
73931  , p_source_65 => l_array_source_65(Idx)
73932  , p_source_66 => g_array_event(l_event_id).array_value_char('source_66')
73933  , p_source_67 => l_array_source_67(Idx)
73934  , p_source_68 => l_array_source_68(Idx)
73935  , p_source_69 => l_array_source_69(Idx)
73936  , p_source_70 => l_array_source_70(Idx)
73937  , p_source_71 => l_array_source_71(Idx)
73938  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
73939  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
73940  , p_source_74 => l_array_source_74(Idx)
73941  , p_source_75 => l_array_source_75(Idx)
73942  , p_source_76 => l_array_source_76(Idx)
73943  );
73944 If(l_balance_type_code = 'A') THEN
73945   l_actual_gain_loss_ref := l_gain_or_loss_ref;
73946 END IF;
73947 
73948 --
73949 
73950 
73951 --
73952 AcctLineType_66 (
73953  p_application_id  => p_application_id
73954  ,p_event_id     => l_event_id
73955  ,p_calculate_acctd_flag => l_calculate_acctd_flag
73956  ,p_calculate_g_l_flag => l_calculate_g_l_flag
73957  ,p_actual_flag => l_actual_flag
73961  , p_source_24 => l_array_source_24(Idx)
73958  ,p_balance_type_code => l_balance_type_code
73959  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
73960  
73962  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
73963  , p_source_64 => l_array_source_64(Idx)
73964  , p_source_65 => l_array_source_65(Idx)
73965  , p_source_66 => g_array_event(l_event_id).array_value_char('source_66')
73966  , p_source_67 => l_array_source_67(Idx)
73967  , p_source_68 => l_array_source_68(Idx)
73968  , p_source_69 => l_array_source_69(Idx)
73969  , p_source_70 => l_array_source_70(Idx)
73970  , p_source_71 => l_array_source_71(Idx)
73971  , p_source_72 => g_array_event(l_event_id).array_value_num('source_72')
73972  , p_source_73 => g_array_event(l_event_id).array_value_num('source_73')
73973  , p_source_74 => l_array_source_74(Idx)
73974  , p_source_75 => l_array_source_75(Idx)
73975  , p_source_76 => l_array_source_76(Idx)
73976  );
73977 If(l_balance_type_code = 'A') THEN
73978   l_actual_gain_loss_ref := l_gain_or_loss_ref;
73979 END IF;
73980 
73981 --
73982 
73983       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
73984       -- or secondary ledger that has different currency with primary
73985       -- or alc that is calculated by sla
73986       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
73987             (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'))
73988 
73989 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
73990 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
73991           AND (l_actual_flag = 'A')) THEN
73992         XLA_AE_LINES_PKG.CreateGainOrLossLines(
73993           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
73994          ,p_application_id   => p_application_id
73995          ,p_amb_context_code => 'DEFAULT'
73996          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
73997          ,p_event_class_code => C_EVENT_CLASS_CODE
73998          ,p_event_type_code  => C_EVENT_TYPE_CODE
73999          
74000          ,p_gain_ccid        => -1
74001          ,p_loss_ccid        => -1
74002 
74003          ,p_actual_flag      => l_actual_flag
74004          ,p_enc_flag         => null
74005          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
74006          ,p_enc_g_l_ref      => null
74007          );
74008       END IF;
74009    END IF;
74010 END IF;
74011 
74012    ELSE
74013       --
74014       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
74015       --
74016       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74017          trace
74018             (p_msg      => 'Trancaction revesal option is Y'
74019             ,p_level    => C_LEVEL_STATEMENT
74020             ,p_module   => l_log_module);
74021       END IF;
74022    END IF;
74023 
74024 END LOOP;
74025 l_result := XLA_AE_LINES_PKG.InsertLines ;
74026 end loop;
74027 close line_cur;
74028 
74029 
74030 --
74031 -- insert headers into xla_ae_headers_gt table
74032 --
74033 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
74034 
74035 -- insert into errors table here.
74036 
74037 END LOOP;
74038 
74039 --
74040 -- 4865292
74041 --
74042 -- Compare g_hdr_extract_count with event count in
74043 -- CreateHeadersAndLines.
74044 --
74045 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
74046 
74047 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74048    trace (p_msg     => '# rows extracted from header extract objects '
74049                     || ' (running total): '
74050                     || g_hdr_extract_count
74051          ,p_level   => C_LEVEL_STATEMENT
74052          ,p_module  => l_log_module);
74053 END IF;
74054 
74055 CLOSE header_cur;
74056 --
74057 
74058 --
74059 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74060    trace
74061       (p_msg      => 'END of EventClass_147'
74062       ,p_level    => C_LEVEL_PROCEDURE
74063       ,p_module   => l_log_module);
74064 END IF;
74065 --
74066 RETURN l_result;
74067 EXCEPTION
74068 WHEN xla_exceptions_pkg.application_exception THEN
74069    
74070 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
74071 
74072    
74073 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
74074 
74075    RAISE;
74076 
74077 WHEN NO_DATA_FOUND THEN
74078 
74079 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
74080 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
74081 
74082 FOR header_record IN header_cur
74083 LOOP
74084     l_array_header_events(header_record.event_id) := header_record.event_id;
74085 END LOOP;
74086 
74087 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
74088 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
74089 
74090 fnd_file.put_line(fnd_file.LOG, '                    ');
74091 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
74092 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
74093 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
74094 
74098 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
74095 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
74096 LOOP
74097 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
74099         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
74100 	END IF;
74101 END LOOP;
74102 
74103 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
74104 fnd_file.put_line(fnd_file.LOG, '                    ');
74105 
74106 
74107 xla_exceptions_pkg.raise_message
74108       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_147');
74109 
74110 
74111 WHEN OTHERS THEN
74112    xla_exceptions_pkg.raise_message
74113       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_147');
74114 END EventClass_147;
74115 --
74116 
74117 ---------------------------------------
74118 --
74119 -- PRIVATE PROCEDURE
74120 --         insert_sources_148
74121 --
74122 ----------------------------------------
74123 --
74124 PROCEDURE insert_sources_148(
74125                                 p_target_ledger_id       IN NUMBER
74126                               , p_language               IN VARCHAR2
74127                               , p_sla_ledger_id          IN NUMBER
74128                               , p_pad_start_date         IN DATE
74129                               , p_pad_end_date           IN DATE
74130                          )
74131 IS
74132 
74133 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DEBIT_MEMO_ALL';
74134 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DEBIT_MEMO';
74135 p_apps_owner                   VARCHAR2(30);
74136 l_log_module                   VARCHAR2(240);
74137 BEGIN
74138 IF g_log_enabled THEN
74139       l_log_module := C_DEFAULT_MODULE||'.insert_sources_148';
74140 END IF;
74141 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74142 
74143       trace
74144          (p_msg      => 'BEGIN of insert_sources_148'
74145          ,p_level    => C_LEVEL_PROCEDURE
74146          ,p_module   => l_log_module);
74147 
74148 END IF;
74149 
74150 -- select APPS owner
74151 SELECT oracle_username
74152   INTO p_apps_owner
74153   FROM fnd_oracle_userid
74154  WHERE read_only_flag = 'U'
74155 ;
74156 
74157 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74158       trace
74159          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
74160                         ' - p_language = '||p_language||
74161                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
74162                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
74163                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
74164                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
74165          ,p_level    => C_LEVEL_STATEMENT
74166          ,p_module   => l_log_module);
74167 END IF;
74168 
74169 
74170 --
74171 INSERT INTO xla_diag_sources --hdr2
74172 (
74173         event_id
74174       , ledger_id
74175       , sla_ledger_id
74176       , description_language
74177       , object_name
74178       , object_type_code
74179       , line_number
74180       , source_application_id
74181       , source_type_code
74182       , source_code
74183       , source_value
74184       , source_meaning
74185       , created_by
74186       , creation_date
74187       , last_update_date
74188       , last_updated_by
74189       , last_update_login
74190       , program_update_date
74191       , program_application_id
74192       , program_id
74193       , request_id
74194 )
74195 SELECT
74196         event_id
74197       , p_target_ledger_id
74198       , p_sla_ledger_id
74199       , p_language
74200       , object_name
74201       , object_type_code
74202       , line_number
74203       , source_application_id
74204       , source_type_code
74205       , source_code
74206       , SUBSTR(source_value ,1,1996)
74207       , SUBSTR(source_meaning ,1,200)
74208       , xla_environment_pkg.g_Usr_Id
74209       , TRUNC(SYSDATE)
74210       , TRUNC(SYSDATE)
74211       , xla_environment_pkg.g_Usr_Id
74212       , xla_environment_pkg.g_Login_Id
74213       , TRUNC(SYSDATE)
74214       , xla_environment_pkg.g_Prog_Appl_Id
74215       , xla_environment_pkg.g_Prog_Id
74216       , xla_environment_pkg.g_Req_Id
74217   FROM (
74218        SELECT xet.event_id                  event_id
74219             , 0                          line_number
74220             , CASE r
74221                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
74222                 WHEN 2 THEN 'AR_TRANSACTIONS_S_V' 
74223                 WHEN 3 THEN 'AR_TRANSACTIONS_S_V' 
74224                 WHEN 4 THEN 'AR_TRANSACTIONS_S_V' 
74225                 WHEN 5 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
74226                 WHEN 6 THEN 'AR_BILL_TO_SITE_USES_S_V' 
74227                 WHEN 7 THEN 'AR_TRANSACTIONS_S_V' 
74228                 WHEN 8 THEN 'AR_TRANSACTIONS_S_V' 
74229                 WHEN 9 THEN 'AR_TRANSACTIONS_S_V' 
74230                 
74231                ELSE null
74232               END                           object_name
74233             , CASE r
74234                 WHEN 1 THEN 'HEADER' 
74235                 WHEN 2 THEN 'HEADER' 
74236                 WHEN 3 THEN 'HEADER' 
74237                 WHEN 4 THEN 'HEADER' 
74241                 WHEN 8 THEN 'HEADER' 
74238                 WHEN 5 THEN 'HEADER' 
74239                 WHEN 6 THEN 'HEADER' 
74240                 WHEN 7 THEN 'HEADER' 
74242                 WHEN 9 THEN 'HEADER' 
74243                 
74244                 ELSE null
74245               END                           object_type_code
74246             , CASE r
74247                 WHEN 1 THEN '222' 
74248                 WHEN 2 THEN '222' 
74249                 WHEN 3 THEN '222' 
74250                 WHEN 4 THEN '222' 
74251                 WHEN 5 THEN '222' 
74252                 WHEN 6 THEN '222' 
74253                 WHEN 7 THEN '222' 
74254                 WHEN 8 THEN '222' 
74255                 WHEN 9 THEN '222' 
74256                 
74257                 ELSE null
74258               END                           source_application_id
74259             , 'S'             source_type_code
74260             , CASE r
74261                 WHEN 1 THEN 'TRX_TYPE_NAME' 
74262                 WHEN 2 THEN 'TRX_NUMBER' 
74263                 WHEN 3 THEN 'TRX_DOC_SEQUENCE_CATEGORY' 
74264                 WHEN 4 THEN 'TRX_DOC_SEQUENCE_VALUE' 
74265                 WHEN 5 THEN 'BILL_CUST_ACCOUNT_ID' 
74266                 WHEN 6 THEN 'BILL_USES_SITE_USE_ID' 
74267                 WHEN 7 THEN 'XLA_PARTY_TYPE' 
74268                 WHEN 8 THEN 'TRX_INVOICE_CURRENCY_CODE' 
74269                 WHEN 9 THEN 'TRX_DOC_SEQUENCE_ID' 
74270                 
74271                 ELSE null
74272               END                           source_code
74273             , CASE r
74274                 WHEN 1 THEN TO_CHAR(h5.TRX_TYPE_NAME)
74275                 WHEN 2 THEN TO_CHAR(h5.TRX_NUMBER)
74276                 WHEN 3 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_CATEGORY)
74277                 WHEN 4 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_VALUE)
74278                 WHEN 5 THEN TO_CHAR(h1.BILL_CUST_ACCOUNT_ID)
74279                 WHEN 6 THEN TO_CHAR(h2.BILL_USES_SITE_USE_ID)
74280                 WHEN 7 THEN TO_CHAR(h5.XLA_PARTY_TYPE)
74281                 WHEN 8 THEN TO_CHAR(h5.TRX_INVOICE_CURRENCY_CODE)
74282                 WHEN 9 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_ID)
74283                 
74284                 ELSE null
74285               END                           source_value
74286             , null              source_meaning
74287          FROM xla_events_gt     xet  
74288       , AR_BILL_TO_CUSTOMERS_S_V  h1
74289       , AR_BILL_TO_SITE_USES_S_V  h2
74290       , AR_TRANSACTIONS_S_V  h5
74291              ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
74292          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
74293            AND xet.event_class_code = C_EVENT_CLASS_CODE
74294               AND h1.event_id = xet.event_id
74295   AND h2.event_id  = h1.event_id
74296   AND h5.event_id  = h1.event_id
74297 
74298 )
74299 ;
74300 --
74301 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74302 
74303       trace
74304          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
74305          ,p_level    => C_LEVEL_STATEMENT
74306          ,p_module   => l_log_module);
74307 
74308 END IF;
74309 --
74310 
74311 
74312 
74313 --
74314 INSERT INTO xla_diag_sources  --line2
74315 (
74316         event_id
74317       , ledger_id
74318       , sla_ledger_id
74319       , description_language
74320       , object_name
74321       , object_type_code
74322       , line_number
74323       , source_application_id
74324       , source_type_code
74325       , source_code
74326       , source_value
74327       , source_meaning
74328       , created_by
74329       , creation_date
74330       , last_update_date
74331       , last_updated_by
74332       , last_update_login
74333       , program_update_date
74334       , program_application_id
74335       , program_id
74336       , request_id
74337 )
74338 SELECT  event_id
74339       , p_target_ledger_id
74340       , p_sla_ledger_id
74341       , p_language
74342       , object_name
74343       , object_type_code
74344       , line_number
74345       , source_application_id
74346       , source_type_code
74347       , source_code
74348       , SUBSTR(source_value,1,1996)
74349       , SUBSTR(source_meaning ,1,200)
74350       , xla_environment_pkg.g_Usr_Id
74351       , TRUNC(SYSDATE)
74352       , TRUNC(SYSDATE)
74353       , xla_environment_pkg.g_Usr_Id
74354       , xla_environment_pkg.g_Login_Id
74355       , TRUNC(SYSDATE)
74356       , xla_environment_pkg.g_Prog_Appl_Id
74357       , xla_environment_pkg.g_Prog_Id
74358       , xla_environment_pkg.g_Req_Id
74359   FROM (
74360        SELECT xet.event_id                  event_id
74361             , l4.line_number                 line_number
74362             , CASE r
74363                WHEN 1 THEN 'AR_CUST_TRX_LINES_L_V' 
74364                 WHEN 2 THEN 'AR_CUST_TRX_LINES_L_V' 
74365                 WHEN 3 THEN 'AR_CUST_TRX_LINES_L_V' 
74366                 WHEN 4 THEN 'AR_CUST_TRX_LINES_L_V' 
74367                 WHEN 5 THEN 'AR_CUST_TRX_LINES_L_V' 
74368                 WHEN 6 THEN 'AR_CUST_TRX_LINES_BASE_V' 
74369                 WHEN 7 THEN 'AR_CUST_TRX_LINES_BASE_V' 
74370                 WHEN 8 THEN 'AR_CUST_TRX_LINES_BASE_V' 
74371                 WHEN 9 THEN 'AR_CUST_TRX_LINES_BASE_V' 
74372                 WHEN 10 THEN 'AR_CUST_TRX_LINES_L_V' 
74373                 
74374                ELSE null
74378                 WHEN 2 THEN 'LINE' 
74375               END                           object_name
74376             , CASE r
74377                 WHEN 1 THEN 'LINE' 
74379                 WHEN 3 THEN 'LINE' 
74380                 WHEN 4 THEN 'LINE' 
74381                 WHEN 5 THEN 'LINE' 
74382                 WHEN 6 THEN 'LINE' 
74383                 WHEN 7 THEN 'LINE' 
74384                 WHEN 8 THEN 'LINE' 
74385                 WHEN 9 THEN 'LINE' 
74386                 WHEN 10 THEN 'LINE' 
74387                 
74388                 ELSE null
74389               END                           object_type_code
74390             , CASE r
74391                 WHEN 1 THEN '222' 
74392                 WHEN 2 THEN '222' 
74393                 WHEN 3 THEN '222' 
74394                 WHEN 4 THEN '222' 
74395                 WHEN 5 THEN '222' 
74396                 WHEN 6 THEN '222' 
74397                 WHEN 7 THEN '222' 
74398                 WHEN 8 THEN '222' 
74399                 WHEN 9 THEN '222' 
74400                 WHEN 10 THEN '222' 
74401                 
74402                 ELSE null
74403               END                           source_application_id
74404             , 'S'             source_type_code
74405             , CASE r
74406                 WHEN 1 THEN 'TRX_LINE_DIST_CCID' 
74407                 WHEN 2 THEN 'TRX_LINE_DIST_ACCOUNT_CLASS' 
74408                 WHEN 3 THEN 'TRX_LINE_DIST_ID' 
74409                 WHEN 4 THEN 'TRX_DISTRIBUTION_TYPE' 
74410                 WHEN 5 THEN 'TRX_LINE_DIST_AMT' 
74411                 WHEN 6 THEN 'TRX_LINE_CUR_CONVERSION_DATE' 
74412                 WHEN 7 THEN 'TRX_LINE_CUR_CONVERSION_RATE' 
74413                 WHEN 8 THEN 'TRX_LINE_CUR_CONVERSION_TYPE' 
74414                 WHEN 9 THEN 'TRX_LINE_ACCTD_AMT' 
74415                 WHEN 10 THEN 'TRX_TAX_LINE_ID' 
74416                 
74417                 ELSE null
74418               END                           source_code
74419             , CASE r
74420                 WHEN 1 THEN TO_CHAR(l4.TRX_LINE_DIST_CCID)
74421                 WHEN 2 THEN TO_CHAR(l4.TRX_LINE_DIST_ACCOUNT_CLASS)
74422                 WHEN 3 THEN TO_CHAR(l4.TRX_LINE_DIST_ID)
74423                 WHEN 4 THEN TO_CHAR(l4.TRX_DISTRIBUTION_TYPE)
74424                 WHEN 5 THEN TO_CHAR(l4.TRX_LINE_DIST_AMT)
74425                 WHEN 6 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_DATE)
74426                 WHEN 7 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_RATE)
74427                 WHEN 8 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_TYPE)
74428                 WHEN 9 THEN TO_CHAR(l3.TRX_LINE_ACCTD_AMT)
74429                 WHEN 10 THEN TO_CHAR(l4.TRX_TAX_LINE_ID)
74430                 
74431                 ELSE null
74432               END                           source_value
74433             , null              source_meaning
74434          FROM  xla_events_gt     xet  
74435         , AR_CUST_TRX_LINES_BASE_V  l3
74436         , AR_CUST_TRX_LINES_L_V  l4
74437             , (select rownum r from all_objects where rownum <= 10 and owner = p_apps_owner)
74438         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
74439           AND xet.event_class_code = C_EVENT_CLASS_CODE
74440             AND l3.event_id          = xet.event_id
74441   AND l4.event_id    = l3.event_id
74442   AND l4.line_number = l3.line_number
74443 
74444 )
74445 ;
74446 --
74447 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74448 
74449       trace
74450          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
74451          ,p_level    => C_LEVEL_STATEMENT
74452          ,p_module   => l_log_module);
74453 
74454 END IF;
74455 
74456 
74457 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74458       trace
74459          (p_msg      => 'END of insert_sources_148'
74460          ,p_level    => C_LEVEL_PROCEDURE
74461          ,p_module   => l_log_module);
74462 END IF;
74463 EXCEPTION
74464   WHEN xla_exceptions_pkg.application_exception THEN
74465       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
74466             trace
74467                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
74468                ,p_level    => C_LEVEL_EXCEPTION
74469                ,p_module   => l_log_module);
74470       END IF;
74471       RAISE;
74472   WHEN OTHERS THEN
74473       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
74474             trace
74475                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
74476                ,p_level    => C_LEVEL_EXCEPTION
74477                ,p_module   => l_log_module);
74478        END IF;
74479        xla_exceptions_pkg.raise_message
74480            (p_location => 'XLA_00222_AAD_S_000002_PKG.insert_sources_148');
74481 END insert_sources_148;
74482 --
74483 
74484 ---------------------------------------
74485 --
74486 -- PRIVATE FUNCTION
74487 --         EventClass_148
74488 --
74489 ----------------------------------------
74490 --
74491 FUNCTION EventClass_148
74492        (p_application_id         IN NUMBER
74493        ,p_base_ledger_id         IN NUMBER
74494        ,p_target_ledger_id       IN NUMBER
74495        ,p_language               IN VARCHAR2
74496        ,p_currency_code          IN VARCHAR2
74497        ,p_sla_ledger_id          IN NUMBER
74498        ,p_pad_start_date         IN DATE
74499        ,p_pad_end_date           IN DATE
74500        ,p_primary_ledger_id      IN NUMBER)
74501 RETURN BOOLEAN IS
74502 --
74503 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DEBIT_MEMO_ALL';
74507 l_calculate_g_l_flag     VARCHAR2(1) :='N';
74504 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DEBIT_MEMO';
74505 
74506 l_calculate_acctd_flag   VARCHAR2(1) :='N';
74508 --
74509 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74510 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74511 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
74512 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74513 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74514 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
74515 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
74516 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74517 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74518 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74519 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74520 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74521 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74522 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
74523 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74524 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74525 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74526 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
74527 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74528 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74529 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74530 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
74531 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
74532 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
74533 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
74534 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
74535 
74536 l_event_id                             NUMBER;
74537 l_previous_event_id                    NUMBER;
74538 l_first_event_id                       NUMBER;
74539 l_last_event_id                        NUMBER;
74540 
74541 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
74542 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
74543 --
74544 --
74545 l_result                    BOOLEAN := TRUE;
74546 l_rows                      NUMBER  := 1000;
74547 l_event_type_name           VARCHAR2(80) := 'All';
74548 l_event_class_name          VARCHAR2(80) := 'Debit Memo';
74549 l_description               VARCHAR2(4000);
74550 l_transaction_reversal      NUMBER;
74551 l_ae_header_id              NUMBER;
74552 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
74553 l_log_module                VARCHAR2(240);
74554 --
74555 l_acct_reversal_source      VARCHAR2(30);
74556 l_trx_reversal_source       VARCHAR2(30);
74557 
74558 l_continue_with_lines       BOOLEAN := TRUE;
74559 --
74560 l_acc_rev_gl_date_source    DATE;                      -- 4262811
74561 --
74562 type t_array_event_id is table of number index by binary_integer;
74563 
74564 l_rec_array_event                    t_rec_array_event;
74565 l_null_rec_array_event               t_rec_array_event;
74566 l_array_ae_header_id                 xla_number_array_type;
74567 l_actual_flag                        VARCHAR2(1) := NULL;
74568 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
74569 l_balance_type_code                  VARCHAR2(1) :=NULL;
74570 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
74571 
74572 --
74573 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
74574 --
74575 
74576 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_TYPE_NAME%TYPE INDEX BY BINARY_INTEGER;
74577 TYPE t_array_source_4 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_NUMBER%TYPE INDEX BY BINARY_INTEGER;
74578 TYPE t_array_source_5 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
74579 TYPE t_array_source_6 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
74580 TYPE t_array_source_49 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
74581 TYPE t_array_source_50 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
74582 TYPE t_array_source_51 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
74583 TYPE t_array_source_59 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
74584 TYPE t_array_source_120 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
74585 
74586 TYPE t_array_source_38 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
74587 TYPE t_array_source_55 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ACCOUNT_CLASS%TYPE INDEX BY BINARY_INTEGER;
74588 TYPE t_array_source_56 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
74589 TYPE t_array_source_57 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
74590 TYPE t_array_source_58 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_AMT%TYPE INDEX BY BINARY_INTEGER;
74594 TYPE t_array_source_63 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
74591 TYPE t_array_source_60 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
74592 TYPE t_array_source_61 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
74593 TYPE t_array_source_62 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
74595 TYPE t_array_source_97 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_TAX_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
74596 
74597 l_array_source_3              t_array_source_3;
74598 l_array_source_4              t_array_source_4;
74599 l_array_source_5              t_array_source_5;
74600 l_array_source_6              t_array_source_6;
74601 l_array_source_49              t_array_source_49;
74602 l_array_source_50              t_array_source_50;
74603 l_array_source_51              t_array_source_51;
74604 l_array_source_59              t_array_source_59;
74605 l_array_source_120              t_array_source_120;
74606 
74607 l_array_source_38      t_array_source_38;
74608 l_array_source_55      t_array_source_55;
74609 l_array_source_56      t_array_source_56;
74610 l_array_source_57      t_array_source_57;
74611 l_array_source_58      t_array_source_58;
74612 l_array_source_60      t_array_source_60;
74613 l_array_source_61      t_array_source_61;
74614 l_array_source_62      t_array_source_62;
74615 l_array_source_63      t_array_source_63;
74616 l_array_source_97      t_array_source_97;
74617 
74618 --
74619 CURSOR header_cur
74620 IS
74621 SELECT /*+ leading(xet) cardinality(xet,1) */
74622 -- Event Class Code: DEBIT_MEMO
74623     xet.entity_id
74624    ,xet.legal_entity_id
74625    ,xet.entity_code
74626    ,xet.transaction_number
74627    ,xet.event_id
74628    ,xet.event_class_code
74629    ,xet.event_type_code
74630    ,xet.event_number
74631    ,xet.event_date
74632    ,xet.transaction_date
74633    ,xet.reference_num_1
74634    ,xet.reference_num_2
74635    ,xet.reference_num_3
74636    ,xet.reference_num_4
74637    ,xet.reference_char_1
74638    ,xet.reference_char_2
74639    ,xet.reference_char_3
74640    ,xet.reference_char_4
74641    ,xet.reference_date_1
74642    ,xet.reference_date_2
74643    ,xet.reference_date_3
74644    ,xet.reference_date_4
74645    ,xet.event_created_by
74646    ,xet.budgetary_control_flag 
74647   , h5.TRX_TYPE_NAME    source_3
74648   , h5.TRX_NUMBER    source_4
74649   , h5.TRX_DOC_SEQUENCE_CATEGORY    source_5
74650   , h5.TRX_DOC_SEQUENCE_VALUE    source_6
74651   , h1.BILL_CUST_ACCOUNT_ID    source_49
74652   , h2.BILL_USES_SITE_USE_ID    source_50
74653   , h5.XLA_PARTY_TYPE    source_51
74654   , h5.TRX_INVOICE_CURRENCY_CODE    source_59
74655   , h5.TRX_DOC_SEQUENCE_ID    source_120
74656   FROM xla_events_gt     xet 
74657   , AR_BILL_TO_CUSTOMERS_S_V  h1
74658   , AR_BILL_TO_SITE_USES_S_V  h2
74659   , AR_TRANSACTIONS_S_V  h5
74660  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
74661    and xet.event_class_code = C_EVENT_CLASS_CODE
74662    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
74663   AND h2.event_id  = h1.event_id
74664   AND h5.event_id  = h1.event_id
74665 
74666  ORDER BY event_id
74667 ;
74668 
74669 
74670 --
74671 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
74672 IS
74673 SELECT  /*+ leading(xet) cardinality(xet,1) */
74674 -- Event Class Code: DEBIT_MEMO
74675     xet.entity_id
74676    ,xet.legal_entity_id
74677    ,xet.entity_code
74678    ,xet.transaction_number
74679    ,xet.event_id
74680    ,xet.event_class_code
74681    ,xet.event_type_code
74682    ,xet.event_number
74683    ,xet.event_date
74684    ,xet.transaction_date
74685    ,xet.reference_num_1
74686    ,xet.reference_num_2
74687    ,xet.reference_num_3
74688    ,xet.reference_num_4
74689    ,xet.reference_char_1
74690    ,xet.reference_char_2
74691    ,xet.reference_char_3
74692    ,xet.reference_char_4
74693    ,xet.reference_date_1
74694    ,xet.reference_date_2
74695    ,xet.reference_date_3
74696    ,xet.reference_date_4
74697    ,xet.event_created_by
74698    ,xet.budgetary_control_flag
74699  , l3.LINE_NUMBER  
74700   , l4.TRX_LINE_DIST_CCID    source_38
74701   , l4.TRX_LINE_DIST_ACCOUNT_CLASS    source_55
74702   , l4.TRX_LINE_DIST_ID    source_56
74703   , l4.TRX_DISTRIBUTION_TYPE    source_57
74704   , l4.TRX_LINE_DIST_AMT    source_58
74705   , l3.TRX_LINE_CUR_CONVERSION_DATE    source_60
74706   , l3.TRX_LINE_CUR_CONVERSION_RATE    source_61
74707   , l3.TRX_LINE_CUR_CONVERSION_TYPE    source_62
74708   , l3.TRX_LINE_ACCTD_AMT    source_63
74709   , l4.TRX_TAX_LINE_ID    source_97
74710   FROM xla_events_gt     xet 
74711   , AR_CUST_TRX_LINES_BASE_V  l3
74712   , AR_CUST_TRX_LINES_L_V  l4
74713  WHERE xet.event_id between x_first_event_id and x_last_event_id
74714    and xet.event_date between p_pad_start_date and p_pad_end_date
74715    and xet.event_class_code = C_EVENT_CLASS_CODE
74716    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
74717   AND l4.event_id    = l3.event_id
74718   AND l4.line_number = l3.line_number
74719 ;
74720 
74721 --
74722 BEGIN
74723 IF g_log_enabled THEN
74724    l_log_module := C_DEFAULT_MODULE||'.EventClass_148';
74725 END IF;
74726 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
74727    trace
74731 END IF;
74728       (p_msg      => 'BEGIN of EventClass_148'
74729       ,p_level    => C_LEVEL_PROCEDURE
74730       ,p_module   => l_log_module);
74732 
74733 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74734    trace
74735       (p_msg      => 'p_application_id = '||p_application_id||
74736                      ' - p_base_ledger_id = '||p_base_ledger_id||
74737                      ' - p_target_ledger_id  = '||p_target_ledger_id||
74738                      ' - p_language = '||p_language||
74739                      ' - p_currency_code = '||p_currency_code||
74740                      ' - p_sla_ledger_id = '||p_sla_ledger_id
74741       ,p_level    => C_LEVEL_STATEMENT
74742       ,p_module   => l_log_module);
74743 END IF;
74744 --
74745 -- initialze arrays
74746 --
74747 g_array_event.DELETE;
74748 l_rec_array_event := l_null_rec_array_event;
74749 --
74750 --------------------------------------
74751 -- 4262811 Initialze MPA Line Number
74752 --------------------------------------
74753 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
74754 
74755 --
74756 
74757 --
74758 OPEN header_cur;
74759 --
74760 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
74761    trace
74762    (p_msg      => 'SQL - FETCH header_cur'
74763    ,p_level    => C_LEVEL_STATEMENT
74764    ,p_module   => l_log_module);
74765 END IF;
74766 --
74767 LOOP
74768 FETCH header_cur BULK COLLECT INTO
74769         l_array_entity_id
74770       , l_array_legal_entity_id
74771       , l_array_entity_code
74772       , l_array_transaction_num
74773       , l_array_event_id
74774       , l_array_class_code
74775       , l_array_event_type
74776       , l_array_event_number
74777       , l_array_event_date
74778       , l_array_transaction_date
74779       , l_array_reference_num_1
74780       , l_array_reference_num_2
74781       , l_array_reference_num_3
74782       , l_array_reference_num_4
74783       , l_array_reference_char_1
74784       , l_array_reference_char_2
74785       , l_array_reference_char_3
74786       , l_array_reference_char_4
74787       , l_array_reference_date_1
74788       , l_array_reference_date_2
74789       , l_array_reference_date_3
74790       , l_array_reference_date_4
74791       , l_array_event_created_by
74792       , l_array_budgetary_control_flag 
74793       , l_array_source_3
74794       , l_array_source_4
74795       , l_array_source_5
74796       , l_array_source_6
74797       , l_array_source_49
74798       , l_array_source_50
74799       , l_array_source_51
74800       , l_array_source_59
74801       , l_array_source_120
74802       LIMIT l_rows;
74803 --
74804 IF (C_LEVEL_EVENT >= g_log_level) THEN
74805    trace
74806    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
74807    ,p_level    => C_LEVEL_EVENT
74808    ,p_module   => l_log_module);
74809 END IF;
74810 --
74811 EXIT WHEN l_array_entity_id.COUNT = 0;
74812 
74813 -- initialize arrays
74814 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
74815 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
74816 
74817 --
74818 -- Bug 4458708
74819 --
74820 XLA_AE_LINES_PKG.g_LineNumber := 0;
74821 
74822 
74823 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
74824 g_last_hdr_idx := l_array_event_id.LAST;
74825 --
74826 -- loop for the headers. Each iteration is for each header extract row
74827 -- fetched in header cursor
74828 --
74829 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
74830 
74831 --
74832 -- set event info as cache for other routines to refer event attributes
74833 --
74834 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
74835    (p_application_id           => p_application_id
74836    ,p_primary_ledger_id        => p_primary_ledger_id
74837    ,p_base_ledger_id           => p_base_ledger_id
74838    ,p_target_ledger_id         => p_target_ledger_id
74839    ,p_entity_id                => l_array_entity_id(hdr_idx)
74840    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
74841    ,p_entity_code              => l_array_entity_code(hdr_idx)
74842    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
74843    ,p_event_id                 => l_array_event_id(hdr_idx)
74844    ,p_event_class_code         => l_array_class_code(hdr_idx)
74845    ,p_event_type_code          => l_array_event_type(hdr_idx)
74846    ,p_event_number             => l_array_event_number(hdr_idx)
74847    ,p_event_date               => l_array_event_date(hdr_idx)
74848    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
74849    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
74850    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
74851    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
74852    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
74853    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
74854    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
74855    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
74856    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
74857    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
74858    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
74859    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
74863 
74860    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
74861    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
74862    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
74864 --
74865 -- set the status of entry to C_VALID (0)
74866 --
74867 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
74868 
74869 --
74870 -- initialize a row for ae header
74871 --
74872 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
74873 
74874 l_event_id := l_array_event_id(hdr_idx);
74875 
74876 --
74877 -- storing the hdr_idx for event. May be used by line cursor.
74878 --
74879 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
74880 
74881 --
74882 -- store sources from header extract. This can be improved to
74883 -- store only those sources from header extract that may be used in lines
74884 --
74885 
74886 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
74887 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
74888 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
74889 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
74890 g_array_event(l_event_id).array_value_num('source_49') := l_array_source_49(hdr_idx);
74891 g_array_event(l_event_id).array_value_num('source_50') := l_array_source_50(hdr_idx);
74892 g_array_event(l_event_id).array_value_char('source_51') := l_array_source_51(hdr_idx);
74893 g_array_event(l_event_id).array_value_char('source_59') := l_array_source_59(hdr_idx);
74894 g_array_event(l_event_id).array_value_num('source_120') := l_array_source_120(hdr_idx);
74895 
74896 --
74897 -- initilaize the status of ae headers for diffrent balance types
74898 -- the status is initialised to C_NOT_CREATED (2)
74899 --
74900 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
74901 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
74902 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
74903 
74904 --
74905 -- call api to validate and store accounting attributes for header
74906 --
74907 
74908 ------------------------------------------------------------
74909 -- Accrual Reversal : to get date for Standard Source (NONE)
74910 ------------------------------------------------------------
74911 l_acc_rev_gl_date_source := NULL;
74912 
74913      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
74914       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_5');
74915      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
74916       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_120');
74917      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
74918       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_6');
74919      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
74920       l_rec_acct_attrs.array_date_value(4) := 
74921 xla_ae_sources_pkg.GetSystemSourceDate(
74922    p_source_code           => 'XLA_EVENT_DATE'
74923  , p_source_type_code      => 'Y'
74924  , p_source_application_id =>  602
74925 );
74926 
74927 
74928 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
74929 
74930 XLA_AE_HEADER_PKG.SetJeCategoryName;
74931 
74932 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
74933 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
74934 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
74935 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
74936 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
74937 
74938 
74939 --
74940 xla_ae_header_pkg.SetHdrDescription(
74941    p_description => Description_7 (
74942    p_application_id => p_application_id 
74943  , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
74944  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
74945  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
74946  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
74947    )
74948 );
74949 --
74950 
74951 -- No header level analytical criteria
74952 
74953 --
74954 --accounting attribute enhancement, bug 3612931
74955 --
74956 l_trx_reversal_source := SUBSTR(NULL, 1,30);
74957 
74958 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
74959    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
74960 
74961    xla_accounting_err_pkg.build_message
74962       (p_appli_s_name            => 'XLA'
74963       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
74964       ,p_token_1                 => 'ACCT_ATTR_NAME'
74965       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
74966       ,p_token_2                 => 'PRODUCT_NAME'
74967       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
74968       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
74969       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
74973    --
74970       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
74971 
74972 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
74974    -- following sets the accounting attributes needed to reverse
74975    -- accounting for a distributeion
74976    --
74977    xla_ae_lines_pkg.SetTrxReversalAttrs
74978       (p_event_id              => l_event_id
74979       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
74980       ,p_trx_reversal_source   => l_trx_reversal_source);
74981 
74982 END IF;
74983 
74984 
74985 ----------------------------------------------------------------
74986 -- 4262811 -  update the header statuses to invalid in need be
74987 ----------------------------------------------------------------
74988 --
74989 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
74990 
74991 
74992   -----------------------------------------------
74993   -- No accrual reversal for the event class/type
74994   -----------------------------------------------
74995 ----------------------------------------------------------------
74996 
74997 --
74998 -- this ends the header loop iteration for one bulk fetch
74999 --
75000 END LOOP;
75001 
75002 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
75003 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
75004 
75005 --
75006 -- insert dummy rows into lines gt table that were created due to
75007 -- transaction reversals
75008 --
75009 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
75010    l_result := XLA_AE_LINES_PKG.InsertLines;
75011 END IF;
75012 
75013 --
75014 -- reset the temp_line_num for each set of events fetched from header
75015 -- cursor rather than doing it for each new event in line cursor
75016 -- Bug 3939231
75017 --
75018 xla_ae_lines_pkg.g_temp_line_num := 0;
75019 
75020 
75021 
75022 --
75023 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
75024 --
75025 --
75026 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75027 
75028       trace
75029          (p_msg      => 'SQL - FETCH line_cur'
75030          ,p_level    => C_LEVEL_STATEMENT
75031          ,p_module   => l_log_module);
75032 
75033 END IF;
75034 --
75035 --
75036 LOOP
75037   --
75038   FETCH line_cur BULK COLLECT INTO
75039         l_array_entity_id
75040       , l_array_legal_entity_id
75041       , l_array_entity_code
75042       , l_array_transaction_num
75043       , l_array_event_id
75044       , l_array_class_code
75045       , l_array_event_type
75046       , l_array_event_number
75047       , l_array_event_date
75048       , l_array_transaction_date
75049       , l_array_reference_num_1
75050       , l_array_reference_num_2
75051       , l_array_reference_num_3
75052       , l_array_reference_num_4
75053       , l_array_reference_char_1
75054       , l_array_reference_char_2
75055       , l_array_reference_char_3
75056       , l_array_reference_char_4
75057       , l_array_reference_date_1
75058       , l_array_reference_date_2
75059       , l_array_reference_date_3
75060       , l_array_reference_date_4
75061       , l_array_event_created_by
75062       , l_array_budgetary_control_flag
75063       , l_array_extract_line_num 
75064       , l_array_source_38
75065       , l_array_source_55
75066       , l_array_source_56
75067       , l_array_source_57
75068       , l_array_source_58
75069       , l_array_source_60
75070       , l_array_source_61
75071       , l_array_source_62
75072       , l_array_source_63
75073       , l_array_source_97
75074       LIMIT l_rows;
75075 
75076   --
75077   IF (C_LEVEL_EVENT >= g_log_level) THEN
75078             trace
75079                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
75080                ,p_level    => C_LEVEL_EVENT
75081                ,p_module   => l_log_module);
75082   END IF;
75083   --
75084   EXIT WHEN l_array_entity_id.count = 0;
75085 
75086   XLA_AE_LINES_PKG.g_rec_lines := null;
75087 
75088 --
75089 -- Bug 4458708
75090 --
75091 XLA_AE_LINES_PKG.g_LineNumber := 0;
75092 --
75093 --
75094 
75095 FOR Idx IN 1..l_array_event_id.count LOOP
75096    --
75097    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
75098    --
75099    l_event_id := l_array_event_id(idx);  -- 5648433
75100 
75101    --
75102    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
75103    --
75104 
75105    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
75106              (g_array_event(l_event_id).array_value_num('header_index'))
75107          ,'N'
75108          ) <> 'Y'
75109    THEN
75110       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75111          trace
75112             (p_msg      => 'Trancaction revesal option is not Y '
75113             ,p_level    => C_LEVEL_STATEMENT
75114             ,p_module   => l_log_module);
75115       END IF;
75116 
75117 --
75118 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
75119 --
75120 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
75124 
75121 --
75122 -- set event info as cache for other routines to refer event attributes
75123 --
75125 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
75126    l_previous_event_id := l_event_id;
75127 
75128    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
75129       (p_application_id           => p_application_id
75130       ,p_primary_ledger_id        => p_primary_ledger_id
75131       ,p_base_ledger_id           => p_base_ledger_id
75132       ,p_target_ledger_id         => p_target_ledger_id
75133       ,p_entity_id                => l_array_entity_id(Idx)
75134       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
75135       ,p_entity_code              => l_array_entity_code(Idx)
75136       ,p_transaction_num          => l_array_transaction_num(Idx)
75137       ,p_event_id                 => l_array_event_id(Idx)
75138       ,p_event_class_code         => l_array_class_code(Idx)
75139       ,p_event_type_code          => l_array_event_type(Idx)
75140       ,p_event_number             => l_array_event_number(Idx)
75141       ,p_event_date               => l_array_event_date(Idx)
75142       ,p_transaction_date         => l_array_transaction_date(Idx)
75143       ,p_reference_num_1          => l_array_reference_num_1(Idx)
75144       ,p_reference_num_2          => l_array_reference_num_2(Idx)
75145       ,p_reference_num_3          => l_array_reference_num_3(Idx)
75146       ,p_reference_num_4          => l_array_reference_num_4(Idx)
75147       ,p_reference_char_1         => l_array_reference_char_1(Idx)
75148       ,p_reference_char_2         => l_array_reference_char_2(Idx)
75149       ,p_reference_char_3         => l_array_reference_char_3(Idx)
75150       ,p_reference_char_4         => l_array_reference_char_4(Idx)
75151       ,p_reference_date_1         => l_array_reference_date_1(Idx)
75152       ,p_reference_date_2         => l_array_reference_date_2(Idx)
75153       ,p_reference_date_3         => l_array_reference_date_3(Idx)
75154       ,p_reference_date_4         => l_array_reference_date_4(Idx)
75155       ,p_event_created_by         => l_array_event_created_by(Idx)
75156       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
75157        --
75158 END IF;
75159 
75160 
75161 
75162 --
75163 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
75164 
75165 l_acct_reversal_source := SUBSTR(NULL, 1,30);
75166 
75167 IF l_continue_with_lines THEN
75168    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
75169       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
75170 
75171       xla_accounting_err_pkg.build_message
75172          (p_appli_s_name            => 'XLA'
75173          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
75174          ,p_token_1                 => 'LINE_NUMBER'
75175          ,p_value_1                 => l_array_extract_line_num(Idx)
75176          ,p_token_2                 => 'PRODUCT_NAME'
75177          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
75178          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
75179          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
75180          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
75181 
75182    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
75183       --
75184       -- following sets the accounting attributes needed to reverse
75185       -- accounting for a distributeion
75186       --
75187 
75188       --
75189       -- 5217187
75190       --
75191       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
75192       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
75193                                        g_array_event(l_event_id).array_value_num('header_index'));
75194       --
75195       --
75196 
75197       -- No reversal code generated
75198 
75199       xla_ae_lines_pkg.SetAcctReversalAttrs
75200          (p_event_id             => l_event_id
75201          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
75202          ,p_calculate_acctd_flag => l_calculate_acctd_flag
75203          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
75204    END IF;
75205 
75206    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
75207        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
75208 
75209 --
75210 AcctLineType_75 (
75211  p_application_id  => p_application_id
75212  ,p_event_id     => l_event_id
75213  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75214  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75215  ,p_actual_flag => l_actual_flag
75216  ,p_balance_type_code => l_balance_type_code
75217  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75218  
75219  , p_source_38 => l_array_source_38(Idx)
75220  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
75221  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
75222  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
75223  , p_source_55 => l_array_source_55(Idx)
75224  , p_source_56 => l_array_source_56(Idx)
75225  , p_source_57 => l_array_source_57(Idx)
75226  , p_source_58 => l_array_source_58(Idx)
75227  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
75228  , p_source_60 => l_array_source_60(Idx)
75229  , p_source_61 => l_array_source_61(Idx)
75230  , p_source_62 => l_array_source_62(Idx)
75234 If(l_balance_type_code = 'A') THEN
75231  , p_source_63 => l_array_source_63(Idx)
75232  , p_source_97 => l_array_source_97(Idx)
75233  );
75235   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75236 END IF;
75237 
75238 --
75239 
75240 
75241 --
75242 AcctLineType_76 (
75243  p_application_id  => p_application_id
75244  ,p_event_id     => l_event_id
75245  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75246  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75247  ,p_actual_flag => l_actual_flag
75248  ,p_balance_type_code => l_balance_type_code
75249  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75250  
75251  , p_source_38 => l_array_source_38(Idx)
75252  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
75253  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
75254  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
75255  , p_source_55 => l_array_source_55(Idx)
75256  , p_source_56 => l_array_source_56(Idx)
75257  , p_source_57 => l_array_source_57(Idx)
75258  , p_source_58 => l_array_source_58(Idx)
75259  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
75260  , p_source_60 => l_array_source_60(Idx)
75261  , p_source_61 => l_array_source_61(Idx)
75262  , p_source_62 => l_array_source_62(Idx)
75263  , p_source_63 => l_array_source_63(Idx)
75264  , p_source_97 => l_array_source_97(Idx)
75265  );
75266 If(l_balance_type_code = 'A') THEN
75267   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75268 END IF;
75269 
75270 --
75271 
75272 
75273 --
75274 AcctLineType_77 (
75275  p_application_id  => p_application_id
75276  ,p_event_id     => l_event_id
75277  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75278  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75279  ,p_actual_flag => l_actual_flag
75280  ,p_balance_type_code => l_balance_type_code
75281  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75282  
75283  , p_source_38 => l_array_source_38(Idx)
75284  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
75285  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
75286  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
75287  , p_source_55 => l_array_source_55(Idx)
75288  , p_source_56 => l_array_source_56(Idx)
75289  , p_source_57 => l_array_source_57(Idx)
75290  , p_source_58 => l_array_source_58(Idx)
75291  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
75292  , p_source_60 => l_array_source_60(Idx)
75293  , p_source_61 => l_array_source_61(Idx)
75294  , p_source_62 => l_array_source_62(Idx)
75295  , p_source_63 => l_array_source_63(Idx)
75296  , p_source_97 => l_array_source_97(Idx)
75297  );
75298 If(l_balance_type_code = 'A') THEN
75299   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75300 END IF;
75301 
75302 --
75303 
75304 
75305 --
75306 AcctLineType_78 (
75307  p_application_id  => p_application_id
75308  ,p_event_id     => l_event_id
75309  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75310  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75311  ,p_actual_flag => l_actual_flag
75312  ,p_balance_type_code => l_balance_type_code
75313  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75314  
75315  , p_source_38 => l_array_source_38(Idx)
75316  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
75317  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
75318  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
75319  , p_source_55 => l_array_source_55(Idx)
75320  , p_source_56 => l_array_source_56(Idx)
75321  , p_source_57 => l_array_source_57(Idx)
75322  , p_source_58 => l_array_source_58(Idx)
75323  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
75324  , p_source_60 => l_array_source_60(Idx)
75325  , p_source_61 => l_array_source_61(Idx)
75326  , p_source_62 => l_array_source_62(Idx)
75327  , p_source_63 => l_array_source_63(Idx)
75328  , p_source_97 => l_array_source_97(Idx)
75329  );
75330 If(l_balance_type_code = 'A') THEN
75331   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75332 END IF;
75333 
75334 --
75335 
75336 
75337 --
75338 AcctLineType_79 (
75339  p_application_id  => p_application_id
75340  ,p_event_id     => l_event_id
75341  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75342  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75343  ,p_actual_flag => l_actual_flag
75344  ,p_balance_type_code => l_balance_type_code
75345  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75346  
75347  , p_source_38 => l_array_source_38(Idx)
75348  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
75349  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
75350  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
75351  , p_source_55 => l_array_source_55(Idx)
75352  , p_source_56 => l_array_source_56(Idx)
75353  , p_source_57 => l_array_source_57(Idx)
75354  , p_source_58 => l_array_source_58(Idx)
75355  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
75356  , p_source_60 => l_array_source_60(Idx)
75357  , p_source_61 => l_array_source_61(Idx)
75358  , p_source_62 => l_array_source_62(Idx)
75359  , p_source_63 => l_array_source_63(Idx)
75360  , p_source_97 => l_array_source_97(Idx)
75361  );
75362 If(l_balance_type_code = 'A') THEN
75366 --
75363   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75364 END IF;
75365 
75367 
75368 
75369 --
75370 AcctLineType_80 (
75371  p_application_id  => p_application_id
75372  ,p_event_id     => l_event_id
75373  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75374  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75375  ,p_actual_flag => l_actual_flag
75376  ,p_balance_type_code => l_balance_type_code
75377  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75378  
75379  , p_source_38 => l_array_source_38(Idx)
75380  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
75381  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
75382  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
75383  , p_source_55 => l_array_source_55(Idx)
75384  , p_source_56 => l_array_source_56(Idx)
75385  , p_source_57 => l_array_source_57(Idx)
75386  , p_source_58 => l_array_source_58(Idx)
75387  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
75388  , p_source_60 => l_array_source_60(Idx)
75389  , p_source_61 => l_array_source_61(Idx)
75390  , p_source_62 => l_array_source_62(Idx)
75391  , p_source_63 => l_array_source_63(Idx)
75392  , p_source_97 => l_array_source_97(Idx)
75393  );
75394 If(l_balance_type_code = 'A') THEN
75395   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75396 END IF;
75397 
75398 --
75399 
75400 
75401 --
75402 AcctLineType_81 (
75403  p_application_id  => p_application_id
75404  ,p_event_id     => l_event_id
75405  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75406  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75407  ,p_actual_flag => l_actual_flag
75408  ,p_balance_type_code => l_balance_type_code
75409  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75410  
75411  , p_source_38 => l_array_source_38(Idx)
75412  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
75413  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
75414  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
75415  , p_source_55 => l_array_source_55(Idx)
75416  , p_source_56 => l_array_source_56(Idx)
75417  , p_source_57 => l_array_source_57(Idx)
75418  , p_source_58 => l_array_source_58(Idx)
75419  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
75420  , p_source_60 => l_array_source_60(Idx)
75421  , p_source_61 => l_array_source_61(Idx)
75422  , p_source_62 => l_array_source_62(Idx)
75423  , p_source_63 => l_array_source_63(Idx)
75424  , p_source_97 => l_array_source_97(Idx)
75425  );
75426 If(l_balance_type_code = 'A') THEN
75427   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75428 END IF;
75429 
75430 --
75431 
75432 
75433 --
75434 AcctLineType_82 (
75435  p_application_id  => p_application_id
75436  ,p_event_id     => l_event_id
75437  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75438  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75439  ,p_actual_flag => l_actual_flag
75440  ,p_balance_type_code => l_balance_type_code
75441  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75442  
75443  , p_source_38 => l_array_source_38(Idx)
75444  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
75445  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
75446  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
75447  , p_source_55 => l_array_source_55(Idx)
75448  , p_source_56 => l_array_source_56(Idx)
75449  , p_source_57 => l_array_source_57(Idx)
75450  , p_source_58 => l_array_source_58(Idx)
75451  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
75452  , p_source_60 => l_array_source_60(Idx)
75453  , p_source_61 => l_array_source_61(Idx)
75454  , p_source_62 => l_array_source_62(Idx)
75455  , p_source_63 => l_array_source_63(Idx)
75456  , p_source_97 => l_array_source_97(Idx)
75457  );
75458 If(l_balance_type_code = 'A') THEN
75459   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75460 END IF;
75461 
75462 --
75463 
75464 
75465 --
75466 AcctLineType_83 (
75467  p_application_id  => p_application_id
75468  ,p_event_id     => l_event_id
75469  ,p_calculate_acctd_flag => l_calculate_acctd_flag
75470  ,p_calculate_g_l_flag => l_calculate_g_l_flag
75471  ,p_actual_flag => l_actual_flag
75472  ,p_balance_type_code => l_balance_type_code
75473  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
75474  
75475  , p_source_38 => l_array_source_38(Idx)
75476  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
75477  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
75478  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
75479  , p_source_55 => l_array_source_55(Idx)
75480  , p_source_56 => l_array_source_56(Idx)
75481  , p_source_57 => l_array_source_57(Idx)
75482  , p_source_58 => l_array_source_58(Idx)
75483  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
75484  , p_source_60 => l_array_source_60(Idx)
75485  , p_source_61 => l_array_source_61(Idx)
75486  , p_source_62 => l_array_source_62(Idx)
75487  , p_source_63 => l_array_source_63(Idx)
75488  , p_source_97 => l_array_source_97(Idx)
75489  );
75490 If(l_balance_type_code = 'A') THEN
75491   l_actual_gain_loss_ref := l_gain_or_loss_ref;
75492 END IF;
75493 
75494 --
75495 
75499       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
75496       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
75497       -- or secondary ledger that has different currency with primary
75498       -- or alc that is calculated by sla
75500             (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'))
75501 
75502 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
75503 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
75504           AND (l_actual_flag = 'A')) THEN
75505         XLA_AE_LINES_PKG.CreateGainOrLossLines(
75506           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
75507          ,p_application_id   => p_application_id
75508          ,p_amb_context_code => 'DEFAULT'
75509          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
75510          ,p_event_class_code => C_EVENT_CLASS_CODE
75511          ,p_event_type_code  => C_EVENT_TYPE_CODE
75512          
75513          ,p_gain_ccid        => -1
75514          ,p_loss_ccid        => -1
75515 
75516          ,p_actual_flag      => l_actual_flag
75517          ,p_enc_flag         => null
75518          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
75519          ,p_enc_g_l_ref      => null
75520          );
75521       END IF;
75522    END IF;
75523 END IF;
75524 
75525    ELSE
75526       --
75527       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
75528       --
75529       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75530          trace
75531             (p_msg      => 'Trancaction revesal option is Y'
75532             ,p_level    => C_LEVEL_STATEMENT
75533             ,p_module   => l_log_module);
75534       END IF;
75535    END IF;
75536 
75537 END LOOP;
75538 l_result := XLA_AE_LINES_PKG.InsertLines ;
75539 end loop;
75540 close line_cur;
75541 
75542 
75543 --
75544 -- insert headers into xla_ae_headers_gt table
75545 --
75546 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
75547 
75548 -- insert into errors table here.
75549 
75550 END LOOP;
75551 
75552 --
75553 -- 4865292
75554 --
75555 -- Compare g_hdr_extract_count with event count in
75556 -- CreateHeadersAndLines.
75557 --
75558 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
75559 
75560 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75561    trace (p_msg     => '# rows extracted from header extract objects '
75562                     || ' (running total): '
75563                     || g_hdr_extract_count
75564          ,p_level   => C_LEVEL_STATEMENT
75565          ,p_module  => l_log_module);
75566 END IF;
75567 
75568 CLOSE header_cur;
75569 --
75570 
75571 --
75572 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75573    trace
75574       (p_msg      => 'END of EventClass_148'
75575       ,p_level    => C_LEVEL_PROCEDURE
75576       ,p_module   => l_log_module);
75577 END IF;
75578 --
75579 RETURN l_result;
75580 EXCEPTION
75581 WHEN xla_exceptions_pkg.application_exception THEN
75582    
75583 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
75584 
75585    
75586 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
75587 
75588    RAISE;
75589 
75590 WHEN NO_DATA_FOUND THEN
75591 
75592 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
75593 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
75594 
75595 FOR header_record IN header_cur
75596 LOOP
75597     l_array_header_events(header_record.event_id) := header_record.event_id;
75598 END LOOP;
75599 
75600 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
75601 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
75602 
75603 fnd_file.put_line(fnd_file.LOG, '                    ');
75604 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
75605 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
75606 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
75607 
75608 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
75609 LOOP
75610 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
75611 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
75612         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
75613 	END IF;
75614 END LOOP;
75615 
75616 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
75617 fnd_file.put_line(fnd_file.LOG, '                    ');
75618 
75619 
75620 xla_exceptions_pkg.raise_message
75621       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_148');
75622 
75623 
75624 WHEN OTHERS THEN
75625    xla_exceptions_pkg.raise_message
75626       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_148');
75627 END EventClass_148;
75628 --
75629 
75630 ---------------------------------------
75631 --
75632 -- PRIVATE PROCEDURE
75633 --         insert_sources_149
75637 PROCEDURE insert_sources_149(
75634 --
75635 ----------------------------------------
75636 --
75638                                 p_target_ledger_id       IN NUMBER
75639                               , p_language               IN VARCHAR2
75640                               , p_sla_ledger_id          IN NUMBER
75641                               , p_pad_start_date         IN DATE
75642                               , p_pad_end_date           IN DATE
75643                          )
75644 IS
75645 
75646 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DEPOSIT_ALL';
75647 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'DEPOSIT';
75648 p_apps_owner                   VARCHAR2(30);
75649 l_log_module                   VARCHAR2(240);
75650 BEGIN
75651 IF g_log_enabled THEN
75652       l_log_module := C_DEFAULT_MODULE||'.insert_sources_149';
75653 END IF;
75654 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75655 
75656       trace
75657          (p_msg      => 'BEGIN of insert_sources_149'
75658          ,p_level    => C_LEVEL_PROCEDURE
75659          ,p_module   => l_log_module);
75660 
75661 END IF;
75662 
75663 -- select APPS owner
75664 SELECT oracle_username
75665   INTO p_apps_owner
75666   FROM fnd_oracle_userid
75667  WHERE read_only_flag = 'U'
75668 ;
75669 
75670 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75671       trace
75672          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
75673                         ' - p_language = '||p_language||
75674                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
75675                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
75676                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
75677                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
75678          ,p_level    => C_LEVEL_STATEMENT
75679          ,p_module   => l_log_module);
75680 END IF;
75681 
75682 
75683 --
75684 INSERT INTO xla_diag_sources --hdr2
75685 (
75686         event_id
75687       , ledger_id
75688       , sla_ledger_id
75689       , description_language
75690       , object_name
75691       , object_type_code
75692       , line_number
75693       , source_application_id
75694       , source_type_code
75695       , source_code
75696       , source_value
75697       , source_meaning
75698       , created_by
75699       , creation_date
75700       , last_update_date
75701       , last_updated_by
75702       , last_update_login
75703       , program_update_date
75704       , program_application_id
75705       , program_id
75706       , request_id
75707 )
75708 SELECT
75709         event_id
75710       , p_target_ledger_id
75711       , p_sla_ledger_id
75712       , p_language
75713       , object_name
75714       , object_type_code
75715       , line_number
75716       , source_application_id
75717       , source_type_code
75718       , source_code
75719       , SUBSTR(source_value ,1,1996)
75720       , SUBSTR(source_meaning ,1,200)
75721       , xla_environment_pkg.g_Usr_Id
75722       , TRUNC(SYSDATE)
75723       , TRUNC(SYSDATE)
75724       , xla_environment_pkg.g_Usr_Id
75725       , xla_environment_pkg.g_Login_Id
75726       , TRUNC(SYSDATE)
75727       , xla_environment_pkg.g_Prog_Appl_Id
75728       , xla_environment_pkg.g_Prog_Id
75729       , xla_environment_pkg.g_Req_Id
75730   FROM (
75731        SELECT xet.event_id                  event_id
75732             , 0                          line_number
75733             , CASE r
75734                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
75735                 WHEN 2 THEN 'AR_TRANSACTIONS_S_V' 
75736                 WHEN 3 THEN 'AR_TRANSACTIONS_S_V' 
75737                 WHEN 4 THEN 'AR_TRANSACTIONS_S_V' 
75738                 WHEN 5 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
75739                 WHEN 6 THEN 'AR_BILL_TO_SITE_USES_S_V' 
75740                 WHEN 7 THEN 'AR_TRANSACTIONS_S_V' 
75741                 WHEN 8 THEN 'AR_TRANSACTIONS_S_V' 
75742                 WHEN 9 THEN 'AR_TRANSACTIONS_S_V' 
75743                 
75744                ELSE null
75745               END                           object_name
75746             , CASE r
75747                 WHEN 1 THEN 'HEADER' 
75748                 WHEN 2 THEN 'HEADER' 
75749                 WHEN 3 THEN 'HEADER' 
75750                 WHEN 4 THEN 'HEADER' 
75751                 WHEN 5 THEN 'HEADER' 
75752                 WHEN 6 THEN 'HEADER' 
75753                 WHEN 7 THEN 'HEADER' 
75754                 WHEN 8 THEN 'HEADER' 
75755                 WHEN 9 THEN 'HEADER' 
75756                 
75757                 ELSE null
75758               END                           object_type_code
75759             , CASE r
75760                 WHEN 1 THEN '222' 
75761                 WHEN 2 THEN '222' 
75762                 WHEN 3 THEN '222' 
75763                 WHEN 4 THEN '222' 
75764                 WHEN 5 THEN '222' 
75765                 WHEN 6 THEN '222' 
75766                 WHEN 7 THEN '222' 
75767                 WHEN 8 THEN '222' 
75768                 WHEN 9 THEN '222' 
75769                 
75770                 ELSE null
75771               END                           source_application_id
75772             , 'S'             source_type_code
75773             , CASE r
75777                 WHEN 4 THEN 'TRX_DOC_SEQUENCE_VALUE' 
75774                 WHEN 1 THEN 'TRX_TYPE_NAME' 
75775                 WHEN 2 THEN 'TRX_NUMBER' 
75776                 WHEN 3 THEN 'TRX_DOC_SEQUENCE_CATEGORY' 
75778                 WHEN 5 THEN 'BILL_CUST_ACCOUNT_ID' 
75779                 WHEN 6 THEN 'BILL_USES_SITE_USE_ID' 
75780                 WHEN 7 THEN 'XLA_PARTY_TYPE' 
75781                 WHEN 8 THEN 'TRX_INVOICE_CURRENCY_CODE' 
75782                 WHEN 9 THEN 'TRX_DOC_SEQUENCE_ID' 
75783                 
75784                 ELSE null
75785               END                           source_code
75786             , CASE r
75787                 WHEN 1 THEN TO_CHAR(h5.TRX_TYPE_NAME)
75788                 WHEN 2 THEN TO_CHAR(h5.TRX_NUMBER)
75789                 WHEN 3 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_CATEGORY)
75790                 WHEN 4 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_VALUE)
75791                 WHEN 5 THEN TO_CHAR(h1.BILL_CUST_ACCOUNT_ID)
75792                 WHEN 6 THEN TO_CHAR(h2.BILL_USES_SITE_USE_ID)
75793                 WHEN 7 THEN TO_CHAR(h5.XLA_PARTY_TYPE)
75794                 WHEN 8 THEN TO_CHAR(h5.TRX_INVOICE_CURRENCY_CODE)
75795                 WHEN 9 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_ID)
75796                 
75797                 ELSE null
75798               END                           source_value
75799             , null              source_meaning
75800          FROM xla_events_gt     xet  
75801       , AR_BILL_TO_CUSTOMERS_S_V  h1
75802       , AR_BILL_TO_SITE_USES_S_V  h2
75803       , AR_TRANSACTIONS_S_V  h5
75804              ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
75805          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
75806            AND xet.event_class_code = C_EVENT_CLASS_CODE
75807               AND h1.event_id = xet.event_id
75808   AND h2.event_id  = h1.event_id
75809   AND h5.event_id  = h1.event_id
75810 
75811 )
75812 ;
75813 --
75814 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75815 
75816       trace
75817          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
75818          ,p_level    => C_LEVEL_STATEMENT
75819          ,p_module   => l_log_module);
75820 
75821 END IF;
75822 --
75823 
75824 
75825 
75826 --
75827 INSERT INTO xla_diag_sources  --line2
75828 (
75829         event_id
75830       , ledger_id
75831       , sla_ledger_id
75832       , description_language
75833       , object_name
75834       , object_type_code
75835       , line_number
75836       , source_application_id
75837       , source_type_code
75838       , source_code
75839       , source_value
75840       , source_meaning
75841       , created_by
75842       , creation_date
75843       , last_update_date
75844       , last_updated_by
75845       , last_update_login
75846       , program_update_date
75847       , program_application_id
75848       , program_id
75849       , request_id
75850 )
75851 SELECT  event_id
75852       , p_target_ledger_id
75853       , p_sla_ledger_id
75854       , p_language
75855       , object_name
75856       , object_type_code
75857       , line_number
75858       , source_application_id
75859       , source_type_code
75860       , source_code
75861       , SUBSTR(source_value,1,1996)
75862       , SUBSTR(source_meaning ,1,200)
75863       , xla_environment_pkg.g_Usr_Id
75864       , TRUNC(SYSDATE)
75865       , TRUNC(SYSDATE)
75866       , xla_environment_pkg.g_Usr_Id
75867       , xla_environment_pkg.g_Login_Id
75868       , TRUNC(SYSDATE)
75869       , xla_environment_pkg.g_Prog_Appl_Id
75870       , xla_environment_pkg.g_Prog_Id
75871       , xla_environment_pkg.g_Req_Id
75872   FROM (
75873        SELECT xet.event_id                  event_id
75874             , l4.line_number                 line_number
75875             , CASE r
75876                WHEN 1 THEN 'AR_CUST_TRX_LINES_L_V' 
75877                 WHEN 2 THEN 'AR_CUST_TRX_LINES_L_V' 
75878                 WHEN 3 THEN 'AR_CUST_TRX_LINES_L_V' 
75879                 WHEN 4 THEN 'AR_CUST_TRX_LINES_L_V' 
75880                 WHEN 5 THEN 'AR_CUST_TRX_LINES_L_V' 
75881                 WHEN 6 THEN 'AR_CUST_TRX_LINES_BASE_V' 
75882                 WHEN 7 THEN 'AR_CUST_TRX_LINES_BASE_V' 
75883                 WHEN 8 THEN 'AR_CUST_TRX_LINES_BASE_V' 
75884                 WHEN 9 THEN 'AR_CUST_TRX_LINES_BASE_V' 
75885                 
75886                ELSE null
75887               END                           object_name
75888             , CASE r
75889                 WHEN 1 THEN 'LINE' 
75890                 WHEN 2 THEN 'LINE' 
75891                 WHEN 3 THEN 'LINE' 
75892                 WHEN 4 THEN 'LINE' 
75893                 WHEN 5 THEN 'LINE' 
75894                 WHEN 6 THEN 'LINE' 
75895                 WHEN 7 THEN 'LINE' 
75896                 WHEN 8 THEN 'LINE' 
75897                 WHEN 9 THEN 'LINE' 
75898                 
75899                 ELSE null
75900               END                           object_type_code
75901             , CASE r
75902                 WHEN 1 THEN '222' 
75903                 WHEN 2 THEN '222' 
75904                 WHEN 3 THEN '222' 
75905                 WHEN 4 THEN '222' 
75906                 WHEN 5 THEN '222' 
75907                 WHEN 6 THEN '222' 
75908                 WHEN 7 THEN '222' 
75912                 ELSE null
75909                 WHEN 8 THEN '222' 
75910                 WHEN 9 THEN '222' 
75911                 
75913               END                           source_application_id
75914             , 'S'             source_type_code
75915             , CASE r
75916                 WHEN 1 THEN 'TRX_LINE_DIST_CCID' 
75917                 WHEN 2 THEN 'TRX_LINE_DIST_ACCOUNT_CLASS' 
75918                 WHEN 3 THEN 'TRX_LINE_DIST_ID' 
75919                 WHEN 4 THEN 'TRX_DISTRIBUTION_TYPE' 
75920                 WHEN 5 THEN 'TRX_LINE_DIST_AMT' 
75921                 WHEN 6 THEN 'TRX_LINE_CUR_CONVERSION_DATE' 
75922                 WHEN 7 THEN 'TRX_LINE_CUR_CONVERSION_RATE' 
75923                 WHEN 8 THEN 'TRX_LINE_CUR_CONVERSION_TYPE' 
75924                 WHEN 9 THEN 'TRX_LINE_ACCTD_AMT' 
75925                 
75926                 ELSE null
75927               END                           source_code
75928             , CASE r
75929                 WHEN 1 THEN TO_CHAR(l4.TRX_LINE_DIST_CCID)
75930                 WHEN 2 THEN TO_CHAR(l4.TRX_LINE_DIST_ACCOUNT_CLASS)
75931                 WHEN 3 THEN TO_CHAR(l4.TRX_LINE_DIST_ID)
75932                 WHEN 4 THEN TO_CHAR(l4.TRX_DISTRIBUTION_TYPE)
75933                 WHEN 5 THEN TO_CHAR(l4.TRX_LINE_DIST_AMT)
75934                 WHEN 6 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_DATE)
75935                 WHEN 7 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_RATE)
75936                 WHEN 8 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_TYPE)
75937                 WHEN 9 THEN TO_CHAR(l3.TRX_LINE_ACCTD_AMT)
75938                 
75939                 ELSE null
75940               END                           source_value
75941             , null              source_meaning
75942          FROM  xla_events_gt     xet  
75943         , AR_CUST_TRX_LINES_BASE_V  l3
75944         , AR_CUST_TRX_LINES_L_V  l4
75945             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
75946         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
75947           AND xet.event_class_code = C_EVENT_CLASS_CODE
75948             AND l3.event_id          = xet.event_id
75949   AND l4.event_id    = l3.event_id
75950   AND l4.line_number = l3.line_number
75951 
75952 )
75953 ;
75954 --
75955 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
75956 
75957       trace
75958          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
75959          ,p_level    => C_LEVEL_STATEMENT
75960          ,p_module   => l_log_module);
75961 
75962 END IF;
75963 
75964 
75965 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
75966       trace
75967          (p_msg      => 'END of insert_sources_149'
75968          ,p_level    => C_LEVEL_PROCEDURE
75969          ,p_module   => l_log_module);
75970 END IF;
75971 EXCEPTION
75972   WHEN xla_exceptions_pkg.application_exception THEN
75973       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
75974             trace
75975                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
75976                ,p_level    => C_LEVEL_EXCEPTION
75977                ,p_module   => l_log_module);
75978       END IF;
75979       RAISE;
75980   WHEN OTHERS THEN
75981       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
75982             trace
75983                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
75984                ,p_level    => C_LEVEL_EXCEPTION
75985                ,p_module   => l_log_module);
75986        END IF;
75987        xla_exceptions_pkg.raise_message
75988            (p_location => 'XLA_00222_AAD_S_000002_PKG.insert_sources_149');
75989 END insert_sources_149;
75990 --
75991 
75992 ---------------------------------------
75993 --
75994 -- PRIVATE FUNCTION
75995 --         EventClass_149
75996 --
75997 ----------------------------------------
75998 --
75999 FUNCTION EventClass_149
76000        (p_application_id         IN NUMBER
76001        ,p_base_ledger_id         IN NUMBER
76002        ,p_target_ledger_id       IN NUMBER
76003        ,p_language               IN VARCHAR2
76004        ,p_currency_code          IN VARCHAR2
76005        ,p_sla_ledger_id          IN NUMBER
76006        ,p_pad_start_date         IN DATE
76007        ,p_pad_end_date           IN DATE
76008        ,p_primary_ledger_id      IN NUMBER)
76009 RETURN BOOLEAN IS
76010 --
76011 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'DEPOSIT_ALL';
76012 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'DEPOSIT';
76013 
76014 l_calculate_acctd_flag   VARCHAR2(1) :='N';
76015 l_calculate_g_l_flag     VARCHAR2(1) :='N';
76016 --
76017 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76018 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76019 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76020 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76021 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76022 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76023 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76024 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76025 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76026 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76027 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76031 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76028 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76029 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76030 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
76032 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76033 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76034 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
76035 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76036 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76037 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76038 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
76039 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
76040 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
76041 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
76042 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
76043 
76044 l_event_id                             NUMBER;
76045 l_previous_event_id                    NUMBER;
76046 l_first_event_id                       NUMBER;
76047 l_last_event_id                        NUMBER;
76048 
76049 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
76050 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
76051 --
76052 --
76053 l_result                    BOOLEAN := TRUE;
76054 l_rows                      NUMBER  := 1000;
76055 l_event_type_name           VARCHAR2(80) := 'All';
76056 l_event_class_name          VARCHAR2(80) := 'Deposit';
76057 l_description               VARCHAR2(4000);
76058 l_transaction_reversal      NUMBER;
76059 l_ae_header_id              NUMBER;
76060 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
76061 l_log_module                VARCHAR2(240);
76062 --
76063 l_acct_reversal_source      VARCHAR2(30);
76064 l_trx_reversal_source       VARCHAR2(30);
76065 
76066 l_continue_with_lines       BOOLEAN := TRUE;
76067 --
76068 l_acc_rev_gl_date_source    DATE;                      -- 4262811
76069 --
76070 type t_array_event_id is table of number index by binary_integer;
76071 
76072 l_rec_array_event                    t_rec_array_event;
76073 l_null_rec_array_event               t_rec_array_event;
76074 l_array_ae_header_id                 xla_number_array_type;
76075 l_actual_flag                        VARCHAR2(1) := NULL;
76076 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
76077 l_balance_type_code                  VARCHAR2(1) :=NULL;
76078 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
76079 
76080 --
76081 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
76082 --
76083 
76084 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_TYPE_NAME%TYPE INDEX BY BINARY_INTEGER;
76085 TYPE t_array_source_4 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_NUMBER%TYPE INDEX BY BINARY_INTEGER;
76086 TYPE t_array_source_5 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
76087 TYPE t_array_source_6 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
76088 TYPE t_array_source_49 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
76089 TYPE t_array_source_50 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
76090 TYPE t_array_source_51 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
76091 TYPE t_array_source_59 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
76092 TYPE t_array_source_120 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
76093 
76094 TYPE t_array_source_38 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
76095 TYPE t_array_source_55 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ACCOUNT_CLASS%TYPE INDEX BY BINARY_INTEGER;
76096 TYPE t_array_source_56 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
76097 TYPE t_array_source_57 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
76098 TYPE t_array_source_58 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_AMT%TYPE INDEX BY BINARY_INTEGER;
76099 TYPE t_array_source_60 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
76100 TYPE t_array_source_61 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
76101 TYPE t_array_source_62 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
76102 TYPE t_array_source_63 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
76103 
76104 l_array_source_3              t_array_source_3;
76105 l_array_source_4              t_array_source_4;
76106 l_array_source_5              t_array_source_5;
76107 l_array_source_6              t_array_source_6;
76108 l_array_source_49              t_array_source_49;
76109 l_array_source_50              t_array_source_50;
76110 l_array_source_51              t_array_source_51;
76111 l_array_source_59              t_array_source_59;
76112 l_array_source_120              t_array_source_120;
76113 
76114 l_array_source_38      t_array_source_38;
76115 l_array_source_55      t_array_source_55;
76119 l_array_source_60      t_array_source_60;
76116 l_array_source_56      t_array_source_56;
76117 l_array_source_57      t_array_source_57;
76118 l_array_source_58      t_array_source_58;
76120 l_array_source_61      t_array_source_61;
76121 l_array_source_62      t_array_source_62;
76122 l_array_source_63      t_array_source_63;
76123 
76124 --
76125 CURSOR header_cur
76126 IS
76127 SELECT /*+ leading(xet) cardinality(xet,1) */
76128 -- Event Class Code: DEPOSIT
76129     xet.entity_id
76130    ,xet.legal_entity_id
76131    ,xet.entity_code
76132    ,xet.transaction_number
76133    ,xet.event_id
76134    ,xet.event_class_code
76135    ,xet.event_type_code
76136    ,xet.event_number
76137    ,xet.event_date
76138    ,xet.transaction_date
76139    ,xet.reference_num_1
76140    ,xet.reference_num_2
76141    ,xet.reference_num_3
76142    ,xet.reference_num_4
76143    ,xet.reference_char_1
76144    ,xet.reference_char_2
76145    ,xet.reference_char_3
76146    ,xet.reference_char_4
76147    ,xet.reference_date_1
76148    ,xet.reference_date_2
76149    ,xet.reference_date_3
76150    ,xet.reference_date_4
76151    ,xet.event_created_by
76152    ,xet.budgetary_control_flag 
76153   , h5.TRX_TYPE_NAME    source_3
76154   , h5.TRX_NUMBER    source_4
76155   , h5.TRX_DOC_SEQUENCE_CATEGORY    source_5
76156   , h5.TRX_DOC_SEQUENCE_VALUE    source_6
76157   , h1.BILL_CUST_ACCOUNT_ID    source_49
76158   , h2.BILL_USES_SITE_USE_ID    source_50
76159   , h5.XLA_PARTY_TYPE    source_51
76160   , h5.TRX_INVOICE_CURRENCY_CODE    source_59
76161   , h5.TRX_DOC_SEQUENCE_ID    source_120
76162   FROM xla_events_gt     xet 
76163   , AR_BILL_TO_CUSTOMERS_S_V  h1
76164   , AR_BILL_TO_SITE_USES_S_V  h2
76165   , AR_TRANSACTIONS_S_V  h5
76166  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
76167    and xet.event_class_code = C_EVENT_CLASS_CODE
76168    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
76169   AND h2.event_id  = h1.event_id
76170   AND h5.event_id  = h1.event_id
76171 
76172  ORDER BY event_id
76173 ;
76174 
76175 
76176 --
76177 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
76178 IS
76179 SELECT  /*+ leading(xet) cardinality(xet,1) */
76180 -- Event Class Code: DEPOSIT
76181     xet.entity_id
76182    ,xet.legal_entity_id
76183    ,xet.entity_code
76184    ,xet.transaction_number
76185    ,xet.event_id
76186    ,xet.event_class_code
76187    ,xet.event_type_code
76188    ,xet.event_number
76189    ,xet.event_date
76190    ,xet.transaction_date
76191    ,xet.reference_num_1
76192    ,xet.reference_num_2
76193    ,xet.reference_num_3
76194    ,xet.reference_num_4
76195    ,xet.reference_char_1
76196    ,xet.reference_char_2
76197    ,xet.reference_char_3
76198    ,xet.reference_char_4
76199    ,xet.reference_date_1
76200    ,xet.reference_date_2
76201    ,xet.reference_date_3
76202    ,xet.reference_date_4
76203    ,xet.event_created_by
76204    ,xet.budgetary_control_flag
76205  , l3.LINE_NUMBER  
76206   , l4.TRX_LINE_DIST_CCID    source_38
76207   , l4.TRX_LINE_DIST_ACCOUNT_CLASS    source_55
76208   , l4.TRX_LINE_DIST_ID    source_56
76209   , l4.TRX_DISTRIBUTION_TYPE    source_57
76210   , l4.TRX_LINE_DIST_AMT    source_58
76211   , l3.TRX_LINE_CUR_CONVERSION_DATE    source_60
76212   , l3.TRX_LINE_CUR_CONVERSION_RATE    source_61
76213   , l3.TRX_LINE_CUR_CONVERSION_TYPE    source_62
76214   , l3.TRX_LINE_ACCTD_AMT    source_63
76215   FROM xla_events_gt     xet 
76216   , AR_CUST_TRX_LINES_BASE_V  l3
76217   , AR_CUST_TRX_LINES_L_V  l4
76218  WHERE xet.event_id between x_first_event_id and x_last_event_id
76219    and xet.event_date between p_pad_start_date and p_pad_end_date
76220    and xet.event_class_code = C_EVENT_CLASS_CODE
76221    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
76222   AND l4.event_id    = l3.event_id
76223   AND l4.line_number = l3.line_number
76224 ;
76225 
76226 --
76227 BEGIN
76228 IF g_log_enabled THEN
76229    l_log_module := C_DEFAULT_MODULE||'.EventClass_149';
76230 END IF;
76231 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76232    trace
76233       (p_msg      => 'BEGIN of EventClass_149'
76234       ,p_level    => C_LEVEL_PROCEDURE
76235       ,p_module   => l_log_module);
76236 END IF;
76237 
76238 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76239    trace
76240       (p_msg      => 'p_application_id = '||p_application_id||
76241                      ' - p_base_ledger_id = '||p_base_ledger_id||
76242                      ' - p_target_ledger_id  = '||p_target_ledger_id||
76243                      ' - p_language = '||p_language||
76244                      ' - p_currency_code = '||p_currency_code||
76245                      ' - p_sla_ledger_id = '||p_sla_ledger_id
76246       ,p_level    => C_LEVEL_STATEMENT
76247       ,p_module   => l_log_module);
76248 END IF;
76249 --
76250 -- initialze arrays
76251 --
76252 g_array_event.DELETE;
76253 l_rec_array_event := l_null_rec_array_event;
76254 --
76255 --------------------------------------
76256 -- 4262811 Initialze MPA Line Number
76257 --------------------------------------
76258 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
76259 
76260 --
76261 
76262 --
76266    trace
76263 OPEN header_cur;
76264 --
76265 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76267    (p_msg      => 'SQL - FETCH header_cur'
76268    ,p_level    => C_LEVEL_STATEMENT
76269    ,p_module   => l_log_module);
76270 END IF;
76271 --
76272 LOOP
76273 FETCH header_cur BULK COLLECT INTO
76274         l_array_entity_id
76275       , l_array_legal_entity_id
76276       , l_array_entity_code
76277       , l_array_transaction_num
76278       , l_array_event_id
76279       , l_array_class_code
76280       , l_array_event_type
76281       , l_array_event_number
76282       , l_array_event_date
76283       , l_array_transaction_date
76284       , l_array_reference_num_1
76285       , l_array_reference_num_2
76286       , l_array_reference_num_3
76287       , l_array_reference_num_4
76288       , l_array_reference_char_1
76289       , l_array_reference_char_2
76290       , l_array_reference_char_3
76291       , l_array_reference_char_4
76292       , l_array_reference_date_1
76293       , l_array_reference_date_2
76294       , l_array_reference_date_3
76295       , l_array_reference_date_4
76296       , l_array_event_created_by
76297       , l_array_budgetary_control_flag 
76298       , l_array_source_3
76299       , l_array_source_4
76300       , l_array_source_5
76301       , l_array_source_6
76302       , l_array_source_49
76303       , l_array_source_50
76304       , l_array_source_51
76305       , l_array_source_59
76306       , l_array_source_120
76307       LIMIT l_rows;
76308 --
76309 IF (C_LEVEL_EVENT >= g_log_level) THEN
76310    trace
76311    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
76312    ,p_level    => C_LEVEL_EVENT
76313    ,p_module   => l_log_module);
76314 END IF;
76315 --
76316 EXIT WHEN l_array_entity_id.COUNT = 0;
76317 
76318 -- initialize arrays
76319 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
76320 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
76321 
76322 --
76323 -- Bug 4458708
76324 --
76325 XLA_AE_LINES_PKG.g_LineNumber := 0;
76326 
76327 
76328 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
76329 g_last_hdr_idx := l_array_event_id.LAST;
76330 --
76331 -- loop for the headers. Each iteration is for each header extract row
76332 -- fetched in header cursor
76333 --
76334 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
76335 
76336 --
76337 -- set event info as cache for other routines to refer event attributes
76338 --
76339 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
76340    (p_application_id           => p_application_id
76341    ,p_primary_ledger_id        => p_primary_ledger_id
76342    ,p_base_ledger_id           => p_base_ledger_id
76343    ,p_target_ledger_id         => p_target_ledger_id
76344    ,p_entity_id                => l_array_entity_id(hdr_idx)
76345    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
76346    ,p_entity_code              => l_array_entity_code(hdr_idx)
76347    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
76348    ,p_event_id                 => l_array_event_id(hdr_idx)
76349    ,p_event_class_code         => l_array_class_code(hdr_idx)
76350    ,p_event_type_code          => l_array_event_type(hdr_idx)
76351    ,p_event_number             => l_array_event_number(hdr_idx)
76352    ,p_event_date               => l_array_event_date(hdr_idx)
76353    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
76354    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
76355    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
76356    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
76357    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
76358    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
76359    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
76360    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
76361    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
76362    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
76363    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
76364    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
76365    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
76366    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
76367    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
76368 
76369 --
76370 -- set the status of entry to C_VALID (0)
76371 --
76372 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
76373 
76374 --
76375 -- initialize a row for ae header
76376 --
76377 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
76378 
76379 l_event_id := l_array_event_id(hdr_idx);
76380 
76381 --
76382 -- storing the hdr_idx for event. May be used by line cursor.
76383 --
76384 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
76385 
76386 --
76387 -- store sources from header extract. This can be improved to
76388 -- store only those sources from header extract that may be used in lines
76389 --
76390 
76391 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
76395 g_array_event(l_event_id).array_value_num('source_49') := l_array_source_49(hdr_idx);
76392 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
76393 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
76394 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
76396 g_array_event(l_event_id).array_value_num('source_50') := l_array_source_50(hdr_idx);
76397 g_array_event(l_event_id).array_value_char('source_51') := l_array_source_51(hdr_idx);
76398 g_array_event(l_event_id).array_value_char('source_59') := l_array_source_59(hdr_idx);
76399 g_array_event(l_event_id).array_value_num('source_120') := l_array_source_120(hdr_idx);
76400 
76401 --
76402 -- initilaize the status of ae headers for diffrent balance types
76403 -- the status is initialised to C_NOT_CREATED (2)
76404 --
76405 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
76406 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
76407 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
76408 
76409 --
76410 -- call api to validate and store accounting attributes for header
76411 --
76412 
76413 ------------------------------------------------------------
76414 -- Accrual Reversal : to get date for Standard Source (NONE)
76415 ------------------------------------------------------------
76416 l_acc_rev_gl_date_source := NULL;
76417 
76418      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
76419       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_5');
76420      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
76421       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_120');
76422      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
76423       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_6');
76424      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
76425       l_rec_acct_attrs.array_date_value(4) := 
76426 xla_ae_sources_pkg.GetSystemSourceDate(
76427    p_source_code           => 'XLA_EVENT_DATE'
76428  , p_source_type_code      => 'Y'
76429  , p_source_application_id =>  602
76430 );
76431 
76432 
76433 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
76434 
76435 XLA_AE_HEADER_PKG.SetJeCategoryName;
76436 
76437 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
76438 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
76439 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
76440 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
76441 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
76442 
76443 
76444 --
76445 xla_ae_header_pkg.SetHdrDescription(
76446    p_description => Description_6 (
76447    p_application_id => p_application_id 
76448  , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
76449  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
76450  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
76451  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
76452    )
76453 );
76454 --
76455 
76456 -- No header level analytical criteria
76457 
76458 --
76459 --accounting attribute enhancement, bug 3612931
76460 --
76461 l_trx_reversal_source := SUBSTR(NULL, 1,30);
76462 
76463 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
76464    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
76465 
76466    xla_accounting_err_pkg.build_message
76467       (p_appli_s_name            => 'XLA'
76468       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
76469       ,p_token_1                 => 'ACCT_ATTR_NAME'
76470       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
76471       ,p_token_2                 => 'PRODUCT_NAME'
76472       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
76473       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
76474       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
76475       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
76476 
76477 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
76478    --
76479    -- following sets the accounting attributes needed to reverse
76480    -- accounting for a distributeion
76481    --
76482    xla_ae_lines_pkg.SetTrxReversalAttrs
76483       (p_event_id              => l_event_id
76484       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
76485       ,p_trx_reversal_source   => l_trx_reversal_source);
76486 
76487 END IF;
76488 
76489 
76490 ----------------------------------------------------------------
76491 -- 4262811 -  update the header statuses to invalid in need be
76492 ----------------------------------------------------------------
76493 --
76494 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
76495 
76496 
76500 ----------------------------------------------------------------
76497   -----------------------------------------------
76498   -- No accrual reversal for the event class/type
76499   -----------------------------------------------
76501 
76502 --
76503 -- this ends the header loop iteration for one bulk fetch
76504 --
76505 END LOOP;
76506 
76507 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
76508 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
76509 
76510 --
76511 -- insert dummy rows into lines gt table that were created due to
76512 -- transaction reversals
76513 --
76514 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
76515    l_result := XLA_AE_LINES_PKG.InsertLines;
76516 END IF;
76517 
76518 --
76519 -- reset the temp_line_num for each set of events fetched from header
76520 -- cursor rather than doing it for each new event in line cursor
76521 -- Bug 3939231
76522 --
76523 xla_ae_lines_pkg.g_temp_line_num := 0;
76524 
76525 
76526 
76527 --
76528 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
76529 --
76530 --
76531 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76532 
76533       trace
76534          (p_msg      => 'SQL - FETCH line_cur'
76535          ,p_level    => C_LEVEL_STATEMENT
76536          ,p_module   => l_log_module);
76537 
76538 END IF;
76539 --
76540 --
76541 LOOP
76542   --
76543   FETCH line_cur BULK COLLECT INTO
76544         l_array_entity_id
76545       , l_array_legal_entity_id
76546       , l_array_entity_code
76547       , l_array_transaction_num
76548       , l_array_event_id
76549       , l_array_class_code
76550       , l_array_event_type
76551       , l_array_event_number
76552       , l_array_event_date
76553       , l_array_transaction_date
76554       , l_array_reference_num_1
76555       , l_array_reference_num_2
76556       , l_array_reference_num_3
76557       , l_array_reference_num_4
76558       , l_array_reference_char_1
76559       , l_array_reference_char_2
76560       , l_array_reference_char_3
76561       , l_array_reference_char_4
76562       , l_array_reference_date_1
76563       , l_array_reference_date_2
76564       , l_array_reference_date_3
76565       , l_array_reference_date_4
76566       , l_array_event_created_by
76567       , l_array_budgetary_control_flag
76568       , l_array_extract_line_num 
76569       , l_array_source_38
76570       , l_array_source_55
76571       , l_array_source_56
76572       , l_array_source_57
76573       , l_array_source_58
76574       , l_array_source_60
76575       , l_array_source_61
76576       , l_array_source_62
76577       , l_array_source_63
76578       LIMIT l_rows;
76579 
76580   --
76581   IF (C_LEVEL_EVENT >= g_log_level) THEN
76582             trace
76583                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
76584                ,p_level    => C_LEVEL_EVENT
76585                ,p_module   => l_log_module);
76586   END IF;
76587   --
76588   EXIT WHEN l_array_entity_id.count = 0;
76589 
76590   XLA_AE_LINES_PKG.g_rec_lines := null;
76591 
76592 --
76593 -- Bug 4458708
76594 --
76595 XLA_AE_LINES_PKG.g_LineNumber := 0;
76596 --
76597 --
76598 
76599 FOR Idx IN 1..l_array_event_id.count LOOP
76600    --
76601    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
76602    --
76603    l_event_id := l_array_event_id(idx);  -- 5648433
76604 
76605    --
76606    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
76607    --
76608 
76609    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
76610              (g_array_event(l_event_id).array_value_num('header_index'))
76611          ,'N'
76612          ) <> 'Y'
76613    THEN
76614       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76615          trace
76616             (p_msg      => 'Trancaction revesal option is not Y '
76617             ,p_level    => C_LEVEL_STATEMENT
76618             ,p_module   => l_log_module);
76619       END IF;
76620 
76621 --
76622 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
76623 --
76624 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
76625 --
76626 -- set event info as cache for other routines to refer event attributes
76627 --
76628 
76629 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
76630    l_previous_event_id := l_event_id;
76631 
76632    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
76633       (p_application_id           => p_application_id
76634       ,p_primary_ledger_id        => p_primary_ledger_id
76635       ,p_base_ledger_id           => p_base_ledger_id
76636       ,p_target_ledger_id         => p_target_ledger_id
76637       ,p_entity_id                => l_array_entity_id(Idx)
76638       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
76639       ,p_entity_code              => l_array_entity_code(Idx)
76640       ,p_transaction_num          => l_array_transaction_num(Idx)
76641       ,p_event_id                 => l_array_event_id(Idx)
76642       ,p_event_class_code         => l_array_class_code(Idx)
76643       ,p_event_type_code          => l_array_event_type(Idx)
76647       ,p_reference_num_1          => l_array_reference_num_1(Idx)
76644       ,p_event_number             => l_array_event_number(Idx)
76645       ,p_event_date               => l_array_event_date(Idx)
76646       ,p_transaction_date         => l_array_transaction_date(Idx)
76648       ,p_reference_num_2          => l_array_reference_num_2(Idx)
76649       ,p_reference_num_3          => l_array_reference_num_3(Idx)
76650       ,p_reference_num_4          => l_array_reference_num_4(Idx)
76651       ,p_reference_char_1         => l_array_reference_char_1(Idx)
76652       ,p_reference_char_2         => l_array_reference_char_2(Idx)
76653       ,p_reference_char_3         => l_array_reference_char_3(Idx)
76654       ,p_reference_char_4         => l_array_reference_char_4(Idx)
76655       ,p_reference_date_1         => l_array_reference_date_1(Idx)
76656       ,p_reference_date_2         => l_array_reference_date_2(Idx)
76657       ,p_reference_date_3         => l_array_reference_date_3(Idx)
76658       ,p_reference_date_4         => l_array_reference_date_4(Idx)
76659       ,p_event_created_by         => l_array_event_created_by(Idx)
76660       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
76661        --
76662 END IF;
76663 
76664 
76665 
76666 --
76667 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
76668 
76669 l_acct_reversal_source := SUBSTR(NULL, 1,30);
76670 
76671 IF l_continue_with_lines THEN
76672    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
76673       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
76674 
76675       xla_accounting_err_pkg.build_message
76676          (p_appli_s_name            => 'XLA'
76677          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
76678          ,p_token_1                 => 'LINE_NUMBER'
76679          ,p_value_1                 => l_array_extract_line_num(Idx)
76680          ,p_token_2                 => 'PRODUCT_NAME'
76681          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
76682          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
76683          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
76684          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
76685 
76686    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
76687       --
76688       -- following sets the accounting attributes needed to reverse
76689       -- accounting for a distributeion
76690       --
76691 
76692       --
76693       -- 5217187
76694       --
76695       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
76696       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
76697                                        g_array_event(l_event_id).array_value_num('header_index'));
76698       --
76699       --
76700 
76701       -- No reversal code generated
76702 
76703       xla_ae_lines_pkg.SetAcctReversalAttrs
76704          (p_event_id             => l_event_id
76705          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
76706          ,p_calculate_acctd_flag => l_calculate_acctd_flag
76707          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
76708    END IF;
76709 
76710    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
76711        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
76712 
76713 --
76714 AcctLineType_73 (
76715  p_application_id  => p_application_id
76716  ,p_event_id     => l_event_id
76717  ,p_calculate_acctd_flag => l_calculate_acctd_flag
76718  ,p_calculate_g_l_flag => l_calculate_g_l_flag
76719  ,p_actual_flag => l_actual_flag
76720  ,p_balance_type_code => l_balance_type_code
76721  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
76722  
76723  , p_source_38 => l_array_source_38(Idx)
76724  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
76725  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
76726  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
76727  , p_source_55 => l_array_source_55(Idx)
76728  , p_source_56 => l_array_source_56(Idx)
76729  , p_source_57 => l_array_source_57(Idx)
76730  , p_source_58 => l_array_source_58(Idx)
76731  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
76732  , p_source_60 => l_array_source_60(Idx)
76733  , p_source_61 => l_array_source_61(Idx)
76734  , p_source_62 => l_array_source_62(Idx)
76735  , p_source_63 => l_array_source_63(Idx)
76736  );
76737 If(l_balance_type_code = 'A') THEN
76738   l_actual_gain_loss_ref := l_gain_or_loss_ref;
76739 END IF;
76740 
76741 --
76742 
76743 
76744 --
76745 AcctLineType_74 (
76746  p_application_id  => p_application_id
76747  ,p_event_id     => l_event_id
76748  ,p_calculate_acctd_flag => l_calculate_acctd_flag
76749  ,p_calculate_g_l_flag => l_calculate_g_l_flag
76750  ,p_actual_flag => l_actual_flag
76751  ,p_balance_type_code => l_balance_type_code
76752  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
76753  
76754  , p_source_38 => l_array_source_38(Idx)
76755  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
76756  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
76757  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
76758  , p_source_55 => l_array_source_55(Idx)
76762  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
76759  , p_source_56 => l_array_source_56(Idx)
76760  , p_source_57 => l_array_source_57(Idx)
76761  , p_source_58 => l_array_source_58(Idx)
76763  , p_source_60 => l_array_source_60(Idx)
76764  , p_source_61 => l_array_source_61(Idx)
76765  , p_source_62 => l_array_source_62(Idx)
76766  , p_source_63 => l_array_source_63(Idx)
76767  );
76768 If(l_balance_type_code = 'A') THEN
76769   l_actual_gain_loss_ref := l_gain_or_loss_ref;
76770 END IF;
76771 
76772 --
76773 
76774       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
76775       -- or secondary ledger that has different currency with primary
76776       -- or alc that is calculated by sla
76777       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
76778             (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'))
76779 
76780 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
76781 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
76782           AND (l_actual_flag = 'A')) THEN
76783         XLA_AE_LINES_PKG.CreateGainOrLossLines(
76784           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
76785          ,p_application_id   => p_application_id
76786          ,p_amb_context_code => 'DEFAULT'
76787          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
76788          ,p_event_class_code => C_EVENT_CLASS_CODE
76789          ,p_event_type_code  => C_EVENT_TYPE_CODE
76790          
76791          ,p_gain_ccid        => -1
76792          ,p_loss_ccid        => -1
76793 
76794          ,p_actual_flag      => l_actual_flag
76795          ,p_enc_flag         => null
76796          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
76797          ,p_enc_g_l_ref      => null
76798          );
76799       END IF;
76800    END IF;
76801 END IF;
76802 
76803    ELSE
76804       --
76805       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
76806       --
76807       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76808          trace
76809             (p_msg      => 'Trancaction revesal option is Y'
76810             ,p_level    => C_LEVEL_STATEMENT
76811             ,p_module   => l_log_module);
76812       END IF;
76813    END IF;
76814 
76815 END LOOP;
76816 l_result := XLA_AE_LINES_PKG.InsertLines ;
76817 end loop;
76818 close line_cur;
76819 
76820 
76821 --
76822 -- insert headers into xla_ae_headers_gt table
76823 --
76824 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
76825 
76826 -- insert into errors table here.
76827 
76828 END LOOP;
76829 
76830 --
76831 -- 4865292
76832 --
76833 -- Compare g_hdr_extract_count with event count in
76834 -- CreateHeadersAndLines.
76835 --
76836 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
76837 
76838 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76839    trace (p_msg     => '# rows extracted from header extract objects '
76840                     || ' (running total): '
76841                     || g_hdr_extract_count
76842          ,p_level   => C_LEVEL_STATEMENT
76843          ,p_module  => l_log_module);
76844 END IF;
76845 
76846 CLOSE header_cur;
76847 --
76848 
76849 --
76850 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76851    trace
76852       (p_msg      => 'END of EventClass_149'
76853       ,p_level    => C_LEVEL_PROCEDURE
76854       ,p_module   => l_log_module);
76855 END IF;
76856 --
76857 RETURN l_result;
76858 EXCEPTION
76859 WHEN xla_exceptions_pkg.application_exception THEN
76860    
76861 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
76862 
76863    
76864 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
76865 
76866    RAISE;
76867 
76868 WHEN NO_DATA_FOUND THEN
76869 
76870 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
76871 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
76872 
76873 FOR header_record IN header_cur
76874 LOOP
76875     l_array_header_events(header_record.event_id) := header_record.event_id;
76876 END LOOP;
76877 
76878 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
76879 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
76880 
76881 fnd_file.put_line(fnd_file.LOG, '                    ');
76882 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
76883 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
76884 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
76885 
76886 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
76887 LOOP
76888 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
76889 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
76890         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
76891 	END IF;
76892 END LOOP;
76893 
76897 
76894 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
76895 fnd_file.put_line(fnd_file.LOG, '                    ');
76896 
76898 xla_exceptions_pkg.raise_message
76899       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_149');
76900 
76901 
76902 WHEN OTHERS THEN
76903    xla_exceptions_pkg.raise_message
76904       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_149');
76905 END EventClass_149;
76906 --
76907 
76908 ---------------------------------------
76909 --
76910 -- PRIVATE PROCEDURE
76911 --         insert_sources_150
76912 --
76913 ----------------------------------------
76914 --
76915 PROCEDURE insert_sources_150(
76916                                 p_target_ledger_id       IN NUMBER
76917                               , p_language               IN VARCHAR2
76918                               , p_sla_ledger_id          IN NUMBER
76919                               , p_pad_start_date         IN DATE
76920                               , p_pad_end_date           IN DATE
76921                          )
76922 IS
76923 
76924 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FACTORING_OCC_DOCUMENT_ALL';
76925 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'FACTORING_OCC_DOCUMENT';
76926 p_apps_owner                   VARCHAR2(30);
76927 l_log_module                   VARCHAR2(240);
76928 BEGIN
76929 IF g_log_enabled THEN
76930       l_log_module := C_DEFAULT_MODULE||'.insert_sources_150';
76931 END IF;
76932 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
76933 
76934       trace
76935          (p_msg      => 'BEGIN of insert_sources_150'
76936          ,p_level    => C_LEVEL_PROCEDURE
76937          ,p_module   => l_log_module);
76938 
76939 END IF;
76940 
76941 -- select APPS owner
76942 SELECT oracle_username
76943   INTO p_apps_owner
76944   FROM fnd_oracle_userid
76945  WHERE read_only_flag = 'U'
76946 ;
76947 
76948 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
76949       trace
76950          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
76951                         ' - p_language = '||p_language||
76952                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
76953                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
76954                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
76955                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
76956          ,p_level    => C_LEVEL_STATEMENT
76957          ,p_module   => l_log_module);
76958 END IF;
76959 
76960 
76961 --
76962 INSERT INTO xla_diag_sources --hdr2
76963 (
76964         event_id
76965       , ledger_id
76966       , sla_ledger_id
76967       , description_language
76968       , object_name
76969       , object_type_code
76970       , line_number
76971       , source_application_id
76972       , source_type_code
76973       , source_code
76974       , source_value
76975       , source_meaning
76976       , created_by
76977       , creation_date
76978       , last_update_date
76979       , last_updated_by
76980       , last_update_login
76981       , program_update_date
76982       , program_application_id
76983       , program_id
76984       , request_id
76985 )
76986 SELECT
76987         event_id
76988       , p_target_ledger_id
76989       , p_sla_ledger_id
76990       , p_language
76991       , object_name
76992       , object_type_code
76993       , line_number
76994       , source_application_id
76995       , source_type_code
76996       , source_code
76997       , SUBSTR(source_value ,1,1996)
76998       , SUBSTR(source_meaning ,1,200)
76999       , xla_environment_pkg.g_Usr_Id
77000       , TRUNC(SYSDATE)
77001       , TRUNC(SYSDATE)
77002       , xla_environment_pkg.g_Usr_Id
77003       , xla_environment_pkg.g_Login_Id
77004       , TRUNC(SYSDATE)
77005       , xla_environment_pkg.g_Prog_Appl_Id
77006       , xla_environment_pkg.g_Prog_Id
77007       , xla_environment_pkg.g_Req_Id
77008   FROM (
77009        SELECT xet.event_id                  event_id
77010             , 0                          line_number
77011             , CASE r
77012                WHEN 1 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
77013                 WHEN 2 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
77014                 WHEN 3 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
77015                 WHEN 4 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
77016                 WHEN 5 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
77017                 WHEN 6 THEN 'AR_REMIT_BANK_ACCT_H_V' 
77018                 WHEN 7 THEN 'AR_REMIT_BANK_ACCT_H_V' 
77019                 WHEN 8 THEN 'AR_REMIT_BANK_ACCT_H_V' 
77020                 WHEN 9 THEN 'AR_REMIT_BANK_ACCT_H_V' 
77021                 WHEN 10 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
77022                 WHEN 11 THEN 'AR_BILL_TO_SITE_USES_S_V' 
77023                 WHEN 12 THEN 'AR_TRANSACTIONS_S_V' 
77024                 WHEN 13 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
77025                 WHEN 14 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
77026                 WHEN 15 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
77027                 WHEN 16 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
77028                 WHEN 17 THEN 'JL_BR_AR_COLL_OCC_DOCS_H_V' 
77029                 
77030                ELSE null
77031               END                           object_name
77035                 WHEN 3 THEN 'HEADER' 
77032             , CASE r
77033                 WHEN 1 THEN 'HEADER' 
77034                 WHEN 2 THEN 'HEADER' 
77036                 WHEN 4 THEN 'HEADER' 
77037                 WHEN 5 THEN 'HEADER' 
77038                 WHEN 6 THEN 'HEADER' 
77039                 WHEN 7 THEN 'HEADER' 
77040                 WHEN 8 THEN 'HEADER' 
77041                 WHEN 9 THEN 'HEADER' 
77042                 WHEN 10 THEN 'HEADER' 
77043                 WHEN 11 THEN 'HEADER' 
77044                 WHEN 12 THEN 'HEADER' 
77045                 WHEN 13 THEN 'HEADER' 
77046                 WHEN 14 THEN 'HEADER' 
77047                 WHEN 15 THEN 'HEADER' 
77048                 WHEN 16 THEN 'HEADER' 
77049                 WHEN 17 THEN 'HEADER' 
77050                 
77051                 ELSE null
77052               END                           object_type_code
77053             , CASE r
77054                 WHEN 1 THEN '222' 
77055                 WHEN 2 THEN '222' 
77056                 WHEN 3 THEN '222' 
77057                 WHEN 4 THEN '222' 
77058                 WHEN 5 THEN '222' 
77059                 WHEN 6 THEN '222' 
77060                 WHEN 7 THEN '222' 
77061                 WHEN 8 THEN '222' 
77062                 WHEN 9 THEN '222' 
77063                 WHEN 10 THEN '222' 
77064                 WHEN 11 THEN '222' 
77065                 WHEN 12 THEN '222' 
77066                 WHEN 13 THEN '222' 
77067                 WHEN 14 THEN '222' 
77068                 WHEN 15 THEN '222' 
77069                 WHEN 16 THEN '222' 
77070                 WHEN 17 THEN '222' 
77071                 
77072                 ELSE null
77073               END                           source_application_id
77074             , 'S'             source_type_code
77075             , CASE r
77076                 WHEN 1 THEN 'JLBR_BANK_OCC_DESC' 
77077                 WHEN 2 THEN 'JLBR_DOCUMENT_NUMBER' 
77078                 WHEN 3 THEN 'JLBR_TRADE_NOTE_NUMBER' 
77079                 WHEN 4 THEN 'BILL_CUST_PARTY_NAME' 
77080                 WHEN 5 THEN 'BILL_CUST_PARTY_NUMBER' 
77081                 WHEN 6 THEN 'RMT_BNK_ACCOUNT_NAME' 
77082                 WHEN 7 THEN 'RMT_BNK_ACCOUNT_NUM' 
77083                 WHEN 8 THEN 'RMT_BANK_NAME' 
77084                 WHEN 9 THEN 'RMT_BANK_NUM' 
77085                 WHEN 10 THEN 'BILL_CUST_ACCOUNT_ID' 
77086                 WHEN 11 THEN 'BILL_USES_SITE_USE_ID' 
77087                 WHEN 12 THEN 'XLA_PARTY_TYPE' 
77088                 WHEN 13 THEN 'JLBR_OCCURRENCE_ID' 
77089                 WHEN 14 THEN 'JLBR_EXCHG_GAIN_CCID' 
77090                 WHEN 15 THEN 'JLBR_EXCHG_LOSS_CCID' 
77091                 WHEN 16 THEN 'JLBR_GL_DATE' 
77092                 WHEN 17 THEN 'JLBR_TRANSFER_TO_GL_FLAG' 
77093                 
77094                 ELSE null
77095               END                           source_code
77096             , CASE r
77097                 WHEN 1 THEN TO_CHAR(h6.JLBR_BANK_OCC_DESC)
77098                 WHEN 2 THEN TO_CHAR(h6.JLBR_DOCUMENT_NUMBER)
77099                 WHEN 3 THEN TO_CHAR(h6.JLBR_TRADE_NOTE_NUMBER)
77100                 WHEN 4 THEN TO_CHAR(h1.BILL_CUST_PARTY_NAME)
77101                 WHEN 5 THEN TO_CHAR(h1.BILL_CUST_PARTY_NUMBER)
77102                 WHEN 6 THEN TO_CHAR(h3.RMT_BNK_ACCOUNT_NAME)
77103                 WHEN 7 THEN TO_CHAR(h3.RMT_BNK_ACCOUNT_NUM)
77104                 WHEN 8 THEN TO_CHAR(h3.RMT_BANK_NAME)
77105                 WHEN 9 THEN TO_CHAR(h3.RMT_BANK_NUM)
77106                 WHEN 10 THEN TO_CHAR(h1.BILL_CUST_ACCOUNT_ID)
77107                 WHEN 11 THEN TO_CHAR(h2.BILL_USES_SITE_USE_ID)
77108                 WHEN 12 THEN TO_CHAR(h4.XLA_PARTY_TYPE)
77109                 WHEN 13 THEN TO_CHAR(h6.JLBR_OCCURRENCE_ID)
77110                 WHEN 14 THEN TO_CHAR(h6.JLBR_EXCHG_GAIN_CCID)
77111                 WHEN 15 THEN TO_CHAR(h6.JLBR_EXCHG_LOSS_CCID)
77112                 WHEN 16 THEN TO_CHAR(h6.JLBR_GL_DATE)
77113                 WHEN 17 THEN TO_CHAR(h6.JLBR_TRANSFER_TO_GL_FLAG)
77114                 
77115                 ELSE null
77116               END                           source_value
77117             , CASE r
77118                 WHEN 17 THEN fvl124.meaning
77119                 
77120                 ELSE null
77121               END               source_meaning
77122          FROM xla_events_gt     xet  
77123       , AR_BILL_TO_CUSTOMERS_S_V  h1
77124       , AR_BILL_TO_SITE_USES_S_V  h2
77125       , AR_REMIT_BANK_ACCT_H_V  h3
77126       , AR_TRANSACTIONS_S_V  h4
77127       , JL_BR_AR_COLL_OCC_DOCS_H_V  h6
77128   , fnd_lookup_values    fvl124
77129              ,(select rownum r from all_objects where rownum <= 17 and owner = p_apps_owner)
77130          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
77131            AND xet.event_class_code = C_EVENT_CLASS_CODE
77132               AND h3.event_id = xet.event_id
77133   AND h1.event_id (+) = h3.event_id
77134   AND h2.event_id (+) = h3.event_id
77135   AND h4.event_id (+) = h3.event_id
77136   AND h6.event_id  = h3.event_id
77137    AND fvl124.lookup_type(+)         = 'YES_NO'
77138   AND fvl124.lookup_code(+)         = h6.JLBR_TRANSFER_TO_GL_FLAG
77139   AND fvl124.view_application_id(+) = 0
77140   AND fvl124.language(+)            = USERENV('LANG')
77141   
77142 )
77143 ;
77144 --
77145 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77146 
77147       trace
77151 
77148          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
77149          ,p_level    => C_LEVEL_STATEMENT
77150          ,p_module   => l_log_module);
77152 END IF;
77153 --
77154 
77155 
77156 
77157 --
77158 INSERT INTO xla_diag_sources  --line2
77159 (
77160         event_id
77161       , ledger_id
77162       , sla_ledger_id
77163       , description_language
77164       , object_name
77165       , object_type_code
77166       , line_number
77167       , source_application_id
77168       , source_type_code
77169       , source_code
77170       , source_value
77171       , source_meaning
77172       , created_by
77173       , creation_date
77174       , last_update_date
77175       , last_updated_by
77176       , last_update_login
77177       , program_update_date
77178       , program_application_id
77179       , program_id
77180       , request_id
77181 )
77182 SELECT  event_id
77183       , p_target_ledger_id
77184       , p_sla_ledger_id
77185       , p_language
77186       , object_name
77187       , object_type_code
77188       , line_number
77189       , source_application_id
77190       , source_type_code
77191       , source_code
77192       , SUBSTR(source_value,1,1996)
77193       , SUBSTR(source_meaning ,1,200)
77194       , xla_environment_pkg.g_Usr_Id
77195       , TRUNC(SYSDATE)
77196       , TRUNC(SYSDATE)
77197       , xla_environment_pkg.g_Usr_Id
77198       , xla_environment_pkg.g_Login_Id
77199       , TRUNC(SYSDATE)
77200       , xla_environment_pkg.g_Prog_Appl_Id
77201       , xla_environment_pkg.g_Prog_Id
77202       , xla_environment_pkg.g_Req_Id
77203   FROM (
77204        SELECT xet.event_id                  event_id
77205             , l5.line_number                 line_number
77206             , CASE r
77207                WHEN 1 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77208                 WHEN 2 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77209                 WHEN 3 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77210                 WHEN 4 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77211                 WHEN 5 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77212                 WHEN 6 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77213                 WHEN 7 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77214                 WHEN 8 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77215                 WHEN 9 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77216                 WHEN 10 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77217                 WHEN 11 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77218                 WHEN 12 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77219                 WHEN 13 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77220                 WHEN 14 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77221                 WHEN 15 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77222                 WHEN 16 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77223                 WHEN 17 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77224                 WHEN 18 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77225                 WHEN 19 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77226                 WHEN 20 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77227                 WHEN 21 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77228                 WHEN 22 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77229                 WHEN 23 THEN 'JL_BR_AR_COLL_DOC_DISTS_L_V' 
77230                 
77231                ELSE null
77232               END                           object_name
77233             , CASE r
77234                 WHEN 1 THEN 'LINE' 
77235                 WHEN 2 THEN 'LINE' 
77236                 WHEN 3 THEN 'LINE' 
77237                 WHEN 4 THEN 'LINE' 
77238                 WHEN 5 THEN 'LINE' 
77239                 WHEN 6 THEN 'LINE' 
77240                 WHEN 7 THEN 'LINE' 
77241                 WHEN 8 THEN 'LINE' 
77242                 WHEN 9 THEN 'LINE' 
77243                 WHEN 10 THEN 'LINE' 
77244                 WHEN 11 THEN 'LINE' 
77245                 WHEN 12 THEN 'LINE' 
77246                 WHEN 13 THEN 'LINE' 
77247                 WHEN 14 THEN 'LINE' 
77248                 WHEN 15 THEN 'LINE' 
77249                 WHEN 16 THEN 'LINE' 
77250                 WHEN 17 THEN 'LINE' 
77251                 WHEN 18 THEN 'LINE' 
77252                 WHEN 19 THEN 'LINE' 
77253                 WHEN 20 THEN 'LINE' 
77254                 WHEN 21 THEN 'LINE' 
77255                 WHEN 22 THEN 'LINE' 
77256                 WHEN 23 THEN 'LINE' 
77257                 
77258                 ELSE null
77259               END                           object_type_code
77260             , CASE r
77261                 WHEN 1 THEN '222' 
77262                 WHEN 2 THEN '222' 
77263                 WHEN 3 THEN '222' 
77264                 WHEN 4 THEN '222' 
77265                 WHEN 5 THEN '222' 
77266                 WHEN 6 THEN '222' 
77267                 WHEN 7 THEN '222' 
77268                 WHEN 8 THEN '222' 
77269                 WHEN 9 THEN '222' 
77270                 WHEN 10 THEN '222' 
77271                 WHEN 11 THEN '222' 
77272                 WHEN 12 THEN '222' 
77273                 WHEN 13 THEN '222' 
77274                 WHEN 14 THEN '222' 
77275                 WHEN 15 THEN '222' 
77276                 WHEN 16 THEN '222' 
77277                 WHEN 17 THEN '222' 
77278                 WHEN 18 THEN '222' 
77282                 WHEN 22 THEN '222' 
77279                 WHEN 19 THEN '222' 
77280                 WHEN 20 THEN '222' 
77281                 WHEN 21 THEN '222' 
77283                 WHEN 23 THEN '222' 
77284                 
77285                 ELSE null
77286               END                           source_application_id
77287             , 'S'             source_type_code
77288             , CASE r
77289                 WHEN 1 THEN 'JLBR_BORDERO_TYPE' 
77290                 WHEN 2 THEN 'JLBR_CD_BANK_CHARGES_CCID' 
77291                 WHEN 3 THEN 'JLBR_CD_BIL_UND_DISC_CCID' 
77292                 WHEN 4 THEN 'JLBR_CD_CASH_CCID' 
77293                 WHEN 5 THEN 'JLBR_CD_DISC_ENDRSMNT_CCID' 
77294                 WHEN 6 THEN 'JLBR_CD_FACT_CHARGES_CCID' 
77295                 WHEN 7 THEN 'JLBR_DISTRIBUTION_TYPE' 
77296                 WHEN 8 THEN 'JLBR_ACCT_REVERSING_OPTN' 
77297                 WHEN 9 THEN 'JLBR_PRIOR_DIST_LINK_TYPE' 
77298                 WHEN 10 THEN 'JLBR_PRIOR_DIST_ID' 
77299                 WHEN 11 THEN 'JLBR_PRIOR_DOCUMENT_ID' 
77300                 WHEN 12 THEN 'JLBR_PRIOR_OCCURRENCE_ID' 
77301                 WHEN 13 THEN 'JLBR_DISTRIBUTION_ID' 
77302                 WHEN 14 THEN 'JLBR_DISTRIBUTION_LINK_TYPE' 
77303                 WHEN 15 THEN 'JLBR_ENTERED_AMT' 
77304                 WHEN 16 THEN 'JLBR_ENTERED_CURRENCY_CODE' 
77305                 WHEN 17 THEN 'JLBR_CONVERSION_DATE' 
77306                 WHEN 18 THEN 'JLBR_CONVERSION_RATE' 
77307                 WHEN 19 THEN 'JLBR_CONVERSION_RATE_TYPE' 
77308                 WHEN 20 THEN 'JLBR_ACCTD_AMT' 
77309                 WHEN 21 THEN 'JLBR_REVERSED_DIST_ID' 
77310                 WHEN 22 THEN 'JLBR_REVERSED_DIST_LINK_TYPE' 
77311                 WHEN 23 THEN 'JLBR_BANK_OCC_TYPE' 
77312                 
77313                 ELSE null
77314               END                           source_code
77315             , CASE r
77316                 WHEN 1 THEN TO_CHAR(l5.JLBR_BORDERO_TYPE)
77317                 WHEN 2 THEN TO_CHAR(l5.JLBR_CD_BANK_CHARGES_CCID)
77318                 WHEN 3 THEN TO_CHAR(l5.JLBR_CD_BIL_UND_DISC_CCID)
77319                 WHEN 4 THEN TO_CHAR(l5.JLBR_CD_CASH_CCID)
77320                 WHEN 5 THEN TO_CHAR(l5.JLBR_CD_DISC_ENDRSMNT_CCID)
77321                 WHEN 6 THEN TO_CHAR(l5.JLBR_CD_FACT_CHARGES_CCID)
77322                 WHEN 7 THEN TO_CHAR(l5.JLBR_DISTRIBUTION_TYPE)
77323                 WHEN 8 THEN TO_CHAR(l5.JLBR_ACCT_REVERSING_OPTN)
77324                 WHEN 9 THEN TO_CHAR(l5.JLBR_PRIOR_DIST_LINK_TYPE)
77325                 WHEN 10 THEN TO_CHAR(l5.JLBR_PRIOR_DIST_ID)
77326                 WHEN 11 THEN TO_CHAR(l5.JLBR_PRIOR_DOCUMENT_ID)
77327                 WHEN 12 THEN TO_CHAR(l5.JLBR_PRIOR_OCCURRENCE_ID)
77328                 WHEN 13 THEN TO_CHAR(l5.JLBR_DISTRIBUTION_ID)
77329                 WHEN 14 THEN TO_CHAR(l5.JLBR_DISTRIBUTION_LINK_TYPE)
77330                 WHEN 15 THEN TO_CHAR(l5.JLBR_ENTERED_AMT)
77331                 WHEN 16 THEN TO_CHAR(l5.JLBR_ENTERED_CURRENCY_CODE)
77332                 WHEN 17 THEN TO_CHAR(l5.JLBR_CONVERSION_DATE)
77333                 WHEN 18 THEN TO_CHAR(l5.JLBR_CONVERSION_RATE)
77334                 WHEN 19 THEN TO_CHAR(l5.JLBR_CONVERSION_RATE_TYPE)
77335                 WHEN 20 THEN TO_CHAR(l5.JLBR_ACCTD_AMT)
77336                 WHEN 21 THEN TO_CHAR(l5.JLBR_REVERSED_DIST_ID)
77337                 WHEN 22 THEN TO_CHAR(l5.JLBR_REVERSED_DIST_LINK_TYPE)
77338                 WHEN 23 THEN TO_CHAR(l5.JLBR_BANK_OCC_TYPE)
77339                 
77340                 ELSE null
77341               END                           source_value
77342             , CASE r
77343                 WHEN 1 THEN fvl13.meaning
77344                 WHEN 7 THEN fvl77.meaning
77345                 WHEN 8 THEN fvl78.meaning
77346                 WHEN 23 THEN fvl96.meaning
77347                 
77348                 ELSE null
77349               END               source_meaning
77350          FROM  xla_events_gt     xet  
77351         , JL_BR_AR_COLL_DOC_DISTS_L_V  l5
77352   , fnd_lookup_values    fvl13
77353   , fnd_lookup_values    fvl77
77354   , fnd_lookup_values    fvl78
77355   , fnd_lookup_values    fvl96
77356             , (select rownum r from all_objects where rownum <= 23 and owner = p_apps_owner)
77357         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
77358           AND xet.event_class_code = C_EVENT_CLASS_CODE
77359             AND l5.event_id          = xet.event_id
77360    AND fvl13.lookup_type(+)         = 'JLBR_AR_BORDERO_TYPE'
77361   AND fvl13.lookup_code(+)         = l5.JLBR_BORDERO_TYPE
77362   AND fvl13.view_application_id(+) = 0
77363   AND fvl13.language(+)            = USERENV('LANG')
77364      AND fvl77.lookup_type(+)         = 'JLBR_AR_DIST_TYPE'
77365   AND fvl77.lookup_code(+)         = l5.JLBR_DISTRIBUTION_TYPE
77366   AND fvl77.view_application_id(+) = 0
77367   AND fvl77.language(+)            = USERENV('LANG')
77368      AND fvl78.lookup_type(+)         = 'YES_NO'
77369   AND fvl78.lookup_code(+)         = l5.JLBR_ACCT_REVERSING_OPTN
77370   AND fvl78.view_application_id(+) = 0
77371   AND fvl78.language(+)            = USERENV('LANG')
77372      AND fvl96.lookup_type(+)         = 'JLBR_AR_BANK_OCCURRENCE_TYPE'
77373   AND fvl96.lookup_code(+)         = l5.JLBR_BANK_OCC_TYPE
77374   AND fvl96.view_application_id(+) = 0
77375   AND fvl96.language(+)            = USERENV('LANG')
77376   
77377 )
77378 ;
77379 --
77380 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77381 
77382       trace
77383          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
77384          ,p_level    => C_LEVEL_STATEMENT
77388 
77385          ,p_module   => l_log_module);
77386 
77387 END IF;
77389 
77390 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77391       trace
77392          (p_msg      => 'END of insert_sources_150'
77393          ,p_level    => C_LEVEL_PROCEDURE
77394          ,p_module   => l_log_module);
77395 END IF;
77396 EXCEPTION
77397   WHEN xla_exceptions_pkg.application_exception THEN
77398       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
77399             trace
77400                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
77401                ,p_level    => C_LEVEL_EXCEPTION
77402                ,p_module   => l_log_module);
77403       END IF;
77404       RAISE;
77405   WHEN OTHERS THEN
77406       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
77407             trace
77408                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
77409                ,p_level    => C_LEVEL_EXCEPTION
77410                ,p_module   => l_log_module);
77411        END IF;
77412        xla_exceptions_pkg.raise_message
77413            (p_location => 'XLA_00222_AAD_S_000002_PKG.insert_sources_150');
77414 END insert_sources_150;
77415 --
77416 
77417 ---------------------------------------
77418 --
77419 -- PRIVATE FUNCTION
77420 --         EventClass_150
77421 --
77422 ----------------------------------------
77423 --
77424 FUNCTION EventClass_150
77425        (p_application_id         IN NUMBER
77426        ,p_base_ledger_id         IN NUMBER
77427        ,p_target_ledger_id       IN NUMBER
77428        ,p_language               IN VARCHAR2
77429        ,p_currency_code          IN VARCHAR2
77430        ,p_sla_ledger_id          IN NUMBER
77431        ,p_pad_start_date         IN DATE
77432        ,p_pad_end_date           IN DATE
77433        ,p_primary_ledger_id      IN NUMBER)
77434 RETURN BOOLEAN IS
77435 --
77436 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'FACTORING_OCC_DOCUMENT_ALL';
77437 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'FACTORING_OCC_DOCUMENT';
77438 
77439 l_calculate_acctd_flag   VARCHAR2(1) :='Y';
77440 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
77441 --
77442 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77443 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77444 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
77445 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77446 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77447 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
77448 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
77449 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77450 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77451 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77452 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77453 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77454 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77455 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
77456 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77457 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77458 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77459 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
77460 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77461 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77462 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77463 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
77464 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
77465 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
77466 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
77467 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
77468 
77469 l_event_id                             NUMBER;
77470 l_previous_event_id                    NUMBER;
77471 l_first_event_id                       NUMBER;
77472 l_last_event_id                        NUMBER;
77473 
77474 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
77475 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
77476 --
77477 --
77478 l_result                    BOOLEAN := TRUE;
77479 l_rows                      NUMBER  := 1000;
77480 l_event_type_name           VARCHAR2(80) := 'All';
77481 l_event_class_name          VARCHAR2(80) := 'Factoring Collection Occurrence Documents';
77482 l_description               VARCHAR2(4000);
77483 l_transaction_reversal      NUMBER;
77484 l_ae_header_id              NUMBER;
77485 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
77486 l_log_module                VARCHAR2(240);
77487 --
77488 l_acct_reversal_source      VARCHAR2(30);
77489 l_trx_reversal_source       VARCHAR2(30);
77490 
77491 l_continue_with_lines       BOOLEAN := TRUE;
77492 --
77493 l_acc_rev_gl_date_source    DATE;                      -- 4262811
77494 --
77495 type t_array_event_id is table of number index by binary_integer;
77496 
77497 l_rec_array_event                    t_rec_array_event;
77498 l_null_rec_array_event               t_rec_array_event;
77499 l_array_ae_header_id                 xla_number_array_type;
77503 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
77500 l_actual_flag                        VARCHAR2(1) := NULL;
77501 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
77502 l_balance_type_code                  VARCHAR2(1) :=NULL;
77504 
77505 --
77506 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
77507 --
77508 
77509 TYPE t_array_source_10 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_BANK_OCC_DESC%TYPE INDEX BY BINARY_INTEGER;
77510 TYPE t_array_source_11 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_DOCUMENT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
77511 TYPE t_array_source_12 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_TRADE_NOTE_NUMBER%TYPE INDEX BY BINARY_INTEGER;
77512 TYPE t_array_source_14 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_PARTY_NAME%TYPE INDEX BY BINARY_INTEGER;
77513 TYPE t_array_source_15 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_PARTY_NUMBER%TYPE INDEX BY BINARY_INTEGER;
77514 TYPE t_array_source_16 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BNK_ACCOUNT_NAME%TYPE INDEX BY BINARY_INTEGER;
77515 TYPE t_array_source_17 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BNK_ACCOUNT_NUM%TYPE INDEX BY BINARY_INTEGER;
77516 TYPE t_array_source_18 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BANK_NAME%TYPE INDEX BY BINARY_INTEGER;
77517 TYPE t_array_source_19 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BANK_NUM%TYPE INDEX BY BINARY_INTEGER;
77518 TYPE t_array_source_49 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
77522 TYPE t_array_source_121 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_EXCHG_GAIN_CCID%TYPE INDEX BY BINARY_INTEGER;
77519 TYPE t_array_source_50 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
77520 TYPE t_array_source_51 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
77521 TYPE t_array_source_93 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_OCCURRENCE_ID%TYPE INDEX BY BINARY_INTEGER;
77523 TYPE t_array_source_122 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_EXCHG_LOSS_CCID%TYPE INDEX BY BINARY_INTEGER;
77524 TYPE t_array_source_123 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_GL_DATE%TYPE INDEX BY BINARY_INTEGER;
77525 TYPE t_array_source_124 IS TABLE OF JL_BR_AR_COLL_OCC_DOCS_H_V.JLBR_TRANSFER_TO_GL_FLAG%TYPE INDEX BY BINARY_INTEGER;
77526 
77527 TYPE t_array_source_13 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_BORDERO_TYPE%TYPE INDEX BY BINARY_INTEGER;
77528 TYPE t_array_source_25 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_BANK_CHARGES_CCID%TYPE INDEX BY BINARY_INTEGER;
77529 TYPE t_array_source_27 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_BIL_UND_DISC_CCID%TYPE INDEX BY BINARY_INTEGER;
77530 TYPE t_array_source_28 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_CASH_CCID%TYPE INDEX BY BINARY_INTEGER;
77531 TYPE t_array_source_30 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_DISC_ENDRSMNT_CCID%TYPE INDEX BY BINARY_INTEGER;
77532 TYPE t_array_source_31 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CD_FACT_CHARGES_CCID%TYPE INDEX BY BINARY_INTEGER;
77533 TYPE t_array_source_77 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
77534 TYPE t_array_source_78 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ACCT_REVERSING_OPTN%TYPE INDEX BY BINARY_INTEGER;
77535 TYPE t_array_source_80 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
77536 TYPE t_array_source_82 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
77537 TYPE t_array_source_83 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_DOCUMENT_ID%TYPE INDEX BY BINARY_INTEGER;
77538 TYPE t_array_source_84 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_PRIOR_OCCURRENCE_ID%TYPE INDEX BY BINARY_INTEGER;
77539 TYPE t_array_source_85 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_DISTRIBUTION_ID%TYPE INDEX BY BINARY_INTEGER;
77540 TYPE t_array_source_86 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_DISTRIBUTION_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
77541 TYPE t_array_source_87 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ENTERED_AMT%TYPE INDEX BY BINARY_INTEGER;
77542 TYPE t_array_source_88 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ENTERED_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
77543 TYPE t_array_source_89 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
77544 TYPE t_array_source_90 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
77545 TYPE t_array_source_91 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_CONVERSION_RATE_TYPE%TYPE INDEX BY BINARY_INTEGER;
77546 TYPE t_array_source_92 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
77547 TYPE t_array_source_94 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_REVERSED_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
77548 TYPE t_array_source_95 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_REVERSED_DIST_LINK_TYPE%TYPE INDEX BY BINARY_INTEGER;
77549 TYPE t_array_source_96 IS TABLE OF JL_BR_AR_COLL_DOC_DISTS_L_V.JLBR_BANK_OCC_TYPE%TYPE INDEX BY BINARY_INTEGER;
77550 
77551 l_array_source_10              t_array_source_10;
77552 l_array_source_11              t_array_source_11;
77553 l_array_source_12              t_array_source_12;
77554 l_array_source_14              t_array_source_14;
77555 l_array_source_15              t_array_source_15;
77556 l_array_source_16              t_array_source_16;
77557 l_array_source_17              t_array_source_17;
77558 l_array_source_18              t_array_source_18;
77559 l_array_source_19              t_array_source_19;
77560 l_array_source_49              t_array_source_49;
77561 l_array_source_50              t_array_source_50;
77562 l_array_source_51              t_array_source_51;
77563 l_array_source_93              t_array_source_93;
77564 l_array_source_121              t_array_source_121;
77565 l_array_source_122              t_array_source_122;
77566 l_array_source_123              t_array_source_123;
77567 l_array_source_124              t_array_source_124;
77568 l_array_source_124_meaning      t_array_lookup_meaning;
77569 
77570 l_array_source_13      t_array_source_13;
77571 l_array_source_13_meaning      t_array_lookup_meaning;
77572 l_array_source_25      t_array_source_25;
77573 l_array_source_27      t_array_source_27;
77574 l_array_source_28      t_array_source_28;
77575 l_array_source_30      t_array_source_30;
77576 l_array_source_31      t_array_source_31;
77577 l_array_source_77      t_array_source_77;
77578 l_array_source_77_meaning      t_array_lookup_meaning;
77579 l_array_source_78      t_array_source_78;
77580 l_array_source_78_meaning      t_array_lookup_meaning;
77581 l_array_source_80      t_array_source_80;
77582 l_array_source_82      t_array_source_82;
77583 l_array_source_83      t_array_source_83;
77584 l_array_source_84      t_array_source_84;
77585 l_array_source_85      t_array_source_85;
77586 l_array_source_86      t_array_source_86;
77587 l_array_source_87      t_array_source_87;
77588 l_array_source_88      t_array_source_88;
77589 l_array_source_89      t_array_source_89;
77590 l_array_source_90      t_array_source_90;
77591 l_array_source_91      t_array_source_91;
77592 l_array_source_92      t_array_source_92;
77593 l_array_source_94      t_array_source_94;
77594 l_array_source_95      t_array_source_95;
77595 l_array_source_96      t_array_source_96;
77596 l_array_source_96_meaning      t_array_lookup_meaning;
77597 
77598 --
77599 CURSOR header_cur
77600 IS
77601 SELECT /*+ leading(xet) cardinality(xet,1) */
77602 -- Event Class Code: FACTORING_OCC_DOCUMENT
77603     xet.entity_id
77604    ,xet.legal_entity_id
77605    ,xet.entity_code
77606    ,xet.transaction_number
77607    ,xet.event_id
77608    ,xet.event_class_code
77609    ,xet.event_type_code
77613    ,xet.reference_num_1
77610    ,xet.event_number
77611    ,xet.event_date
77612    ,xet.transaction_date
77614    ,xet.reference_num_2
77615    ,xet.reference_num_3
77616    ,xet.reference_num_4
77617    ,xet.reference_char_1
77618    ,xet.reference_char_2
77619    ,xet.reference_char_3
77620    ,xet.reference_char_4
77621    ,xet.reference_date_1
77622    ,xet.reference_date_2
77623    ,xet.reference_date_3
77624    ,xet.reference_date_4
77625    ,xet.event_created_by
77626    ,xet.budgetary_control_flag 
77627   , h6.JLBR_BANK_OCC_DESC    source_10
77628   , h6.JLBR_DOCUMENT_NUMBER    source_11
77629   , h6.JLBR_TRADE_NOTE_NUMBER    source_12
77630   , h1.BILL_CUST_PARTY_NAME    source_14
77631   , h1.BILL_CUST_PARTY_NUMBER    source_15
77632   , h3.RMT_BNK_ACCOUNT_NAME    source_16
77633   , h3.RMT_BNK_ACCOUNT_NUM    source_17
77634   , h3.RMT_BANK_NAME    source_18
77635   , h3.RMT_BANK_NUM    source_19
77636   , h1.BILL_CUST_ACCOUNT_ID    source_49
77637   , h2.BILL_USES_SITE_USE_ID    source_50
77638   , h4.XLA_PARTY_TYPE    source_51
77639   , h6.JLBR_OCCURRENCE_ID    source_93
77640   , h6.JLBR_EXCHG_GAIN_CCID    source_121
77641   , h6.JLBR_EXCHG_LOSS_CCID    source_122
77642   , h6.JLBR_GL_DATE    source_123
77643   , h6.JLBR_TRANSFER_TO_GL_FLAG    source_124
77644   , fvl124.meaning   source_124_meaning
77645   FROM xla_events_gt     xet 
77646   , AR_BILL_TO_CUSTOMERS_S_V  h1
77647   , AR_BILL_TO_SITE_USES_S_V  h2
77648   , AR_REMIT_BANK_ACCT_H_V  h3
77649   , AR_TRANSACTIONS_S_V  h4
77650   , JL_BR_AR_COLL_OCC_DOCS_H_V  h6
77651   , fnd_lookup_values    fvl124
77652  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
77653    and xet.event_class_code = C_EVENT_CLASS_CODE
77654    and xet.event_status_code <> 'N'  AND h3.event_id = xet.event_id
77655   AND h1.event_id (+) = h3.event_id
77656   AND h2.event_id (+) = h3.event_id
77657   AND h4.event_id (+) = h3.event_id
77658   AND h6.event_id  = h3.event_id
77659    AND fvl124.lookup_type(+)         = 'YES_NO'
77660   AND fvl124.lookup_code(+)         = h6.JLBR_TRANSFER_TO_GL_FLAG
77661   AND fvl124.view_application_id(+) = 0
77662   AND fvl124.language(+)            = USERENV('LANG')
77663   
77664  ORDER BY event_id
77665 ;
77666 
77667 
77668 --
77669 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
77670 IS
77671 SELECT  /*+ leading(xet) cardinality(xet,1) */
77672 -- Event Class Code: FACTORING_OCC_DOCUMENT
77673     xet.entity_id
77674    ,xet.legal_entity_id
77675    ,xet.entity_code
77676    ,xet.transaction_number
77677    ,xet.event_id
77678    ,xet.event_class_code
77679    ,xet.event_type_code
77680    ,xet.event_number
77681    ,xet.event_date
77682    ,xet.transaction_date
77683    ,xet.reference_num_1
77684    ,xet.reference_num_2
77685    ,xet.reference_num_3
77686    ,xet.reference_num_4
77687    ,xet.reference_char_1
77688    ,xet.reference_char_2
77689    ,xet.reference_char_3
77690    ,xet.reference_char_4
77691    ,xet.reference_date_1
77692    ,xet.reference_date_2
77693    ,xet.reference_date_3
77694    ,xet.reference_date_4
77695    ,xet.event_created_by
77696    ,xet.budgetary_control_flag
77697  , l5.LINE_NUMBER  
77698   , l5.JLBR_BORDERO_TYPE    source_13
77699   , fvl13.meaning   source_13_meaning
77700   , l5.JLBR_CD_BANK_CHARGES_CCID    source_25
77701   , l5.JLBR_CD_BIL_UND_DISC_CCID    source_27
77702   , l5.JLBR_CD_CASH_CCID    source_28
77703   , l5.JLBR_CD_DISC_ENDRSMNT_CCID    source_30
77704   , l5.JLBR_CD_FACT_CHARGES_CCID    source_31
77705   , l5.JLBR_DISTRIBUTION_TYPE    source_77
77706   , fvl77.meaning   source_77_meaning
77707   , l5.JLBR_ACCT_REVERSING_OPTN    source_78
77708   , fvl78.meaning   source_78_meaning
77709   , l5.JLBR_PRIOR_DIST_LINK_TYPE    source_80
77710   , l5.JLBR_PRIOR_DIST_ID    source_82
77711   , l5.JLBR_PRIOR_DOCUMENT_ID    source_83
77712   , l5.JLBR_PRIOR_OCCURRENCE_ID    source_84
77713   , l5.JLBR_DISTRIBUTION_ID    source_85
77714   , l5.JLBR_DISTRIBUTION_LINK_TYPE    source_86
77715   , l5.JLBR_ENTERED_AMT    source_87
77716   , l5.JLBR_ENTERED_CURRENCY_CODE    source_88
77717   , l5.JLBR_CONVERSION_DATE    source_89
77718   , l5.JLBR_CONVERSION_RATE    source_90
77719   , l5.JLBR_CONVERSION_RATE_TYPE    source_91
77720   , l5.JLBR_ACCTD_AMT    source_92
77721   , l5.JLBR_REVERSED_DIST_ID    source_94
77722   , l5.JLBR_REVERSED_DIST_LINK_TYPE    source_95
77723   , l5.JLBR_BANK_OCC_TYPE    source_96
77724   , fvl96.meaning   source_96_meaning
77725   FROM xla_events_gt     xet 
77726   , JL_BR_AR_COLL_DOC_DISTS_L_V  l5
77727   , fnd_lookup_values    fvl13
77728   , fnd_lookup_values    fvl77
77729   , fnd_lookup_values    fvl78
77730   , fnd_lookup_values    fvl96
77731  WHERE xet.event_id between x_first_event_id and x_last_event_id
77732    and xet.event_date between p_pad_start_date and p_pad_end_date
77733    and xet.event_class_code = C_EVENT_CLASS_CODE
77734    and xet.event_status_code <> 'N'   AND l5.event_id      = xet.event_id
77735    AND fvl13.lookup_type(+)         = 'JLBR_AR_BORDERO_TYPE'
77736   AND fvl13.lookup_code(+)         = l5.JLBR_BORDERO_TYPE
77737   AND fvl13.view_application_id(+) = 0
77738   AND fvl13.language(+)            = USERENV('LANG')
77739      AND fvl77.lookup_type(+)         = 'JLBR_AR_DIST_TYPE'
77740   AND fvl77.lookup_code(+)         = l5.JLBR_DISTRIBUTION_TYPE
77741   AND fvl77.view_application_id(+) = 0
77742   AND fvl77.language(+)            = USERENV('LANG')
77743      AND fvl78.lookup_type(+)         = 'YES_NO'
77744   AND fvl78.lookup_code(+)         = l5.JLBR_ACCT_REVERSING_OPTN
77745   AND fvl78.view_application_id(+) = 0
77746   AND fvl78.language(+)            = USERENV('LANG')
77747      AND fvl96.lookup_type(+)         = 'JLBR_AR_BANK_OCCURRENCE_TYPE'
77748   AND fvl96.lookup_code(+)         = l5.JLBR_BANK_OCC_TYPE
77752 
77749   AND fvl96.view_application_id(+) = 0
77750   AND fvl96.language(+)            = USERENV('LANG')
77751   ;
77753 --
77754 BEGIN
77755 IF g_log_enabled THEN
77756    l_log_module := C_DEFAULT_MODULE||'.EventClass_150';
77757 END IF;
77758 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
77759    trace
77760       (p_msg      => 'BEGIN of EventClass_150'
77761       ,p_level    => C_LEVEL_PROCEDURE
77762       ,p_module   => l_log_module);
77763 END IF;
77764 
77765 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77766    trace
77767       (p_msg      => 'p_application_id = '||p_application_id||
77768                      ' - p_base_ledger_id = '||p_base_ledger_id||
77769                      ' - p_target_ledger_id  = '||p_target_ledger_id||
77770                      ' - p_language = '||p_language||
77771                      ' - p_currency_code = '||p_currency_code||
77772                      ' - p_sla_ledger_id = '||p_sla_ledger_id
77773       ,p_level    => C_LEVEL_STATEMENT
77774       ,p_module   => l_log_module);
77775 END IF;
77776 --
77777 -- initialze arrays
77778 --
77779 g_array_event.DELETE;
77780 l_rec_array_event := l_null_rec_array_event;
77781 --
77782 --------------------------------------
77783 -- 4262811 Initialze MPA Line Number
77784 --------------------------------------
77785 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
77786 
77787 --
77788 
77789 --
77790 OPEN header_cur;
77791 --
77792 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
77793    trace
77794    (p_msg      => 'SQL - FETCH header_cur'
77795    ,p_level    => C_LEVEL_STATEMENT
77796    ,p_module   => l_log_module);
77797 END IF;
77798 --
77799 LOOP
77800 FETCH header_cur BULK COLLECT INTO
77801         l_array_entity_id
77802       , l_array_legal_entity_id
77803       , l_array_entity_code
77804       , l_array_transaction_num
77805       , l_array_event_id
77806       , l_array_class_code
77807       , l_array_event_type
77808       , l_array_event_number
77809       , l_array_event_date
77810       , l_array_transaction_date
77811       , l_array_reference_num_1
77812       , l_array_reference_num_2
77813       , l_array_reference_num_3
77814       , l_array_reference_num_4
77815       , l_array_reference_char_1
77816       , l_array_reference_char_2
77817       , l_array_reference_char_3
77818       , l_array_reference_char_4
77819       , l_array_reference_date_1
77820       , l_array_reference_date_2
77821       , l_array_reference_date_3
77822       , l_array_reference_date_4
77823       , l_array_event_created_by
77824       , l_array_budgetary_control_flag 
77825       , l_array_source_10
77826       , l_array_source_11
77827       , l_array_source_12
77828       , l_array_source_14
77829       , l_array_source_15
77830       , l_array_source_16
77831       , l_array_source_17
77832       , l_array_source_18
77833       , l_array_source_19
77834       , l_array_source_49
77835       , l_array_source_50
77836       , l_array_source_51
77837       , l_array_source_93
77838       , l_array_source_121
77839       , l_array_source_122
77840       , l_array_source_123
77841       , l_array_source_124
77842       , l_array_source_124_meaning
77843       LIMIT l_rows;
77844 --
77845 IF (C_LEVEL_EVENT >= g_log_level) THEN
77846    trace
77847    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
77848    ,p_level    => C_LEVEL_EVENT
77849    ,p_module   => l_log_module);
77850 END IF;
77851 --
77852 EXIT WHEN l_array_entity_id.COUNT = 0;
77853 
77854 -- initialize arrays
77855 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
77856 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
77857 
77858 --
77859 -- Bug 4458708
77860 --
77861 XLA_AE_LINES_PKG.g_LineNumber := 0;
77862 
77863 
77864 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
77865 g_last_hdr_idx := l_array_event_id.LAST;
77866 --
77867 -- loop for the headers. Each iteration is for each header extract row
77868 -- fetched in header cursor
77869 --
77870 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
77871 
77872 --
77873 -- set event info as cache for other routines to refer event attributes
77874 --
77875 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
77876    (p_application_id           => p_application_id
77877    ,p_primary_ledger_id        => p_primary_ledger_id
77878    ,p_base_ledger_id           => p_base_ledger_id
77879    ,p_target_ledger_id         => p_target_ledger_id
77880    ,p_entity_id                => l_array_entity_id(hdr_idx)
77881    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
77882    ,p_entity_code              => l_array_entity_code(hdr_idx)
77883    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
77884    ,p_event_id                 => l_array_event_id(hdr_idx)
77885    ,p_event_class_code         => l_array_class_code(hdr_idx)
77886    ,p_event_type_code          => l_array_event_type(hdr_idx)
77887    ,p_event_number             => l_array_event_number(hdr_idx)
77888    ,p_event_date               => l_array_event_date(hdr_idx)
77889    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
77890    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
77891    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
77892    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
77893    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
77894    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
77895    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
77896    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
77897    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
77901    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
77898    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
77899    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
77900    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
77902    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
77903    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
77904 
77905 --
77906 -- set the status of entry to C_VALID (0)
77907 --
77908 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
77909 
77910 --
77911 -- initialize a row for ae header
77912 --
77913 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
77914 
77915 l_event_id := l_array_event_id(hdr_idx);
77916 
77917 --
77918 -- storing the hdr_idx for event. May be used by line cursor.
77919 --
77920 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
77921 
77922 --
77923 -- store sources from header extract. This can be improved to
77924 -- store only those sources from header extract that may be used in lines
77925 --
77926 
77927 g_array_event(l_event_id).array_value_char('source_10') := l_array_source_10(hdr_idx);
77928 g_array_event(l_event_id).array_value_num('source_11') := l_array_source_11(hdr_idx);
77929 g_array_event(l_event_id).array_value_char('source_12') := l_array_source_12(hdr_idx);
77930 g_array_event(l_event_id).array_value_char('source_14') := l_array_source_14(hdr_idx);
77931 g_array_event(l_event_id).array_value_char('source_15') := l_array_source_15(hdr_idx);
77932 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
77933 g_array_event(l_event_id).array_value_char('source_17') := l_array_source_17(hdr_idx);
77934 g_array_event(l_event_id).array_value_char('source_18') := l_array_source_18(hdr_idx);
77935 g_array_event(l_event_id).array_value_char('source_19') := l_array_source_19(hdr_idx);
77936 g_array_event(l_event_id).array_value_num('source_49') := l_array_source_49(hdr_idx);
77937 g_array_event(l_event_id).array_value_num('source_50') := l_array_source_50(hdr_idx);
77938 g_array_event(l_event_id).array_value_char('source_51') := l_array_source_51(hdr_idx);
77939 g_array_event(l_event_id).array_value_num('source_93') := l_array_source_93(hdr_idx);
77940 g_array_event(l_event_id).array_value_num('source_121') := l_array_source_121(hdr_idx);
77941 g_array_event(l_event_id).array_value_num('source_122') := l_array_source_122(hdr_idx);
77942 g_array_event(l_event_id).array_value_date('source_123') := l_array_source_123(hdr_idx);
77943 g_array_event(l_event_id).array_value_char('source_124') := l_array_source_124(hdr_idx);
77944 g_array_event(l_event_id).array_value_char('source_124_meaning') := l_array_source_124_meaning(hdr_idx);
77945 
77946 --
77947 -- initilaize the status of ae headers for diffrent balance types
77948 -- the status is initialised to C_NOT_CREATED (2)
77949 --
77950 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
77951 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
77952 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
77953 
77954 --
77955 -- call api to validate and store accounting attributes for header
77956 --
77957 
77958 ------------------------------------------------------------
77959 -- Accrual Reversal : to get date for Standard Source (NONE)
77960 ------------------------------------------------------------
77961 l_acc_rev_gl_date_source := NULL;
77962 
77963      l_rec_acct_attrs.array_acct_attr_code(1)   := 'GL_DATE';
77964       l_rec_acct_attrs.array_date_value(1) := g_array_event(l_event_id).array_value_date('source_123');
77965      l_rec_acct_attrs.array_acct_attr_code(2)   := 'GL_TRANSFER_FLAG';
77966       l_rec_acct_attrs.array_char_value(2) := g_array_event(l_event_id).array_value_char('source_124');
77967 
77968 
77969 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
77970 
77971 XLA_AE_HEADER_PKG.SetJeCategoryName;
77972 
77973 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
77974 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
77975 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
77976 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
77977 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
77978 
77979 
77980 --
77981 xla_ae_header_pkg.SetHdrDescription(
77982    p_description => Description_15 (
77983    p_application_id => p_application_id 
77984  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
77985  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
77986  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
77987  , p_source_14 => g_array_event(l_event_id).array_value_char('source_14')
77988  , p_source_15 => g_array_event(l_event_id).array_value_char('source_15')
77989  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
77990  , p_source_17 => g_array_event(l_event_id).array_value_char('source_17')
77991  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
77992  , p_source_19 => g_array_event(l_event_id).array_value_char('source_19')
77993    )
77994 );
77995 --
77996 
77997 -- No header level analytical criteria
77998 
77999 --
78000 --accounting attribute enhancement, bug 3612931
78001 --
78002 l_trx_reversal_source := SUBSTR(NULL, 1,30);
78003 
78004 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
78005    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
78006 
78007    xla_accounting_err_pkg.build_message
78008       (p_appli_s_name            => 'XLA'
78009       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
78010       ,p_token_1                 => 'ACCT_ATTR_NAME'
78014       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
78011       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
78012       ,p_token_2                 => 'PRODUCT_NAME'
78013       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
78015       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
78016       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
78017 
78018 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
78019    --
78020    -- following sets the accounting attributes needed to reverse
78021    -- accounting for a distributeion
78022    --
78023    xla_ae_lines_pkg.SetTrxReversalAttrs
78024       (p_event_id              => l_event_id
78025       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
78026       ,p_trx_reversal_source   => l_trx_reversal_source);
78027 
78028 END IF;
78029 
78030 
78031 ----------------------------------------------------------------
78032 -- 4262811 -  update the header statuses to invalid in need be
78033 ----------------------------------------------------------------
78034 --
78035 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
78036 
78037 
78038   -----------------------------------------------
78039   -- No accrual reversal for the event class/type
78040   -----------------------------------------------
78041 ----------------------------------------------------------------
78042 
78043 --
78044 -- this ends the header loop iteration for one bulk fetch
78045 --
78046 END LOOP;
78047 
78048 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
78049 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
78050 
78051 --
78052 -- insert dummy rows into lines gt table that were created due to
78053 -- transaction reversals
78054 --
78055 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
78056    l_result := XLA_AE_LINES_PKG.InsertLines;
78057 END IF;
78058 
78059 --
78060 -- reset the temp_line_num for each set of events fetched from header
78061 -- cursor rather than doing it for each new event in line cursor
78062 -- Bug 3939231
78063 --
78064 xla_ae_lines_pkg.g_temp_line_num := 0;
78065 
78066 
78067 
78068 --
78069 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
78070 --
78071 --
78072 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78073 
78074       trace
78075          (p_msg      => 'SQL - FETCH line_cur'
78076          ,p_level    => C_LEVEL_STATEMENT
78077          ,p_module   => l_log_module);
78078 
78079 END IF;
78080 --
78081 --
78082 LOOP
78083   --
78084   FETCH line_cur BULK COLLECT INTO
78085         l_array_entity_id
78086       , l_array_legal_entity_id
78087       , l_array_entity_code
78088       , l_array_transaction_num
78089       , l_array_event_id
78090       , l_array_class_code
78091       , l_array_event_type
78092       , l_array_event_number
78093       , l_array_event_date
78094       , l_array_transaction_date
78095       , l_array_reference_num_1
78096       , l_array_reference_num_2
78097       , l_array_reference_num_3
78098       , l_array_reference_num_4
78099       , l_array_reference_char_1
78100       , l_array_reference_char_2
78101       , l_array_reference_char_3
78102       , l_array_reference_char_4
78103       , l_array_reference_date_1
78104       , l_array_reference_date_2
78105       , l_array_reference_date_3
78106       , l_array_reference_date_4
78107       , l_array_event_created_by
78108       , l_array_budgetary_control_flag
78109       , l_array_extract_line_num 
78110       , l_array_source_13
78111       , l_array_source_13_meaning
78112       , l_array_source_25
78113       , l_array_source_27
78114       , l_array_source_28
78115       , l_array_source_30
78116       , l_array_source_31
78117       , l_array_source_77
78118       , l_array_source_77_meaning
78119       , l_array_source_78
78120       , l_array_source_78_meaning
78121       , l_array_source_80
78122       , l_array_source_82
78123       , l_array_source_83
78124       , l_array_source_84
78125       , l_array_source_85
78126       , l_array_source_86
78127       , l_array_source_87
78128       , l_array_source_88
78129       , l_array_source_89
78130       , l_array_source_90
78131       , l_array_source_91
78132       , l_array_source_92
78133       , l_array_source_94
78134       , l_array_source_95
78135       , l_array_source_96
78136       , l_array_source_96_meaning
78137       LIMIT l_rows;
78138 
78139   --
78140   IF (C_LEVEL_EVENT >= g_log_level) THEN
78141             trace
78142                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
78143                ,p_level    => C_LEVEL_EVENT
78144                ,p_module   => l_log_module);
78145   END IF;
78146   --
78147   EXIT WHEN l_array_entity_id.count = 0;
78148 
78149   XLA_AE_LINES_PKG.g_rec_lines := null;
78150 
78151 --
78152 -- Bug 4458708
78153 --
78154 XLA_AE_LINES_PKG.g_LineNumber := 0;
78155 --
78156 --
78157 
78158 FOR Idx IN 1..l_array_event_id.count LOOP
78159    --
78160    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
78161    --
78162    l_event_id := l_array_event_id(idx);  -- 5648433
78163 
78164    --
78165    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
78166    --
78167 
78168    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
78172    THEN
78169              (g_array_event(l_event_id).array_value_num('header_index'))
78170          ,'N'
78171          ) <> 'Y'
78173       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78174          trace
78175             (p_msg      => 'Trancaction revesal option is not Y '
78176             ,p_level    => C_LEVEL_STATEMENT
78177             ,p_module   => l_log_module);
78178       END IF;
78179 
78180 --
78181 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
78182 --
78183 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
78184 --
78185 -- set event info as cache for other routines to refer event attributes
78186 --
78187 
78188 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
78189    l_previous_event_id := l_event_id;
78190 
78191    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
78192       (p_application_id           => p_application_id
78193       ,p_primary_ledger_id        => p_primary_ledger_id
78194       ,p_base_ledger_id           => p_base_ledger_id
78195       ,p_target_ledger_id         => p_target_ledger_id
78196       ,p_entity_id                => l_array_entity_id(Idx)
78197       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
78198       ,p_entity_code              => l_array_entity_code(Idx)
78199       ,p_transaction_num          => l_array_transaction_num(Idx)
78200       ,p_event_id                 => l_array_event_id(Idx)
78201       ,p_event_class_code         => l_array_class_code(Idx)
78202       ,p_event_type_code          => l_array_event_type(Idx)
78203       ,p_event_number             => l_array_event_number(Idx)
78204       ,p_event_date               => l_array_event_date(Idx)
78205       ,p_transaction_date         => l_array_transaction_date(Idx)
78206       ,p_reference_num_1          => l_array_reference_num_1(Idx)
78207       ,p_reference_num_2          => l_array_reference_num_2(Idx)
78208       ,p_reference_num_3          => l_array_reference_num_3(Idx)
78209       ,p_reference_num_4          => l_array_reference_num_4(Idx)
78210       ,p_reference_char_1         => l_array_reference_char_1(Idx)
78211       ,p_reference_char_2         => l_array_reference_char_2(Idx)
78212       ,p_reference_char_3         => l_array_reference_char_3(Idx)
78213       ,p_reference_char_4         => l_array_reference_char_4(Idx)
78214       ,p_reference_date_1         => l_array_reference_date_1(Idx)
78215       ,p_reference_date_2         => l_array_reference_date_2(Idx)
78216       ,p_reference_date_3         => l_array_reference_date_3(Idx)
78217       ,p_reference_date_4         => l_array_reference_date_4(Idx)
78218       ,p_event_created_by         => l_array_event_created_by(Idx)
78219       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
78220        --
78221 END IF;
78222 
78223 
78224 
78225 --
78226 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
78227 
78228 l_acct_reversal_source := SUBSTR(l_array_source_78(Idx), 1,30);
78229 
78230 IF l_continue_with_lines THEN
78231    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
78232       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
78233 
78234       xla_accounting_err_pkg.build_message
78235          (p_appli_s_name            => 'XLA'
78236          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
78237          ,p_token_1                 => 'LINE_NUMBER'
78238          ,p_value_1                 => l_array_extract_line_num(Idx)
78239          ,p_token_2                 => 'PRODUCT_NAME'
78240          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
78241          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
78242          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
78243          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
78244 
78245    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
78246       --
78247       -- following sets the accounting attributes needed to reverse
78248       -- accounting for a distributeion
78249       --
78250 
78251       --
78252       -- 5217187
78253       --
78254       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
78255       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
78256                                        g_array_event(l_event_id).array_value_num('header_index'));
78257       --
78258       --
78259 
78260       l_rec_rev_acct_attrs.array_acct_attr_code(2) := 'ACCOUNTING_REVERSAL_OPTION';
78261       l_rec_rev_acct_attrs.array_char_value(2)  := l_array_source_78(Idx);
78262       l_rec_rev_acct_attrs.array_acct_attr_code(3) := 'DISTRIBUTION_IDENTIFIER_1';
78263       l_rec_rev_acct_attrs.array_num_value(3)  := l_array_source_85(Idx);
78264       l_rec_rev_acct_attrs.array_acct_attr_code(4) := 'DISTRIBUTION_TYPE';
78265       l_rec_rev_acct_attrs.array_char_value(4)  := l_array_source_86(Idx);
78266       l_rec_rev_acct_attrs.array_acct_attr_code(5) := 'PARTY_TYPE';
78267       l_rec_rev_acct_attrs.array_char_value(5)  := g_array_event(l_event_id).array_value_char('source_51');
78268       l_rec_rev_acct_attrs.array_acct_attr_code(6) := 'REVERSED_DISTRIBUTION_ID1';
78269       l_rec_rev_acct_attrs.array_num_value(6)  := l_array_source_94(Idx);
78270       l_rec_rev_acct_attrs.array_acct_attr_code(7) := 'REVERSED_DISTRIBUTION_TYPE';
78271       l_rec_rev_acct_attrs.array_char_value(7)  := l_array_source_95(Idx);
78272 
78273 
78274       xla_ae_lines_pkg.SetAcctReversalAttrs
78275          (p_event_id             => l_event_id
78276          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
78277          ,p_calculate_acctd_flag => l_calculate_acctd_flag
78278          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
78279    END IF;
78280 
78281    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
78282        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
78283 
78284 --
78288  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78285 AcctLineType_84 (
78286  p_application_id  => p_application_id
78287  ,p_event_id     => l_event_id
78289  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78290  ,p_actual_flag => l_actual_flag
78291  ,p_balance_type_code => l_balance_type_code
78292  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78293  
78294  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
78295  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
78296  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
78297  , p_source_13 => l_array_source_13(Idx)
78298  , p_source_13_meaning => l_array_source_13_meaning(Idx)
78299  , p_source_25 => l_array_source_25(Idx)
78300  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
78301  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
78302  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
78303  , p_source_77 => l_array_source_77(Idx)
78304  , p_source_77_meaning => l_array_source_77_meaning(Idx)
78305  , p_source_78 => l_array_source_78(Idx)
78306  , p_source_78_meaning => l_array_source_78_meaning(Idx)
78307  , p_source_80 => l_array_source_80(Idx)
78308  , p_source_82 => l_array_source_82(Idx)
78309  , p_source_83 => l_array_source_83(Idx)
78310  , p_source_84 => l_array_source_84(Idx)
78311  , p_source_85 => l_array_source_85(Idx)
78312  , p_source_86 => l_array_source_86(Idx)
78313  , p_source_87 => l_array_source_87(Idx)
78314  , p_source_88 => l_array_source_88(Idx)
78315  , p_source_89 => l_array_source_89(Idx)
78316  , p_source_90 => l_array_source_90(Idx)
78317  , p_source_91 => l_array_source_91(Idx)
78318  , p_source_92 => l_array_source_92(Idx)
78319  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
78320  , p_source_94 => l_array_source_94(Idx)
78321  , p_source_95 => l_array_source_95(Idx)
78322  );
78323 If(l_balance_type_code = 'A') THEN
78324   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78325 END IF;
78326 
78327 --
78328 
78329 
78330 --
78331 AcctLineType_85 (
78332  p_application_id  => p_application_id
78333  ,p_event_id     => l_event_id
78334  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78335  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78336  ,p_actual_flag => l_actual_flag
78337  ,p_balance_type_code => l_balance_type_code
78338  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78339  
78340  , p_source_13 => l_array_source_13(Idx)
78341  , p_source_13_meaning => l_array_source_13_meaning(Idx)
78342  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
78343  , p_source_77 => l_array_source_77(Idx)
78344  , p_source_77_meaning => l_array_source_77_meaning(Idx)
78345  , p_source_78 => l_array_source_78(Idx)
78346  , p_source_78_meaning => l_array_source_78_meaning(Idx)
78347  , p_source_80 => l_array_source_80(Idx)
78348  , p_source_82 => l_array_source_82(Idx)
78349  , p_source_83 => l_array_source_83(Idx)
78350  , p_source_84 => l_array_source_84(Idx)
78351  , p_source_85 => l_array_source_85(Idx)
78352  , p_source_86 => l_array_source_86(Idx)
78353  , p_source_87 => l_array_source_87(Idx)
78354  , p_source_88 => l_array_source_88(Idx)
78355  , p_source_92 => l_array_source_92(Idx)
78356  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
78357  , p_source_94 => l_array_source_94(Idx)
78358  , p_source_95 => l_array_source_95(Idx)
78359  , p_source_96 => l_array_source_96(Idx)
78360  , p_source_96_meaning => l_array_source_96_meaning(Idx)
78361  );
78362 If(l_balance_type_code = 'A') THEN
78363   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78364 END IF;
78365 
78366 --
78367 
78368 
78369 --
78370 AcctLineType_86 (
78371  p_application_id  => p_application_id
78372  ,p_event_id     => l_event_id
78373  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78374  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78375  ,p_actual_flag => l_actual_flag
78376  ,p_balance_type_code => l_balance_type_code
78377  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78378  
78379  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
78380  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
78381  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
78382  , p_source_13 => l_array_source_13(Idx)
78383  , p_source_13_meaning => l_array_source_13_meaning(Idx)
78384  , p_source_27 => l_array_source_27(Idx)
78385  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
78386  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
78387  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
78388  , p_source_77 => l_array_source_77(Idx)
78389  , p_source_77_meaning => l_array_source_77_meaning(Idx)
78390  , p_source_78 => l_array_source_78(Idx)
78391  , p_source_78_meaning => l_array_source_78_meaning(Idx)
78392  , p_source_80 => l_array_source_80(Idx)
78393  , p_source_82 => l_array_source_82(Idx)
78394  , p_source_83 => l_array_source_83(Idx)
78395  , p_source_84 => l_array_source_84(Idx)
78396  , p_source_85 => l_array_source_85(Idx)
78397  , p_source_86 => l_array_source_86(Idx)
78398  , p_source_87 => l_array_source_87(Idx)
78399  , p_source_88 => l_array_source_88(Idx)
78400  , p_source_89 => l_array_source_89(Idx)
78401  , p_source_90 => l_array_source_90(Idx)
78402  , p_source_91 => l_array_source_91(Idx)
78403  , p_source_92 => l_array_source_92(Idx)
78404  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
78405  , p_source_94 => l_array_source_94(Idx)
78406  , p_source_95 => l_array_source_95(Idx)
78407  , p_source_96 => l_array_source_96(Idx)
78408  , p_source_96_meaning => l_array_source_96_meaning(Idx)
78409  );
78410 If(l_balance_type_code = 'A') THEN
78411   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78412 END IF;
78413 
78414 --
78415 
78416 
78420  ,p_event_id     => l_event_id
78417 --
78418 AcctLineType_87 (
78419  p_application_id  => p_application_id
78421  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78422  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78423  ,p_actual_flag => l_actual_flag
78424  ,p_balance_type_code => l_balance_type_code
78425  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78426  
78427  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
78428  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
78429  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
78430  , p_source_13 => l_array_source_13(Idx)
78431  , p_source_13_meaning => l_array_source_13_meaning(Idx)
78432  , p_source_28 => l_array_source_28(Idx)
78433  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
78434  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
78435  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
78436  , p_source_77 => l_array_source_77(Idx)
78437  , p_source_77_meaning => l_array_source_77_meaning(Idx)
78438  , p_source_78 => l_array_source_78(Idx)
78439  , p_source_78_meaning => l_array_source_78_meaning(Idx)
78440  , p_source_80 => l_array_source_80(Idx)
78441  , p_source_82 => l_array_source_82(Idx)
78442  , p_source_83 => l_array_source_83(Idx)
78443  , p_source_84 => l_array_source_84(Idx)
78444  , p_source_85 => l_array_source_85(Idx)
78445  , p_source_86 => l_array_source_86(Idx)
78446  , p_source_87 => l_array_source_87(Idx)
78447  , p_source_88 => l_array_source_88(Idx)
78448  , p_source_89 => l_array_source_89(Idx)
78449  , p_source_90 => l_array_source_90(Idx)
78450  , p_source_91 => l_array_source_91(Idx)
78451  , p_source_92 => l_array_source_92(Idx)
78452  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
78453  , p_source_94 => l_array_source_94(Idx)
78454  , p_source_95 => l_array_source_95(Idx)
78455  );
78456 If(l_balance_type_code = 'A') THEN
78457   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78458 END IF;
78459 
78460 --
78461 
78462 
78463 --
78464 AcctLineType_88 (
78465  p_application_id  => p_application_id
78466  ,p_event_id     => l_event_id
78467  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78468  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78469  ,p_actual_flag => l_actual_flag
78470  ,p_balance_type_code => l_balance_type_code
78471  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78472  
78473  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
78474  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
78475  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
78476  , p_source_13 => l_array_source_13(Idx)
78477  , p_source_13_meaning => l_array_source_13_meaning(Idx)
78478  , p_source_30 => l_array_source_30(Idx)
78479  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
78480  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
78481  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
78482  , p_source_77 => l_array_source_77(Idx)
78483  , p_source_77_meaning => l_array_source_77_meaning(Idx)
78484  , p_source_78 => l_array_source_78(Idx)
78485  , p_source_78_meaning => l_array_source_78_meaning(Idx)
78486  , p_source_80 => l_array_source_80(Idx)
78487  , p_source_82 => l_array_source_82(Idx)
78488  , p_source_83 => l_array_source_83(Idx)
78489  , p_source_84 => l_array_source_84(Idx)
78490  , p_source_85 => l_array_source_85(Idx)
78491  , p_source_86 => l_array_source_86(Idx)
78492  , p_source_87 => l_array_source_87(Idx)
78493  , p_source_88 => l_array_source_88(Idx)
78494  , p_source_89 => l_array_source_89(Idx)
78495  , p_source_90 => l_array_source_90(Idx)
78496  , p_source_91 => l_array_source_91(Idx)
78497  , p_source_92 => l_array_source_92(Idx)
78498  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
78499  , p_source_94 => l_array_source_94(Idx)
78500  , p_source_95 => l_array_source_95(Idx)
78501  , p_source_96 => l_array_source_96(Idx)
78502  , p_source_96_meaning => l_array_source_96_meaning(Idx)
78503  );
78504 If(l_balance_type_code = 'A') THEN
78505   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78506 END IF;
78507 
78508 --
78509 
78510 
78511 --
78512 AcctLineType_89 (
78513  p_application_id  => p_application_id
78514  ,p_event_id     => l_event_id
78515  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78516  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78517  ,p_actual_flag => l_actual_flag
78518  ,p_balance_type_code => l_balance_type_code
78519  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78520  
78521  , p_source_13 => l_array_source_13(Idx)
78522  , p_source_13_meaning => l_array_source_13_meaning(Idx)
78523  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
78524  , p_source_77 => l_array_source_77(Idx)
78525  , p_source_77_meaning => l_array_source_77_meaning(Idx)
78526  , p_source_78 => l_array_source_78(Idx)
78527  , p_source_78_meaning => l_array_source_78_meaning(Idx)
78528  , p_source_80 => l_array_source_80(Idx)
78529  , p_source_82 => l_array_source_82(Idx)
78530  , p_source_83 => l_array_source_83(Idx)
78531  , p_source_84 => l_array_source_84(Idx)
78532  , p_source_85 => l_array_source_85(Idx)
78533  , p_source_86 => l_array_source_86(Idx)
78534  , p_source_87 => l_array_source_87(Idx)
78535  , p_source_88 => l_array_source_88(Idx)
78536  , p_source_92 => l_array_source_92(Idx)
78537  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
78538  , p_source_94 => l_array_source_94(Idx)
78539  , p_source_95 => l_array_source_95(Idx)
78540  , p_source_96 => l_array_source_96(Idx)
78541  , p_source_96_meaning => l_array_source_96_meaning(Idx)
78542  );
78543 If(l_balance_type_code = 'A') THEN
78544   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78545 END IF;
78546 
78547 --
78548 
78552  p_application_id  => p_application_id
78549 
78550 --
78551 AcctLineType_90 (
78553  ,p_event_id     => l_event_id
78554  ,p_calculate_acctd_flag => l_calculate_acctd_flag
78555  ,p_calculate_g_l_flag => l_calculate_g_l_flag
78556  ,p_actual_flag => l_actual_flag
78557  ,p_balance_type_code => l_balance_type_code
78558  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
78559  
78560  , p_source_10 => g_array_event(l_event_id).array_value_char('source_10')
78561  , p_source_11 => g_array_event(l_event_id).array_value_num('source_11')
78562  , p_source_12 => g_array_event(l_event_id).array_value_char('source_12')
78563  , p_source_13 => l_array_source_13(Idx)
78564  , p_source_13_meaning => l_array_source_13_meaning(Idx)
78565  , p_source_31 => l_array_source_31(Idx)
78566  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
78567  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
78568  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
78569  , p_source_77 => l_array_source_77(Idx)
78570  , p_source_77_meaning => l_array_source_77_meaning(Idx)
78571  , p_source_78 => l_array_source_78(Idx)
78572  , p_source_78_meaning => l_array_source_78_meaning(Idx)
78573  , p_source_80 => l_array_source_80(Idx)
78574  , p_source_82 => l_array_source_82(Idx)
78575  , p_source_83 => l_array_source_83(Idx)
78576  , p_source_84 => l_array_source_84(Idx)
78577  , p_source_85 => l_array_source_85(Idx)
78578  , p_source_86 => l_array_source_86(Idx)
78579  , p_source_87 => l_array_source_87(Idx)
78580  , p_source_88 => l_array_source_88(Idx)
78581  , p_source_89 => l_array_source_89(Idx)
78582  , p_source_90 => l_array_source_90(Idx)
78583  , p_source_91 => l_array_source_91(Idx)
78584  , p_source_92 => l_array_source_92(Idx)
78585  , p_source_93 => g_array_event(l_event_id).array_value_num('source_93')
78586  , p_source_94 => l_array_source_94(Idx)
78587  , p_source_95 => l_array_source_95(Idx)
78588  );
78589 If(l_balance_type_code = 'A') THEN
78590   l_actual_gain_loss_ref := l_gain_or_loss_ref;
78591 END IF;
78592 
78593 --
78594 
78595       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
78596       -- or secondary ledger that has different currency with primary
78597       -- or alc that is calculated by sla
78598       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
78599             (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'))
78600 
78601 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
78602 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
78603           AND (l_actual_flag = 'A')) THEN
78604         XLA_AE_LINES_PKG.CreateGainOrLossLines(
78605           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
78606          ,p_application_id   => p_application_id
78607          ,p_amb_context_code => 'DEFAULT'
78608          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
78609          ,p_event_class_code => C_EVENT_CLASS_CODE
78610          ,p_event_type_code  => C_EVENT_TYPE_CODE
78611          
78612          ,p_gain_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_121'))
78613          ,p_loss_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_122'))
78614 
78615          ,p_actual_flag      => l_actual_flag
78616          ,p_enc_flag         => null
78617          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
78618          ,p_enc_g_l_ref      => null
78619          );
78620       END IF;
78621    END IF;
78622 END IF;
78623 
78624    ELSE
78625       --
78626       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
78627       --
78628       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78629          trace
78630             (p_msg      => 'Trancaction revesal option is Y'
78631             ,p_level    => C_LEVEL_STATEMENT
78632             ,p_module   => l_log_module);
78633       END IF;
78634    END IF;
78635 
78636 END LOOP;
78637 l_result := XLA_AE_LINES_PKG.InsertLines ;
78638 end loop;
78639 close line_cur;
78640 
78641 
78642 --
78643 -- insert headers into xla_ae_headers_gt table
78644 --
78645 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
78646 
78647 -- insert into errors table here.
78648 
78649 END LOOP;
78650 
78651 --
78652 -- 4865292
78653 --
78654 -- Compare g_hdr_extract_count with event count in
78655 -- CreateHeadersAndLines.
78656 --
78657 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
78658 
78659 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78660    trace (p_msg     => '# rows extracted from header extract objects '
78661                     || ' (running total): '
78662                     || g_hdr_extract_count
78663          ,p_level   => C_LEVEL_STATEMENT
78664          ,p_module  => l_log_module);
78665 END IF;
78666 
78667 CLOSE header_cur;
78668 --
78669 
78670 --
78671 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78672    trace
78673       (p_msg      => 'END of EventClass_150'
78674       ,p_level    => C_LEVEL_PROCEDURE
78675       ,p_module   => l_log_module);
78676 END IF;
78677 --
78678 RETURN l_result;
78679 EXCEPTION
78680 WHEN xla_exceptions_pkg.application_exception THEN
78681    
78682 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
78683 
78684    
78685 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
78686 
78687    RAISE;
78688 
78689 WHEN NO_DATA_FOUND THEN
78690 
78691 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
78692 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
78693 
78697 END LOOP;
78694 FOR header_record IN header_cur
78695 LOOP
78696     l_array_header_events(header_record.event_id) := header_record.event_id;
78698 
78699 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
78700 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
78701 
78702 fnd_file.put_line(fnd_file.LOG, '                    ');
78703 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
78704 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
78705 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
78706 
78707 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
78708 LOOP
78709 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
78710 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
78711         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
78712 	END IF;
78713 END LOOP;
78714 
78715 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
78716 fnd_file.put_line(fnd_file.LOG, '                    ');
78717 
78718 
78719 xla_exceptions_pkg.raise_message
78720       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_150');
78721 
78722 
78723 WHEN OTHERS THEN
78724    xla_exceptions_pkg.raise_message
78725       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_150');
78726 END EventClass_150;
78727 --
78728 
78729 ---------------------------------------
78730 --
78731 -- PRIVATE PROCEDURE
78732 --         insert_sources_151
78733 --
78734 ----------------------------------------
78735 --
78736 PROCEDURE insert_sources_151(
78737                                 p_target_ledger_id       IN NUMBER
78738                               , p_language               IN VARCHAR2
78739                               , p_sla_ledger_id          IN NUMBER
78740                               , p_pad_start_date         IN DATE
78741                               , p_pad_end_date           IN DATE
78742                          )
78743 IS
78744 
78745 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'GUARANTEE_ALL';
78746 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'GUARANTEE';
78747 p_apps_owner                   VARCHAR2(30);
78748 l_log_module                   VARCHAR2(240);
78749 BEGIN
78750 IF g_log_enabled THEN
78751       l_log_module := C_DEFAULT_MODULE||'.insert_sources_151';
78752 END IF;
78753 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
78754 
78755       trace
78756          (p_msg      => 'BEGIN of insert_sources_151'
78757          ,p_level    => C_LEVEL_PROCEDURE
78758          ,p_module   => l_log_module);
78759 
78760 END IF;
78761 
78762 -- select APPS owner
78763 SELECT oracle_username
78764   INTO p_apps_owner
78765   FROM fnd_oracle_userid
78766  WHERE read_only_flag = 'U'
78767 ;
78768 
78769 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78770       trace
78771          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
78772                         ' - p_language = '||p_language||
78773                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
78774                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
78775                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
78776                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
78777          ,p_level    => C_LEVEL_STATEMENT
78778          ,p_module   => l_log_module);
78779 END IF;
78780 
78781 
78782 --
78783 INSERT INTO xla_diag_sources --hdr2
78784 (
78785         event_id
78786       , ledger_id
78787       , sla_ledger_id
78788       , description_language
78789       , object_name
78790       , object_type_code
78791       , line_number
78792       , source_application_id
78793       , source_type_code
78794       , source_code
78795       , source_value
78796       , source_meaning
78797       , created_by
78798       , creation_date
78799       , last_update_date
78800       , last_updated_by
78801       , last_update_login
78802       , program_update_date
78803       , program_application_id
78804       , program_id
78805       , request_id
78806 )
78807 SELECT
78808         event_id
78809       , p_target_ledger_id
78810       , p_sla_ledger_id
78811       , p_language
78812       , object_name
78813       , object_type_code
78814       , line_number
78815       , source_application_id
78816       , source_type_code
78817       , source_code
78818       , SUBSTR(source_value ,1,1996)
78819       , SUBSTR(source_meaning ,1,200)
78820       , xla_environment_pkg.g_Usr_Id
78821       , TRUNC(SYSDATE)
78822       , TRUNC(SYSDATE)
78823       , xla_environment_pkg.g_Usr_Id
78824       , xla_environment_pkg.g_Login_Id
78825       , TRUNC(SYSDATE)
78826       , xla_environment_pkg.g_Prog_Appl_Id
78827       , xla_environment_pkg.g_Prog_Id
78828       , xla_environment_pkg.g_Req_Id
78829   FROM (
78830        SELECT xet.event_id                  event_id
78831             , 0                          line_number
78832             , CASE r
78833                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
78834                 WHEN 2 THEN 'AR_TRANSACTIONS_S_V' 
78835                 WHEN 3 THEN 'AR_TRANSACTIONS_S_V' 
78836                 WHEN 4 THEN 'AR_TRANSACTIONS_S_V' 
78837                 WHEN 5 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
78838                 WHEN 6 THEN 'AR_BILL_TO_SITE_USES_S_V' 
78839                 WHEN 7 THEN 'AR_TRANSACTIONS_S_V' 
78840                 WHEN 8 THEN 'AR_TRANSACTIONS_S_V' 
78841                 WHEN 9 THEN 'AR_TRANSACTIONS_S_V' 
78845             , CASE r
78842                 
78843                ELSE null
78844               END                           object_name
78846                 WHEN 1 THEN 'HEADER' 
78847                 WHEN 2 THEN 'HEADER' 
78848                 WHEN 3 THEN 'HEADER' 
78849                 WHEN 4 THEN 'HEADER' 
78850                 WHEN 5 THEN 'HEADER' 
78851                 WHEN 6 THEN 'HEADER' 
78852                 WHEN 7 THEN 'HEADER' 
78853                 WHEN 8 THEN 'HEADER' 
78854                 WHEN 9 THEN 'HEADER' 
78855                 
78856                 ELSE null
78857               END                           object_type_code
78858             , CASE r
78859                 WHEN 1 THEN '222' 
78860                 WHEN 2 THEN '222' 
78861                 WHEN 3 THEN '222' 
78862                 WHEN 4 THEN '222' 
78863                 WHEN 5 THEN '222' 
78864                 WHEN 6 THEN '222' 
78865                 WHEN 7 THEN '222' 
78866                 WHEN 8 THEN '222' 
78867                 WHEN 9 THEN '222' 
78868                 
78869                 ELSE null
78870               END                           source_application_id
78871             , 'S'             source_type_code
78872             , CASE r
78873                 WHEN 1 THEN 'TRX_TYPE_NAME' 
78874                 WHEN 2 THEN 'TRX_NUMBER' 
78875                 WHEN 3 THEN 'TRX_DOC_SEQUENCE_CATEGORY' 
78876                 WHEN 4 THEN 'TRX_DOC_SEQUENCE_VALUE' 
78877                 WHEN 5 THEN 'BILL_CUST_ACCOUNT_ID' 
78878                 WHEN 6 THEN 'BILL_USES_SITE_USE_ID' 
78879                 WHEN 7 THEN 'XLA_PARTY_TYPE' 
78880                 WHEN 8 THEN 'TRX_INVOICE_CURRENCY_CODE' 
78881                 WHEN 9 THEN 'TRX_DOC_SEQUENCE_ID' 
78882                 
78883                 ELSE null
78884               END                           source_code
78885             , CASE r
78886                 WHEN 1 THEN TO_CHAR(h5.TRX_TYPE_NAME)
78887                 WHEN 2 THEN TO_CHAR(h5.TRX_NUMBER)
78888                 WHEN 3 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_CATEGORY)
78889                 WHEN 4 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_VALUE)
78890                 WHEN 5 THEN TO_CHAR(h1.BILL_CUST_ACCOUNT_ID)
78891                 WHEN 6 THEN TO_CHAR(h2.BILL_USES_SITE_USE_ID)
78892                 WHEN 7 THEN TO_CHAR(h5.XLA_PARTY_TYPE)
78893                 WHEN 8 THEN TO_CHAR(h5.TRX_INVOICE_CURRENCY_CODE)
78894                 WHEN 9 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_ID)
78895                 
78896                 ELSE null
78897               END                           source_value
78898             , null              source_meaning
78899          FROM xla_events_gt     xet  
78900       , AR_BILL_TO_CUSTOMERS_S_V  h1
78901       , AR_BILL_TO_SITE_USES_S_V  h2
78902       , AR_TRANSACTIONS_S_V  h5
78903              ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
78904          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
78905            AND xet.event_class_code = C_EVENT_CLASS_CODE
78906               AND h1.event_id = xet.event_id
78907   AND h2.event_id  = h1.event_id
78908   AND h5.event_id  = h1.event_id
78909 
78910 )
78911 ;
78912 --
78913 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
78914 
78915       trace
78916          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
78917          ,p_level    => C_LEVEL_STATEMENT
78918          ,p_module   => l_log_module);
78919 
78920 END IF;
78921 --
78922 
78923 
78924 
78925 --
78926 INSERT INTO xla_diag_sources  --line2
78927 (
78928         event_id
78929       , ledger_id
78930       , sla_ledger_id
78931       , description_language
78932       , object_name
78933       , object_type_code
78934       , line_number
78935       , source_application_id
78936       , source_type_code
78937       , source_code
78938       , source_value
78939       , source_meaning
78940       , created_by
78941       , creation_date
78942       , last_update_date
78943       , last_updated_by
78944       , last_update_login
78945       , program_update_date
78946       , program_application_id
78947       , program_id
78948       , request_id
78949 )
78950 SELECT  event_id
78951       , p_target_ledger_id
78952       , p_sla_ledger_id
78953       , p_language
78954       , object_name
78955       , object_type_code
78956       , line_number
78957       , source_application_id
78958       , source_type_code
78959       , source_code
78960       , SUBSTR(source_value,1,1996)
78961       , SUBSTR(source_meaning ,1,200)
78962       , xla_environment_pkg.g_Usr_Id
78963       , TRUNC(SYSDATE)
78964       , TRUNC(SYSDATE)
78965       , xla_environment_pkg.g_Usr_Id
78966       , xla_environment_pkg.g_Login_Id
78967       , TRUNC(SYSDATE)
78968       , xla_environment_pkg.g_Prog_Appl_Id
78969       , xla_environment_pkg.g_Prog_Id
78970       , xla_environment_pkg.g_Req_Id
78971   FROM (
78972        SELECT xet.event_id                  event_id
78973             , l4.line_number                 line_number
78974             , CASE r
78975                WHEN 1 THEN 'AR_CUST_TRX_LINES_L_V' 
78976                 WHEN 2 THEN 'AR_CUST_TRX_LINES_L_V' 
78977                 WHEN 3 THEN 'AR_CUST_TRX_LINES_L_V' 
78978                 WHEN 4 THEN 'AR_CUST_TRX_LINES_L_V' 
78979                 WHEN 5 THEN 'AR_CUST_TRX_LINES_L_V' 
78980                 WHEN 6 THEN 'AR_CUST_TRX_LINES_BASE_V' 
78981                 WHEN 7 THEN 'AR_CUST_TRX_LINES_BASE_V' 
78982                 WHEN 8 THEN 'AR_CUST_TRX_LINES_BASE_V' 
78983                 WHEN 9 THEN 'AR_CUST_TRX_LINES_BASE_V' 
78984                 
78985                ELSE null
78986               END                           object_name
78987             , CASE r
78991                 WHEN 4 THEN 'LINE' 
78988                 WHEN 1 THEN 'LINE' 
78989                 WHEN 2 THEN 'LINE' 
78990                 WHEN 3 THEN 'LINE' 
78992                 WHEN 5 THEN 'LINE' 
78993                 WHEN 6 THEN 'LINE' 
78994                 WHEN 7 THEN 'LINE' 
78995                 WHEN 8 THEN 'LINE' 
78996                 WHEN 9 THEN 'LINE' 
78997                 
78998                 ELSE null
78999               END                           object_type_code
79000             , CASE r
79001                 WHEN 1 THEN '222' 
79002                 WHEN 2 THEN '222' 
79003                 WHEN 3 THEN '222' 
79004                 WHEN 4 THEN '222' 
79005                 WHEN 5 THEN '222' 
79006                 WHEN 6 THEN '222' 
79007                 WHEN 7 THEN '222' 
79008                 WHEN 8 THEN '222' 
79009                 WHEN 9 THEN '222' 
79010                 
79011                 ELSE null
79012               END                           source_application_id
79013             , 'S'             source_type_code
79014             , CASE r
79015                 WHEN 1 THEN 'TRX_LINE_DIST_CCID' 
79016                 WHEN 2 THEN 'TRX_LINE_DIST_ACCOUNT_CLASS' 
79017                 WHEN 3 THEN 'TRX_LINE_DIST_ID' 
79018                 WHEN 4 THEN 'TRX_DISTRIBUTION_TYPE' 
79019                 WHEN 5 THEN 'TRX_LINE_DIST_AMT' 
79020                 WHEN 6 THEN 'TRX_LINE_CUR_CONVERSION_DATE' 
79021                 WHEN 7 THEN 'TRX_LINE_CUR_CONVERSION_RATE' 
79022                 WHEN 8 THEN 'TRX_LINE_CUR_CONVERSION_TYPE' 
79023                 WHEN 9 THEN 'TRX_LINE_ACCTD_AMT' 
79024                 
79025                 ELSE null
79026               END                           source_code
79027             , CASE r
79028                 WHEN 1 THEN TO_CHAR(l4.TRX_LINE_DIST_CCID)
79029                 WHEN 2 THEN TO_CHAR(l4.TRX_LINE_DIST_ACCOUNT_CLASS)
79030                 WHEN 3 THEN TO_CHAR(l4.TRX_LINE_DIST_ID)
79031                 WHEN 4 THEN TO_CHAR(l4.TRX_DISTRIBUTION_TYPE)
79032                 WHEN 5 THEN TO_CHAR(l4.TRX_LINE_DIST_AMT)
79033                 WHEN 6 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_DATE)
79034                 WHEN 7 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_RATE)
79035                 WHEN 8 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_TYPE)
79036                 WHEN 9 THEN TO_CHAR(l3.TRX_LINE_ACCTD_AMT)
79037                 
79038                 ELSE null
79039               END                           source_value
79040             , null              source_meaning
79041          FROM  xla_events_gt     xet  
79042         , AR_CUST_TRX_LINES_BASE_V  l3
79043         , AR_CUST_TRX_LINES_L_V  l4
79044             , (select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
79045         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
79046           AND xet.event_class_code = C_EVENT_CLASS_CODE
79047             AND l3.event_id          = xet.event_id
79048   AND l4.event_id    = l3.event_id
79049   AND l4.line_number = l3.line_number
79050 
79051 )
79052 ;
79053 --
79054 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79055 
79056       trace
79057          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
79058          ,p_level    => C_LEVEL_STATEMENT
79059          ,p_module   => l_log_module);
79060 
79061 END IF;
79062 
79063 
79064 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79065       trace
79066          (p_msg      => 'END of insert_sources_151'
79067          ,p_level    => C_LEVEL_PROCEDURE
79068          ,p_module   => l_log_module);
79069 END IF;
79070 EXCEPTION
79071   WHEN xla_exceptions_pkg.application_exception THEN
79072       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
79073             trace
79074                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
79075                ,p_level    => C_LEVEL_EXCEPTION
79076                ,p_module   => l_log_module);
79077       END IF;
79078       RAISE;
79079   WHEN OTHERS THEN
79080       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
79081             trace
79082                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
79083                ,p_level    => C_LEVEL_EXCEPTION
79084                ,p_module   => l_log_module);
79085        END IF;
79086        xla_exceptions_pkg.raise_message
79087            (p_location => 'XLA_00222_AAD_S_000002_PKG.insert_sources_151');
79088 END insert_sources_151;
79089 --
79090 
79091 ---------------------------------------
79092 --
79093 -- PRIVATE FUNCTION
79094 --         EventClass_151
79095 --
79096 ----------------------------------------
79097 --
79098 FUNCTION EventClass_151
79099        (p_application_id         IN NUMBER
79100        ,p_base_ledger_id         IN NUMBER
79101        ,p_target_ledger_id       IN NUMBER
79102        ,p_language               IN VARCHAR2
79103        ,p_currency_code          IN VARCHAR2
79104        ,p_sla_ledger_id          IN NUMBER
79105        ,p_pad_start_date         IN DATE
79106        ,p_pad_end_date           IN DATE
79107        ,p_primary_ledger_id      IN NUMBER)
79108 RETURN BOOLEAN IS
79109 --
79110 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'GUARANTEE_ALL';
79111 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'GUARANTEE';
79112 
79113 l_calculate_acctd_flag   VARCHAR2(1) :='N';
79114 l_calculate_g_l_flag     VARCHAR2(1) :='N';
79115 --
79116 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79117 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79118 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79119 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79120 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79121 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79125 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79122 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79123 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79124 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79126 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79127 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79128 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79129 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
79130 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79131 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79132 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79133 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
79134 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79135 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79136 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79137 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
79138 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
79139 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
79140 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
79141 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
79142 
79143 l_event_id                             NUMBER;
79144 l_previous_event_id                    NUMBER;
79145 l_first_event_id                       NUMBER;
79146 l_last_event_id                        NUMBER;
79147 
79148 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
79149 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
79150 --
79151 --
79152 l_result                    BOOLEAN := TRUE;
79153 l_rows                      NUMBER  := 1000;
79154 l_event_type_name           VARCHAR2(80) := 'All';
79155 l_event_class_name          VARCHAR2(80) := 'Guarantee';
79156 l_description               VARCHAR2(4000);
79157 l_transaction_reversal      NUMBER;
79158 l_ae_header_id              NUMBER;
79159 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
79160 l_log_module                VARCHAR2(240);
79161 --
79162 l_acct_reversal_source      VARCHAR2(30);
79163 l_trx_reversal_source       VARCHAR2(30);
79164 
79165 l_continue_with_lines       BOOLEAN := TRUE;
79166 --
79167 l_acc_rev_gl_date_source    DATE;                      -- 4262811
79168 --
79169 type t_array_event_id is table of number index by binary_integer;
79170 
79171 l_rec_array_event                    t_rec_array_event;
79172 l_null_rec_array_event               t_rec_array_event;
79173 l_array_ae_header_id                 xla_number_array_type;
79174 l_actual_flag                        VARCHAR2(1) := NULL;
79175 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
79176 l_balance_type_code                  VARCHAR2(1) :=NULL;
79177 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
79178 
79179 --
79180 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
79181 --
79182 
79183 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_TYPE_NAME%TYPE INDEX BY BINARY_INTEGER;
79184 TYPE t_array_source_4 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_NUMBER%TYPE INDEX BY BINARY_INTEGER;
79185 TYPE t_array_source_5 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
79186 TYPE t_array_source_6 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
79187 TYPE t_array_source_49 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
79188 TYPE t_array_source_50 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
79189 TYPE t_array_source_51 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
79190 TYPE t_array_source_59 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
79191 TYPE t_array_source_120 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
79192 
79193 TYPE t_array_source_38 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
79194 TYPE t_array_source_55 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ACCOUNT_CLASS%TYPE INDEX BY BINARY_INTEGER;
79195 TYPE t_array_source_56 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
79196 TYPE t_array_source_57 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
79197 TYPE t_array_source_58 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_AMT%TYPE INDEX BY BINARY_INTEGER;
79198 TYPE t_array_source_60 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
79199 TYPE t_array_source_61 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
79200 TYPE t_array_source_62 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
79201 TYPE t_array_source_63 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
79202 
79203 l_array_source_3              t_array_source_3;
79204 l_array_source_4              t_array_source_4;
79205 l_array_source_5              t_array_source_5;
79206 l_array_source_6              t_array_source_6;
79207 l_array_source_49              t_array_source_49;
79208 l_array_source_50              t_array_source_50;
79209 l_array_source_51              t_array_source_51;
79210 l_array_source_59              t_array_source_59;
79211 l_array_source_120              t_array_source_120;
79212 
79213 l_array_source_38      t_array_source_38;
79214 l_array_source_55      t_array_source_55;
79215 l_array_source_56      t_array_source_56;
79216 l_array_source_57      t_array_source_57;
79217 l_array_source_58      t_array_source_58;
79221 l_array_source_63      t_array_source_63;
79218 l_array_source_60      t_array_source_60;
79219 l_array_source_61      t_array_source_61;
79220 l_array_source_62      t_array_source_62;
79222 
79223 --
79224 CURSOR header_cur
79225 IS
79226 SELECT /*+ leading(xet) cardinality(xet,1) */
79227 -- Event Class Code: GUARANTEE
79228     xet.entity_id
79229    ,xet.legal_entity_id
79230    ,xet.entity_code
79231    ,xet.transaction_number
79232    ,xet.event_id
79233    ,xet.event_class_code
79234    ,xet.event_type_code
79235    ,xet.event_number
79236    ,xet.event_date
79237    ,xet.transaction_date
79238    ,xet.reference_num_1
79239    ,xet.reference_num_2
79240    ,xet.reference_num_3
79241    ,xet.reference_num_4
79242    ,xet.reference_char_1
79243    ,xet.reference_char_2
79244    ,xet.reference_char_3
79245    ,xet.reference_char_4
79246    ,xet.reference_date_1
79247    ,xet.reference_date_2
79248    ,xet.reference_date_3
79249    ,xet.reference_date_4
79250    ,xet.event_created_by
79251    ,xet.budgetary_control_flag 
79252   , h5.TRX_TYPE_NAME    source_3
79253   , h5.TRX_NUMBER    source_4
79254   , h5.TRX_DOC_SEQUENCE_CATEGORY    source_5
79255   , h5.TRX_DOC_SEQUENCE_VALUE    source_6
79256   , h1.BILL_CUST_ACCOUNT_ID    source_49
79257   , h2.BILL_USES_SITE_USE_ID    source_50
79258   , h5.XLA_PARTY_TYPE    source_51
79259   , h5.TRX_INVOICE_CURRENCY_CODE    source_59
79260   , h5.TRX_DOC_SEQUENCE_ID    source_120
79261   FROM xla_events_gt     xet 
79262   , AR_BILL_TO_CUSTOMERS_S_V  h1
79263   , AR_BILL_TO_SITE_USES_S_V  h2
79264   , AR_TRANSACTIONS_S_V  h5
79265  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
79266    and xet.event_class_code = C_EVENT_CLASS_CODE
79267    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
79268   AND h2.event_id  = h1.event_id
79269   AND h5.event_id  = h1.event_id
79270 
79271  ORDER BY event_id
79272 ;
79273 
79274 
79275 --
79276 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
79277 IS
79278 SELECT  /*+ leading(xet) cardinality(xet,1) */
79279 -- Event Class Code: GUARANTEE
79280     xet.entity_id
79281    ,xet.legal_entity_id
79282    ,xet.entity_code
79283    ,xet.transaction_number
79284    ,xet.event_id
79285    ,xet.event_class_code
79286    ,xet.event_type_code
79287    ,xet.event_number
79288    ,xet.event_date
79289    ,xet.transaction_date
79290    ,xet.reference_num_1
79291    ,xet.reference_num_2
79292    ,xet.reference_num_3
79293    ,xet.reference_num_4
79294    ,xet.reference_char_1
79295    ,xet.reference_char_2
79296    ,xet.reference_char_3
79297    ,xet.reference_char_4
79298    ,xet.reference_date_1
79299    ,xet.reference_date_2
79300    ,xet.reference_date_3
79301    ,xet.reference_date_4
79302    ,xet.event_created_by
79303    ,xet.budgetary_control_flag
79304  , l3.LINE_NUMBER  
79305   , l4.TRX_LINE_DIST_CCID    source_38
79306   , l4.TRX_LINE_DIST_ACCOUNT_CLASS    source_55
79307   , l4.TRX_LINE_DIST_ID    source_56
79308   , l4.TRX_DISTRIBUTION_TYPE    source_57
79309   , l4.TRX_LINE_DIST_AMT    source_58
79310   , l3.TRX_LINE_CUR_CONVERSION_DATE    source_60
79311   , l3.TRX_LINE_CUR_CONVERSION_RATE    source_61
79312   , l3.TRX_LINE_CUR_CONVERSION_TYPE    source_62
79313   , l3.TRX_LINE_ACCTD_AMT    source_63
79314   FROM xla_events_gt     xet 
79315   , AR_CUST_TRX_LINES_BASE_V  l3
79316   , AR_CUST_TRX_LINES_L_V  l4
79317  WHERE xet.event_id between x_first_event_id and x_last_event_id
79318    and xet.event_date between p_pad_start_date and p_pad_end_date
79319    and xet.event_class_code = C_EVENT_CLASS_CODE
79320    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
79321   AND l4.event_id    = l3.event_id
79322   AND l4.line_number = l3.line_number
79323 ;
79324 
79325 --
79326 BEGIN
79327 IF g_log_enabled THEN
79328    l_log_module := C_DEFAULT_MODULE||'.EventClass_151';
79329 END IF;
79330 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79331    trace
79332       (p_msg      => 'BEGIN of EventClass_151'
79333       ,p_level    => C_LEVEL_PROCEDURE
79334       ,p_module   => l_log_module);
79335 END IF;
79336 
79337 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79338    trace
79339       (p_msg      => 'p_application_id = '||p_application_id||
79340                      ' - p_base_ledger_id = '||p_base_ledger_id||
79341                      ' - p_target_ledger_id  = '||p_target_ledger_id||
79342                      ' - p_language = '||p_language||
79343                      ' - p_currency_code = '||p_currency_code||
79344                      ' - p_sla_ledger_id = '||p_sla_ledger_id
79345       ,p_level    => C_LEVEL_STATEMENT
79346       ,p_module   => l_log_module);
79347 END IF;
79348 --
79349 -- initialze arrays
79350 --
79351 g_array_event.DELETE;
79352 l_rec_array_event := l_null_rec_array_event;
79353 --
79354 --------------------------------------
79355 -- 4262811 Initialze MPA Line Number
79356 --------------------------------------
79357 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
79358 
79359 --
79360 
79361 --
79362 OPEN header_cur;
79363 --
79364 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79365    trace
79366    (p_msg      => 'SQL - FETCH header_cur'
79367    ,p_level    => C_LEVEL_STATEMENT
79368    ,p_module   => l_log_module);
79369 END IF;
79370 --
79371 LOOP
79372 FETCH header_cur BULK COLLECT INTO
79373         l_array_entity_id
79374       , l_array_legal_entity_id
79375       , l_array_entity_code
79376       , l_array_transaction_num
79377       , l_array_event_id
79378       , l_array_class_code
79379       , l_array_event_type
79380       , l_array_event_number
79384       , l_array_reference_num_2
79381       , l_array_event_date
79382       , l_array_transaction_date
79383       , l_array_reference_num_1
79385       , l_array_reference_num_3
79386       , l_array_reference_num_4
79387       , l_array_reference_char_1
79388       , l_array_reference_char_2
79389       , l_array_reference_char_3
79390       , l_array_reference_char_4
79391       , l_array_reference_date_1
79392       , l_array_reference_date_2
79393       , l_array_reference_date_3
79394       , l_array_reference_date_4
79395       , l_array_event_created_by
79396       , l_array_budgetary_control_flag 
79397       , l_array_source_3
79398       , l_array_source_4
79399       , l_array_source_5
79400       , l_array_source_6
79401       , l_array_source_49
79402       , l_array_source_50
79403       , l_array_source_51
79404       , l_array_source_59
79405       , l_array_source_120
79406       LIMIT l_rows;
79407 --
79408 IF (C_LEVEL_EVENT >= g_log_level) THEN
79409    trace
79410    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
79411    ,p_level    => C_LEVEL_EVENT
79412    ,p_module   => l_log_module);
79413 END IF;
79414 --
79415 EXIT WHEN l_array_entity_id.COUNT = 0;
79416 
79417 -- initialize arrays
79418 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
79419 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
79420 
79421 --
79422 -- Bug 4458708
79423 --
79424 XLA_AE_LINES_PKG.g_LineNumber := 0;
79425 
79426 
79427 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
79428 g_last_hdr_idx := l_array_event_id.LAST;
79429 --
79430 -- loop for the headers. Each iteration is for each header extract row
79431 -- fetched in header cursor
79432 --
79433 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
79434 
79435 --
79436 -- set event info as cache for other routines to refer event attributes
79437 --
79438 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
79439    (p_application_id           => p_application_id
79440    ,p_primary_ledger_id        => p_primary_ledger_id
79441    ,p_base_ledger_id           => p_base_ledger_id
79442    ,p_target_ledger_id         => p_target_ledger_id
79443    ,p_entity_id                => l_array_entity_id(hdr_idx)
79444    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
79445    ,p_entity_code              => l_array_entity_code(hdr_idx)
79446    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
79447    ,p_event_id                 => l_array_event_id(hdr_idx)
79448    ,p_event_class_code         => l_array_class_code(hdr_idx)
79449    ,p_event_type_code          => l_array_event_type(hdr_idx)
79450    ,p_event_number             => l_array_event_number(hdr_idx)
79451    ,p_event_date               => l_array_event_date(hdr_idx)
79452    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
79453    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
79454    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
79455    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
79456    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
79457    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
79458    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
79459    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
79460    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
79461    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
79462    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
79463    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
79464    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
79465    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
79466    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
79467 
79468 --
79469 -- set the status of entry to C_VALID (0)
79470 --
79471 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
79472 
79473 --
79474 -- initialize a row for ae header
79475 --
79476 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
79477 
79478 l_event_id := l_array_event_id(hdr_idx);
79479 
79480 --
79481 -- storing the hdr_idx for event. May be used by line cursor.
79482 --
79483 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
79484 
79485 --
79486 -- store sources from header extract. This can be improved to
79487 -- store only those sources from header extract that may be used in lines
79488 --
79489 
79490 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
79491 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
79492 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
79493 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
79494 g_array_event(l_event_id).array_value_num('source_49') := l_array_source_49(hdr_idx);
79495 g_array_event(l_event_id).array_value_num('source_50') := l_array_source_50(hdr_idx);
79496 g_array_event(l_event_id).array_value_char('source_51') := l_array_source_51(hdr_idx);
79497 g_array_event(l_event_id).array_value_char('source_59') := l_array_source_59(hdr_idx);
79498 g_array_event(l_event_id).array_value_num('source_120') := l_array_source_120(hdr_idx);
79499 
79500 --
79501 -- initilaize the status of ae headers for diffrent balance types
79502 -- the status is initialised to C_NOT_CREATED (2)
79503 --
79504 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
79505 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
79506 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
79507 
79508 --
79512 ------------------------------------------------------------
79509 -- call api to validate and store accounting attributes for header
79510 --
79511 
79513 -- Accrual Reversal : to get date for Standard Source (NONE)
79514 ------------------------------------------------------------
79515 l_acc_rev_gl_date_source := NULL;
79516 
79517      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
79518       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_5');
79519      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
79520       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_120');
79521      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
79522       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_6');
79523      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
79524       l_rec_acct_attrs.array_date_value(4) := 
79525 xla_ae_sources_pkg.GetSystemSourceDate(
79526    p_source_code           => 'XLA_EVENT_DATE'
79527  , p_source_type_code      => 'Y'
79528  , p_source_application_id =>  602
79529 );
79530 
79531 
79532 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
79533 
79534 XLA_AE_HEADER_PKG.SetJeCategoryName;
79535 
79536 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
79537 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
79538 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
79539 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
79540 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
79541 
79542 
79543 --
79544 xla_ae_header_pkg.SetHdrDescription(
79545    p_description => Description_8 (
79546    p_application_id => p_application_id 
79547  , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
79548  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
79549  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
79550  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
79551    )
79552 );
79553 --
79554 
79555 -- No header level analytical criteria
79556 
79557 --
79558 --accounting attribute enhancement, bug 3612931
79559 --
79560 l_trx_reversal_source := SUBSTR(NULL, 1,30);
79561 
79562 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
79563    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
79564 
79565    xla_accounting_err_pkg.build_message
79566       (p_appli_s_name            => 'XLA'
79567       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
79568       ,p_token_1                 => 'ACCT_ATTR_NAME'
79569       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
79570       ,p_token_2                 => 'PRODUCT_NAME'
79571       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
79572       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
79573       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
79574       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
79575 
79576 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
79577    --
79578    -- following sets the accounting attributes needed to reverse
79579    -- accounting for a distributeion
79580    --
79581    xla_ae_lines_pkg.SetTrxReversalAttrs
79582       (p_event_id              => l_event_id
79583       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
79584       ,p_trx_reversal_source   => l_trx_reversal_source);
79585 
79586 END IF;
79587 
79588 
79589 ----------------------------------------------------------------
79590 -- 4262811 -  update the header statuses to invalid in need be
79591 ----------------------------------------------------------------
79592 --
79593 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
79594 
79595 
79596   -----------------------------------------------
79597   -- No accrual reversal for the event class/type
79598   -----------------------------------------------
79599 ----------------------------------------------------------------
79600 
79601 --
79602 -- this ends the header loop iteration for one bulk fetch
79603 --
79604 END LOOP;
79605 
79606 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
79607 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
79608 
79609 --
79610 -- insert dummy rows into lines gt table that were created due to
79611 -- transaction reversals
79612 --
79613 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
79614    l_result := XLA_AE_LINES_PKG.InsertLines;
79615 END IF;
79616 
79617 --
79618 -- reset the temp_line_num for each set of events fetched from header
79619 -- cursor rather than doing it for each new event in line cursor
79620 -- Bug 3939231
79621 --
79622 xla_ae_lines_pkg.g_temp_line_num := 0;
79623 
79624 
79625 
79626 --
79627 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
79628 --
79629 --
79630 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79631 
79632       trace
79633          (p_msg      => 'SQL - FETCH line_cur'
79634          ,p_level    => C_LEVEL_STATEMENT
79635          ,p_module   => l_log_module);
79636 
79637 END IF;
79638 --
79639 --
79640 LOOP
79641   --
79642   FETCH line_cur BULK COLLECT INTO
79643         l_array_entity_id
79644       , l_array_legal_entity_id
79645       , l_array_entity_code
79646       , l_array_transaction_num
79650       , l_array_event_number
79647       , l_array_event_id
79648       , l_array_class_code
79649       , l_array_event_type
79651       , l_array_event_date
79652       , l_array_transaction_date
79653       , l_array_reference_num_1
79654       , l_array_reference_num_2
79655       , l_array_reference_num_3
79656       , l_array_reference_num_4
79657       , l_array_reference_char_1
79658       , l_array_reference_char_2
79659       , l_array_reference_char_3
79660       , l_array_reference_char_4
79661       , l_array_reference_date_1
79662       , l_array_reference_date_2
79663       , l_array_reference_date_3
79664       , l_array_reference_date_4
79665       , l_array_event_created_by
79666       , l_array_budgetary_control_flag
79667       , l_array_extract_line_num 
79668       , l_array_source_38
79669       , l_array_source_55
79670       , l_array_source_56
79671       , l_array_source_57
79672       , l_array_source_58
79673       , l_array_source_60
79674       , l_array_source_61
79675       , l_array_source_62
79676       , l_array_source_63
79677       LIMIT l_rows;
79678 
79679   --
79680   IF (C_LEVEL_EVENT >= g_log_level) THEN
79681             trace
79682                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
79683                ,p_level    => C_LEVEL_EVENT
79684                ,p_module   => l_log_module);
79685   END IF;
79686   --
79687   EXIT WHEN l_array_entity_id.count = 0;
79688 
79689   XLA_AE_LINES_PKG.g_rec_lines := null;
79690 
79691 --
79692 -- Bug 4458708
79693 --
79694 XLA_AE_LINES_PKG.g_LineNumber := 0;
79695 --
79696 --
79697 
79698 FOR Idx IN 1..l_array_event_id.count LOOP
79699    --
79700    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
79701    --
79702    l_event_id := l_array_event_id(idx);  -- 5648433
79703 
79704    --
79705    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
79706    --
79707 
79708    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
79709              (g_array_event(l_event_id).array_value_num('header_index'))
79710          ,'N'
79711          ) <> 'Y'
79712    THEN
79713       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79714          trace
79715             (p_msg      => 'Trancaction revesal option is not Y '
79716             ,p_level    => C_LEVEL_STATEMENT
79717             ,p_module   => l_log_module);
79718       END IF;
79719 
79720 --
79721 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
79722 --
79723 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
79724 --
79725 -- set event info as cache for other routines to refer event attributes
79726 --
79727 
79728 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
79729    l_previous_event_id := l_event_id;
79730 
79731    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
79732       (p_application_id           => p_application_id
79733       ,p_primary_ledger_id        => p_primary_ledger_id
79734       ,p_base_ledger_id           => p_base_ledger_id
79735       ,p_target_ledger_id         => p_target_ledger_id
79736       ,p_entity_id                => l_array_entity_id(Idx)
79737       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
79738       ,p_entity_code              => l_array_entity_code(Idx)
79739       ,p_transaction_num          => l_array_transaction_num(Idx)
79740       ,p_event_id                 => l_array_event_id(Idx)
79741       ,p_event_class_code         => l_array_class_code(Idx)
79742       ,p_event_type_code          => l_array_event_type(Idx)
79743       ,p_event_number             => l_array_event_number(Idx)
79744       ,p_event_date               => l_array_event_date(Idx)
79745       ,p_transaction_date         => l_array_transaction_date(Idx)
79746       ,p_reference_num_1          => l_array_reference_num_1(Idx)
79747       ,p_reference_num_2          => l_array_reference_num_2(Idx)
79748       ,p_reference_num_3          => l_array_reference_num_3(Idx)
79749       ,p_reference_num_4          => l_array_reference_num_4(Idx)
79750       ,p_reference_char_1         => l_array_reference_char_1(Idx)
79751       ,p_reference_char_2         => l_array_reference_char_2(Idx)
79752       ,p_reference_char_3         => l_array_reference_char_3(Idx)
79753       ,p_reference_char_4         => l_array_reference_char_4(Idx)
79754       ,p_reference_date_1         => l_array_reference_date_1(Idx)
79755       ,p_reference_date_2         => l_array_reference_date_2(Idx)
79756       ,p_reference_date_3         => l_array_reference_date_3(Idx)
79757       ,p_reference_date_4         => l_array_reference_date_4(Idx)
79758       ,p_event_created_by         => l_array_event_created_by(Idx)
79759       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
79760        --
79761 END IF;
79762 
79763 
79764 
79765 --
79766 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
79767 
79768 l_acct_reversal_source := SUBSTR(NULL, 1,30);
79769 
79770 IF l_continue_with_lines THEN
79771    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
79772       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
79773 
79774       xla_accounting_err_pkg.build_message
79775          (p_appli_s_name            => 'XLA'
79776          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
79777          ,p_token_1                 => 'LINE_NUMBER'
79778          ,p_value_1                 => l_array_extract_line_num(Idx)
79779          ,p_token_2                 => 'PRODUCT_NAME'
79780          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
79781          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
79785    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
79782          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
79783          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
79784 
79786       --
79787       -- following sets the accounting attributes needed to reverse
79788       -- accounting for a distributeion
79789       --
79790 
79791       --
79792       -- 5217187
79793       --
79794       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
79795       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
79796                                        g_array_event(l_event_id).array_value_num('header_index'));
79797       --
79798       --
79799 
79800       -- No reversal code generated
79801 
79802       xla_ae_lines_pkg.SetAcctReversalAttrs
79803          (p_event_id             => l_event_id
79804          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
79805          ,p_calculate_acctd_flag => l_calculate_acctd_flag
79806          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
79807    END IF;
79808 
79809    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
79810        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
79811 
79812 --
79813 AcctLineType_91 (
79814  p_application_id  => p_application_id
79815  ,p_event_id     => l_event_id
79816  ,p_calculate_acctd_flag => l_calculate_acctd_flag
79817  ,p_calculate_g_l_flag => l_calculate_g_l_flag
79818  ,p_actual_flag => l_actual_flag
79819  ,p_balance_type_code => l_balance_type_code
79820  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
79821  
79822  , p_source_38 => l_array_source_38(Idx)
79823  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
79824  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
79825  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
79826  , p_source_55 => l_array_source_55(Idx)
79827  , p_source_56 => l_array_source_56(Idx)
79828  , p_source_57 => l_array_source_57(Idx)
79829  , p_source_58 => l_array_source_58(Idx)
79830  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
79831  , p_source_60 => l_array_source_60(Idx)
79832  , p_source_61 => l_array_source_61(Idx)
79833  , p_source_62 => l_array_source_62(Idx)
79834  , p_source_63 => l_array_source_63(Idx)
79835  );
79836 If(l_balance_type_code = 'A') THEN
79837   l_actual_gain_loss_ref := l_gain_or_loss_ref;
79838 END IF;
79839 
79840 --
79841 
79842 
79843 --
79844 AcctLineType_92 (
79845  p_application_id  => p_application_id
79846  ,p_event_id     => l_event_id
79847  ,p_calculate_acctd_flag => l_calculate_acctd_flag
79848  ,p_calculate_g_l_flag => l_calculate_g_l_flag
79849  ,p_actual_flag => l_actual_flag
79850  ,p_balance_type_code => l_balance_type_code
79851  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
79852  
79853  , p_source_38 => l_array_source_38(Idx)
79854  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
79855  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
79856  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
79857  , p_source_55 => l_array_source_55(Idx)
79858  , p_source_56 => l_array_source_56(Idx)
79859  , p_source_57 => l_array_source_57(Idx)
79860  , p_source_58 => l_array_source_58(Idx)
79861  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
79862  , p_source_60 => l_array_source_60(Idx)
79863  , p_source_61 => l_array_source_61(Idx)
79864  , p_source_62 => l_array_source_62(Idx)
79865  , p_source_63 => l_array_source_63(Idx)
79866  );
79867 If(l_balance_type_code = 'A') THEN
79868   l_actual_gain_loss_ref := l_gain_or_loss_ref;
79869 END IF;
79870 
79871 --
79872 
79873       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
79874       -- or secondary ledger that has different currency with primary
79875       -- or alc that is calculated by sla
79876       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
79877             (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'))
79878 
79879 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
79880 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
79881           AND (l_actual_flag = 'A')) THEN
79882         XLA_AE_LINES_PKG.CreateGainOrLossLines(
79883           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
79884          ,p_application_id   => p_application_id
79885          ,p_amb_context_code => 'DEFAULT'
79886          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
79887          ,p_event_class_code => C_EVENT_CLASS_CODE
79888          ,p_event_type_code  => C_EVENT_TYPE_CODE
79889          
79890          ,p_gain_ccid        => -1
79891          ,p_loss_ccid        => -1
79892 
79893          ,p_actual_flag      => l_actual_flag
79894          ,p_enc_flag         => null
79895          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
79896          ,p_enc_g_l_ref      => null
79897          );
79898       END IF;
79899    END IF;
79900 END IF;
79901 
79902    ELSE
79903       --
79904       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
79905       --
79906       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79907          trace
79908             (p_msg      => 'Trancaction revesal option is Y'
79909             ,p_level    => C_LEVEL_STATEMENT
79910             ,p_module   => l_log_module);
79911       END IF;
79912    END IF;
79913 
79914 END LOOP;
79915 l_result := XLA_AE_LINES_PKG.InsertLines ;
79916 end loop;
79920 --
79917 close line_cur;
79918 
79919 
79921 -- insert headers into xla_ae_headers_gt table
79922 --
79923 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
79924 
79925 -- insert into errors table here.
79926 
79927 END LOOP;
79928 
79929 --
79930 -- 4865292
79931 --
79932 -- Compare g_hdr_extract_count with event count in
79933 -- CreateHeadersAndLines.
79934 --
79935 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
79936 
79937 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
79938    trace (p_msg     => '# rows extracted from header extract objects '
79939                     || ' (running total): '
79940                     || g_hdr_extract_count
79941          ,p_level   => C_LEVEL_STATEMENT
79942          ,p_module  => l_log_module);
79943 END IF;
79944 
79945 CLOSE header_cur;
79946 --
79947 
79948 --
79949 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
79950    trace
79951       (p_msg      => 'END of EventClass_151'
79952       ,p_level    => C_LEVEL_PROCEDURE
79953       ,p_module   => l_log_module);
79954 END IF;
79955 --
79956 RETURN l_result;
79957 EXCEPTION
79958 WHEN xla_exceptions_pkg.application_exception THEN
79959    
79960 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
79961 
79962    
79963 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
79964 
79965    RAISE;
79966 
79967 WHEN NO_DATA_FOUND THEN
79968 
79969 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
79970 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
79971 
79972 FOR header_record IN header_cur
79973 LOOP
79974     l_array_header_events(header_record.event_id) := header_record.event_id;
79975 END LOOP;
79976 
79977 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
79978 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
79979 
79980 fnd_file.put_line(fnd_file.LOG, '                    ');
79981 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
79982 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
79983 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
79984 
79985 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
79986 LOOP
79987 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
79988 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
79989         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
79990 	END IF;
79991 END LOOP;
79992 
79993 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
79994 fnd_file.put_line(fnd_file.LOG, '                    ');
79995 
79996 
79997 xla_exceptions_pkg.raise_message
79998       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_151');
79999 
80000 
80001 WHEN OTHERS THEN
80002    xla_exceptions_pkg.raise_message
80003       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_151');
80004 END EventClass_151;
80005 --
80006 
80007 ---------------------------------------
80008 --
80009 -- PRIVATE PROCEDURE
80010 --         insert_sources_152
80011 --
80012 ----------------------------------------
80013 --
80014 PROCEDURE insert_sources_152(
80015                                 p_target_ledger_id       IN NUMBER
80016                               , p_language               IN VARCHAR2
80017                               , p_sla_ledger_id          IN NUMBER
80018                               , p_pad_start_date         IN DATE
80019                               , p_pad_end_date           IN DATE
80020                          )
80021 IS
80022 
80023 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVOICE_ALL';
80024 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'INVOICE';
80025 p_apps_owner                   VARCHAR2(30);
80026 l_log_module                   VARCHAR2(240);
80027 BEGIN
80028 IF g_log_enabled THEN
80029       l_log_module := C_DEFAULT_MODULE||'.insert_sources_152';
80030 END IF;
80031 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80032 
80033       trace
80034          (p_msg      => 'BEGIN of insert_sources_152'
80035          ,p_level    => C_LEVEL_PROCEDURE
80036          ,p_module   => l_log_module);
80037 
80038 END IF;
80039 
80040 -- select APPS owner
80041 SELECT oracle_username
80042   INTO p_apps_owner
80043   FROM fnd_oracle_userid
80044  WHERE read_only_flag = 'U'
80045 ;
80046 
80047 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80048       trace
80049          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
80050                         ' - p_language = '||p_language||
80051                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
80052                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
80053                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
80054                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
80055          ,p_level    => C_LEVEL_STATEMENT
80056          ,p_module   => l_log_module);
80057 END IF;
80058 
80059 
80060 --
80061 INSERT INTO xla_diag_sources --hdr2
80062 (
80063         event_id
80064       , ledger_id
80065       , sla_ledger_id
80066       , description_language
80067       , object_name
80068       , object_type_code
80069       , line_number
80070       , source_application_id
80071       , source_type_code
80072       , source_code
80073       , source_value
80074       , source_meaning
80075       , created_by
80076       , creation_date
80077       , last_update_date
80081       , program_application_id
80078       , last_updated_by
80079       , last_update_login
80080       , program_update_date
80082       , program_id
80083       , request_id
80084 )
80085 SELECT
80086         event_id
80087       , p_target_ledger_id
80088       , p_sla_ledger_id
80089       , p_language
80090       , object_name
80091       , object_type_code
80092       , line_number
80093       , source_application_id
80094       , source_type_code
80095       , source_code
80096       , SUBSTR(source_value ,1,1996)
80097       , SUBSTR(source_meaning ,1,200)
80098       , xla_environment_pkg.g_Usr_Id
80099       , TRUNC(SYSDATE)
80100       , TRUNC(SYSDATE)
80101       , xla_environment_pkg.g_Usr_Id
80102       , xla_environment_pkg.g_Login_Id
80103       , TRUNC(SYSDATE)
80104       , xla_environment_pkg.g_Prog_Appl_Id
80105       , xla_environment_pkg.g_Prog_Id
80106       , xla_environment_pkg.g_Req_Id
80107   FROM (
80108        SELECT xet.event_id                  event_id
80109             , 0                          line_number
80110             , CASE r
80111                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
80112                 WHEN 2 THEN 'AR_TRANSACTIONS_S_V' 
80113                 WHEN 3 THEN 'AR_TRANSACTIONS_S_V' 
80114                 WHEN 4 THEN 'AR_TRANSACTIONS_S_V' 
80115                 WHEN 5 THEN 'AR_BILL_TO_CUSTOMERS_S_V' 
80116                 WHEN 6 THEN 'AR_BILL_TO_SITE_USES_S_V' 
80117                 WHEN 7 THEN 'AR_TRANSACTIONS_S_V' 
80118                 WHEN 8 THEN 'AR_TRANSACTIONS_S_V' 
80119                 WHEN 9 THEN 'AR_TRANSACTIONS_S_V' 
80120                 
80121                ELSE null
80122               END                           object_name
80123             , CASE r
80124                 WHEN 1 THEN 'HEADER' 
80125                 WHEN 2 THEN 'HEADER' 
80126                 WHEN 3 THEN 'HEADER' 
80127                 WHEN 4 THEN 'HEADER' 
80128                 WHEN 5 THEN 'HEADER' 
80129                 WHEN 6 THEN 'HEADER' 
80130                 WHEN 7 THEN 'HEADER' 
80131                 WHEN 8 THEN 'HEADER' 
80132                 WHEN 9 THEN 'HEADER' 
80133                 
80134                 ELSE null
80135               END                           object_type_code
80136             , CASE r
80137                 WHEN 1 THEN '222' 
80138                 WHEN 2 THEN '222' 
80139                 WHEN 3 THEN '222' 
80140                 WHEN 4 THEN '222' 
80141                 WHEN 5 THEN '222' 
80142                 WHEN 6 THEN '222' 
80143                 WHEN 7 THEN '222' 
80144                 WHEN 8 THEN '222' 
80145                 WHEN 9 THEN '222' 
80146                 
80147                 ELSE null
80148               END                           source_application_id
80149             , 'S'             source_type_code
80150             , CASE r
80151                 WHEN 1 THEN 'TRX_TYPE_NAME' 
80152                 WHEN 2 THEN 'TRX_NUMBER' 
80153                 WHEN 3 THEN 'TRX_DOC_SEQUENCE_CATEGORY' 
80154                 WHEN 4 THEN 'TRX_DOC_SEQUENCE_VALUE' 
80155                 WHEN 5 THEN 'BILL_CUST_ACCOUNT_ID' 
80156                 WHEN 6 THEN 'BILL_USES_SITE_USE_ID' 
80157                 WHEN 7 THEN 'XLA_PARTY_TYPE' 
80158                 WHEN 8 THEN 'TRX_INVOICE_CURRENCY_CODE' 
80159                 WHEN 9 THEN 'TRX_DOC_SEQUENCE_ID' 
80160                 
80161                 ELSE null
80162               END                           source_code
80163             , CASE r
80164                 WHEN 1 THEN TO_CHAR(h5.TRX_TYPE_NAME)
80165                 WHEN 2 THEN TO_CHAR(h5.TRX_NUMBER)
80166                 WHEN 3 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_CATEGORY)
80167                 WHEN 4 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_VALUE)
80168                 WHEN 5 THEN TO_CHAR(h1.BILL_CUST_ACCOUNT_ID)
80169                 WHEN 6 THEN TO_CHAR(h2.BILL_USES_SITE_USE_ID)
80170                 WHEN 7 THEN TO_CHAR(h5.XLA_PARTY_TYPE)
80171                 WHEN 8 THEN TO_CHAR(h5.TRX_INVOICE_CURRENCY_CODE)
80172                 WHEN 9 THEN TO_CHAR(h5.TRX_DOC_SEQUENCE_ID)
80173                 
80174                 ELSE null
80175               END                           source_value
80176             , null              source_meaning
80177          FROM xla_events_gt     xet  
80178       , AR_BILL_TO_CUSTOMERS_S_V  h1
80179       , AR_BILL_TO_SITE_USES_S_V  h2
80180       , AR_TRANSACTIONS_S_V  h5
80181              ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
80182          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
80183            AND xet.event_class_code = C_EVENT_CLASS_CODE
80184               AND h1.event_id = xet.event_id
80185   AND h2.event_id  = h1.event_id
80186   AND h5.event_id  = h1.event_id
80187 
80188 )
80189 ;
80190 --
80191 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80192 
80193       trace
80194          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
80195          ,p_level    => C_LEVEL_STATEMENT
80196          ,p_module   => l_log_module);
80197 
80198 END IF;
80199 --
80200 
80201 
80202 
80203 --
80204 INSERT INTO xla_diag_sources  --line2
80205 (
80206         event_id
80207       , ledger_id
80208       , sla_ledger_id
80209       , description_language
80210       , object_name
80211       , object_type_code
80212       , line_number
80213       , source_application_id
80214       , source_type_code
80215       , source_code
80216       , source_value
80217       , source_meaning
80218       , created_by
80219       , creation_date
80220       , last_update_date
80221       , last_updated_by
80222       , last_update_login
80223       , program_update_date
80224       , program_application_id
80225       , program_id
80229       , p_target_ledger_id
80226       , request_id
80227 )
80228 SELECT  event_id
80230       , p_sla_ledger_id
80231       , p_language
80232       , object_name
80233       , object_type_code
80234       , line_number
80235       , source_application_id
80236       , source_type_code
80237       , source_code
80238       , SUBSTR(source_value,1,1996)
80239       , SUBSTR(source_meaning ,1,200)
80240       , xla_environment_pkg.g_Usr_Id
80241       , TRUNC(SYSDATE)
80242       , TRUNC(SYSDATE)
80243       , xla_environment_pkg.g_Usr_Id
80244       , xla_environment_pkg.g_Login_Id
80245       , TRUNC(SYSDATE)
80246       , xla_environment_pkg.g_Prog_Appl_Id
80247       , xla_environment_pkg.g_Prog_Id
80248       , xla_environment_pkg.g_Req_Id
80249   FROM (
80250        SELECT xet.event_id                  event_id
80251             , l4.line_number                 line_number
80252             , CASE r
80253                WHEN 1 THEN 'AR_CUST_TRX_LINES_L_V' 
80254                 WHEN 2 THEN 'AR_CUST_TRX_LINES_L_V' 
80255                 WHEN 3 THEN 'AR_CUST_TRX_LINES_L_V' 
80256                 WHEN 4 THEN 'AR_CUST_TRX_LINES_L_V' 
80257                 WHEN 5 THEN 'AR_CUST_TRX_LINES_L_V' 
80258                 WHEN 6 THEN 'AR_CUST_TRX_LINES_BASE_V' 
80259                 WHEN 7 THEN 'AR_CUST_TRX_LINES_BASE_V' 
80260                 WHEN 8 THEN 'AR_CUST_TRX_LINES_BASE_V' 
80261                 WHEN 9 THEN 'AR_CUST_TRX_LINES_BASE_V' 
80262                 WHEN 10 THEN 'AR_CUST_TRX_LINES_L_V' 
80263                 WHEN 11 THEN 'AR_CUST_TRX_LINES_BASE_V' 
80264                 
80265                ELSE null
80266               END                           object_name
80267             , CASE r
80268                 WHEN 1 THEN 'LINE' 
80269                 WHEN 2 THEN 'LINE' 
80270                 WHEN 3 THEN 'LINE' 
80271                 WHEN 4 THEN 'LINE' 
80272                 WHEN 5 THEN 'LINE' 
80273                 WHEN 6 THEN 'LINE' 
80274                 WHEN 7 THEN 'LINE' 
80275                 WHEN 8 THEN 'LINE' 
80276                 WHEN 9 THEN 'LINE' 
80277                 WHEN 10 THEN 'LINE' 
80278                 WHEN 11 THEN 'LINE' 
80279                 
80280                 ELSE null
80281               END                           object_type_code
80282             , CASE r
80283                 WHEN 1 THEN '222' 
80284                 WHEN 2 THEN '222' 
80285                 WHEN 3 THEN '222' 
80286                 WHEN 4 THEN '222' 
80287                 WHEN 5 THEN '222' 
80288                 WHEN 6 THEN '222' 
80289                 WHEN 7 THEN '222' 
80290                 WHEN 8 THEN '222' 
80291                 WHEN 9 THEN '222' 
80292                 WHEN 10 THEN '222' 
80293                 WHEN 11 THEN '222' 
80294                 
80295                 ELSE null
80296               END                           source_application_id
80297             , 'S'             source_type_code
80298             , CASE r
80299                 WHEN 1 THEN 'TRX_LINE_DIST_CCID' 
80300                 WHEN 2 THEN 'TRX_LINE_DIST_ACCOUNT_CLASS' 
80301                 WHEN 3 THEN 'TRX_LINE_DIST_ID' 
80302                 WHEN 4 THEN 'TRX_DISTRIBUTION_TYPE' 
80303                 WHEN 5 THEN 'TRX_LINE_DIST_AMT' 
80304                 WHEN 6 THEN 'TRX_LINE_CUR_CONVERSION_DATE' 
80305                 WHEN 7 THEN 'TRX_LINE_CUR_CONVERSION_RATE' 
80306                 WHEN 8 THEN 'TRX_LINE_CUR_CONVERSION_TYPE' 
80307                 WHEN 9 THEN 'TRX_LINE_ACCTD_AMT' 
80308                 WHEN 10 THEN 'TRX_TAX_LINE_ID' 
80309                 WHEN 11 THEN 'ROUNDING_CORRECTION_FLAG' 
80310                 
80311                 ELSE null
80312               END                           source_code
80313             , CASE r
80314                 WHEN 1 THEN TO_CHAR(l4.TRX_LINE_DIST_CCID)
80315                 WHEN 2 THEN TO_CHAR(l4.TRX_LINE_DIST_ACCOUNT_CLASS)
80316                 WHEN 3 THEN TO_CHAR(l4.TRX_LINE_DIST_ID)
80317                 WHEN 4 THEN TO_CHAR(l4.TRX_DISTRIBUTION_TYPE)
80318                 WHEN 5 THEN TO_CHAR(l4.TRX_LINE_DIST_AMT)
80319                 WHEN 6 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_DATE)
80320                 WHEN 7 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_RATE)
80321                 WHEN 8 THEN TO_CHAR(l3.TRX_LINE_CUR_CONVERSION_TYPE)
80322                 WHEN 9 THEN TO_CHAR(l3.TRX_LINE_ACCTD_AMT)
80323                 WHEN 10 THEN TO_CHAR(l4.TRX_TAX_LINE_ID)
80324                 WHEN 11 THEN TO_CHAR(l3.ROUNDING_CORRECTION_FLAG)
80325                 
80326                 ELSE null
80327               END                           source_value
80328             , null              source_meaning
80329          FROM  xla_events_gt     xet  
80330         , AR_CUST_TRX_LINES_BASE_V  l3
80331         , AR_CUST_TRX_LINES_L_V  l4
80332             , (select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
80333         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
80334           AND xet.event_class_code = C_EVENT_CLASS_CODE
80335             AND l3.event_id          = xet.event_id
80336   AND l4.event_id    = l3.event_id
80337   AND l4.line_number = l3.line_number
80338 
80339 )
80340 ;
80341 --
80342 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80343 
80344       trace
80345          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
80346          ,p_level    => C_LEVEL_STATEMENT
80347          ,p_module   => l_log_module);
80348 
80349 END IF;
80350 
80351 
80352 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80353       trace
80354          (p_msg      => 'END of insert_sources_152'
80355          ,p_level    => C_LEVEL_PROCEDURE
80356          ,p_module   => l_log_module);
80357 END IF;
80358 EXCEPTION
80359   WHEN xla_exceptions_pkg.application_exception THEN
80360       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
80364                ,p_module   => l_log_module);
80361             trace
80362                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
80363                ,p_level    => C_LEVEL_EXCEPTION
80365       END IF;
80366       RAISE;
80367   WHEN OTHERS THEN
80368       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
80369             trace
80370                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
80371                ,p_level    => C_LEVEL_EXCEPTION
80372                ,p_module   => l_log_module);
80373        END IF;
80374        xla_exceptions_pkg.raise_message
80375            (p_location => 'XLA_00222_AAD_S_000002_PKG.insert_sources_152');
80376 END insert_sources_152;
80377 --
80378 
80379 ---------------------------------------
80380 --
80381 -- PRIVATE FUNCTION
80382 --         EventClass_152
80383 --
80384 ----------------------------------------
80385 --
80386 FUNCTION EventClass_152
80387        (p_application_id         IN NUMBER
80388        ,p_base_ledger_id         IN NUMBER
80389        ,p_target_ledger_id       IN NUMBER
80390        ,p_language               IN VARCHAR2
80391        ,p_currency_code          IN VARCHAR2
80392        ,p_sla_ledger_id          IN NUMBER
80393        ,p_pad_start_date         IN DATE
80394        ,p_pad_end_date           IN DATE
80395        ,p_primary_ledger_id      IN NUMBER)
80396 RETURN BOOLEAN IS
80397 --
80398 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'INVOICE_ALL';
80399 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'INVOICE';
80400 
80401 l_calculate_acctd_flag   VARCHAR2(1) :='N';
80402 l_calculate_g_l_flag     VARCHAR2(1) :='N';
80403 --
80404 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80405 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80406 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
80407 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
80408 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80409 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
80410 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
80411 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80412 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
80413 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
80414 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80415 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80416 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80417 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
80418 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
80419 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
80420 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
80421 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
80422 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
80423 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
80424 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
80425 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
80426 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
80427 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
80428 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
80429 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
80430 
80431 l_event_id                             NUMBER;
80432 l_previous_event_id                    NUMBER;
80433 l_first_event_id                       NUMBER;
80434 l_last_event_id                        NUMBER;
80435 
80436 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
80437 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
80438 --
80439 --
80440 l_result                    BOOLEAN := TRUE;
80441 l_rows                      NUMBER  := 1000;
80442 l_event_type_name           VARCHAR2(80) := 'All';
80443 l_event_class_name          VARCHAR2(80) := 'Invoice';
80444 l_description               VARCHAR2(4000);
80445 l_transaction_reversal      NUMBER;
80446 l_ae_header_id              NUMBER;
80447 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
80448 l_log_module                VARCHAR2(240);
80449 --
80450 l_acct_reversal_source      VARCHAR2(30);
80451 l_trx_reversal_source       VARCHAR2(30);
80452 
80453 l_continue_with_lines       BOOLEAN := TRUE;
80454 --
80455 l_acc_rev_gl_date_source    DATE;                      -- 4262811
80456 --
80457 type t_array_event_id is table of number index by binary_integer;
80458 
80459 l_rec_array_event                    t_rec_array_event;
80460 l_null_rec_array_event               t_rec_array_event;
80461 l_array_ae_header_id                 xla_number_array_type;
80462 l_actual_flag                        VARCHAR2(1) := NULL;
80463 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
80464 l_balance_type_code                  VARCHAR2(1) :=NULL;
80465 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
80466 
80467 --
80468 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
80469 --
80470 
80471 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_TYPE_NAME%TYPE INDEX BY BINARY_INTEGER;
80472 TYPE t_array_source_4 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_NUMBER%TYPE INDEX BY BINARY_INTEGER;
80473 TYPE t_array_source_5 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
80474 TYPE t_array_source_6 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
80478 TYPE t_array_source_59 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_INVOICE_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
80475 TYPE t_array_source_49 IS TABLE OF AR_BILL_TO_CUSTOMERS_S_V.BILL_CUST_ACCOUNT_ID%TYPE INDEX BY BINARY_INTEGER;
80476 TYPE t_array_source_50 IS TABLE OF AR_BILL_TO_SITE_USES_S_V.BILL_USES_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
80477 TYPE t_array_source_51 IS TABLE OF AR_TRANSACTIONS_S_V.XLA_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
80479 TYPE t_array_source_120 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
80480 
80481 TYPE t_array_source_38 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_CCID%TYPE INDEX BY BINARY_INTEGER;
80482 TYPE t_array_source_55 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ACCOUNT_CLASS%TYPE INDEX BY BINARY_INTEGER;
80483 TYPE t_array_source_56 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
80484 TYPE t_array_source_57 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
80485 TYPE t_array_source_58 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_AMT%TYPE INDEX BY BINARY_INTEGER;
80486 TYPE t_array_source_60 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
80487 TYPE t_array_source_61 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
80488 TYPE t_array_source_62 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
80489 TYPE t_array_source_63 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.TRX_LINE_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
80490 TYPE t_array_source_97 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_TAX_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
80491 TYPE t_array_source_98 IS TABLE OF AR_CUST_TRX_LINES_BASE_V.ROUNDING_CORRECTION_FLAG%TYPE INDEX BY BINARY_INTEGER;
80492 
80493 l_array_source_3              t_array_source_3;
80494 l_array_source_4              t_array_source_4;
80495 l_array_source_5              t_array_source_5;
80496 l_array_source_6              t_array_source_6;
80497 l_array_source_49              t_array_source_49;
80498 l_array_source_50              t_array_source_50;
80499 l_array_source_51              t_array_source_51;
80500 l_array_source_59              t_array_source_59;
80501 l_array_source_120              t_array_source_120;
80502 
80503 l_array_source_38      t_array_source_38;
80504 l_array_source_55      t_array_source_55;
80505 l_array_source_56      t_array_source_56;
80506 l_array_source_57      t_array_source_57;
80507 l_array_source_58      t_array_source_58;
80508 l_array_source_60      t_array_source_60;
80509 l_array_source_61      t_array_source_61;
80510 l_array_source_62      t_array_source_62;
80511 l_array_source_63      t_array_source_63;
80512 l_array_source_97      t_array_source_97;
80513 l_array_source_98      t_array_source_98;
80514 
80515 --
80516 CURSOR header_cur
80517 IS
80518 SELECT /*+ leading(xet) cardinality(xet,1) */
80519 -- Event Class Code: INVOICE
80520     xet.entity_id
80521    ,xet.legal_entity_id
80522    ,xet.entity_code
80523    ,xet.transaction_number
80524    ,xet.event_id
80525    ,xet.event_class_code
80526    ,xet.event_type_code
80527    ,xet.event_number
80528    ,xet.event_date
80529    ,xet.transaction_date
80530    ,xet.reference_num_1
80531    ,xet.reference_num_2
80532    ,xet.reference_num_3
80533    ,xet.reference_num_4
80534    ,xet.reference_char_1
80535    ,xet.reference_char_2
80536    ,xet.reference_char_3
80537    ,xet.reference_char_4
80538    ,xet.reference_date_1
80539    ,xet.reference_date_2
80540    ,xet.reference_date_3
80541    ,xet.reference_date_4
80542    ,xet.event_created_by
80543    ,xet.budgetary_control_flag 
80544   , h5.TRX_TYPE_NAME    source_3
80545   , h5.TRX_NUMBER    source_4
80546   , h5.TRX_DOC_SEQUENCE_CATEGORY    source_5
80547   , h5.TRX_DOC_SEQUENCE_VALUE    source_6
80548   , h1.BILL_CUST_ACCOUNT_ID    source_49
80549   , h2.BILL_USES_SITE_USE_ID    source_50
80550   , h5.XLA_PARTY_TYPE    source_51
80551   , h5.TRX_INVOICE_CURRENCY_CODE    source_59
80552   , h5.TRX_DOC_SEQUENCE_ID    source_120
80553   FROM xla_events_gt     xet 
80554   , AR_BILL_TO_CUSTOMERS_S_V  h1
80555   , AR_BILL_TO_SITE_USES_S_V  h2
80556   , AR_TRANSACTIONS_S_V  h5
80557  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
80558    and xet.event_class_code = C_EVENT_CLASS_CODE
80559    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
80560   AND h2.event_id  = h1.event_id
80561   AND h5.event_id  = h1.event_id
80562 
80563  ORDER BY event_id
80564 ;
80565 
80566 
80567 --
80568 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
80569 IS
80570 SELECT  /*+ leading(xet) cardinality(xet,1) */
80571 -- Event Class Code: INVOICE
80572     xet.entity_id
80573    ,xet.legal_entity_id
80574    ,xet.entity_code
80575    ,xet.transaction_number
80576    ,xet.event_id
80577    ,xet.event_class_code
80578    ,xet.event_type_code
80579    ,xet.event_number
80580    ,xet.event_date
80581    ,xet.transaction_date
80582    ,xet.reference_num_1
80583    ,xet.reference_num_2
80584    ,xet.reference_num_3
80585    ,xet.reference_num_4
80586    ,xet.reference_char_1
80587    ,xet.reference_char_2
80588    ,xet.reference_char_3
80589    ,xet.reference_char_4
80590    ,xet.reference_date_1
80591    ,xet.reference_date_2
80592    ,xet.reference_date_3
80593    ,xet.reference_date_4
80594    ,xet.event_created_by
80595    ,xet.budgetary_control_flag
80596  , l3.LINE_NUMBER  
80597   , l4.TRX_LINE_DIST_CCID    source_38
80598   , l4.TRX_LINE_DIST_ACCOUNT_CLASS    source_55
80599   , l4.TRX_LINE_DIST_ID    source_56
80600   , l4.TRX_DISTRIBUTION_TYPE    source_57
80601   , l4.TRX_LINE_DIST_AMT    source_58
80602   , l3.TRX_LINE_CUR_CONVERSION_DATE    source_60
80603   , l3.TRX_LINE_CUR_CONVERSION_RATE    source_61
80604   , l3.TRX_LINE_CUR_CONVERSION_TYPE    source_62
80608   FROM xla_events_gt     xet 
80605   , l3.TRX_LINE_ACCTD_AMT    source_63
80606   , l4.TRX_TAX_LINE_ID    source_97
80607   , l3.ROUNDING_CORRECTION_FLAG    source_98
80609   , AR_CUST_TRX_LINES_BASE_V  l3
80610   , AR_CUST_TRX_LINES_L_V  l4
80611  WHERE xet.event_id between x_first_event_id and x_last_event_id
80612    and xet.event_date between p_pad_start_date and p_pad_end_date
80613    and xet.event_class_code = C_EVENT_CLASS_CODE
80614    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
80615   AND l4.event_id    = l3.event_id
80616   AND l4.line_number = l3.line_number
80617 ;
80618 
80619 --
80620 BEGIN
80621 IF g_log_enabled THEN
80622    l_log_module := C_DEFAULT_MODULE||'.EventClass_152';
80623 END IF;
80624 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
80625    trace
80626       (p_msg      => 'BEGIN of EventClass_152'
80627       ,p_level    => C_LEVEL_PROCEDURE
80628       ,p_module   => l_log_module);
80629 END IF;
80630 
80631 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80632    trace
80633       (p_msg      => 'p_application_id = '||p_application_id||
80634                      ' - p_base_ledger_id = '||p_base_ledger_id||
80635                      ' - p_target_ledger_id  = '||p_target_ledger_id||
80636                      ' - p_language = '||p_language||
80637                      ' - p_currency_code = '||p_currency_code||
80638                      ' - p_sla_ledger_id = '||p_sla_ledger_id
80639       ,p_level    => C_LEVEL_STATEMENT
80640       ,p_module   => l_log_module);
80641 END IF;
80642 --
80643 -- initialze arrays
80644 --
80645 g_array_event.DELETE;
80646 l_rec_array_event := l_null_rec_array_event;
80647 --
80648 --------------------------------------
80649 -- 4262811 Initialze MPA Line Number
80650 --------------------------------------
80651 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
80652 
80653 --
80654 
80655 --
80656 OPEN header_cur;
80657 --
80658 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80659    trace
80660    (p_msg      => 'SQL - FETCH header_cur'
80661    ,p_level    => C_LEVEL_STATEMENT
80662    ,p_module   => l_log_module);
80663 END IF;
80664 --
80665 LOOP
80666 FETCH header_cur BULK COLLECT INTO
80667         l_array_entity_id
80668       , l_array_legal_entity_id
80669       , l_array_entity_code
80670       , l_array_transaction_num
80671       , l_array_event_id
80672       , l_array_class_code
80673       , l_array_event_type
80674       , l_array_event_number
80675       , l_array_event_date
80676       , l_array_transaction_date
80677       , l_array_reference_num_1
80678       , l_array_reference_num_2
80679       , l_array_reference_num_3
80680       , l_array_reference_num_4
80681       , l_array_reference_char_1
80682       , l_array_reference_char_2
80683       , l_array_reference_char_3
80684       , l_array_reference_char_4
80685       , l_array_reference_date_1
80686       , l_array_reference_date_2
80687       , l_array_reference_date_3
80688       , l_array_reference_date_4
80689       , l_array_event_created_by
80690       , l_array_budgetary_control_flag 
80691       , l_array_source_3
80692       , l_array_source_4
80693       , l_array_source_5
80694       , l_array_source_6
80695       , l_array_source_49
80696       , l_array_source_50
80697       , l_array_source_51
80698       , l_array_source_59
80699       , l_array_source_120
80700       LIMIT l_rows;
80701 --
80702 IF (C_LEVEL_EVENT >= g_log_level) THEN
80703    trace
80704    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
80705    ,p_level    => C_LEVEL_EVENT
80706    ,p_module   => l_log_module);
80707 END IF;
80708 --
80709 EXIT WHEN l_array_entity_id.COUNT = 0;
80710 
80711 -- initialize arrays
80712 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
80713 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
80714 
80715 --
80716 -- Bug 4458708
80717 --
80718 XLA_AE_LINES_PKG.g_LineNumber := 0;
80719 
80720 
80721 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
80722 g_last_hdr_idx := l_array_event_id.LAST;
80723 --
80724 -- loop for the headers. Each iteration is for each header extract row
80725 -- fetched in header cursor
80726 --
80727 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
80728 
80729 --
80730 -- set event info as cache for other routines to refer event attributes
80731 --
80732 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
80733    (p_application_id           => p_application_id
80734    ,p_primary_ledger_id        => p_primary_ledger_id
80735    ,p_base_ledger_id           => p_base_ledger_id
80736    ,p_target_ledger_id         => p_target_ledger_id
80737    ,p_entity_id                => l_array_entity_id(hdr_idx)
80738    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
80739    ,p_entity_code              => l_array_entity_code(hdr_idx)
80740    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
80741    ,p_event_id                 => l_array_event_id(hdr_idx)
80742    ,p_event_class_code         => l_array_class_code(hdr_idx)
80743    ,p_event_type_code          => l_array_event_type(hdr_idx)
80744    ,p_event_number             => l_array_event_number(hdr_idx)
80745    ,p_event_date               => l_array_event_date(hdr_idx)
80746    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
80747    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
80748    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
80749    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
80750    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
80751    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
80755    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
80752    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
80753    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
80754    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
80756    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
80757    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
80758    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
80759    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
80760    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
80761 
80762 --
80763 -- set the status of entry to C_VALID (0)
80764 --
80765 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
80766 
80767 --
80768 -- initialize a row for ae header
80769 --
80770 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
80771 
80772 l_event_id := l_array_event_id(hdr_idx);
80773 
80774 --
80775 -- storing the hdr_idx for event. May be used by line cursor.
80776 --
80777 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
80778 
80779 --
80780 -- store sources from header extract. This can be improved to
80781 -- store only those sources from header extract that may be used in lines
80782 --
80783 
80784 g_array_event(l_event_id).array_value_char('source_3') := l_array_source_3(hdr_idx);
80785 g_array_event(l_event_id).array_value_char('source_4') := l_array_source_4(hdr_idx);
80786 g_array_event(l_event_id).array_value_char('source_5') := l_array_source_5(hdr_idx);
80787 g_array_event(l_event_id).array_value_num('source_6') := l_array_source_6(hdr_idx);
80788 g_array_event(l_event_id).array_value_num('source_49') := l_array_source_49(hdr_idx);
80789 g_array_event(l_event_id).array_value_num('source_50') := l_array_source_50(hdr_idx);
80790 g_array_event(l_event_id).array_value_char('source_51') := l_array_source_51(hdr_idx);
80791 g_array_event(l_event_id).array_value_char('source_59') := l_array_source_59(hdr_idx);
80792 g_array_event(l_event_id).array_value_num('source_120') := l_array_source_120(hdr_idx);
80793 
80794 --
80795 -- initilaize the status of ae headers for diffrent balance types
80796 -- the status is initialised to C_NOT_CREATED (2)
80797 --
80798 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
80799 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
80800 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
80801 
80802 --
80803 -- call api to validate and store accounting attributes for header
80804 --
80805 
80806 ------------------------------------------------------------
80807 -- Accrual Reversal : to get date for Standard Source (NONE)
80808 ------------------------------------------------------------
80809 l_acc_rev_gl_date_source := NULL;
80810 
80811      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
80812       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_5');
80813      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
80814       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_120');
80815      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
80816       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_6');
80817      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
80818       l_rec_acct_attrs.array_date_value(4) := 
80819 xla_ae_sources_pkg.GetSystemSourceDate(
80820    p_source_code           => 'XLA_EVENT_DATE'
80821  , p_source_type_code      => 'Y'
80822  , p_source_application_id =>  602
80823 );
80824 
80825 
80826 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
80827 
80828 XLA_AE_HEADER_PKG.SetJeCategoryName;
80829 
80830 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
80831 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
80832 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
80833 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
80834 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
80835 
80836 
80837 --
80838 xla_ae_header_pkg.SetHdrDescription(
80839    p_description => Description_9 (
80840    p_application_id => p_application_id 
80841  , p_source_3 => g_array_event(l_event_id).array_value_char('source_3')
80842  , p_source_4 => g_array_event(l_event_id).array_value_char('source_4')
80843  , p_source_5 => g_array_event(l_event_id).array_value_char('source_5')
80844  , p_source_6 => g_array_event(l_event_id).array_value_num('source_6')
80845    )
80846 );
80847 --
80848 
80849 -- No header level analytical criteria
80850 
80851 --
80852 --accounting attribute enhancement, bug 3612931
80853 --
80854 l_trx_reversal_source := SUBSTR(NULL, 1,30);
80855 
80856 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
80857    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
80858 
80859    xla_accounting_err_pkg.build_message
80860       (p_appli_s_name            => 'XLA'
80861       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
80862       ,p_token_1                 => 'ACCT_ATTR_NAME'
80863       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
80864       ,p_token_2                 => 'PRODUCT_NAME'
80865       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
80866       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
80867       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
80871    --
80868       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
80869 
80870 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
80872    -- following sets the accounting attributes needed to reverse
80873    -- accounting for a distributeion
80874    --
80875    xla_ae_lines_pkg.SetTrxReversalAttrs
80876       (p_event_id              => l_event_id
80877       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
80878       ,p_trx_reversal_source   => l_trx_reversal_source);
80879 
80880 END IF;
80881 
80882 
80883 ----------------------------------------------------------------
80884 -- 4262811 -  update the header statuses to invalid in need be
80885 ----------------------------------------------------------------
80886 --
80887 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
80888 
80889 
80890   -----------------------------------------------
80891   -- No accrual reversal for the event class/type
80892   -----------------------------------------------
80893 ----------------------------------------------------------------
80894 
80895 --
80896 -- this ends the header loop iteration for one bulk fetch
80897 --
80898 END LOOP;
80899 
80900 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
80901 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
80902 
80903 --
80904 -- insert dummy rows into lines gt table that were created due to
80905 -- transaction reversals
80906 --
80907 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
80908    l_result := XLA_AE_LINES_PKG.InsertLines;
80909 END IF;
80910 
80911 --
80912 -- reset the temp_line_num for each set of events fetched from header
80913 -- cursor rather than doing it for each new event in line cursor
80914 -- Bug 3939231
80915 --
80916 xla_ae_lines_pkg.g_temp_line_num := 0;
80917 
80918 
80919 
80920 --
80921 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
80922 --
80923 --
80924 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
80925 
80926       trace
80927          (p_msg      => 'SQL - FETCH line_cur'
80928          ,p_level    => C_LEVEL_STATEMENT
80929          ,p_module   => l_log_module);
80930 
80931 END IF;
80932 --
80933 --
80934 LOOP
80935   --
80936   FETCH line_cur BULK COLLECT INTO
80937         l_array_entity_id
80938       , l_array_legal_entity_id
80939       , l_array_entity_code
80940       , l_array_transaction_num
80941       , l_array_event_id
80942       , l_array_class_code
80943       , l_array_event_type
80944       , l_array_event_number
80945       , l_array_event_date
80946       , l_array_transaction_date
80947       , l_array_reference_num_1
80948       , l_array_reference_num_2
80949       , l_array_reference_num_3
80950       , l_array_reference_num_4
80951       , l_array_reference_char_1
80952       , l_array_reference_char_2
80953       , l_array_reference_char_3
80954       , l_array_reference_char_4
80955       , l_array_reference_date_1
80956       , l_array_reference_date_2
80957       , l_array_reference_date_3
80958       , l_array_reference_date_4
80959       , l_array_event_created_by
80960       , l_array_budgetary_control_flag
80961       , l_array_extract_line_num 
80962       , l_array_source_38
80963       , l_array_source_55
80964       , l_array_source_56
80965       , l_array_source_57
80966       , l_array_source_58
80967       , l_array_source_60
80968       , l_array_source_61
80969       , l_array_source_62
80970       , l_array_source_63
80971       , l_array_source_97
80972       , l_array_source_98
80973       LIMIT l_rows;
80974 
80975   --
80976   IF (C_LEVEL_EVENT >= g_log_level) THEN
80977             trace
80978                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
80979                ,p_level    => C_LEVEL_EVENT
80980                ,p_module   => l_log_module);
80981   END IF;
80982   --
80983   EXIT WHEN l_array_entity_id.count = 0;
80984 
80985   XLA_AE_LINES_PKG.g_rec_lines := null;
80986 
80987 --
80988 -- Bug 4458708
80989 --
80990 XLA_AE_LINES_PKG.g_LineNumber := 0;
80991 --
80992 --
80993 
80994 FOR Idx IN 1..l_array_event_id.count LOOP
80995    --
80996    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
80997    --
80998    l_event_id := l_array_event_id(idx);  -- 5648433
80999 
81000    --
81001    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
81002    --
81003 
81004    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
81005              (g_array_event(l_event_id).array_value_num('header_index'))
81006          ,'N'
81007          ) <> 'Y'
81008    THEN
81009       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81010          trace
81011             (p_msg      => 'Trancaction revesal option is not Y '
81012             ,p_level    => C_LEVEL_STATEMENT
81013             ,p_module   => l_log_module);
81014       END IF;
81015 
81016 --
81017 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
81018 --
81019 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
81020 --
81021 -- set event info as cache for other routines to refer event attributes
81022 --
81023 
81024 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
81025    l_previous_event_id := l_event_id;
81026 
81027    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
81028       (p_application_id           => p_application_id
81029       ,p_primary_ledger_id        => p_primary_ledger_id
81033       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
81030       ,p_base_ledger_id           => p_base_ledger_id
81031       ,p_target_ledger_id         => p_target_ledger_id
81032       ,p_entity_id                => l_array_entity_id(Idx)
81034       ,p_entity_code              => l_array_entity_code(Idx)
81035       ,p_transaction_num          => l_array_transaction_num(Idx)
81036       ,p_event_id                 => l_array_event_id(Idx)
81037       ,p_event_class_code         => l_array_class_code(Idx)
81038       ,p_event_type_code          => l_array_event_type(Idx)
81039       ,p_event_number             => l_array_event_number(Idx)
81040       ,p_event_date               => l_array_event_date(Idx)
81041       ,p_transaction_date         => l_array_transaction_date(Idx)
81042       ,p_reference_num_1          => l_array_reference_num_1(Idx)
81043       ,p_reference_num_2          => l_array_reference_num_2(Idx)
81044       ,p_reference_num_3          => l_array_reference_num_3(Idx)
81045       ,p_reference_num_4          => l_array_reference_num_4(Idx)
81046       ,p_reference_char_1         => l_array_reference_char_1(Idx)
81047       ,p_reference_char_2         => l_array_reference_char_2(Idx)
81048       ,p_reference_char_3         => l_array_reference_char_3(Idx)
81049       ,p_reference_char_4         => l_array_reference_char_4(Idx)
81050       ,p_reference_date_1         => l_array_reference_date_1(Idx)
81051       ,p_reference_date_2         => l_array_reference_date_2(Idx)
81052       ,p_reference_date_3         => l_array_reference_date_3(Idx)
81053       ,p_reference_date_4         => l_array_reference_date_4(Idx)
81054       ,p_event_created_by         => l_array_event_created_by(Idx)
81055       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
81056        --
81057 END IF;
81058 
81059 
81060 
81061 --
81062 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
81063 
81064 l_acct_reversal_source := SUBSTR(NULL, 1,30);
81065 
81066 IF l_continue_with_lines THEN
81067    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
81068       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
81069 
81070       xla_accounting_err_pkg.build_message
81071          (p_appli_s_name            => 'XLA'
81072          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
81073          ,p_token_1                 => 'LINE_NUMBER'
81074          ,p_value_1                 => l_array_extract_line_num(Idx)
81075          ,p_token_2                 => 'PRODUCT_NAME'
81076          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
81077          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
81078          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
81079          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
81080 
81081    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
81082       --
81083       -- following sets the accounting attributes needed to reverse
81084       -- accounting for a distributeion
81085       --
81086 
81087       --
81088       -- 5217187
81089       --
81090       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
81091       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
81092                                        g_array_event(l_event_id).array_value_num('header_index'));
81093       --
81094       --
81095 
81096       -- No reversal code generated
81097 
81098       xla_ae_lines_pkg.SetAcctReversalAttrs
81099          (p_event_id             => l_event_id
81100          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
81101          ,p_calculate_acctd_flag => l_calculate_acctd_flag
81102          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
81103    END IF;
81104 
81105    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
81106        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
81107 
81108 --
81109 AcctLineType_93 (
81110  p_application_id  => p_application_id
81111  ,p_event_id     => l_event_id
81112  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81113  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81114  ,p_actual_flag => l_actual_flag
81115  ,p_balance_type_code => l_balance_type_code
81116  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81117  
81118  , p_source_38 => l_array_source_38(Idx)
81119  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
81120  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
81121  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
81122  , p_source_55 => l_array_source_55(Idx)
81123  , p_source_56 => l_array_source_56(Idx)
81124  , p_source_57 => l_array_source_57(Idx)
81125  , p_source_58 => l_array_source_58(Idx)
81126  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
81127  , p_source_60 => l_array_source_60(Idx)
81128  , p_source_61 => l_array_source_61(Idx)
81129  , p_source_62 => l_array_source_62(Idx)
81130  , p_source_63 => l_array_source_63(Idx)
81131  , p_source_97 => l_array_source_97(Idx)
81132  );
81133 If(l_balance_type_code = 'A') THEN
81134   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81135 END IF;
81136 
81137 --
81138 
81139 
81140 --
81141 AcctLineType_94 (
81142  p_application_id  => p_application_id
81143  ,p_event_id     => l_event_id
81144  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81145  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81146  ,p_actual_flag => l_actual_flag
81147  ,p_balance_type_code => l_balance_type_code
81148  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81149  
81150  , p_source_38 => l_array_source_38(Idx)
81151  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
81152  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
81156  , p_source_57 => l_array_source_57(Idx)
81153  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
81154  , p_source_55 => l_array_source_55(Idx)
81155  , p_source_56 => l_array_source_56(Idx)
81157  , p_source_58 => l_array_source_58(Idx)
81158  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
81159  , p_source_60 => l_array_source_60(Idx)
81160  , p_source_61 => l_array_source_61(Idx)
81161  , p_source_62 => l_array_source_62(Idx)
81162  , p_source_63 => l_array_source_63(Idx)
81163  , p_source_97 => l_array_source_97(Idx)
81164  );
81165 If(l_balance_type_code = 'A') THEN
81166   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81167 END IF;
81168 
81169 --
81170 
81171 
81172 --
81173 AcctLineType_95 (
81174  p_application_id  => p_application_id
81175  ,p_event_id     => l_event_id
81176  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81177  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81178  ,p_actual_flag => l_actual_flag
81179  ,p_balance_type_code => l_balance_type_code
81180  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81181  
81182  , p_source_38 => l_array_source_38(Idx)
81183  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
81184  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
81185  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
81186  , p_source_55 => l_array_source_55(Idx)
81187  , p_source_56 => l_array_source_56(Idx)
81188  , p_source_57 => l_array_source_57(Idx)
81189  , p_source_58 => l_array_source_58(Idx)
81190  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
81191  , p_source_60 => l_array_source_60(Idx)
81192  , p_source_61 => l_array_source_61(Idx)
81193  , p_source_62 => l_array_source_62(Idx)
81194  , p_source_63 => l_array_source_63(Idx)
81195  , p_source_97 => l_array_source_97(Idx)
81196  );
81197 If(l_balance_type_code = 'A') THEN
81198   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81199 END IF;
81200 
81201 --
81202 
81203 
81204 --
81205 AcctLineType_96 (
81206  p_application_id  => p_application_id
81207  ,p_event_id     => l_event_id
81208  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81209  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81210  ,p_actual_flag => l_actual_flag
81211  ,p_balance_type_code => l_balance_type_code
81212  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81213  
81214  , p_source_38 => l_array_source_38(Idx)
81215  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
81216  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
81217  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
81218  , p_source_55 => l_array_source_55(Idx)
81219  , p_source_56 => l_array_source_56(Idx)
81220  , p_source_57 => l_array_source_57(Idx)
81221  , p_source_58 => l_array_source_58(Idx)
81222  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
81223  , p_source_60 => l_array_source_60(Idx)
81224  , p_source_61 => l_array_source_61(Idx)
81225  , p_source_62 => l_array_source_62(Idx)
81226  , p_source_63 => l_array_source_63(Idx)
81227  , p_source_97 => l_array_source_97(Idx)
81228  , p_source_98 => l_array_source_98(Idx)
81229  );
81230 If(l_balance_type_code = 'A') THEN
81231   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81232 END IF;
81233 
81234 --
81235 
81236 
81237 --
81238 AcctLineType_97 (
81239  p_application_id  => p_application_id
81240  ,p_event_id     => l_event_id
81241  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81242  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81243  ,p_actual_flag => l_actual_flag
81244  ,p_balance_type_code => l_balance_type_code
81245  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81246  
81247  , p_source_38 => l_array_source_38(Idx)
81248  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
81249  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
81250  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
81251  , p_source_55 => l_array_source_55(Idx)
81252  , p_source_56 => l_array_source_56(Idx)
81253  , p_source_57 => l_array_source_57(Idx)
81254  , p_source_58 => l_array_source_58(Idx)
81255  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
81256  , p_source_60 => l_array_source_60(Idx)
81257  , p_source_61 => l_array_source_61(Idx)
81258  , p_source_62 => l_array_source_62(Idx)
81259  , p_source_63 => l_array_source_63(Idx)
81260  , p_source_97 => l_array_source_97(Idx)
81261  , p_source_98 => l_array_source_98(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_98 (
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_38 => l_array_source_38(Idx)
81281  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
81282  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
81283  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
81284  , p_source_55 => l_array_source_55(Idx)
81285  , p_source_56 => l_array_source_56(Idx)
81286  , p_source_57 => l_array_source_57(Idx)
81287  , p_source_58 => l_array_source_58(Idx)
81288  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
81289  , p_source_60 => l_array_source_60(Idx)
81290  , p_source_61 => l_array_source_61(Idx)
81291  , p_source_62 => l_array_source_62(Idx)
81292  , p_source_63 => l_array_source_63(Idx)
81296   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81293  , p_source_97 => l_array_source_97(Idx)
81294  );
81295 If(l_balance_type_code = 'A') THEN
81297 END IF;
81298 
81299 --
81300 
81301 
81302 --
81303 AcctLineType_99 (
81304  p_application_id  => p_application_id
81305  ,p_event_id     => l_event_id
81306  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81307  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81308  ,p_actual_flag => l_actual_flag
81309  ,p_balance_type_code => l_balance_type_code
81310  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81311  
81312  , p_source_38 => l_array_source_38(Idx)
81313  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
81314  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
81315  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
81316  , p_source_55 => l_array_source_55(Idx)
81317  , p_source_56 => l_array_source_56(Idx)
81318  , p_source_57 => l_array_source_57(Idx)
81319  , p_source_58 => l_array_source_58(Idx)
81320  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
81321  , p_source_60 => l_array_source_60(Idx)
81322  , p_source_61 => l_array_source_61(Idx)
81323  , p_source_62 => l_array_source_62(Idx)
81324  , p_source_63 => l_array_source_63(Idx)
81325  , p_source_97 => l_array_source_97(Idx)
81326  );
81327 If(l_balance_type_code = 'A') THEN
81328   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81329 END IF;
81330 
81331 --
81332 
81333 
81334 --
81335 AcctLineType_100 (
81336  p_application_id  => p_application_id
81337  ,p_event_id     => l_event_id
81338  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81339  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81340  ,p_actual_flag => l_actual_flag
81341  ,p_balance_type_code => l_balance_type_code
81342  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81343  
81344  , p_source_38 => l_array_source_38(Idx)
81345  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
81346  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
81347  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
81348  , p_source_55 => l_array_source_55(Idx)
81349  , p_source_56 => l_array_source_56(Idx)
81350  , p_source_57 => l_array_source_57(Idx)
81351  , p_source_58 => l_array_source_58(Idx)
81352  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
81353  , p_source_60 => l_array_source_60(Idx)
81354  , p_source_61 => l_array_source_61(Idx)
81355  , p_source_62 => l_array_source_62(Idx)
81356  , p_source_63 => l_array_source_63(Idx)
81357  , p_source_97 => l_array_source_97(Idx)
81358  );
81359 If(l_balance_type_code = 'A') THEN
81360   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81361 END IF;
81362 
81363 --
81364 
81365 
81366 --
81367 AcctLineType_101 (
81368  p_application_id  => p_application_id
81369  ,p_event_id     => l_event_id
81370  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81371  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81372  ,p_actual_flag => l_actual_flag
81373  ,p_balance_type_code => l_balance_type_code
81374  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81375  
81376  , p_source_38 => l_array_source_38(Idx)
81377  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
81378  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
81379  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
81380  , p_source_55 => l_array_source_55(Idx)
81381  , p_source_56 => l_array_source_56(Idx)
81382  , p_source_57 => l_array_source_57(Idx)
81383  , p_source_58 => l_array_source_58(Idx)
81384  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
81385  , p_source_60 => l_array_source_60(Idx)
81386  , p_source_61 => l_array_source_61(Idx)
81387  , p_source_62 => l_array_source_62(Idx)
81388  , p_source_63 => l_array_source_63(Idx)
81389  , p_source_97 => l_array_source_97(Idx)
81390  , p_source_98 => l_array_source_98(Idx)
81391  );
81392 If(l_balance_type_code = 'A') THEN
81393   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81394 END IF;
81395 
81396 --
81397 
81398 
81399 --
81400 AcctLineType_102 (
81401  p_application_id  => p_application_id
81402  ,p_event_id     => l_event_id
81403  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81404  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81405  ,p_actual_flag => l_actual_flag
81406  ,p_balance_type_code => l_balance_type_code
81407  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81408  
81409  , p_source_38 => l_array_source_38(Idx)
81410  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
81411  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
81412  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
81413  , p_source_55 => l_array_source_55(Idx)
81414  , p_source_56 => l_array_source_56(Idx)
81415  , p_source_57 => l_array_source_57(Idx)
81416  , p_source_58 => l_array_source_58(Idx)
81417  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
81418  , p_source_60 => l_array_source_60(Idx)
81419  , p_source_61 => l_array_source_61(Idx)
81420  , p_source_62 => l_array_source_62(Idx)
81421  , p_source_63 => l_array_source_63(Idx)
81422  , p_source_97 => l_array_source_97(Idx)
81423  , p_source_98 => l_array_source_98(Idx)
81424  );
81425 If(l_balance_type_code = 'A') THEN
81426   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81427 END IF;
81428 
81429 --
81430 
81431 
81432 --
81433 AcctLineType_103 (
81434  p_application_id  => p_application_id
81435  ,p_event_id     => l_event_id
81436  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81437  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81438  ,p_actual_flag => l_actual_flag
81442  , p_source_38 => l_array_source_38(Idx)
81439  ,p_balance_type_code => l_balance_type_code
81440  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81441  
81443  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
81444  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
81445  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
81446  , p_source_55 => l_array_source_55(Idx)
81447  , p_source_56 => l_array_source_56(Idx)
81448  , p_source_57 => l_array_source_57(Idx)
81449  , p_source_58 => l_array_source_58(Idx)
81450  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
81451  , p_source_60 => l_array_source_60(Idx)
81452  , p_source_61 => l_array_source_61(Idx)
81453  , p_source_62 => l_array_source_62(Idx)
81454  , p_source_63 => l_array_source_63(Idx)
81455  , p_source_97 => l_array_source_97(Idx)
81456  , p_source_98 => l_array_source_98(Idx)
81457  );
81458 If(l_balance_type_code = 'A') THEN
81459   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81460 END IF;
81461 
81462 --
81463 
81464 
81465 --
81466 AcctLineType_104 (
81467  p_application_id  => p_application_id
81468  ,p_event_id     => l_event_id
81469  ,p_calculate_acctd_flag => l_calculate_acctd_flag
81470  ,p_calculate_g_l_flag => l_calculate_g_l_flag
81471  ,p_actual_flag => l_actual_flag
81472  ,p_balance_type_code => l_balance_type_code
81473  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
81474  
81475  , p_source_38 => l_array_source_38(Idx)
81476  , p_source_49 => g_array_event(l_event_id).array_value_num('source_49')
81477  , p_source_50 => g_array_event(l_event_id).array_value_num('source_50')
81478  , p_source_51 => g_array_event(l_event_id).array_value_char('source_51')
81479  , p_source_55 => l_array_source_55(Idx)
81480  , p_source_56 => l_array_source_56(Idx)
81481  , p_source_57 => l_array_source_57(Idx)
81482  , p_source_58 => l_array_source_58(Idx)
81483  , p_source_59 => g_array_event(l_event_id).array_value_char('source_59')
81484  , p_source_60 => l_array_source_60(Idx)
81485  , p_source_61 => l_array_source_61(Idx)
81486  , p_source_62 => l_array_source_62(Idx)
81487  , p_source_63 => l_array_source_63(Idx)
81488  , p_source_97 => l_array_source_97(Idx)
81489  , p_source_98 => l_array_source_98(Idx)
81490  );
81491 If(l_balance_type_code = 'A') THEN
81492   l_actual_gain_loss_ref := l_gain_or_loss_ref;
81493 END IF;
81494 
81495 --
81496 
81497       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
81498       -- or secondary ledger that has different currency with primary
81499       -- or alc that is calculated by sla
81500       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
81501             (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'))
81502 
81503 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
81504 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
81505           AND (l_actual_flag = 'A')) THEN
81506         XLA_AE_LINES_PKG.CreateGainOrLossLines(
81507           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
81508          ,p_application_id   => p_application_id
81509          ,p_amb_context_code => 'DEFAULT'
81510          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
81511          ,p_event_class_code => C_EVENT_CLASS_CODE
81512          ,p_event_type_code  => C_EVENT_TYPE_CODE
81513          
81514          ,p_gain_ccid        => -1
81515          ,p_loss_ccid        => -1
81516 
81517          ,p_actual_flag      => l_actual_flag
81518          ,p_enc_flag         => null
81519          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
81520          ,p_enc_g_l_ref      => null
81521          );
81522       END IF;
81523    END IF;
81524 END IF;
81525 
81526    ELSE
81527       --
81528       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
81529       --
81530       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81531          trace
81532             (p_msg      => 'Trancaction revesal option is Y'
81533             ,p_level    => C_LEVEL_STATEMENT
81534             ,p_module   => l_log_module);
81535       END IF;
81536    END IF;
81537 
81538 END LOOP;
81539 l_result := XLA_AE_LINES_PKG.InsertLines ;
81540 end loop;
81541 close line_cur;
81542 
81543 
81544 --
81545 -- insert headers into xla_ae_headers_gt table
81546 --
81547 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
81548 
81549 -- insert into errors table here.
81550 
81551 END LOOP;
81552 
81553 --
81554 -- 4865292
81555 --
81556 -- Compare g_hdr_extract_count with event count in
81557 -- CreateHeadersAndLines.
81558 --
81559 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
81560 
81561 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81562    trace (p_msg     => '# rows extracted from header extract objects '
81563                     || ' (running total): '
81564                     || g_hdr_extract_count
81565          ,p_level   => C_LEVEL_STATEMENT
81566          ,p_module  => l_log_module);
81567 END IF;
81568 
81569 CLOSE header_cur;
81570 --
81571 
81572 --
81573 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81574    trace
81575       (p_msg      => 'END of EventClass_152'
81576       ,p_level    => C_LEVEL_PROCEDURE
81577       ,p_module   => l_log_module);
81578 END IF;
81579 --
81580 RETURN l_result;
81581 EXCEPTION
81582 WHEN xla_exceptions_pkg.application_exception THEN
81583    
81584 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
81585 
81586    
81590 
81587 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
81588 
81589    RAISE;
81591 WHEN NO_DATA_FOUND THEN
81592 
81593 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
81594 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
81595 
81596 FOR header_record IN header_cur
81597 LOOP
81598     l_array_header_events(header_record.event_id) := header_record.event_id;
81599 END LOOP;
81600 
81601 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
81602 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
81603 
81604 fnd_file.put_line(fnd_file.LOG, '                    ');
81605 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
81606 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
81607 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
81608 
81609 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
81610 LOOP
81611 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
81612 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
81613         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
81614 	END IF;
81615 END LOOP;
81616 
81617 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
81618 fnd_file.put_line(fnd_file.LOG, '                    ');
81619 
81620 
81621 xla_exceptions_pkg.raise_message
81622       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_152');
81623 
81624 
81625 WHEN OTHERS THEN
81626    xla_exceptions_pkg.raise_message
81627       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_152');
81628 END EventClass_152;
81629 --
81630 
81631 ---------------------------------------
81632 --
81633 -- PRIVATE PROCEDURE
81634 --         insert_sources_153
81635 --
81636 ----------------------------------------
81637 --
81638 PROCEDURE insert_sources_153(
81639                                 p_target_ledger_id       IN NUMBER
81640                               , p_language               IN VARCHAR2
81641                               , p_sla_ledger_id          IN NUMBER
81642                               , p_pad_start_date         IN DATE
81643                               , p_pad_end_date           IN DATE
81644                          )
81645 IS
81646 
81647 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_RECEIPT_ALL';
81648 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'MISC_RECEIPT';
81649 p_apps_owner                   VARCHAR2(30);
81650 l_log_module                   VARCHAR2(240);
81651 BEGIN
81652 IF g_log_enabled THEN
81653       l_log_module := C_DEFAULT_MODULE||'.insert_sources_153';
81654 END IF;
81655 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81656 
81657       trace
81658          (p_msg      => 'BEGIN of insert_sources_153'
81659          ,p_level    => C_LEVEL_PROCEDURE
81660          ,p_module   => l_log_module);
81661 
81662 END IF;
81663 
81664 -- select APPS owner
81665 SELECT oracle_username
81666   INTO p_apps_owner
81667   FROM fnd_oracle_userid
81668  WHERE read_only_flag = 'U'
81669 ;
81670 
81671 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81672       trace
81673          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
81674                         ' - p_language = '||p_language||
81675                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
81676                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
81677                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
81678                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
81679          ,p_level    => C_LEVEL_STATEMENT
81680          ,p_module   => l_log_module);
81681 END IF;
81682 
81683 
81684 --
81685 INSERT INTO xla_diag_sources --hdr2
81686 (
81687         event_id
81688       , ledger_id
81689       , sla_ledger_id
81690       , description_language
81691       , object_name
81692       , object_type_code
81693       , line_number
81694       , source_application_id
81695       , source_type_code
81696       , source_code
81697       , source_value
81698       , source_meaning
81699       , created_by
81700       , creation_date
81701       , last_update_date
81702       , last_updated_by
81703       , last_update_login
81704       , program_update_date
81705       , program_application_id
81706       , program_id
81707       , request_id
81708 )
81709 SELECT
81710         event_id
81711       , p_target_ledger_id
81712       , p_sla_ledger_id
81713       , p_language
81714       , object_name
81715       , object_type_code
81716       , line_number
81717       , source_application_id
81718       , source_type_code
81719       , source_code
81720       , SUBSTR(source_value ,1,1996)
81721       , SUBSTR(source_meaning ,1,200)
81722       , xla_environment_pkg.g_Usr_Id
81723       , TRUNC(SYSDATE)
81724       , TRUNC(SYSDATE)
81725       , xla_environment_pkg.g_Usr_Id
81726       , xla_environment_pkg.g_Login_Id
81727       , TRUNC(SYSDATE)
81728       , xla_environment_pkg.g_Prog_Appl_Id
81729       , xla_environment_pkg.g_Prog_Id
81730       , xla_environment_pkg.g_Req_Id
81731   FROM (
81732        SELECT xet.event_id                  event_id
81733             , 0                          line_number
81734             , CASE r
81735                WHEN 1 THEN 'AR_REMIT_BANK_ACCT_H_V' 
81736                 WHEN 2 THEN 'AR_REMIT_BANK_ACCT_H_V' 
81737                 WHEN 3 THEN 'AR_CASH_RECEIPTS_H_V' 
81738                 WHEN 4 THEN 'AR_CASH_RECEIPTS_H_V' 
81742                 WHEN 8 THEN 'AR_CASH_RECEIPTS_H_V' 
81739                 WHEN 5 THEN 'AR_RCT_METHOD_H_V' 
81740                 WHEN 6 THEN 'AR_CASH_RECEIPTS_H_V' 
81741                 WHEN 7 THEN 'AR_CASH_RECEIPTS_H_V' 
81743                 WHEN 9 THEN 'AR_CASH_RECEIPTS_H_V' 
81744                 
81745                ELSE null
81746               END                           object_name
81747             , CASE r
81748                 WHEN 1 THEN 'HEADER' 
81749                 WHEN 2 THEN 'HEADER' 
81750                 WHEN 3 THEN 'HEADER' 
81751                 WHEN 4 THEN 'HEADER' 
81752                 WHEN 5 THEN 'HEADER' 
81753                 WHEN 6 THEN 'HEADER' 
81754                 WHEN 7 THEN 'HEADER' 
81755                 WHEN 8 THEN 'HEADER' 
81756                 WHEN 9 THEN 'HEADER' 
81757                 
81758                 ELSE null
81759               END                           object_type_code
81760             , CASE r
81761                 WHEN 1 THEN '222' 
81762                 WHEN 2 THEN '222' 
81763                 WHEN 3 THEN '222' 
81764                 WHEN 4 THEN '222' 
81765                 WHEN 5 THEN '222' 
81766                 WHEN 6 THEN '222' 
81767                 WHEN 7 THEN '222' 
81768                 WHEN 8 THEN '222' 
81769                 WHEN 9 THEN '222' 
81770                 
81771                 ELSE null
81772               END                           source_application_id
81773             , 'S'             source_type_code
81774             , CASE r
81775                 WHEN 1 THEN 'RMT_BNK_ACCOUNT_NAME' 
81776                 WHEN 2 THEN 'RMT_BANK_NAME' 
81777                 WHEN 3 THEN 'RCT_RECEIPT_NUMBER' 
81778                 WHEN 4 THEN 'RCT_DOC_SEQUENCE_VALUE' 
81779                 WHEN 5 THEN 'RCT_MTHD_NAME' 
81780                 WHEN 6 THEN 'RCT_RECEIPT_DATE' 
81781                 WHEN 7 THEN 'RCT_DOC_SEQUENCE_CATEGORY' 
81782                 WHEN 8 THEN 'RCT_DOC_SEQUENCE_ID' 
81783                 WHEN 9 THEN 'RCT_TRX_ACCT_REVERSAL' 
81784                 
81785                 ELSE null
81786               END                           source_code
81787             , CASE r
81788                 WHEN 1 THEN TO_CHAR(h5.RMT_BNK_ACCOUNT_NAME)
81789                 WHEN 2 THEN TO_CHAR(h5.RMT_BANK_NAME)
81790                 WHEN 3 THEN TO_CHAR(h1.RCT_RECEIPT_NUMBER)
81791                 WHEN 4 THEN TO_CHAR(h1.RCT_DOC_SEQUENCE_VALUE)
81792                 WHEN 5 THEN TO_CHAR(h4.RCT_MTHD_NAME)
81793                 WHEN 6 THEN TO_CHAR(h1.RCT_RECEIPT_DATE)
81794                 WHEN 7 THEN TO_CHAR(h1.RCT_DOC_SEQUENCE_CATEGORY)
81795                 WHEN 8 THEN TO_CHAR(h1.RCT_DOC_SEQUENCE_ID)
81796                 WHEN 9 THEN TO_CHAR(h1.RCT_TRX_ACCT_REVERSAL)
81797                 
81798                 ELSE null
81799               END                           source_value
81800             , null              source_meaning
81801          FROM xla_events_gt     xet  
81802       , AR_CASH_RECEIPTS_H_V  h1
81803       , AR_RCT_METHOD_H_V  h4
81804       , AR_REMIT_BANK_ACCT_H_V  h5
81805              ,(select rownum r from all_objects where rownum <= 9 and owner = p_apps_owner)
81806          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
81807            AND xet.event_class_code = C_EVENT_CLASS_CODE
81808             
81809 )
81810 ;
81811 --
81812 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81813 
81814       trace
81815          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
81816          ,p_level    => C_LEVEL_STATEMENT
81817          ,p_module   => l_log_module);
81818 
81819 END IF;
81820 --
81821 
81822 
81823 
81824 --
81825 INSERT INTO xla_diag_sources  --line2
81826 (
81827         event_id
81828       , ledger_id
81829       , sla_ledger_id
81830       , description_language
81831       , object_name
81832       , object_type_code
81833       , line_number
81834       , source_application_id
81835       , source_type_code
81836       , source_code
81837       , source_value
81838       , source_meaning
81839       , created_by
81840       , creation_date
81841       , last_update_date
81842       , last_updated_by
81843       , last_update_login
81844       , program_update_date
81845       , program_application_id
81846       , program_id
81847       , request_id
81848 )
81849 SELECT  event_id
81850       , p_target_ledger_id
81851       , p_sla_ledger_id
81852       , p_language
81853       , object_name
81854       , object_type_code
81855       , line_number
81856       , source_application_id
81857       , source_type_code
81858       , source_code
81859       , SUBSTR(source_value,1,1996)
81860       , SUBSTR(source_meaning ,1,200)
81861       , xla_environment_pkg.g_Usr_Id
81862       , TRUNC(SYSDATE)
81863       , TRUNC(SYSDATE)
81864       , xla_environment_pkg.g_Usr_Id
81865       , xla_environment_pkg.g_Login_Id
81866       , TRUNC(SYSDATE)
81867       , xla_environment_pkg.g_Prog_Appl_Id
81868       , xla_environment_pkg.g_Prog_Id
81869       , xla_environment_pkg.g_Req_Id
81870   FROM (
81871        SELECT xet.event_id                  event_id
81872             , l3.line_number                 line_number
81873             , CASE r
81874                WHEN 1 THEN 'AR_DISTRIBUTIONS_L_V' 
81875                 WHEN 2 THEN 'AR_DISTRIBUTIONS_L_V' 
81876                 WHEN 3 THEN 'AR_DISTRIBUTIONS_L_V' 
81877                 WHEN 4 THEN 'AR_DISTRIBUTIONS_L_V' 
81878                 WHEN 5 THEN 'AR_DISTRIBUTIONS_L_V' 
81879                 WHEN 6 THEN 'AR_DISTRIBUTIONS_L_V' 
81880                 WHEN 7 THEN 'AR_DISTRIBUTIONS_BASE_V' 
81881                 WHEN 8 THEN 'AR_DISTRIBUTIONS_BASE_V' 
81882                 WHEN 9 THEN 'AR_DISTRIBUTIONS_BASE_V' 
81886                ELSE null
81883                 WHEN 10 THEN 'AR_DISTRIBUTIONS_L_V' 
81884                 WHEN 11 THEN 'AR_DISTRIBUTIONS_BASE_V' 
81885                 
81887               END                           object_name
81888             , CASE r
81889                 WHEN 1 THEN 'LINE' 
81890                 WHEN 2 THEN 'LINE' 
81891                 WHEN 3 THEN 'LINE' 
81892                 WHEN 4 THEN 'LINE' 
81893                 WHEN 5 THEN 'LINE' 
81894                 WHEN 6 THEN 'LINE' 
81895                 WHEN 7 THEN 'LINE' 
81896                 WHEN 8 THEN 'LINE' 
81897                 WHEN 9 THEN 'LINE' 
81898                 WHEN 10 THEN 'LINE' 
81899                 WHEN 11 THEN 'LINE' 
81900                 
81901                 ELSE null
81902               END                           object_type_code
81903             , CASE r
81904                 WHEN 1 THEN '222' 
81905                 WHEN 2 THEN '222' 
81906                 WHEN 3 THEN '222' 
81907                 WHEN 4 THEN '222' 
81908                 WHEN 5 THEN '222' 
81909                 WHEN 6 THEN '222' 
81910                 WHEN 7 THEN '222' 
81911                 WHEN 8 THEN '222' 
81912                 WHEN 9 THEN '222' 
81913                 WHEN 10 THEN '222' 
81914                 WHEN 11 THEN '222' 
81915                 
81916                 ELSE null
81917               END                           source_application_id
81918             , 'S'             source_type_code
81919             , CASE r
81920                 WHEN 1 THEN 'DIST_CODE_COMBINATION_ID' 
81921                 WHEN 2 THEN 'DIST_SOURCE_TYPE' 
81922                 WHEN 3 THEN 'DIST_LINE_ID' 
81923                 WHEN 4 THEN 'DISTRIBUTION_TYPE' 
81924                 WHEN 5 THEN 'DIST_ENT_AMT' 
81925                 WHEN 6 THEN 'DIST_CURRENCY_CODE' 
81926                 WHEN 7 THEN 'DIST_CUR_CONVERSION_RATE' 
81927                 WHEN 8 THEN 'DIST_CUR_CONVERSION_TYPE' 
81928                 WHEN 9 THEN 'DIST_TO_ACCTD_AMT' 
81929                 WHEN 10 THEN 'DIST_MFAR_ADDITIONAL_ENTRY' 
81930                 WHEN 11 THEN 'DIST_TO_CUR_CONVERSION_DATE' 
81931                 
81932                 ELSE null
81933               END                           source_code
81934             , CASE r
81935                 WHEN 1 THEN TO_CHAR(l3.DIST_CODE_COMBINATION_ID)
81936                 WHEN 2 THEN TO_CHAR(l3.DIST_SOURCE_TYPE)
81937                 WHEN 3 THEN TO_CHAR(l3.DIST_LINE_ID)
81938                 WHEN 4 THEN TO_CHAR(l3.DISTRIBUTION_TYPE)
81939                 WHEN 5 THEN TO_CHAR(l3.DIST_ENT_AMT)
81940                 WHEN 6 THEN TO_CHAR(l3.DIST_CURRENCY_CODE)
81941                 WHEN 7 THEN TO_CHAR(l2.DIST_CUR_CONVERSION_RATE)
81942                 WHEN 8 THEN TO_CHAR(l2.DIST_CUR_CONVERSION_TYPE)
81943                 WHEN 9 THEN TO_CHAR(l2.DIST_TO_ACCTD_AMT)
81944                 WHEN 10 THEN TO_CHAR(l3.DIST_MFAR_ADDITIONAL_ENTRY)
81945                 WHEN 11 THEN TO_CHAR(l2.DIST_TO_CUR_CONVERSION_DATE)
81946                 
81947                 ELSE null
81948               END                           source_value
81949             , null              source_meaning
81950          FROM  xla_events_gt     xet  
81951         , AR_DISTRIBUTIONS_BASE_V  l2
81952         , AR_DISTRIBUTIONS_L_V  l3
81953             , (select rownum r from all_objects where rownum <= 11 and owner = p_apps_owner)
81954         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
81955           AND xet.event_class_code = C_EVENT_CLASS_CODE
81956             AND l2.event_id          = xet.event_id
81957   AND l3.event_id    = l2.event_id
81958   AND l3.line_number = l2.line_number
81959 
81960 )
81961 ;
81962 --
81963 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
81964 
81965       trace
81966          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
81967          ,p_level    => C_LEVEL_STATEMENT
81968          ,p_module   => l_log_module);
81969 
81970 END IF;
81971 
81972 
81973 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
81974       trace
81975          (p_msg      => 'END of insert_sources_153'
81976          ,p_level    => C_LEVEL_PROCEDURE
81977          ,p_module   => l_log_module);
81978 END IF;
81979 EXCEPTION
81980   WHEN xla_exceptions_pkg.application_exception THEN
81981       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
81982             trace
81983                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
81984                ,p_level    => C_LEVEL_EXCEPTION
81985                ,p_module   => l_log_module);
81986       END IF;
81987       RAISE;
81988   WHEN OTHERS THEN
81989       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
81990             trace
81991                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
81992                ,p_level    => C_LEVEL_EXCEPTION
81993                ,p_module   => l_log_module);
81994        END IF;
81995        xla_exceptions_pkg.raise_message
81996            (p_location => 'XLA_00222_AAD_S_000002_PKG.insert_sources_153');
81997 END insert_sources_153;
81998 --
81999 
82000 ---------------------------------------
82001 --
82002 -- PRIVATE FUNCTION
82003 --         EventClass_153
82004 --
82005 ----------------------------------------
82006 --
82007 FUNCTION EventClass_153
82008        (p_application_id         IN NUMBER
82009        ,p_base_ledger_id         IN NUMBER
82010        ,p_target_ledger_id       IN NUMBER
82011        ,p_language               IN VARCHAR2
82012        ,p_currency_code          IN VARCHAR2
82013        ,p_sla_ledger_id          IN NUMBER
82014        ,p_pad_start_date         IN DATE
82015        ,p_pad_end_date           IN DATE
82016        ,p_primary_ledger_id      IN NUMBER)
82017 RETURN BOOLEAN IS
82018 --
82019 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'MISC_RECEIPT_ALL';
82023 l_calculate_g_l_flag     VARCHAR2(1) :='N';
82020 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'MISC_RECEIPT';
82021 
82022 l_calculate_acctd_flag   VARCHAR2(1) :='N';
82024 --
82025 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
82026 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
82027 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
82028 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
82029 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
82030 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
82031 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
82032 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
82033 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
82034 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
82035 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
82036 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
82037 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
82038 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
82039 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
82040 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
82041 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
82042 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
82043 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
82044 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
82045 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
82046 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
82047 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
82048 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
82049 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
82050 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
82051 
82052 l_event_id                             NUMBER;
82053 l_previous_event_id                    NUMBER;
82054 l_first_event_id                       NUMBER;
82055 l_last_event_id                        NUMBER;
82056 
82057 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
82058 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
82059 --
82060 --
82061 l_result                    BOOLEAN := TRUE;
82062 l_rows                      NUMBER  := 1000;
82063 l_event_type_name           VARCHAR2(80) := 'All';
82064 l_event_class_name          VARCHAR2(80) := 'Miscellaneous Receipt';
82065 l_description               VARCHAR2(4000);
82066 l_transaction_reversal      NUMBER;
82067 l_ae_header_id              NUMBER;
82068 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
82069 l_log_module                VARCHAR2(240);
82070 --
82071 l_acct_reversal_source      VARCHAR2(30);
82072 l_trx_reversal_source       VARCHAR2(30);
82073 
82074 l_continue_with_lines       BOOLEAN := TRUE;
82075 --
82076 l_acc_rev_gl_date_source    DATE;                      -- 4262811
82077 --
82078 type t_array_event_id is table of number index by binary_integer;
82079 
82080 l_rec_array_event                    t_rec_array_event;
82081 l_null_rec_array_event               t_rec_array_event;
82082 l_array_ae_header_id                 xla_number_array_type;
82083 l_actual_flag                        VARCHAR2(1) := NULL;
82084 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
82085 l_balance_type_code                  VARCHAR2(1) :=NULL;
82086 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
82087 
82088 --
82089 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
82090 --
82091 
82092 TYPE t_array_source_16 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BNK_ACCOUNT_NAME%TYPE INDEX BY BINARY_INTEGER;
82093 TYPE t_array_source_18 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BANK_NAME%TYPE INDEX BY BINARY_INTEGER;
82094 TYPE t_array_source_20 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_RECEIPT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
82095 TYPE t_array_source_21 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
82096 TYPE t_array_source_22 IS TABLE OF AR_RCT_METHOD_H_V.RCT_MTHD_NAME%TYPE INDEX BY BINARY_INTEGER;
82097 TYPE t_array_source_23 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_RECEIPT_DATE%TYPE INDEX BY BINARY_INTEGER;
82098 TYPE t_array_source_125 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
82099 TYPE t_array_source_126 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
82100 TYPE t_array_source_127 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_TRX_ACCT_REVERSAL%TYPE INDEX BY BINARY_INTEGER;
82101 
82102 TYPE t_array_source_32 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
82103 TYPE t_array_source_39 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_SOURCE_TYPE%TYPE INDEX BY BINARY_INTEGER;
82104 TYPE t_array_source_41 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
82105 TYPE t_array_source_42 IS TABLE OF AR_DISTRIBUTIONS_L_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
82106 TYPE t_array_source_43 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_ENT_AMT%TYPE INDEX BY BINARY_INTEGER;
82107 TYPE t_array_source_44 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
82108 TYPE t_array_source_46 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
82109 TYPE t_array_source_47 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
82110 TYPE t_array_source_48 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_TO_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
82111 TYPE t_array_source_99 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_MFAR_ADDITIONAL_ENTRY%TYPE INDEX BY BINARY_INTEGER;
82115 l_array_source_18              t_array_source_18;
82112 TYPE t_array_source_100 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_TO_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
82113 
82114 l_array_source_16              t_array_source_16;
82116 l_array_source_20              t_array_source_20;
82117 l_array_source_21              t_array_source_21;
82118 l_array_source_22              t_array_source_22;
82119 l_array_source_23              t_array_source_23;
82120 l_array_source_125              t_array_source_125;
82121 l_array_source_126              t_array_source_126;
82122 l_array_source_127              t_array_source_127;
82123 
82124 l_array_source_32      t_array_source_32;
82125 l_array_source_39      t_array_source_39;
82126 l_array_source_41      t_array_source_41;
82127 l_array_source_42      t_array_source_42;
82128 l_array_source_43      t_array_source_43;
82129 l_array_source_44      t_array_source_44;
82130 l_array_source_46      t_array_source_46;
82131 l_array_source_47      t_array_source_47;
82132 l_array_source_48      t_array_source_48;
82133 l_array_source_99      t_array_source_99;
82134 l_array_source_100      t_array_source_100;
82135 
82136 --
82137 CURSOR header_cur
82138 IS
82139 SELECT /*+ leading(xet) cardinality(xet,1) */
82140 -- Event Class Code: MISC_RECEIPT
82141     xet.entity_id
82142    ,xet.legal_entity_id
82143    ,xet.entity_code
82144    ,xet.transaction_number
82145    ,xet.event_id
82146    ,xet.event_class_code
82147    ,xet.event_type_code
82148    ,xet.event_number
82149    ,xet.event_date
82150    ,xet.transaction_date
82151    ,xet.reference_num_1
82152    ,xet.reference_num_2
82153    ,xet.reference_num_3
82154    ,xet.reference_num_4
82155    ,xet.reference_char_1
82156    ,xet.reference_char_2
82157    ,xet.reference_char_3
82158    ,xet.reference_char_4
82159    ,xet.reference_date_1
82160    ,xet.reference_date_2
82161    ,xet.reference_date_3
82162    ,xet.reference_date_4
82163    ,xet.event_created_by
82164    ,xet.budgetary_control_flag 
82165   , h5.RMT_BNK_ACCOUNT_NAME    source_16
82166   , h5.RMT_BANK_NAME    source_18
82167   , h1.RCT_RECEIPT_NUMBER    source_20
82168   , h1.RCT_DOC_SEQUENCE_VALUE    source_21
82169   , h4.RCT_MTHD_NAME    source_22
82170   , h1.RCT_RECEIPT_DATE    source_23
82171   , h1.RCT_DOC_SEQUENCE_CATEGORY    source_125
82172   , h1.RCT_DOC_SEQUENCE_ID    source_126
82173   , h1.RCT_TRX_ACCT_REVERSAL    source_127
82174   FROM xla_events_gt     xet 
82175   , AR_CASH_RECEIPTS_H_V  h1
82176   , AR_RCT_METHOD_H_V  h4
82177   , AR_REMIT_BANK_ACCT_H_V  h5
82178  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
82179    and xet.event_class_code = C_EVENT_CLASS_CODE
82180    and xet.event_status_code <> 'N'   AND h1.event_id (+) = xet.event_id
82181   AND h4.event_id (+) = xet.event_id
82182   AND h5.event_id (+) = xet.event_id
82183 
82184  ORDER BY event_id
82185 ;
82186 
82187 
82188 --
82189 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
82190 IS
82191 SELECT  /*+ leading(xet) cardinality(xet,1) */
82192 -- Event Class Code: MISC_RECEIPT
82193     xet.entity_id
82194    ,xet.legal_entity_id
82195    ,xet.entity_code
82196    ,xet.transaction_number
82197    ,xet.event_id
82198    ,xet.event_class_code
82199    ,xet.event_type_code
82200    ,xet.event_number
82201    ,xet.event_date
82202    ,xet.transaction_date
82203    ,xet.reference_num_1
82204    ,xet.reference_num_2
82205    ,xet.reference_num_3
82206    ,xet.reference_num_4
82207    ,xet.reference_char_1
82208    ,xet.reference_char_2
82209    ,xet.reference_char_3
82210    ,xet.reference_char_4
82211    ,xet.reference_date_1
82212    ,xet.reference_date_2
82213    ,xet.reference_date_3
82214    ,xet.reference_date_4
82215    ,xet.event_created_by
82216    ,xet.budgetary_control_flag
82217  , l2.LINE_NUMBER  
82218   , l3.DIST_CODE_COMBINATION_ID    source_32
82219   , l3.DIST_SOURCE_TYPE    source_39
82220   , l3.DIST_LINE_ID    source_41
82221   , l3.DISTRIBUTION_TYPE    source_42
82222   , l3.DIST_ENT_AMT    source_43
82223   , l3.DIST_CURRENCY_CODE    source_44
82224   , l2.DIST_CUR_CONVERSION_RATE    source_46
82225   , l2.DIST_CUR_CONVERSION_TYPE    source_47
82226   , l2.DIST_TO_ACCTD_AMT    source_48
82227   , l3.DIST_MFAR_ADDITIONAL_ENTRY    source_99
82228   , l2.DIST_TO_CUR_CONVERSION_DATE    source_100
82229   FROM xla_events_gt     xet 
82230   , AR_DISTRIBUTIONS_BASE_V  l2
82231   , AR_DISTRIBUTIONS_L_V  l3
82232  WHERE xet.event_id between x_first_event_id and x_last_event_id
82233    and xet.event_date between p_pad_start_date and p_pad_end_date
82234    and xet.event_class_code = C_EVENT_CLASS_CODE
82235    and xet.event_status_code <> 'N'   AND l2.event_id      = xet.event_id
82236   AND l3.event_id    = l2.event_id
82237   AND l3.line_number = l2.line_number
82238 ;
82239 
82240 --
82241 BEGIN
82242 IF g_log_enabled THEN
82243    l_log_module := C_DEFAULT_MODULE||'.EventClass_153';
82244 END IF;
82245 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
82246    trace
82247       (p_msg      => 'BEGIN of EventClass_153'
82248       ,p_level    => C_LEVEL_PROCEDURE
82249       ,p_module   => l_log_module);
82250 END IF;
82251 
82252 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82253    trace
82254       (p_msg      => 'p_application_id = '||p_application_id||
82255                      ' - p_base_ledger_id = '||p_base_ledger_id||
82256                      ' - p_target_ledger_id  = '||p_target_ledger_id||
82257                      ' - p_language = '||p_language||
82258                      ' - p_currency_code = '||p_currency_code||
82259                      ' - p_sla_ledger_id = '||p_sla_ledger_id
82260       ,p_level    => C_LEVEL_STATEMENT
82261       ,p_module   => l_log_module);
82265 --
82262 END IF;
82263 --
82264 -- initialze arrays
82266 g_array_event.DELETE;
82267 l_rec_array_event := l_null_rec_array_event;
82268 --
82269 --------------------------------------
82270 -- 4262811 Initialze MPA Line Number
82271 --------------------------------------
82272 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
82273 
82274 --
82275 
82276 --
82277 OPEN header_cur;
82278 --
82279 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82280    trace
82281    (p_msg      => 'SQL - FETCH header_cur'
82282    ,p_level    => C_LEVEL_STATEMENT
82283    ,p_module   => l_log_module);
82284 END IF;
82285 --
82286 LOOP
82287 FETCH header_cur BULK COLLECT INTO
82288         l_array_entity_id
82289       , l_array_legal_entity_id
82290       , l_array_entity_code
82291       , l_array_transaction_num
82292       , l_array_event_id
82293       , l_array_class_code
82294       , l_array_event_type
82295       , l_array_event_number
82296       , l_array_event_date
82297       , l_array_transaction_date
82298       , l_array_reference_num_1
82299       , l_array_reference_num_2
82300       , l_array_reference_num_3
82301       , l_array_reference_num_4
82302       , l_array_reference_char_1
82303       , l_array_reference_char_2
82304       , l_array_reference_char_3
82305       , l_array_reference_char_4
82306       , l_array_reference_date_1
82307       , l_array_reference_date_2
82308       , l_array_reference_date_3
82309       , l_array_reference_date_4
82310       , l_array_event_created_by
82311       , l_array_budgetary_control_flag 
82312       , l_array_source_16
82313       , l_array_source_18
82314       , l_array_source_20
82315       , l_array_source_21
82316       , l_array_source_22
82317       , l_array_source_23
82318       , l_array_source_125
82319       , l_array_source_126
82320       , l_array_source_127
82321       LIMIT l_rows;
82322 --
82323 IF (C_LEVEL_EVENT >= g_log_level) THEN
82324    trace
82325    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
82326    ,p_level    => C_LEVEL_EVENT
82327    ,p_module   => l_log_module);
82328 END IF;
82329 --
82330 EXIT WHEN l_array_entity_id.COUNT = 0;
82331 
82332 -- initialize arrays
82333 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
82334 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
82335 
82336 --
82337 -- Bug 4458708
82338 --
82339 XLA_AE_LINES_PKG.g_LineNumber := 0;
82340 
82341 
82342 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
82343 g_last_hdr_idx := l_array_event_id.LAST;
82344 --
82345 -- loop for the headers. Each iteration is for each header extract row
82346 -- fetched in header cursor
82347 --
82348 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
82349 
82350 --
82351 -- set event info as cache for other routines to refer event attributes
82352 --
82353 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
82354    (p_application_id           => p_application_id
82355    ,p_primary_ledger_id        => p_primary_ledger_id
82356    ,p_base_ledger_id           => p_base_ledger_id
82357    ,p_target_ledger_id         => p_target_ledger_id
82358    ,p_entity_id                => l_array_entity_id(hdr_idx)
82359    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
82360    ,p_entity_code              => l_array_entity_code(hdr_idx)
82361    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
82362    ,p_event_id                 => l_array_event_id(hdr_idx)
82363    ,p_event_class_code         => l_array_class_code(hdr_idx)
82364    ,p_event_type_code          => l_array_event_type(hdr_idx)
82365    ,p_event_number             => l_array_event_number(hdr_idx)
82366    ,p_event_date               => l_array_event_date(hdr_idx)
82367    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
82368    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
82369    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
82370    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
82371    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
82372    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
82373    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
82374    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
82375    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
82376    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
82377    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
82378    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
82379    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
82380    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
82381    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
82382 
82383 --
82384 -- set the status of entry to C_VALID (0)
82385 --
82386 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
82387 
82388 --
82389 -- initialize a row for ae header
82390 --
82391 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
82392 
82393 l_event_id := l_array_event_id(hdr_idx);
82394 
82395 --
82396 -- storing the hdr_idx for event. May be used by line cursor.
82397 --
82398 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
82399 
82400 --
82401 -- store sources from header extract. This can be improved to
82402 -- store only those sources from header extract that may be used in lines
82403 --
82404 
82405 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
82406 g_array_event(l_event_id).array_value_char('source_18') := l_array_source_18(hdr_idx);
82410 g_array_event(l_event_id).array_value_date('source_23') := l_array_source_23(hdr_idx);
82407 g_array_event(l_event_id).array_value_char('source_20') := l_array_source_20(hdr_idx);
82408 g_array_event(l_event_id).array_value_num('source_21') := l_array_source_21(hdr_idx);
82409 g_array_event(l_event_id).array_value_char('source_22') := l_array_source_22(hdr_idx);
82411 g_array_event(l_event_id).array_value_char('source_125') := l_array_source_125(hdr_idx);
82412 g_array_event(l_event_id).array_value_num('source_126') := l_array_source_126(hdr_idx);
82413 g_array_event(l_event_id).array_value_char('source_127') := l_array_source_127(hdr_idx);
82414 
82415 --
82416 -- initilaize the status of ae headers for diffrent balance types
82417 -- the status is initialised to C_NOT_CREATED (2)
82418 --
82419 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
82420 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
82421 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
82422 
82423 --
82424 -- call api to validate and store accounting attributes for header
82425 --
82426 
82427 ------------------------------------------------------------
82428 -- Accrual Reversal : to get date for Standard Source (NONE)
82429 ------------------------------------------------------------
82430 l_acc_rev_gl_date_source := NULL;
82431 
82432      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
82433       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_125');
82434      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
82435       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_126');
82436      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
82437       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_21');
82438      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
82439       l_rec_acct_attrs.array_date_value(4) := 
82440 xla_ae_sources_pkg.GetSystemSourceDate(
82441    p_source_code           => 'XLA_EVENT_DATE'
82442  , p_source_type_code      => 'Y'
82443  , p_source_application_id =>  602
82444 );
82445      l_rec_acct_attrs.array_acct_attr_code(5)   := 'TRX_ACCT_REVERSAL_OPTION';
82446       l_rec_acct_attrs.array_char_value(5) := g_array_event(l_event_id).array_value_char('source_127');
82447 
82448 
82449 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
82450 
82451 XLA_AE_HEADER_PKG.SetJeCategoryName;
82452 
82453 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
82454 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
82455 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
82456 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
82457 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
82458 
82459 
82460 --
82461 xla_ae_header_pkg.SetHdrDescription(
82462    p_description => Description_18 (
82463    p_application_id => p_application_id 
82464  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
82465  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
82466  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
82467  , p_source_21 => g_array_event(l_event_id).array_value_num('source_21')
82468  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
82469  , p_source_23 => g_array_event(l_event_id).array_value_date('source_23')
82470    )
82471 );
82472 --
82473 
82474 -- No header level analytical criteria
82475 
82476 --
82477 --accounting attribute enhancement, bug 3612931
82478 --
82479 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_127'), 1,30);
82480 
82481 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
82482    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
82483 
82484    xla_accounting_err_pkg.build_message
82485       (p_appli_s_name            => 'XLA'
82486       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
82487       ,p_token_1                 => 'ACCT_ATTR_NAME'
82488       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
82489       ,p_token_2                 => 'PRODUCT_NAME'
82490       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
82491       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
82492       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
82493       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
82494 
82495 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
82496    --
82497    -- following sets the accounting attributes needed to reverse
82498    -- accounting for a distributeion
82499    --
82500    xla_ae_lines_pkg.SetTrxReversalAttrs
82501       (p_event_id              => l_event_id
82502       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
82503       ,p_trx_reversal_source   => l_trx_reversal_source);
82504 
82505 END IF;
82506 
82507 
82508 ----------------------------------------------------------------
82509 -- 4262811 -  update the header statuses to invalid in need be
82510 ----------------------------------------------------------------
82511 --
82512 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
82513 
82514 
82515   -----------------------------------------------
82516   -- No accrual reversal for the event class/type
82517   -----------------------------------------------
82518 ----------------------------------------------------------------
82519 
82520 --
82524 
82521 -- this ends the header loop iteration for one bulk fetch
82522 --
82523 END LOOP;
82525 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
82526 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
82527 
82528 --
82529 -- insert dummy rows into lines gt table that were created due to
82530 -- transaction reversals
82531 --
82532 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
82533    l_result := XLA_AE_LINES_PKG.InsertLines;
82534 END IF;
82535 
82536 --
82537 -- reset the temp_line_num for each set of events fetched from header
82538 -- cursor rather than doing it for each new event in line cursor
82539 -- Bug 3939231
82540 --
82541 xla_ae_lines_pkg.g_temp_line_num := 0;
82542 
82543 
82544 
82545 --
82546 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
82547 --
82548 --
82549 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82550 
82551       trace
82552          (p_msg      => 'SQL - FETCH line_cur'
82553          ,p_level    => C_LEVEL_STATEMENT
82554          ,p_module   => l_log_module);
82555 
82556 END IF;
82557 --
82558 --
82559 LOOP
82560   --
82561   FETCH line_cur BULK COLLECT INTO
82562         l_array_entity_id
82563       , l_array_legal_entity_id
82564       , l_array_entity_code
82565       , l_array_transaction_num
82566       , l_array_event_id
82567       , l_array_class_code
82568       , l_array_event_type
82569       , l_array_event_number
82570       , l_array_event_date
82571       , l_array_transaction_date
82572       , l_array_reference_num_1
82573       , l_array_reference_num_2
82574       , l_array_reference_num_3
82575       , l_array_reference_num_4
82576       , l_array_reference_char_1
82577       , l_array_reference_char_2
82578       , l_array_reference_char_3
82579       , l_array_reference_char_4
82580       , l_array_reference_date_1
82581       , l_array_reference_date_2
82582       , l_array_reference_date_3
82583       , l_array_reference_date_4
82584       , l_array_event_created_by
82585       , l_array_budgetary_control_flag
82586       , l_array_extract_line_num 
82587       , l_array_source_32
82588       , l_array_source_39
82589       , l_array_source_41
82590       , l_array_source_42
82591       , l_array_source_43
82592       , l_array_source_44
82593       , l_array_source_46
82594       , l_array_source_47
82595       , l_array_source_48
82596       , l_array_source_99
82597       , l_array_source_100
82598       LIMIT l_rows;
82599 
82600   --
82601   IF (C_LEVEL_EVENT >= g_log_level) THEN
82602             trace
82603                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
82604                ,p_level    => C_LEVEL_EVENT
82605                ,p_module   => l_log_module);
82606   END IF;
82607   --
82608   EXIT WHEN l_array_entity_id.count = 0;
82609 
82610   XLA_AE_LINES_PKG.g_rec_lines := null;
82611 
82612 --
82613 -- Bug 4458708
82614 --
82615 XLA_AE_LINES_PKG.g_LineNumber := 0;
82616 --
82617 --
82618 
82619 FOR Idx IN 1..l_array_event_id.count LOOP
82620    --
82621    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
82622    --
82623    l_event_id := l_array_event_id(idx);  -- 5648433
82624 
82625    --
82626    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
82627    --
82628 
82629    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
82630              (g_array_event(l_event_id).array_value_num('header_index'))
82631          ,'N'
82632          ) <> 'Y'
82633    THEN
82634       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82635          trace
82636             (p_msg      => 'Trancaction revesal option is not Y '
82637             ,p_level    => C_LEVEL_STATEMENT
82638             ,p_module   => l_log_module);
82639       END IF;
82640 
82641 --
82642 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
82643 --
82644 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
82645 --
82646 -- set event info as cache for other routines to refer event attributes
82647 --
82648 
82649 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
82650    l_previous_event_id := l_event_id;
82651 
82652    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
82653       (p_application_id           => p_application_id
82654       ,p_primary_ledger_id        => p_primary_ledger_id
82655       ,p_base_ledger_id           => p_base_ledger_id
82656       ,p_target_ledger_id         => p_target_ledger_id
82657       ,p_entity_id                => l_array_entity_id(Idx)
82658       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
82659       ,p_entity_code              => l_array_entity_code(Idx)
82660       ,p_transaction_num          => l_array_transaction_num(Idx)
82661       ,p_event_id                 => l_array_event_id(Idx)
82662       ,p_event_class_code         => l_array_class_code(Idx)
82663       ,p_event_type_code          => l_array_event_type(Idx)
82664       ,p_event_number             => l_array_event_number(Idx)
82665       ,p_event_date               => l_array_event_date(Idx)
82666       ,p_transaction_date         => l_array_transaction_date(Idx)
82667       ,p_reference_num_1          => l_array_reference_num_1(Idx)
82668       ,p_reference_num_2          => l_array_reference_num_2(Idx)
82669       ,p_reference_num_3          => l_array_reference_num_3(Idx)
82670       ,p_reference_num_4          => l_array_reference_num_4(Idx)
82671       ,p_reference_char_1         => l_array_reference_char_1(Idx)
82672       ,p_reference_char_2         => l_array_reference_char_2(Idx)
82676       ,p_reference_date_2         => l_array_reference_date_2(Idx)
82673       ,p_reference_char_3         => l_array_reference_char_3(Idx)
82674       ,p_reference_char_4         => l_array_reference_char_4(Idx)
82675       ,p_reference_date_1         => l_array_reference_date_1(Idx)
82677       ,p_reference_date_3         => l_array_reference_date_3(Idx)
82678       ,p_reference_date_4         => l_array_reference_date_4(Idx)
82679       ,p_event_created_by         => l_array_event_created_by(Idx)
82680       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
82681        --
82682 END IF;
82683 
82684 
82685 
82686 --
82687 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
82688 
82689 l_acct_reversal_source := SUBSTR(NULL, 1,30);
82690 
82691 IF l_continue_with_lines THEN
82692    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
82693       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
82694 
82695       xla_accounting_err_pkg.build_message
82696          (p_appli_s_name            => 'XLA'
82697          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
82698          ,p_token_1                 => 'LINE_NUMBER'
82699          ,p_value_1                 => l_array_extract_line_num(Idx)
82700          ,p_token_2                 => 'PRODUCT_NAME'
82701          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
82702          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
82703          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
82704          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
82705 
82706    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
82707       --
82708       -- following sets the accounting attributes needed to reverse
82709       -- accounting for a distributeion
82710       --
82711 
82712       --
82713       -- 5217187
82714       --
82715       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
82716       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
82717                                        g_array_event(l_event_id).array_value_num('header_index'));
82718       --
82719       --
82720 
82721       -- No reversal code generated
82722 
82723       xla_ae_lines_pkg.SetAcctReversalAttrs
82724          (p_event_id             => l_event_id
82725          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
82726          ,p_calculate_acctd_flag => l_calculate_acctd_flag
82727          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
82728    END IF;
82729 
82730    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
82731        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
82732 
82733 --
82734 AcctLineType_105 (
82735  p_application_id  => p_application_id
82736  ,p_event_id     => l_event_id
82737  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82738  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82739  ,p_actual_flag => l_actual_flag
82740  ,p_balance_type_code => l_balance_type_code
82741  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82742  
82743  , p_source_32 => l_array_source_32(Idx)
82744  , p_source_39 => l_array_source_39(Idx)
82745  , p_source_41 => l_array_source_41(Idx)
82746  , p_source_42 => l_array_source_42(Idx)
82747  , p_source_43 => l_array_source_43(Idx)
82748  , p_source_44 => l_array_source_44(Idx)
82749  , p_source_46 => l_array_source_46(Idx)
82750  , p_source_47 => l_array_source_47(Idx)
82751  , p_source_48 => l_array_source_48(Idx)
82752  , p_source_99 => l_array_source_99(Idx)
82753  , p_source_100 => l_array_source_100(Idx)
82754  );
82755 If(l_balance_type_code = 'A') THEN
82756   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82757 END IF;
82758 
82759 --
82760 
82761 
82762 --
82763 AcctLineType_106 (
82764  p_application_id  => p_application_id
82765  ,p_event_id     => l_event_id
82766  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82767  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82768  ,p_actual_flag => l_actual_flag
82769  ,p_balance_type_code => l_balance_type_code
82770  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82771  
82772  , p_source_32 => l_array_source_32(Idx)
82773  , p_source_39 => l_array_source_39(Idx)
82774  , p_source_41 => l_array_source_41(Idx)
82775  , p_source_42 => l_array_source_42(Idx)
82776  , p_source_43 => l_array_source_43(Idx)
82777  , p_source_44 => l_array_source_44(Idx)
82778  , p_source_46 => l_array_source_46(Idx)
82779  , p_source_47 => l_array_source_47(Idx)
82780  , p_source_48 => l_array_source_48(Idx)
82781  , p_source_99 => l_array_source_99(Idx)
82782  , p_source_100 => l_array_source_100(Idx)
82783  );
82784 If(l_balance_type_code = 'A') THEN
82785   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82786 END IF;
82787 
82788 --
82789 
82790 
82791 --
82792 AcctLineType_107 (
82793  p_application_id  => p_application_id
82794  ,p_event_id     => l_event_id
82795  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82796  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82797  ,p_actual_flag => l_actual_flag
82798  ,p_balance_type_code => l_balance_type_code
82799  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82800  
82801  , p_source_32 => l_array_source_32(Idx)
82802  , p_source_39 => l_array_source_39(Idx)
82803  , p_source_41 => l_array_source_41(Idx)
82804  , p_source_42 => l_array_source_42(Idx)
82805  , p_source_43 => l_array_source_43(Idx)
82806  , p_source_44 => l_array_source_44(Idx)
82807  , p_source_46 => l_array_source_46(Idx)
82808  , p_source_47 => l_array_source_47(Idx)
82809  , p_source_48 => l_array_source_48(Idx)
82810  , p_source_99 => l_array_source_99(Idx)
82811  , p_source_100 => l_array_source_100(Idx)
82812  );
82816 
82813 If(l_balance_type_code = 'A') THEN
82814   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82815 END IF;
82817 --
82818 
82819 
82820 --
82821 AcctLineType_108 (
82822  p_application_id  => p_application_id
82823  ,p_event_id     => l_event_id
82824  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82825  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82826  ,p_actual_flag => l_actual_flag
82827  ,p_balance_type_code => l_balance_type_code
82828  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82829  
82830  , p_source_32 => l_array_source_32(Idx)
82831  , p_source_39 => l_array_source_39(Idx)
82832  , p_source_41 => l_array_source_41(Idx)
82833  , p_source_42 => l_array_source_42(Idx)
82834  , p_source_43 => l_array_source_43(Idx)
82835  , p_source_44 => l_array_source_44(Idx)
82836  , p_source_46 => l_array_source_46(Idx)
82837  , p_source_47 => l_array_source_47(Idx)
82838  , p_source_48 => l_array_source_48(Idx)
82839  , p_source_99 => l_array_source_99(Idx)
82840  , p_source_100 => l_array_source_100(Idx)
82841  );
82842 If(l_balance_type_code = 'A') THEN
82843   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82844 END IF;
82845 
82846 --
82847 
82848 
82849 --
82850 AcctLineType_109 (
82851  p_application_id  => p_application_id
82852  ,p_event_id     => l_event_id
82853  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82854  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82855  ,p_actual_flag => l_actual_flag
82856  ,p_balance_type_code => l_balance_type_code
82857  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82858  
82859  , p_source_32 => l_array_source_32(Idx)
82860  , p_source_39 => l_array_source_39(Idx)
82861  , p_source_41 => l_array_source_41(Idx)
82862  , p_source_42 => l_array_source_42(Idx)
82863  , p_source_43 => l_array_source_43(Idx)
82864  , p_source_44 => l_array_source_44(Idx)
82865  , p_source_46 => l_array_source_46(Idx)
82866  , p_source_47 => l_array_source_47(Idx)
82867  , p_source_48 => l_array_source_48(Idx)
82868  , p_source_99 => l_array_source_99(Idx)
82869  , p_source_100 => l_array_source_100(Idx)
82870  );
82871 If(l_balance_type_code = 'A') THEN
82872   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82873 END IF;
82874 
82875 --
82876 
82877 
82878 --
82879 AcctLineType_110 (
82880  p_application_id  => p_application_id
82881  ,p_event_id     => l_event_id
82882  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82883  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82884  ,p_actual_flag => l_actual_flag
82885  ,p_balance_type_code => l_balance_type_code
82886  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82887  
82888  , p_source_32 => l_array_source_32(Idx)
82889  , p_source_39 => l_array_source_39(Idx)
82890  , p_source_41 => l_array_source_41(Idx)
82891  , p_source_42 => l_array_source_42(Idx)
82892  , p_source_43 => l_array_source_43(Idx)
82893  , p_source_44 => l_array_source_44(Idx)
82894  , p_source_46 => l_array_source_46(Idx)
82895  , p_source_47 => l_array_source_47(Idx)
82896  , p_source_48 => l_array_source_48(Idx)
82897  , p_source_99 => l_array_source_99(Idx)
82898  , p_source_100 => l_array_source_100(Idx)
82899  );
82900 If(l_balance_type_code = 'A') THEN
82901   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82902 END IF;
82903 
82904 --
82905 
82906 
82907 --
82908 AcctLineType_111 (
82909  p_application_id  => p_application_id
82910  ,p_event_id     => l_event_id
82911  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82912  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82913  ,p_actual_flag => l_actual_flag
82914  ,p_balance_type_code => l_balance_type_code
82915  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82916  
82917  , p_source_32 => l_array_source_32(Idx)
82918  , p_source_39 => l_array_source_39(Idx)
82919  , p_source_41 => l_array_source_41(Idx)
82920  , p_source_42 => l_array_source_42(Idx)
82921  , p_source_43 => l_array_source_43(Idx)
82922  , p_source_44 => l_array_source_44(Idx)
82923  , p_source_46 => l_array_source_46(Idx)
82924  , p_source_47 => l_array_source_47(Idx)
82925  , p_source_48 => l_array_source_48(Idx)
82926  , p_source_99 => l_array_source_99(Idx)
82927  , p_source_100 => l_array_source_100(Idx)
82928  );
82929 If(l_balance_type_code = 'A') THEN
82930   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82931 END IF;
82932 
82933 --
82934 
82935 
82936 --
82937 AcctLineType_112 (
82938  p_application_id  => p_application_id
82939  ,p_event_id     => l_event_id
82940  ,p_calculate_acctd_flag => l_calculate_acctd_flag
82941  ,p_calculate_g_l_flag => l_calculate_g_l_flag
82942  ,p_actual_flag => l_actual_flag
82943  ,p_balance_type_code => l_balance_type_code
82944  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
82945  
82946  , p_source_32 => l_array_source_32(Idx)
82947  , p_source_39 => l_array_source_39(Idx)
82948  , p_source_41 => l_array_source_41(Idx)
82949  , p_source_42 => l_array_source_42(Idx)
82950  , p_source_43 => l_array_source_43(Idx)
82951  , p_source_44 => l_array_source_44(Idx)
82952  , p_source_46 => l_array_source_46(Idx)
82953  , p_source_47 => l_array_source_47(Idx)
82954  , p_source_48 => l_array_source_48(Idx)
82955  , p_source_99 => l_array_source_99(Idx)
82956  , p_source_100 => l_array_source_100(Idx)
82957  );
82958 If(l_balance_type_code = 'A') THEN
82959   l_actual_gain_loss_ref := l_gain_or_loss_ref;
82960 END IF;
82961 
82962 --
82963 
82964       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
82965       -- or secondary ledger that has different currency with primary
82966       -- or alc that is calculated by sla
82967       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
82971 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
82968             (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'))
82969 
82970 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
82972           AND (l_actual_flag = 'A')) THEN
82973         XLA_AE_LINES_PKG.CreateGainOrLossLines(
82974           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
82975          ,p_application_id   => p_application_id
82976          ,p_amb_context_code => 'DEFAULT'
82977          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
82978          ,p_event_class_code => C_EVENT_CLASS_CODE
82979          ,p_event_type_code  => C_EVENT_TYPE_CODE
82980          
82981          ,p_gain_ccid        => -1
82982          ,p_loss_ccid        => -1
82983 
82984          ,p_actual_flag      => l_actual_flag
82985          ,p_enc_flag         => null
82986          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
82987          ,p_enc_g_l_ref      => null
82988          );
82989       END IF;
82990    END IF;
82991 END IF;
82992 
82993    ELSE
82994       --
82995       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
82996       --
82997       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
82998          trace
82999             (p_msg      => 'Trancaction revesal option is Y'
83000             ,p_level    => C_LEVEL_STATEMENT
83001             ,p_module   => l_log_module);
83002       END IF;
83003    END IF;
83004 
83005 END LOOP;
83006 l_result := XLA_AE_LINES_PKG.InsertLines ;
83007 end loop;
83008 close line_cur;
83009 
83010 
83011 --
83012 -- insert headers into xla_ae_headers_gt table
83013 --
83014 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
83015 
83016 -- insert into errors table here.
83017 
83018 END LOOP;
83019 
83020 --
83021 -- 4865292
83022 --
83023 -- Compare g_hdr_extract_count with event count in
83024 -- CreateHeadersAndLines.
83025 --
83026 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
83027 
83028 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83029    trace (p_msg     => '# rows extracted from header extract objects '
83030                     || ' (running total): '
83031                     || g_hdr_extract_count
83032          ,p_level   => C_LEVEL_STATEMENT
83033          ,p_module  => l_log_module);
83034 END IF;
83035 
83036 CLOSE header_cur;
83037 --
83038 
83039 --
83040 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83041    trace
83042       (p_msg      => 'END of EventClass_153'
83043       ,p_level    => C_LEVEL_PROCEDURE
83044       ,p_module   => l_log_module);
83045 END IF;
83046 --
83047 RETURN l_result;
83048 EXCEPTION
83049 WHEN xla_exceptions_pkg.application_exception THEN
83050    
83051 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
83052 
83053    
83054 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
83055 
83056    RAISE;
83057 
83058 WHEN NO_DATA_FOUND THEN
83059 
83060 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
83061 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
83062 
83063 FOR header_record IN header_cur
83064 LOOP
83065     l_array_header_events(header_record.event_id) := header_record.event_id;
83066 END LOOP;
83067 
83068 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
83069 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
83070 
83071 fnd_file.put_line(fnd_file.LOG, '                    ');
83072 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
83073 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
83074 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
83075 
83076 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
83077 LOOP
83078 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
83079 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
83080         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
83081 	END IF;
83082 END LOOP;
83083 
83084 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
83085 fnd_file.put_line(fnd_file.LOG, '                    ');
83086 
83087 
83088 xla_exceptions_pkg.raise_message
83089       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_153');
83090 
83091 
83092 WHEN OTHERS THEN
83093    xla_exceptions_pkg.raise_message
83094       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_153');
83095 END EventClass_153;
83096 --
83097 
83098 ---------------------------------------
83099 --
83100 -- PRIVATE PROCEDURE
83101 --         insert_sources_154
83102 --
83103 ----------------------------------------
83104 --
83105 PROCEDURE insert_sources_154(
83106                                 p_target_ledger_id       IN NUMBER
83107                               , p_language               IN VARCHAR2
83108                               , p_sla_ledger_id          IN NUMBER
83109                               , p_pad_start_date         IN DATE
83110                               , p_pad_end_date           IN DATE
83111                          )
83112 IS
83113 
83114 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RECEIPT_ALL';
83115 C_EVENT_CLASS_CODE   CONSTANT  VARCHAR2(30) := 'RECEIPT';
83116 p_apps_owner                   VARCHAR2(30);
83117 l_log_module                   VARCHAR2(240);
83118 BEGIN
83122 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83119 IF g_log_enabled THEN
83120       l_log_module := C_DEFAULT_MODULE||'.insert_sources_154';
83121 END IF;
83123 
83124       trace
83125          (p_msg      => 'BEGIN of insert_sources_154'
83126          ,p_level    => C_LEVEL_PROCEDURE
83127          ,p_module   => l_log_module);
83128 
83129 END IF;
83130 
83131 -- select APPS owner
83132 SELECT oracle_username
83133   INTO p_apps_owner
83134   FROM fnd_oracle_userid
83135  WHERE read_only_flag = 'U'
83136 ;
83137 
83138 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83139       trace
83140          (p_msg      => 'p_target_ledger_id = '||p_target_ledger_id||
83141                         ' - p_language = '||p_language||
83142                         ' - p_sla_ledger_id  = '||p_sla_ledger_id ||
83143                         ' - p_pad_start_date = '||TO_CHAR(p_pad_start_date)||
83144                         ' - p_pad_end_date = '||TO_CHAR(p_pad_end_date)||
83145                         ' - p_apps_owner = '||TO_CHAR(p_apps_owner)
83146          ,p_level    => C_LEVEL_STATEMENT
83147          ,p_module   => l_log_module);
83148 END IF;
83149 
83150 
83151 --
83152 INSERT INTO xla_diag_sources --hdr2
83153 (
83154         event_id
83155       , ledger_id
83156       , sla_ledger_id
83157       , description_language
83158       , object_name
83159       , object_type_code
83160       , line_number
83161       , source_application_id
83162       , source_type_code
83163       , source_code
83164       , source_value
83165       , source_meaning
83166       , created_by
83167       , creation_date
83168       , last_update_date
83169       , last_updated_by
83170       , last_update_login
83171       , program_update_date
83172       , program_application_id
83173       , program_id
83174       , request_id
83175 )
83176 SELECT
83177         event_id
83178       , p_target_ledger_id
83179       , p_sla_ledger_id
83180       , p_language
83181       , object_name
83182       , object_type_code
83183       , line_number
83184       , source_application_id
83185       , source_type_code
83186       , source_code
83187       , SUBSTR(source_value ,1,1996)
83188       , SUBSTR(source_meaning ,1,200)
83189       , xla_environment_pkg.g_Usr_Id
83190       , TRUNC(SYSDATE)
83191       , TRUNC(SYSDATE)
83192       , xla_environment_pkg.g_Usr_Id
83193       , xla_environment_pkg.g_Login_Id
83194       , TRUNC(SYSDATE)
83195       , xla_environment_pkg.g_Prog_Appl_Id
83196       , xla_environment_pkg.g_Prog_Id
83197       , xla_environment_pkg.g_Req_Id
83198   FROM (
83199        SELECT xet.event_id                  event_id
83200             , 0                          line_number
83201             , CASE r
83202                WHEN 1 THEN 'AR_REMIT_BANK_ACCT_H_V' 
83203                 WHEN 2 THEN 'AR_REMIT_BANK_ACCT_H_V' 
83204                 WHEN 3 THEN 'AR_CASH_RECEIPTS_H_V' 
83205                 WHEN 4 THEN 'AR_CASH_RECEIPTS_H_V' 
83206                 WHEN 5 THEN 'AR_RCT_METHOD_H_V' 
83207                 WHEN 6 THEN 'AR_CASH_RECEIPTS_H_V' 
83208                 WHEN 7 THEN 'AR_SYSTEM_PARAM_H_V' 
83209                 WHEN 8 THEN 'AR_SYSTEM_PARAM_H_V' 
83210                 WHEN 9 THEN 'AR_REMIT_BANK_ACCT_H_V' 
83211                 WHEN 10 THEN 'AR_REMIT_BANK_ACCT_H_V' 
83212                 WHEN 11 THEN 'AR_CASH_RECEIPTS_H_V' 
83213                 WHEN 12 THEN 'AR_CASH_RECEIPTS_H_V' 
83214                 WHEN 13 THEN 'AR_RCT_SITE_USES_H_V' 
83215                 WHEN 14 THEN 'AR_CASH_RECEIPTS_H_V' 
83216                 WHEN 15 THEN 'AR_CASH_RECEIPTS_H_V' 
83217                 WHEN 16 THEN 'AR_CASH_RECEIPTS_H_V' 
83218                 WHEN 17 THEN 'AR_CASH_RECEIPTS_H_V' 
83219                 WHEN 18 THEN 'AR_CASH_RECEIPTS_H_V' 
83220                 WHEN 19 THEN 'AR_CASH_RECEIPTS_H_V' 
83221                 
83222                ELSE null
83223               END                           object_name
83224             , CASE r
83225                 WHEN 1 THEN 'HEADER' 
83226                 WHEN 2 THEN 'HEADER' 
83227                 WHEN 3 THEN 'HEADER' 
83228                 WHEN 4 THEN 'HEADER' 
83229                 WHEN 5 THEN 'HEADER' 
83230                 WHEN 6 THEN 'HEADER' 
83231                 WHEN 7 THEN 'HEADER' 
83232                 WHEN 8 THEN 'HEADER' 
83233                 WHEN 9 THEN 'HEADER' 
83234                 WHEN 10 THEN 'HEADER' 
83235                 WHEN 11 THEN 'HEADER' 
83236                 WHEN 12 THEN 'HEADER' 
83237                 WHEN 13 THEN 'HEADER' 
83238                 WHEN 14 THEN 'HEADER' 
83239                 WHEN 15 THEN 'HEADER' 
83240                 WHEN 16 THEN 'HEADER' 
83241                 WHEN 17 THEN 'HEADER' 
83242                 WHEN 18 THEN 'HEADER' 
83243                 WHEN 19 THEN 'HEADER' 
83244                 
83245                 ELSE null
83246               END                           object_type_code
83247             , CASE r
83248                 WHEN 1 THEN '222' 
83249                 WHEN 2 THEN '222' 
83250                 WHEN 3 THEN '222' 
83251                 WHEN 4 THEN '222' 
83252                 WHEN 5 THEN '222' 
83253                 WHEN 6 THEN '222' 
83254                 WHEN 7 THEN '222' 
83255                 WHEN 8 THEN '222' 
83256                 WHEN 9 THEN '222' 
83257                 WHEN 10 THEN '222' 
83258                 WHEN 11 THEN '222' 
83259                 WHEN 12 THEN '222' 
83260                 WHEN 13 THEN '222' 
83261                 WHEN 14 THEN '222' 
83262                 WHEN 15 THEN '222' 
83263                 WHEN 16 THEN '222' 
83264                 WHEN 17 THEN '222' 
83265                 WHEN 18 THEN '222' 
83266                 WHEN 19 THEN '222' 
83270             , 'S'             source_type_code
83267                 
83268                 ELSE null
83269               END                           source_application_id
83271             , CASE r
83272                 WHEN 1 THEN 'RMT_BNK_ACCOUNT_NAME' 
83273                 WHEN 2 THEN 'RMT_BANK_NAME' 
83274                 WHEN 3 THEN 'RCT_RECEIPT_NUMBER' 
83275                 WHEN 4 THEN 'RCT_DOC_SEQUENCE_VALUE' 
83276                 WHEN 5 THEN 'RCT_MTHD_NAME' 
83277                 WHEN 6 THEN 'RCT_RECEIPT_DATE' 
83278                 WHEN 7 THEN 'CODE_COMBINATION_ID_GAIN' 
83279                 WHEN 8 THEN 'CODE_COMBINATION_ID_LOSS' 
83280                 WHEN 9 THEN 'RMT_BNK_UNAPPLIED_CCID' 
83281                 WHEN 10 THEN 'RMT_BNK_UNIDENTIFIED_CCID' 
83282                 WHEN 11 THEN 'RCT_XLA_APPLIED_TO_APP_ID' 
83283                 WHEN 12 THEN 'RCT_PAY_FROM_CUSTOMER' 
83284                 WHEN 13 THEN 'RCT_SITE_SITE_USE_ID' 
83285                 WHEN 14 THEN 'RCT_APP_STATUS' 
83286                 WHEN 15 THEN 'RCT_PREV_PAY_FROM_CUSTOMER' 
83287                 WHEN 16 THEN 'RCT_PREV_CUSTOMER_SITE_USE_ID' 
83288                 WHEN 17 THEN 'RCT_DOC_SEQUENCE_CATEGORY' 
83289                 WHEN 18 THEN 'RCT_DOC_SEQUENCE_ID' 
83290                 WHEN 19 THEN 'RCT_TRX_ACCT_REVERSAL' 
83291                 
83292                 ELSE null
83293               END                           source_code
83294             , CASE r
83295                 WHEN 1 THEN TO_CHAR(h8.RMT_BNK_ACCOUNT_NAME)
83296                 WHEN 2 THEN TO_CHAR(h8.RMT_BANK_NAME)
83297                 WHEN 3 THEN TO_CHAR(h1.RCT_RECEIPT_NUMBER)
83298                 WHEN 4 THEN TO_CHAR(h1.RCT_DOC_SEQUENCE_VALUE)
83299                 WHEN 5 THEN TO_CHAR(h5.RCT_MTHD_NAME)
83300                 WHEN 6 THEN TO_CHAR(h1.RCT_RECEIPT_DATE)
83301                 WHEN 7 THEN TO_CHAR(h9.CODE_COMBINATION_ID_GAIN)
83302                 WHEN 8 THEN TO_CHAR(h9.CODE_COMBINATION_ID_LOSS)
83303                 WHEN 9 THEN TO_CHAR(h8.RMT_BNK_UNAPPLIED_CCID)
83304                 WHEN 10 THEN TO_CHAR(h8.RMT_BNK_UNIDENTIFIED_CCID)
83305                 WHEN 11 THEN TO_CHAR(h1.RCT_XLA_APPLIED_TO_APP_ID)
83306                 WHEN 12 THEN TO_CHAR(h1.RCT_PAY_FROM_CUSTOMER)
83307                 WHEN 13 THEN TO_CHAR(h6.RCT_SITE_SITE_USE_ID)
83308                 WHEN 14 THEN TO_CHAR(h1.RCT_APP_STATUS)
83309                 WHEN 15 THEN TO_CHAR(h1.RCT_PREV_PAY_FROM_CUSTOMER)
83310                 WHEN 16 THEN TO_CHAR(h1.RCT_PREV_CUSTOMER_SITE_USE_ID)
83311                 WHEN 17 THEN TO_CHAR(h1.RCT_DOC_SEQUENCE_CATEGORY)
83312                 WHEN 18 THEN TO_CHAR(h1.RCT_DOC_SEQUENCE_ID)
83313                 WHEN 19 THEN TO_CHAR(h1.RCT_TRX_ACCT_REVERSAL)
83314                 
83315                 ELSE null
83316               END                           source_value
83317             , null              source_meaning
83318          FROM xla_events_gt     xet  
83319       , AR_CASH_RECEIPTS_H_V  h1
83320       , AR_RCT_METHOD_H_V  h5
83321       , AR_RCT_SITE_USES_H_V  h6
83322       , AR_REMIT_BANK_ACCT_H_V  h8
83323       , AR_SYSTEM_PARAM_H_V  h9
83324              ,(select rownum r from all_objects where rownum <= 19 and owner = p_apps_owner)
83325          WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
83326            AND xet.event_class_code = C_EVENT_CLASS_CODE
83327               AND h1.event_id = xet.event_id
83328   AND h5.event_id (+) = h1.event_id
83329   AND h6.event_id (+) = h1.event_id
83330   AND h8.event_id (+) = h1.event_id
83331   AND h9.event_id (+) = h1.event_id
83332 
83333 )
83334 ;
83335 --
83336 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83337 
83338       trace
83339          (p_msg      => 'number of header sources inserted = '||SQL%ROWCOUNT
83340          ,p_level    => C_LEVEL_STATEMENT
83341          ,p_module   => l_log_module);
83342 
83343 END IF;
83344 --
83345 
83346 
83347 
83348 --
83349 INSERT INTO xla_diag_sources  --line2
83350 (
83351         event_id
83352       , ledger_id
83353       , sla_ledger_id
83354       , description_language
83355       , object_name
83356       , object_type_code
83357       , line_number
83358       , source_application_id
83359       , source_type_code
83360       , source_code
83361       , source_value
83362       , source_meaning
83363       , created_by
83364       , creation_date
83365       , last_update_date
83366       , last_updated_by
83367       , last_update_login
83368       , program_update_date
83369       , program_application_id
83370       , program_id
83371       , request_id
83372 )
83373 SELECT  event_id
83374       , p_target_ledger_id
83375       , p_sla_ledger_id
83376       , p_language
83377       , object_name
83378       , object_type_code
83379       , line_number
83380       , source_application_id
83381       , source_type_code
83382       , source_code
83383       , SUBSTR(source_value,1,1996)
83384       , SUBSTR(source_meaning ,1,200)
83385       , xla_environment_pkg.g_Usr_Id
83386       , TRUNC(SYSDATE)
83387       , TRUNC(SYSDATE)
83388       , xla_environment_pkg.g_Usr_Id
83389       , xla_environment_pkg.g_Login_Id
83390       , TRUNC(SYSDATE)
83391       , xla_environment_pkg.g_Prog_Appl_Id
83392       , xla_environment_pkg.g_Prog_Id
83393       , xla_environment_pkg.g_Req_Id
83394   FROM (
83395        SELECT xet.event_id                  event_id
83396             , l4.line_number                 line_number
83397             , CASE r
83398                WHEN 1 THEN 'AR_TRANSACTIONS_S_V' 
83399                 WHEN 2 THEN 'AR_TRANSACTIONS_S_V' 
83400                 WHEN 3 THEN 'AR_TRANSACTIONS_S_V' 
83401                 WHEN 4 THEN 'AR_DISTRIBUTIONS_L_V' 
83402                 WHEN 5 THEN 'AR_DISTRIBUTIONS_L_V' 
83403                 WHEN 6 THEN 'AR_DISTRIBUTIONS_L_V' 
83407                 WHEN 10 THEN 'AR_DISTRIBUTIONS_L_V' 
83404                 WHEN 7 THEN 'AR_RECEIVABLES_TRX_ACT_S_V' 
83405                 WHEN 8 THEN 'AR_DISTRIBUTIONS_L_V' 
83406                 WHEN 9 THEN 'AR_DISTRIBUTIONS_L_V' 
83408                 WHEN 11 THEN 'AR_DISTRIBUTIONS_L_V' 
83409                 WHEN 12 THEN 'AR_DISTRIBUTIONS_BASE_V' 
83410                 WHEN 13 THEN 'AR_DISTRIBUTIONS_BASE_V' 
83411                 WHEN 14 THEN 'AR_DISTRIBUTIONS_BASE_V' 
83412                 WHEN 15 THEN 'AR_DISTRIBUTIONS_BASE_V' 
83413                 WHEN 16 THEN 'AR_DISTRIBUTIONS_BASE_V' 
83414                 WHEN 17 THEN 'AR_CUST_TRX_LINES_L_V' 
83415                 WHEN 18 THEN 'AR_CUST_TRX_LINES_L_V' 
83416                 WHEN 19 THEN 'AR_DISTRIBUTIONS_L_V' 
83417                 WHEN 20 THEN 'AR_DISTRIBUTIONS_BASE_V' 
83418                 WHEN 21 THEN 'AR_TRANSACTIONS_S_V' 
83419                 WHEN 22 THEN 'AR_TRANSACTIONS_S_V' 
83420                 WHEN 23 THEN 'AR_DISTRIBUTIONS_L_V' 
83421                 WHEN 24 THEN 'AR_DISTRIBUTIONS_L_V' 
83422                 WHEN 25 THEN 'AR_DISTRIBUTIONS_L_V' 
83423                 WHEN 26 THEN 'AR_DISTRIBUTIONS_L_V' 
83424                 WHEN 27 THEN 'AR_DISTRIBUTIONS_L_V' 
83425                 WHEN 28 THEN 'AR_DISTRIBUTIONS_BASE_V' 
83426                 WHEN 29 THEN 'AR_DISTRIBUTIONS_BASE_V' 
83427                 WHEN 30 THEN 'AR_DISTRIBUTIONS_L_V' 
83428                 
83429                ELSE null
83430               END                           object_name
83431             , CASE r
83432                 WHEN 1 THEN 'LINE' 
83433                 WHEN 2 THEN 'LINE' 
83434                 WHEN 3 THEN 'LINE' 
83435                 WHEN 4 THEN 'LINE' 
83436                 WHEN 5 THEN 'LINE' 
83437                 WHEN 6 THEN 'LINE' 
83438                 WHEN 7 THEN 'LINE' 
83439                 WHEN 8 THEN 'LINE' 
83440                 WHEN 9 THEN 'LINE' 
83441                 WHEN 10 THEN 'LINE' 
83442                 WHEN 11 THEN 'LINE' 
83443                 WHEN 12 THEN 'LINE' 
83444                 WHEN 13 THEN 'LINE' 
83445                 WHEN 14 THEN 'LINE' 
83446                 WHEN 15 THEN 'LINE' 
83447                 WHEN 16 THEN 'LINE' 
83448                 WHEN 17 THEN 'LINE' 
83449                 WHEN 18 THEN 'LINE' 
83450                 WHEN 19 THEN 'LINE' 
83451                 WHEN 20 THEN 'LINE' 
83452                 WHEN 21 THEN 'LINE' 
83453                 WHEN 22 THEN 'LINE' 
83454                 WHEN 23 THEN 'LINE' 
83455                 WHEN 24 THEN 'LINE' 
83456                 WHEN 25 THEN 'LINE' 
83457                 WHEN 26 THEN 'LINE' 
83458                 WHEN 27 THEN 'LINE' 
83459                 WHEN 28 THEN 'LINE' 
83460                 WHEN 29 THEN 'LINE' 
83461                 WHEN 30 THEN 'LINE' 
83462                 
83463                 ELSE null
83464               END                           object_type_code
83465             , CASE r
83466                 WHEN 1 THEN '222' 
83467                 WHEN 2 THEN '222' 
83468                 WHEN 3 THEN '222' 
83469                 WHEN 4 THEN '222' 
83470                 WHEN 5 THEN '222' 
83471                 WHEN 6 THEN '222' 
83472                 WHEN 7 THEN '222' 
83473                 WHEN 8 THEN '222' 
83474                 WHEN 9 THEN '222' 
83475                 WHEN 10 THEN '222' 
83476                 WHEN 11 THEN '222' 
83477                 WHEN 12 THEN '222' 
83478                 WHEN 13 THEN '222' 
83479                 WHEN 14 THEN '222' 
83480                 WHEN 15 THEN '222' 
83481                 WHEN 16 THEN '222' 
83482                 WHEN 17 THEN '222' 
83483                 WHEN 18 THEN '222' 
83484                 WHEN 19 THEN '222' 
83485                 WHEN 20 THEN '222' 
83486                 WHEN 21 THEN '222' 
83487                 WHEN 22 THEN '222' 
83488                 WHEN 23 THEN '222' 
83489                 WHEN 24 THEN '222' 
83490                 WHEN 25 THEN '222' 
83491                 WHEN 26 THEN '222' 
83492                 WHEN 27 THEN '222' 
83493                 WHEN 28 THEN '222' 
83494                 WHEN 29 THEN '222' 
83495                 WHEN 30 THEN '222' 
83496                 
83497                 ELSE null
83498               END                           source_application_id
83499             , 'S'             source_type_code
83500             , CASE r
83501                 WHEN 1 THEN 'TRX_TYPE_NAME' 
83502                 WHEN 2 THEN 'TRX_NUMBER' 
83503                 WHEN 3 THEN 'TRX_DOC_SEQUENCE_VALUE' 
83504                 WHEN 4 THEN 'DIST_CODE_COMBINATION_ID' 
83505                 WHEN 5 THEN 'GAIN_LOSS_CCID' 
83506                 WHEN 6 THEN 'DIST_SOURCE_TYPE' 
83507                 WHEN 7 THEN 'REC_ACT_TYPE' 
83508                 WHEN 8 THEN 'DIST_LINE_ID' 
83509                 WHEN 9 THEN 'DISTRIBUTION_TYPE' 
83510                 WHEN 10 THEN 'DIST_ENT_AMT' 
83511                 WHEN 11 THEN 'DIST_CURRENCY_CODE' 
83512                 WHEN 12 THEN 'DIST_CUR_CONVERSION_DATE' 
83513                 WHEN 13 THEN 'DIST_CUR_CONVERSION_RATE' 
83514                 WHEN 14 THEN 'DIST_CUR_CONVERSION_TYPE' 
83515                 WHEN 15 THEN 'DIST_TO_ACCTD_AMT' 
83516                 WHEN 16 THEN 'DIST_ACCTD_AMT' 
83517                 WHEN 17 THEN 'TRX_LINE_DIST_ID' 
83518                 WHEN 18 THEN 'TRX_DISTRIBUTION_TYPE' 
83519                 WHEN 19 THEN 'DIST_MFAR_ADDITIONAL_ENTRY' 
83520                 WHEN 20 THEN 'DIST_TO_CUR_CONVERSION_DATE' 
83521                 WHEN 21 THEN 'TRX_ENTITY_CODE' 
83522                 WHEN 22 THEN 'TRX_CUSTOMER_TRX_ID' 
83523                 WHEN 23 THEN 'DIST_ENT_AMT_FROM' 
83524                 WHEN 24 THEN 'DIST_CURRENCY_CODE_FROM' 
83525                 WHEN 25 THEN 'DIST_PARTY_ID' 
83526                 WHEN 26 THEN 'DIST_PARTY_SITE_ID' 
83527                 WHEN 27 THEN 'DIST_PARTY_TYPE' 
83531                 
83528                 WHEN 28 THEN 'DIST_TO_CUR_CONVERSION_TYPE' 
83529                 WHEN 29 THEN 'DIST_TO_CUR_CONVERSION_RATE' 
83530                 WHEN 30 THEN 'DIST_SOURCE_TABLE' 
83532                 ELSE null
83533               END                           source_code
83534             , CASE r
83535                 WHEN 1 THEN TO_CHAR(l10.TRX_TYPE_NAME)
83536                 WHEN 2 THEN TO_CHAR(l10.TRX_NUMBER)
83537                 WHEN 3 THEN TO_CHAR(l10.TRX_DOC_SEQUENCE_VALUE)
83538                 WHEN 4 THEN TO_CHAR(l4.DIST_CODE_COMBINATION_ID)
83539                 WHEN 5 THEN TO_CHAR(l4.GAIN_LOSS_CCID)
83540                 WHEN 6 THEN TO_CHAR(l4.DIST_SOURCE_TYPE)
83541                 WHEN 7 THEN TO_CHAR(l7.REC_ACT_TYPE)
83542                 WHEN 8 THEN TO_CHAR(l4.DIST_LINE_ID)
83543                 WHEN 9 THEN TO_CHAR(l4.DISTRIBUTION_TYPE)
83544                 WHEN 10 THEN TO_CHAR(l4.DIST_ENT_AMT)
83545                 WHEN 11 THEN TO_CHAR(l4.DIST_CURRENCY_CODE)
83546                 WHEN 12 THEN TO_CHAR(l3.DIST_CUR_CONVERSION_DATE)
83547                 WHEN 13 THEN TO_CHAR(l3.DIST_CUR_CONVERSION_RATE)
83548                 WHEN 14 THEN TO_CHAR(l3.DIST_CUR_CONVERSION_TYPE)
83549                 WHEN 15 THEN TO_CHAR(l3.DIST_TO_ACCTD_AMT)
83550                 WHEN 16 THEN TO_CHAR(l3.DIST_ACCTD_AMT)
83551                 WHEN 17 THEN TO_CHAR(l2.TRX_LINE_DIST_ID)
83552                 WHEN 18 THEN TO_CHAR(l2.TRX_DISTRIBUTION_TYPE)
83553                 WHEN 19 THEN TO_CHAR(l4.DIST_MFAR_ADDITIONAL_ENTRY)
83554                 WHEN 20 THEN TO_CHAR(l3.DIST_TO_CUR_CONVERSION_DATE)
83555                 WHEN 21 THEN TO_CHAR(l10.TRX_ENTITY_CODE)
83556                 WHEN 22 THEN TO_CHAR(l10.TRX_CUSTOMER_TRX_ID)
83557                 WHEN 23 THEN TO_CHAR(l4.DIST_ENT_AMT_FROM)
83558                 WHEN 24 THEN TO_CHAR(l4.DIST_CURRENCY_CODE_FROM)
83559                 WHEN 25 THEN TO_CHAR(l4.DIST_PARTY_ID)
83560                 WHEN 26 THEN TO_CHAR(l4.DIST_PARTY_SITE_ID)
83561                 WHEN 27 THEN TO_CHAR(l4.DIST_PARTY_TYPE)
83562                 WHEN 28 THEN TO_CHAR(l3.DIST_TO_CUR_CONVERSION_TYPE)
83563                 WHEN 29 THEN TO_CHAR(l3.DIST_TO_CUR_CONVERSION_RATE)
83564                 WHEN 30 THEN TO_CHAR(l4.DIST_SOURCE_TABLE)
83565                 
83566                 ELSE null
83567               END                           source_value
83568             , null              source_meaning
83569          FROM  xla_events_gt     xet  
83570         , AR_CUST_TRX_LINES_L_V  l2
83571         , AR_DISTRIBUTIONS_BASE_V  l3
83572         , AR_DISTRIBUTIONS_L_V  l4
83573         , AR_RECEIVABLES_TRX_ACT_S_V  l7
83574         , AR_TRANSACTIONS_S_V  l10
83575             , (select rownum r from all_objects where rownum <= 30 and owner = p_apps_owner)
83576         WHERE xet.event_date between p_pad_start_date AND p_pad_end_date
83577           AND xet.event_class_code = C_EVENT_CLASS_CODE
83578             AND l3.event_id          = xet.event_id
83579   AND l2.event_id (+)    = l3.event_id
83580   AND l2.line_number (+) = l3.line_number
83581   AND l4.event_id    = l3.event_id
83582   AND l4.line_number = l3.line_number
83583   AND l7.event_id (+)    = l3.event_id
83584   AND l7.line_number (+) = l3.line_number
83585   AND l10.event_id (+)    = l3.event_id
83586   AND l10.line_number (+) = l3.line_number
83587 
83588 )
83589 ;
83590 --
83591 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83592 
83593       trace
83594          (p_msg      => 'number of line sources inserted = '||SQL%ROWCOUNT
83595          ,p_level    => C_LEVEL_STATEMENT
83596          ,p_module   => l_log_module);
83597 
83598 END IF;
83599 
83600 
83601 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83602       trace
83603          (p_msg      => 'END of insert_sources_154'
83604          ,p_level    => C_LEVEL_PROCEDURE
83605          ,p_module   => l_log_module);
83606 END IF;
83607 EXCEPTION
83608   WHEN xla_exceptions_pkg.application_exception THEN
83609       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
83610             trace
83611                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
83612                ,p_level    => C_LEVEL_EXCEPTION
83613                ,p_module   => l_log_module);
83614       END IF;
83615       RAISE;
83616   WHEN OTHERS THEN
83617       IF (C_LEVEL_EXCEPTION >= g_log_level) THEN
83618             trace
83619                (p_msg      => 'ERROR: XLA_CMP_COMPILER_ERROR = '||sqlerrm
83620                ,p_level    => C_LEVEL_EXCEPTION
83621                ,p_module   => l_log_module);
83622        END IF;
83623        xla_exceptions_pkg.raise_message
83624            (p_location => 'XLA_00222_AAD_S_000002_PKG.insert_sources_154');
83625 END insert_sources_154;
83626 --
83627 
83628 ---------------------------------------
83629 --
83630 -- PRIVATE FUNCTION
83631 --         EventClass_154
83632 --
83633 ----------------------------------------
83634 --
83635 FUNCTION EventClass_154
83636        (p_application_id         IN NUMBER
83637        ,p_base_ledger_id         IN NUMBER
83638        ,p_target_ledger_id       IN NUMBER
83639        ,p_language               IN VARCHAR2
83640        ,p_currency_code          IN VARCHAR2
83641        ,p_sla_ledger_id          IN NUMBER
83642        ,p_pad_start_date         IN DATE
83643        ,p_pad_end_date           IN DATE
83644        ,p_primary_ledger_id      IN NUMBER)
83645 RETURN BOOLEAN IS
83646 --
83647 C_EVENT_TYPE_CODE    CONSTANT  VARCHAR2(30)  := 'RECEIPT_ALL';
83648 C_EVENT_CLASS_CODE    CONSTANT  VARCHAR2(30) := 'RECEIPT';
83649 
83650 l_calculate_acctd_flag   VARCHAR2(1) :='N';
83651 l_calculate_g_l_flag     VARCHAR2(1) :='Y';
83652 --
83653 l_array_legal_entity_id                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83654 l_array_entity_id                      XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83655 l_array_entity_code                    XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83659 l_array_event_type                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83656 l_array_transaction_num                XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83657 l_array_event_id                       XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83658 l_array_class_code                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83660 l_array_event_number                   XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83661 l_array_event_date                     XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83662 l_array_transaction_date               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83663 l_array_reference_num_1                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83664 l_array_reference_num_2                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83665 l_array_reference_num_3                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83666 l_array_reference_num_4                XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;
83667 l_array_reference_char_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83668 l_array_reference_char_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83669 l_array_reference_char_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83670 l_array_reference_char_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V240L;
83671 l_array_reference_date_1               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83672 l_array_reference_date_2               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83673 l_array_reference_date_3               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83674 l_array_reference_date_4               XLA_AE_JOURNAL_ENTRY_PKG.t_array_Date;
83675 l_array_event_created_by               XLA_AE_JOURNAL_ENTRY_PKG.t_array_V100L;
83676 l_array_budgetary_control_flag         XLA_AE_JOURNAL_ENTRY_PKG.t_array_V30L;
83677 l_array_header_events                  XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
83678 l_array_duplicate_checker              XLA_AE_JOURNAL_ENTRY_PKG.t_array_Num;  --added
83679 
83680 l_event_id                             NUMBER;
83681 l_previous_event_id                    NUMBER;
83682 l_first_event_id                       NUMBER;
83683 l_last_event_id                        NUMBER;
83684 
83685 l_rec_acct_attrs                       XLA_AE_HEADER_PKG.t_rec_acct_attrs;
83686 l_rec_rev_acct_attrs                   XLA_AE_LINES_PKG.t_rec_acct_attrs;
83687 --
83688 --
83689 l_result                    BOOLEAN := TRUE;
83690 l_rows                      NUMBER  := 1000;
83691 l_event_type_name           VARCHAR2(80) := 'All';
83692 l_event_class_name          VARCHAR2(80) := 'Receipt';
83693 l_description               VARCHAR2(4000);
83694 l_transaction_reversal      NUMBER;
83695 l_ae_header_id              NUMBER;
83696 l_array_extract_line_num    xla_ae_journal_entry_pkg.t_array_Num;
83697 l_log_module                VARCHAR2(240);
83698 --
83699 l_acct_reversal_source      VARCHAR2(30);
83700 l_trx_reversal_source       VARCHAR2(30);
83701 
83702 l_continue_with_lines       BOOLEAN := TRUE;
83703 --
83704 l_acc_rev_gl_date_source    DATE;                      -- 4262811
83705 --
83706 type t_array_event_id is table of number index by binary_integer;
83707 
83708 l_rec_array_event                    t_rec_array_event;
83709 l_null_rec_array_event               t_rec_array_event;
83710 l_array_ae_header_id                 xla_number_array_type;
83711 l_actual_flag                        VARCHAR2(1) := NULL;
83712 l_actual_gain_loss_ref               VARCHAR2(30) := '#####';
83713 l_balance_type_code                  VARCHAR2(1) :=NULL;
83714 l_gain_or_loss_ref                   VARCHAR2(30) :=NULL;
83715 
83716 --
83717 TYPE t_array_lookup_meaning IS TABLE OF fnd_lookup_values.meaning%TYPE INDEX BY BINARY_INTEGER;
83718 --
83719 
83720 TYPE t_array_source_16 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BNK_ACCOUNT_NAME%TYPE INDEX BY BINARY_INTEGER;
83721 TYPE t_array_source_18 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BANK_NAME%TYPE INDEX BY BINARY_INTEGER;
83722 TYPE t_array_source_20 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_RECEIPT_NUMBER%TYPE INDEX BY BINARY_INTEGER;
83723 TYPE t_array_source_21 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
83724 TYPE t_array_source_22 IS TABLE OF AR_RCT_METHOD_H_V.RCT_MTHD_NAME%TYPE INDEX BY BINARY_INTEGER;
83725 TYPE t_array_source_23 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_RECEIPT_DATE%TYPE INDEX BY BINARY_INTEGER;
83726 TYPE t_array_source_34 IS TABLE OF AR_SYSTEM_PARAM_H_V.CODE_COMBINATION_ID_GAIN%TYPE INDEX BY BINARY_INTEGER;
83727 TYPE t_array_source_35 IS TABLE OF AR_SYSTEM_PARAM_H_V.CODE_COMBINATION_ID_LOSS%TYPE INDEX BY BINARY_INTEGER;
83728 TYPE t_array_source_36 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BNK_UNAPPLIED_CCID%TYPE INDEX BY BINARY_INTEGER;
83729 TYPE t_array_source_37 IS TABLE OF AR_REMIT_BANK_ACCT_H_V.RMT_BNK_UNIDENTIFIED_CCID%TYPE INDEX BY BINARY_INTEGER;
83730 TYPE t_array_source_101 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_XLA_APPLIED_TO_APP_ID%TYPE INDEX BY BINARY_INTEGER;
83731 TYPE t_array_source_112 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_PAY_FROM_CUSTOMER%TYPE INDEX BY BINARY_INTEGER;
83732 TYPE t_array_source_113 IS TABLE OF AR_RCT_SITE_USES_H_V.RCT_SITE_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
83733 TYPE t_array_source_114 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_APP_STATUS%TYPE INDEX BY BINARY_INTEGER;
83734 TYPE t_array_source_115 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_PREV_PAY_FROM_CUSTOMER%TYPE INDEX BY BINARY_INTEGER;
83735 TYPE t_array_source_116 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_PREV_CUSTOMER_SITE_USE_ID%TYPE INDEX BY BINARY_INTEGER;
83736 TYPE t_array_source_125 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_DOC_SEQUENCE_CATEGORY%TYPE INDEX BY BINARY_INTEGER;
83737 TYPE t_array_source_126 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_DOC_SEQUENCE_ID%TYPE INDEX BY BINARY_INTEGER;
83738 TYPE t_array_source_127 IS TABLE OF AR_CASH_RECEIPTS_H_V.RCT_TRX_ACCT_REVERSAL%TYPE INDEX BY BINARY_INTEGER;
83739 
83740 TYPE t_array_source_3 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_TYPE_NAME%TYPE INDEX BY BINARY_INTEGER;
83741 TYPE t_array_source_4 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_NUMBER%TYPE INDEX BY BINARY_INTEGER;
83742 TYPE t_array_source_6 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_DOC_SEQUENCE_VALUE%TYPE INDEX BY BINARY_INTEGER;
83743 TYPE t_array_source_32 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CODE_COMBINATION_ID%TYPE INDEX BY BINARY_INTEGER;
83747 TYPE t_array_source_41 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_LINE_ID%TYPE INDEX BY BINARY_INTEGER;
83744 TYPE t_array_source_33 IS TABLE OF AR_DISTRIBUTIONS_L_V.GAIN_LOSS_CCID%TYPE INDEX BY BINARY_INTEGER;
83745 TYPE t_array_source_39 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_SOURCE_TYPE%TYPE INDEX BY BINARY_INTEGER;
83746 TYPE t_array_source_40 IS TABLE OF AR_RECEIVABLES_TRX_ACT_S_V.REC_ACT_TYPE%TYPE INDEX BY BINARY_INTEGER;
83748 TYPE t_array_source_42 IS TABLE OF AR_DISTRIBUTIONS_L_V.DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
83749 TYPE t_array_source_43 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_ENT_AMT%TYPE INDEX BY BINARY_INTEGER;
83750 TYPE t_array_source_44 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CURRENCY_CODE%TYPE INDEX BY BINARY_INTEGER;
83751 TYPE t_array_source_45 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
83752 TYPE t_array_source_46 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
83753 TYPE t_array_source_47 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
83754 TYPE t_array_source_48 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_TO_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
83755 TYPE t_array_source_52 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_ACCTD_AMT%TYPE INDEX BY BINARY_INTEGER;
83756 TYPE t_array_source_56 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_LINE_DIST_ID%TYPE INDEX BY BINARY_INTEGER;
83757 TYPE t_array_source_57 IS TABLE OF AR_CUST_TRX_LINES_L_V.TRX_DISTRIBUTION_TYPE%TYPE INDEX BY BINARY_INTEGER;
83758 TYPE t_array_source_99 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_MFAR_ADDITIONAL_ENTRY%TYPE INDEX BY BINARY_INTEGER;
83759 TYPE t_array_source_100 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_TO_CUR_CONVERSION_DATE%TYPE INDEX BY BINARY_INTEGER;
83760 TYPE t_array_source_102 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_ENTITY_CODE%TYPE INDEX BY BINARY_INTEGER;
83761 TYPE t_array_source_103 IS TABLE OF AR_TRANSACTIONS_S_V.TRX_CUSTOMER_TRX_ID%TYPE INDEX BY BINARY_INTEGER;
83762 TYPE t_array_source_104 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_ENT_AMT_FROM%TYPE INDEX BY BINARY_INTEGER;
83763 TYPE t_array_source_105 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_CURRENCY_CODE_FROM%TYPE INDEX BY BINARY_INTEGER;
83764 TYPE t_array_source_106 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_PARTY_ID%TYPE INDEX BY BINARY_INTEGER;
83765 TYPE t_array_source_107 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_PARTY_SITE_ID%TYPE INDEX BY BINARY_INTEGER;
83766 TYPE t_array_source_108 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_PARTY_TYPE%TYPE INDEX BY BINARY_INTEGER;
83767 TYPE t_array_source_109 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_TO_CUR_CONVERSION_TYPE%TYPE INDEX BY BINARY_INTEGER;
83768 TYPE t_array_source_110 IS TABLE OF AR_DISTRIBUTIONS_BASE_V.DIST_TO_CUR_CONVERSION_RATE%TYPE INDEX BY BINARY_INTEGER;
83769 TYPE t_array_source_111 IS TABLE OF AR_DISTRIBUTIONS_L_V.DIST_SOURCE_TABLE%TYPE INDEX BY BINARY_INTEGER;
83770 
83771 l_array_source_16              t_array_source_16;
83772 l_array_source_18              t_array_source_18;
83773 l_array_source_20              t_array_source_20;
83774 l_array_source_21              t_array_source_21;
83775 l_array_source_22              t_array_source_22;
83776 l_array_source_23              t_array_source_23;
83777 l_array_source_34              t_array_source_34;
83778 l_array_source_35              t_array_source_35;
83779 l_array_source_36              t_array_source_36;
83780 l_array_source_37              t_array_source_37;
83781 l_array_source_101              t_array_source_101;
83782 l_array_source_112              t_array_source_112;
83783 l_array_source_113              t_array_source_113;
83784 l_array_source_114              t_array_source_114;
83785 l_array_source_115              t_array_source_115;
83786 l_array_source_116              t_array_source_116;
83787 l_array_source_125              t_array_source_125;
83788 l_array_source_126              t_array_source_126;
83789 l_array_source_127              t_array_source_127;
83790 
83791 l_array_source_3      t_array_source_3;
83792 l_array_source_4      t_array_source_4;
83793 l_array_source_6      t_array_source_6;
83794 l_array_source_32      t_array_source_32;
83795 l_array_source_33      t_array_source_33;
83796 l_array_source_39      t_array_source_39;
83797 l_array_source_40      t_array_source_40;
83798 l_array_source_41      t_array_source_41;
83799 l_array_source_42      t_array_source_42;
83800 l_array_source_43      t_array_source_43;
83801 l_array_source_44      t_array_source_44;
83802 l_array_source_45      t_array_source_45;
83803 l_array_source_46      t_array_source_46;
83804 l_array_source_47      t_array_source_47;
83805 l_array_source_48      t_array_source_48;
83806 l_array_source_52      t_array_source_52;
83807 l_array_source_56      t_array_source_56;
83808 l_array_source_57      t_array_source_57;
83809 l_array_source_99      t_array_source_99;
83810 l_array_source_100      t_array_source_100;
83811 l_array_source_102      t_array_source_102;
83812 l_array_source_103      t_array_source_103;
83813 l_array_source_104      t_array_source_104;
83814 l_array_source_105      t_array_source_105;
83815 l_array_source_106      t_array_source_106;
83816 l_array_source_107      t_array_source_107;
83817 l_array_source_108      t_array_source_108;
83818 l_array_source_109      t_array_source_109;
83819 l_array_source_110      t_array_source_110;
83820 l_array_source_111      t_array_source_111;
83821 
83822 --
83823 CURSOR header_cur
83824 IS
83825 SELECT /*+ leading(xet) cardinality(xet,1) */
83826 -- Event Class Code: RECEIPT
83827     xet.entity_id
83828    ,xet.legal_entity_id
83829    ,xet.entity_code
83830    ,xet.transaction_number
83831    ,xet.event_id
83832    ,xet.event_class_code
83833    ,xet.event_type_code
83834    ,xet.event_number
83835    ,xet.event_date
83836    ,xet.transaction_date
83837    ,xet.reference_num_1
83838    ,xet.reference_num_2
83839    ,xet.reference_num_3
83840    ,xet.reference_num_4
83841    ,xet.reference_char_1
83842    ,xet.reference_char_2
83843    ,xet.reference_char_3
83844    ,xet.reference_char_4
83845    ,xet.reference_date_1
83846    ,xet.reference_date_2
83847    ,xet.reference_date_3
83851   , h8.RMT_BNK_ACCOUNT_NAME    source_16
83848    ,xet.reference_date_4
83849    ,xet.event_created_by
83850    ,xet.budgetary_control_flag 
83852   , h8.RMT_BANK_NAME    source_18
83853   , h1.RCT_RECEIPT_NUMBER    source_20
83854   , h1.RCT_DOC_SEQUENCE_VALUE    source_21
83855   , h5.RCT_MTHD_NAME    source_22
83856   , h1.RCT_RECEIPT_DATE    source_23
83857   , h9.CODE_COMBINATION_ID_GAIN    source_34
83858   , h9.CODE_COMBINATION_ID_LOSS    source_35
83859   , h8.RMT_BNK_UNAPPLIED_CCID    source_36
83860   , h8.RMT_BNK_UNIDENTIFIED_CCID    source_37
83861   , h1.RCT_XLA_APPLIED_TO_APP_ID    source_101
83862   , h1.RCT_PAY_FROM_CUSTOMER    source_112
83863   , h6.RCT_SITE_SITE_USE_ID    source_113
83864   , h1.RCT_APP_STATUS    source_114
83865   , h1.RCT_PREV_PAY_FROM_CUSTOMER    source_115
83866   , h1.RCT_PREV_CUSTOMER_SITE_USE_ID    source_116
83867   , h1.RCT_DOC_SEQUENCE_CATEGORY    source_125
83868   , h1.RCT_DOC_SEQUENCE_ID    source_126
83869   , h1.RCT_TRX_ACCT_REVERSAL    source_127
83870   FROM xla_events_gt     xet 
83871   , AR_CASH_RECEIPTS_H_V  h1
83872   , AR_RCT_METHOD_H_V  h5
83873   , AR_RCT_SITE_USES_H_V  h6
83874   , AR_REMIT_BANK_ACCT_H_V  h8
83875   , AR_SYSTEM_PARAM_H_V  h9
83876  WHERE xet.event_date between p_pad_start_date and p_pad_end_date
83877    and xet.event_class_code = C_EVENT_CLASS_CODE
83878    and xet.event_status_code <> 'N'  AND h1.event_id = xet.event_id
83879   AND h5.event_id (+) = h1.event_id
83880   AND h6.event_id (+) = h1.event_id
83881   AND h8.event_id (+) = h1.event_id
83882   AND h9.event_id (+) = h1.event_id
83883 
83884  ORDER BY event_id
83885 ;
83886 
83887 
83888 --
83889 CURSOR line_cur (x_first_event_id    in number, x_last_event_id    in number)
83890 IS
83891 SELECT  /*+ leading(xet) cardinality(xet,1) */
83892 -- Event Class Code: RECEIPT
83893     xet.entity_id
83894    ,xet.legal_entity_id
83895    ,xet.entity_code
83896    ,xet.transaction_number
83897    ,xet.event_id
83898    ,xet.event_class_code
83899    ,xet.event_type_code
83900    ,xet.event_number
83901    ,xet.event_date
83902    ,xet.transaction_date
83903    ,xet.reference_num_1
83904    ,xet.reference_num_2
83905    ,xet.reference_num_3
83906    ,xet.reference_num_4
83907    ,xet.reference_char_1
83908    ,xet.reference_char_2
83909    ,xet.reference_char_3
83910    ,xet.reference_char_4
83911    ,xet.reference_date_1
83912    ,xet.reference_date_2
83913    ,xet.reference_date_3
83914    ,xet.reference_date_4
83915    ,xet.event_created_by
83916    ,xet.budgetary_control_flag
83917  , l3.LINE_NUMBER  
83918   , l10.TRX_TYPE_NAME    source_3
83919   , l10.TRX_NUMBER    source_4
83920   , l10.TRX_DOC_SEQUENCE_VALUE    source_6
83921   , l4.DIST_CODE_COMBINATION_ID    source_32
83922   , l4.GAIN_LOSS_CCID    source_33
83923   , l4.DIST_SOURCE_TYPE    source_39
83924   , l7.REC_ACT_TYPE    source_40
83925   , l4.DIST_LINE_ID    source_41
83926   , l4.DISTRIBUTION_TYPE    source_42
83927   , l4.DIST_ENT_AMT    source_43
83928   , l4.DIST_CURRENCY_CODE    source_44
83929   , l3.DIST_CUR_CONVERSION_DATE    source_45
83930   , l3.DIST_CUR_CONVERSION_RATE    source_46
83931   , l3.DIST_CUR_CONVERSION_TYPE    source_47
83932   , l3.DIST_TO_ACCTD_AMT    source_48
83933   , l3.DIST_ACCTD_AMT    source_52
83934   , l2.TRX_LINE_DIST_ID    source_56
83935   , l2.TRX_DISTRIBUTION_TYPE    source_57
83936   , l4.DIST_MFAR_ADDITIONAL_ENTRY    source_99
83937   , l3.DIST_TO_CUR_CONVERSION_DATE    source_100
83938   , l10.TRX_ENTITY_CODE    source_102
83939   , l10.TRX_CUSTOMER_TRX_ID    source_103
83940   , l4.DIST_ENT_AMT_FROM    source_104
83941   , l4.DIST_CURRENCY_CODE_FROM    source_105
83942   , l4.DIST_PARTY_ID    source_106
83943   , l4.DIST_PARTY_SITE_ID    source_107
83944   , l4.DIST_PARTY_TYPE    source_108
83945   , l3.DIST_TO_CUR_CONVERSION_TYPE    source_109
83946   , l3.DIST_TO_CUR_CONVERSION_RATE    source_110
83947   , l4.DIST_SOURCE_TABLE    source_111
83948   FROM xla_events_gt     xet 
83949   , AR_CUST_TRX_LINES_L_V  l2
83950   , AR_DISTRIBUTIONS_BASE_V  l3
83951   , AR_DISTRIBUTIONS_L_V  l4
83952   , AR_RECEIVABLES_TRX_ACT_S_V  l7
83953   , AR_TRANSACTIONS_S_V  l10
83954  WHERE xet.event_id between x_first_event_id and x_last_event_id
83955    and xet.event_date between p_pad_start_date and p_pad_end_date
83956    and xet.event_class_code = C_EVENT_CLASS_CODE
83957    and xet.event_status_code <> 'N'   AND l3.event_id      = xet.event_id
83958   AND l2.event_id (+)    = l3.event_id
83959   AND l2.line_number (+) = l3.line_number
83960   AND l4.event_id    = l3.event_id
83961   AND l4.line_number = l3.line_number
83962   AND l7.event_id (+)    = l3.event_id
83963   AND l7.line_number (+) = l3.line_number
83964   AND l10.event_id (+)    = l3.event_id
83965   AND l10.line_number (+) = l3.line_number
83966 ;
83967 
83968 --
83969 BEGIN
83970 IF g_log_enabled THEN
83971    l_log_module := C_DEFAULT_MODULE||'.EventClass_154';
83972 END IF;
83973 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
83974    trace
83975       (p_msg      => 'BEGIN of EventClass_154'
83976       ,p_level    => C_LEVEL_PROCEDURE
83977       ,p_module   => l_log_module);
83978 END IF;
83979 
83980 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
83981    trace
83982       (p_msg      => 'p_application_id = '||p_application_id||
83983                      ' - p_base_ledger_id = '||p_base_ledger_id||
83984                      ' - p_target_ledger_id  = '||p_target_ledger_id||
83985                      ' - p_language = '||p_language||
83986                      ' - p_currency_code = '||p_currency_code||
83987                      ' - p_sla_ledger_id = '||p_sla_ledger_id
83988       ,p_level    => C_LEVEL_STATEMENT
83989       ,p_module   => l_log_module);
83990 END IF;
83991 --
83992 -- initialze arrays
83993 --
83997 --------------------------------------
83994 g_array_event.DELETE;
83995 l_rec_array_event := l_null_rec_array_event;
83996 --
83998 -- 4262811 Initialze MPA Line Number
83999 --------------------------------------
84000 XLA_AE_HEADER_PKG.g_mpa_line_num := 0;
84001 
84002 --
84003 
84004 --
84005 OPEN header_cur;
84006 --
84007 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84008    trace
84009    (p_msg      => 'SQL - FETCH header_cur'
84010    ,p_level    => C_LEVEL_STATEMENT
84011    ,p_module   => l_log_module);
84012 END IF;
84013 --
84014 LOOP
84015 FETCH header_cur BULK COLLECT INTO
84016         l_array_entity_id
84017       , l_array_legal_entity_id
84018       , l_array_entity_code
84019       , l_array_transaction_num
84020       , l_array_event_id
84021       , l_array_class_code
84022       , l_array_event_type
84023       , l_array_event_number
84024       , l_array_event_date
84025       , l_array_transaction_date
84026       , l_array_reference_num_1
84027       , l_array_reference_num_2
84028       , l_array_reference_num_3
84029       , l_array_reference_num_4
84030       , l_array_reference_char_1
84031       , l_array_reference_char_2
84032       , l_array_reference_char_3
84033       , l_array_reference_char_4
84034       , l_array_reference_date_1
84035       , l_array_reference_date_2
84036       , l_array_reference_date_3
84037       , l_array_reference_date_4
84038       , l_array_event_created_by
84039       , l_array_budgetary_control_flag 
84040       , l_array_source_16
84041       , l_array_source_18
84042       , l_array_source_20
84043       , l_array_source_21
84044       , l_array_source_22
84045       , l_array_source_23
84046       , l_array_source_34
84047       , l_array_source_35
84048       , l_array_source_36
84049       , l_array_source_37
84050       , l_array_source_101
84051       , l_array_source_112
84052       , l_array_source_113
84053       , l_array_source_114
84054       , l_array_source_115
84055       , l_array_source_116
84056       , l_array_source_125
84057       , l_array_source_126
84058       , l_array_source_127
84059       LIMIT l_rows;
84060 --
84061 IF (C_LEVEL_EVENT >= g_log_level) THEN
84062    trace
84063    (p_msg      => '# rows extracted from header extract objects = '||TO_CHAR(header_cur%ROWCOUNT)
84064    ,p_level    => C_LEVEL_EVENT
84065    ,p_module   => l_log_module);
84066 END IF;
84067 --
84068 EXIT WHEN l_array_entity_id.COUNT = 0;
84069 
84070 -- initialize arrays
84071 XLA_AE_HEADER_PKG.g_rec_header_new        := NULL;
84072 XLA_AE_LINES_PKG.g_rec_lines              := NULL;
84073 
84074 --
84075 -- Bug 4458708
84076 --
84077 XLA_AE_LINES_PKG.g_LineNumber := 0;
84078 
84079 
84080 -- 4262811 - when creating Accrual Reversal or MPA, use g_last_hdr_idx to increment for next header id
84081 g_last_hdr_idx := l_array_event_id.LAST;
84082 --
84083 -- loop for the headers. Each iteration is for each header extract row
84084 -- fetched in header cursor
84085 --
84086 FOR hdr_idx IN l_array_event_id.FIRST .. l_array_event_id.LAST LOOP
84087 
84088 --
84089 -- set event info as cache for other routines to refer event attributes
84090 --
84091 XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
84092    (p_application_id           => p_application_id
84093    ,p_primary_ledger_id        => p_primary_ledger_id
84094    ,p_base_ledger_id           => p_base_ledger_id
84095    ,p_target_ledger_id         => p_target_ledger_id
84096    ,p_entity_id                => l_array_entity_id(hdr_idx)
84097    ,p_legal_entity_id          => l_array_legal_entity_id(hdr_idx)
84098    ,p_entity_code              => l_array_entity_code(hdr_idx)
84099    ,p_transaction_num          => l_array_transaction_num(hdr_idx)
84100    ,p_event_id                 => l_array_event_id(hdr_idx)
84101    ,p_event_class_code         => l_array_class_code(hdr_idx)
84102    ,p_event_type_code          => l_array_event_type(hdr_idx)
84103    ,p_event_number             => l_array_event_number(hdr_idx)
84104    ,p_event_date               => l_array_event_date(hdr_idx)
84105    ,p_transaction_date         => l_array_transaction_date(hdr_idx)
84106    ,p_reference_num_1          => l_array_reference_num_1(hdr_idx)
84107    ,p_reference_num_2          => l_array_reference_num_2(hdr_idx)
84108    ,p_reference_num_3          => l_array_reference_num_3(hdr_idx)
84109    ,p_reference_num_4          => l_array_reference_num_4(hdr_idx)
84110    ,p_reference_char_1         => l_array_reference_char_1(hdr_idx)
84111    ,p_reference_char_2         => l_array_reference_char_2(hdr_idx)
84112    ,p_reference_char_3         => l_array_reference_char_3(hdr_idx)
84113    ,p_reference_char_4         => l_array_reference_char_4(hdr_idx)
84114    ,p_reference_date_1         => l_array_reference_date_1(hdr_idx)
84115    ,p_reference_date_2         => l_array_reference_date_2(hdr_idx)
84116    ,p_reference_date_3         => l_array_reference_date_3(hdr_idx)
84117    ,p_reference_date_4         => l_array_reference_date_4(hdr_idx)
84118    ,p_event_created_by         => l_array_event_created_by(hdr_idx)
84119    ,p_budgetary_control_flag   => l_array_budgetary_control_flag(hdr_idx));
84120 
84121 --
84122 -- set the status of entry to C_VALID (0)
84123 --
84124 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status    := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
84125 
84126 --
84127 -- initialize a row for ae header
84128 --
84129 XLA_AE_HEADER_PKG.InitHeader(hdr_idx);
84130 
84131 l_event_id := l_array_event_id(hdr_idx);
84132 
84133 --
84134 -- storing the hdr_idx for event. May be used by line cursor.
84135 --
84136 g_array_event(l_event_id).array_value_num('header_index') := hdr_idx;
84137 
84138 --
84139 -- store sources from header extract. This can be improved to
84143 g_array_event(l_event_id).array_value_char('source_16') := l_array_source_16(hdr_idx);
84140 -- store only those sources from header extract that may be used in lines
84141 --
84142 
84144 g_array_event(l_event_id).array_value_char('source_18') := l_array_source_18(hdr_idx);
84145 g_array_event(l_event_id).array_value_char('source_20') := l_array_source_20(hdr_idx);
84146 g_array_event(l_event_id).array_value_num('source_21') := l_array_source_21(hdr_idx);
84147 g_array_event(l_event_id).array_value_char('source_22') := l_array_source_22(hdr_idx);
84148 g_array_event(l_event_id).array_value_date('source_23') := l_array_source_23(hdr_idx);
84149 g_array_event(l_event_id).array_value_num('source_34') := l_array_source_34(hdr_idx);
84150 g_array_event(l_event_id).array_value_num('source_35') := l_array_source_35(hdr_idx);
84151 g_array_event(l_event_id).array_value_num('source_36') := l_array_source_36(hdr_idx);
84152 g_array_event(l_event_id).array_value_num('source_37') := l_array_source_37(hdr_idx);
84153 g_array_event(l_event_id).array_value_num('source_101') := l_array_source_101(hdr_idx);
84154 g_array_event(l_event_id).array_value_num('source_112') := l_array_source_112(hdr_idx);
84155 g_array_event(l_event_id).array_value_num('source_113') := l_array_source_113(hdr_idx);
84156 g_array_event(l_event_id).array_value_char('source_114') := l_array_source_114(hdr_idx);
84157 g_array_event(l_event_id).array_value_num('source_115') := l_array_source_115(hdr_idx);
84158 g_array_event(l_event_id).array_value_num('source_116') := l_array_source_116(hdr_idx);
84159 g_array_event(l_event_id).array_value_char('source_125') := l_array_source_125(hdr_idx);
84160 g_array_event(l_event_id).array_value_num('source_126') := l_array_source_126(hdr_idx);
84161 g_array_event(l_event_id).array_value_char('source_127') := l_array_source_127(hdr_idx);
84162 
84163 --
84164 -- initilaize the status of ae headers for diffrent balance types
84165 -- the status is initialised to C_NOT_CREATED (2)
84166 --
84167 --g_array_event(l_event_id).array_value_num('actual_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
84168 --g_array_event(l_event_id).array_value_num('budget_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
84169 --g_array_event(l_event_id).array_value_num('encumbrance_je_status') := XLA_AE_JOURNAL_ENTRY_PKG.C_NOT_CREATED;
84170 
84171 --
84172 -- call api to validate and store accounting attributes for header
84173 --
84174 
84175 ------------------------------------------------------------
84176 -- Accrual Reversal : to get date for Standard Source (NONE)
84177 ------------------------------------------------------------
84178 l_acc_rev_gl_date_source := NULL;
84179 
84180      l_rec_acct_attrs.array_acct_attr_code(1)   := 'DOC_CATEGORY_CODE';
84181       l_rec_acct_attrs.array_char_value(1) := g_array_event(l_event_id).array_value_char('source_125');
84182      l_rec_acct_attrs.array_acct_attr_code(2)   := 'DOC_SEQUENCE_ID';
84183       l_rec_acct_attrs.array_num_value(2) := g_array_event(l_event_id).array_value_num('source_126');
84184      l_rec_acct_attrs.array_acct_attr_code(3)   := 'DOC_SEQUENCE_VALUE';
84185       l_rec_acct_attrs.array_num_value(3) := g_array_event(l_event_id).array_value_num('source_21');
84186      l_rec_acct_attrs.array_acct_attr_code(4)   := 'GL_DATE';
84187       l_rec_acct_attrs.array_date_value(4) := 
84188 xla_ae_sources_pkg.GetSystemSourceDate(
84189    p_source_code           => 'XLA_EVENT_DATE'
84190  , p_source_type_code      => 'Y'
84191  , p_source_application_id =>  602
84192 );
84193      l_rec_acct_attrs.array_acct_attr_code(5)   := 'TRX_ACCT_REVERSAL_OPTION';
84194       l_rec_acct_attrs.array_char_value(5) := g_array_event(l_event_id).array_value_char('source_127');
84195 
84196 
84197 XLA_AE_HEADER_PKG.SetHdrAcctAttrs(l_rec_acct_attrs);
84198 
84199 XLA_AE_HEADER_PKG.SetJeCategoryName;
84200 
84201 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_type_code(hdr_idx)  := l_array_event_type(hdr_idx);
84202 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_id(hdr_idx)         := l_array_event_id(hdr_idx);
84203 XLA_AE_HEADER_PKG.g_rec_header_new.array_entity_id(hdr_idx)        := l_array_entity_id(hdr_idx);
84204 XLA_AE_HEADER_PKG.g_rec_header_new.array_event_number(hdr_idx)     := l_array_event_number(hdr_idx);
84205 XLA_AE_HEADER_PKG.g_rec_header_new.array_target_ledger_id(hdr_idx) := p_target_ledger_id;
84206 
84207 
84208 --
84209 xla_ae_header_pkg.SetHdrDescription(
84210    p_description => Description_19 (
84211    p_application_id => p_application_id 
84212  , p_source_16 => g_array_event(l_event_id).array_value_char('source_16')
84213  , p_source_18 => g_array_event(l_event_id).array_value_char('source_18')
84214  , p_source_20 => g_array_event(l_event_id).array_value_char('source_20')
84215  , p_source_21 => g_array_event(l_event_id).array_value_num('source_21')
84216  , p_source_22 => g_array_event(l_event_id).array_value_char('source_22')
84217  , p_source_23 => g_array_event(l_event_id).array_value_date('source_23')
84218    )
84219 );
84220 --
84221 
84222 -- No header level analytical criteria
84223 
84224 --
84225 --accounting attribute enhancement, bug 3612931
84226 --
84227 l_trx_reversal_source := SUBSTR(g_array_event(l_event_id).array_value_char('source_127'), 1,30);
84228 
84229 IF NVL(l_trx_reversal_source, 'N') NOT IN ('N','Y') THEN
84230    xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
84231 
84232    xla_accounting_err_pkg.build_message
84233       (p_appli_s_name            => 'XLA'
84234       ,p_msg_name                => 'XLA_AP_INVALID_HDR_ATTR'
84235       ,p_token_1                 => 'ACCT_ATTR_NAME'
84236       ,p_value_1                 => xla_ae_sources_pkg.GetAccountingSourceName('TRX_ACCT_REVERSAL_OPTION')
84237       ,p_token_2                 => 'PRODUCT_NAME'
84238       ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
84239       ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
84240       ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
84241       ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
84245    -- following sets the accounting attributes needed to reverse
84242 
84243 ELSIF NVL(l_trx_reversal_source, 'N') = 'Y' THEN
84244    --
84246    -- accounting for a distributeion
84247    --
84248    xla_ae_lines_pkg.SetTrxReversalAttrs
84249       (p_event_id              => l_event_id
84250       ,p_gl_date               => XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(hdr_idx)
84251       ,p_trx_reversal_source   => l_trx_reversal_source);
84252 
84253 END IF;
84254 
84255 
84256 ----------------------------------------------------------------
84257 -- 4262811 -  update the header statuses to invalid in need be
84258 ----------------------------------------------------------------
84259 --
84260 XLA_AE_JOURNAL_ENTRY_PKG.UpdateJournalEntryStatus (p_hdr_idx => hdr_idx);
84261 
84262 
84263   -----------------------------------------------
84264   -- No accrual reversal for the event class/type
84265   -----------------------------------------------
84266 ----------------------------------------------------------------
84267 
84268 --
84269 -- this ends the header loop iteration for one bulk fetch
84270 --
84271 END LOOP;
84272 
84273 l_first_event_id   := l_array_event_id(l_array_event_id.FIRST);
84274 l_last_event_id    := l_array_event_id(l_array_event_id.LAST);
84275 
84276 --
84277 -- insert dummy rows into lines gt table that were created due to
84278 -- transaction reversals
84279 --
84280 IF XLA_AE_LINES_PKG.g_rec_lines.array_ae_header_id.COUNT > 0 THEN
84281    l_result := XLA_AE_LINES_PKG.InsertLines;
84282 END IF;
84283 
84284 --
84285 -- reset the temp_line_num for each set of events fetched from header
84286 -- cursor rather than doing it for each new event in line cursor
84287 -- Bug 3939231
84288 --
84289 xla_ae_lines_pkg.g_temp_line_num := 0;
84290 
84291 
84292 
84293 --
84294 OPEN line_cur(x_first_event_id  => l_first_event_id, x_last_event_id  => l_last_event_id);
84295 --
84296 --
84297 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84298 
84299       trace
84300          (p_msg      => 'SQL - FETCH line_cur'
84301          ,p_level    => C_LEVEL_STATEMENT
84302          ,p_module   => l_log_module);
84303 
84304 END IF;
84305 --
84306 --
84307 LOOP
84308   --
84309   FETCH line_cur BULK COLLECT INTO
84310         l_array_entity_id
84311       , l_array_legal_entity_id
84312       , l_array_entity_code
84313       , l_array_transaction_num
84314       , l_array_event_id
84315       , l_array_class_code
84316       , l_array_event_type
84317       , l_array_event_number
84318       , l_array_event_date
84319       , l_array_transaction_date
84320       , l_array_reference_num_1
84321       , l_array_reference_num_2
84322       , l_array_reference_num_3
84323       , l_array_reference_num_4
84324       , l_array_reference_char_1
84325       , l_array_reference_char_2
84326       , l_array_reference_char_3
84327       , l_array_reference_char_4
84328       , l_array_reference_date_1
84329       , l_array_reference_date_2
84330       , l_array_reference_date_3
84331       , l_array_reference_date_4
84332       , l_array_event_created_by
84333       , l_array_budgetary_control_flag
84334       , l_array_extract_line_num 
84335       , l_array_source_3
84336       , l_array_source_4
84337       , l_array_source_6
84338       , l_array_source_32
84339       , l_array_source_33
84340       , l_array_source_39
84341       , l_array_source_40
84342       , l_array_source_41
84343       , l_array_source_42
84344       , l_array_source_43
84345       , l_array_source_44
84346       , l_array_source_45
84347       , l_array_source_46
84348       , l_array_source_47
84349       , l_array_source_48
84350       , l_array_source_52
84351       , l_array_source_56
84352       , l_array_source_57
84353       , l_array_source_99
84354       , l_array_source_100
84355       , l_array_source_102
84356       , l_array_source_103
84357       , l_array_source_104
84358       , l_array_source_105
84359       , l_array_source_106
84360       , l_array_source_107
84361       , l_array_source_108
84362       , l_array_source_109
84363       , l_array_source_110
84364       , l_array_source_111
84365       LIMIT l_rows;
84366 
84367   --
84368   IF (C_LEVEL_EVENT >= g_log_level) THEN
84369             trace
84370                (p_msg      => '# rows extracted from line extract objects = '||TO_CHAR(line_cur%ROWCOUNT)
84371                ,p_level    => C_LEVEL_EVENT
84372                ,p_module   => l_log_module);
84373   END IF;
84374   --
84375   EXIT WHEN l_array_entity_id.count = 0;
84376 
84377   XLA_AE_LINES_PKG.g_rec_lines := null;
84378 
84379 --
84380 -- Bug 4458708
84381 --
84382 XLA_AE_LINES_PKG.g_LineNumber := 0;
84383 --
84384 --
84385 
84386 FOR Idx IN 1..l_array_event_id.count LOOP
84387    --
84388    -- 5648433 (move l_event_id out of IF statement)  set l_event_id to be used inside IF condition
84389    --
84390    l_event_id := l_array_event_id(idx);  -- 5648433
84391 
84392    --
84393    -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
84394    --
84395 
84396    IF NVL(xla_ae_header_pkg.g_rec_header_new.array_trx_acct_reversal_option
84397              (g_array_event(l_event_id).array_value_num('header_index'))
84398          ,'N'
84399          ) <> 'Y'
84400    THEN
84401       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
84402          trace
84403             (p_msg      => 'Trancaction revesal option is not Y '
84404             ,p_level    => C_LEVEL_STATEMENT
84405             ,p_module   => l_log_module);
84406       END IF;
84407 
84408 --
84412 --
84409 -- set the XLA_AE_JOURNAL_ENTRY_PKG.g_global_status to C_VALID (0)
84410 --
84411 XLA_AE_JOURNAL_ENTRY_PKG.g_global_status := XLA_AE_JOURNAL_ENTRY_PKG.C_VALID;
84413 -- set event info as cache for other routines to refer event attributes
84414 --
84415 
84416 IF l_event_id <> NVL(l_previous_event_id, -1) THEN
84417    l_previous_event_id := l_event_id;
84418 
84419    XLA_AE_JOURNAL_ENTRY_PKG.set_event_info
84420       (p_application_id           => p_application_id
84421       ,p_primary_ledger_id        => p_primary_ledger_id
84422       ,p_base_ledger_id           => p_base_ledger_id
84423       ,p_target_ledger_id         => p_target_ledger_id
84424       ,p_entity_id                => l_array_entity_id(Idx)
84425       ,p_legal_entity_id          => l_array_legal_entity_id(Idx)
84426       ,p_entity_code              => l_array_entity_code(Idx)
84427       ,p_transaction_num          => l_array_transaction_num(Idx)
84428       ,p_event_id                 => l_array_event_id(Idx)
84429       ,p_event_class_code         => l_array_class_code(Idx)
84430       ,p_event_type_code          => l_array_event_type(Idx)
84431       ,p_event_number             => l_array_event_number(Idx)
84432       ,p_event_date               => l_array_event_date(Idx)
84433       ,p_transaction_date         => l_array_transaction_date(Idx)
84434       ,p_reference_num_1          => l_array_reference_num_1(Idx)
84435       ,p_reference_num_2          => l_array_reference_num_2(Idx)
84436       ,p_reference_num_3          => l_array_reference_num_3(Idx)
84437       ,p_reference_num_4          => l_array_reference_num_4(Idx)
84438       ,p_reference_char_1         => l_array_reference_char_1(Idx)
84439       ,p_reference_char_2         => l_array_reference_char_2(Idx)
84440       ,p_reference_char_3         => l_array_reference_char_3(Idx)
84441       ,p_reference_char_4         => l_array_reference_char_4(Idx)
84442       ,p_reference_date_1         => l_array_reference_date_1(Idx)
84443       ,p_reference_date_2         => l_array_reference_date_2(Idx)
84444       ,p_reference_date_3         => l_array_reference_date_3(Idx)
84445       ,p_reference_date_4         => l_array_reference_date_4(Idx)
84446       ,p_event_created_by         => l_array_event_created_by(Idx)
84447       ,p_budgetary_control_flag   => l_array_budgetary_control_flag(Idx));
84448        --
84449 END IF;
84450 
84451 
84452 
84453 --
84454 xla_ae_lines_pkg.SetExtractLine(p_extract_line => l_array_extract_line_num(Idx));
84455 
84456 l_acct_reversal_source := SUBSTR(NULL, 1,30);
84457 
84458 IF l_continue_with_lines THEN
84459    IF NVL(l_acct_reversal_source, 'N') NOT IN ('N','Y','B') THEN
84460       xla_ae_journal_entry_pkg.g_global_status      :=  xla_ae_journal_entry_pkg.C_INVALID;
84461 
84462       xla_accounting_err_pkg.build_message
84463          (p_appli_s_name            => 'XLA'
84464          ,p_msg_name                => 'XLA_AP_INVALID_REVERSAL_OPTION'
84465          ,p_token_1                 => 'LINE_NUMBER'
84466          ,p_value_1                 => l_array_extract_line_num(Idx)
84467          ,p_token_2                 => 'PRODUCT_NAME'
84468          ,p_value_2                 => xla_ae_journal_entry_pkg.g_cache_event.application_name
84469          ,p_entity_id               => xla_ae_journal_entry_pkg.g_cache_event.entity_id
84470          ,p_event_id                => xla_ae_journal_entry_pkg.g_cache_event.event_id
84471          ,p_ledger_id               => xla_ae_journal_entry_pkg.g_cache_event.target_ledger_id);
84472 
84473    ELSIF NVL(l_acct_reversal_source, 'N') IN ('Y','B') THEN
84474       --
84475       -- following sets the accounting attributes needed to reverse
84476       -- accounting for a distributeion
84477       --
84478 
84479       --
84480       -- 5217187
84481       --
84482       l_rec_rev_acct_attrs.array_acct_attr_code(1):= 'GL_DATE';
84483       l_rec_rev_acct_attrs.array_date_value(1) := XLA_AE_HEADER_PKG.g_rec_header_new.array_gl_date(
84484                                        g_array_event(l_event_id).array_value_num('header_index'));
84485       --
84486       --
84487 
84488       -- No reversal code generated
84489 
84490       xla_ae_lines_pkg.SetAcctReversalAttrs
84491          (p_event_id             => l_event_id
84492          ,p_rec_acct_attrs       => l_rec_rev_acct_attrs
84493          ,p_calculate_acctd_flag => l_calculate_acctd_flag
84494          ,p_calculate_g_l_flag   => l_calculate_g_l_flag);
84495    END IF;
84496 
84497    IF NVL(l_acct_reversal_source, 'N') IN ('N','B') THEN
84498        l_actual_flag := NULL;  l_actual_gain_loss_ref := '#####';
84499 
84500 --
84501 AcctLineType_113 (
84502  p_application_id  => p_application_id
84503  ,p_event_id     => l_event_id
84504  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84505  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84506  ,p_actual_flag => l_actual_flag
84507  ,p_balance_type_code => l_balance_type_code
84508  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84509  
84510  , p_source_32 => l_array_source_32(Idx)
84511  , p_source_39 => l_array_source_39(Idx)
84512  , p_source_41 => l_array_source_41(Idx)
84513  , p_source_42 => l_array_source_42(Idx)
84514  , p_source_45 => l_array_source_45(Idx)
84515  , p_source_46 => l_array_source_46(Idx)
84516  , p_source_47 => l_array_source_47(Idx)
84517  , p_source_52 => l_array_source_52(Idx)
84518  , p_source_56 => l_array_source_56(Idx)
84519  , p_source_57 => l_array_source_57(Idx)
84520  , p_source_99 => l_array_source_99(Idx)
84521  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
84522  , p_source_102 => l_array_source_102(Idx)
84523  , p_source_103 => l_array_source_103(Idx)
84524  , p_source_104 => l_array_source_104(Idx)
84525  , p_source_105 => l_array_source_105(Idx)
84526  , p_source_106 => l_array_source_106(Idx)
84527  , p_source_107 => l_array_source_107(Idx)
84528  , p_source_108 => l_array_source_108(Idx)
84529  );
84530 If(l_balance_type_code = 'A') THEN
84534 --
84531   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84532 END IF;
84533 
84535 
84536 
84537 --
84538 AcctLineType_114 (
84539  p_application_id  => p_application_id
84540  ,p_event_id     => l_event_id
84541  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84542  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84543  ,p_actual_flag => l_actual_flag
84544  ,p_balance_type_code => l_balance_type_code
84545  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84546  
84547  , p_source_32 => l_array_source_32(Idx)
84548  , p_source_39 => l_array_source_39(Idx)
84549  , p_source_41 => l_array_source_41(Idx)
84550  , p_source_42 => l_array_source_42(Idx)
84551  , p_source_45 => l_array_source_45(Idx)
84552  , p_source_46 => l_array_source_46(Idx)
84553  , p_source_47 => l_array_source_47(Idx)
84554  , p_source_52 => l_array_source_52(Idx)
84555  , p_source_56 => l_array_source_56(Idx)
84556  , p_source_57 => l_array_source_57(Idx)
84557  , p_source_99 => l_array_source_99(Idx)
84558  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
84559  , p_source_102 => l_array_source_102(Idx)
84560  , p_source_103 => l_array_source_103(Idx)
84561  , p_source_104 => l_array_source_104(Idx)
84562  , p_source_105 => l_array_source_105(Idx)
84563  , p_source_106 => l_array_source_106(Idx)
84564  , p_source_107 => l_array_source_107(Idx)
84565  , p_source_108 => l_array_source_108(Idx)
84566  );
84567 If(l_balance_type_code = 'A') THEN
84568   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84569 END IF;
84570 
84571 --
84572 
84573 
84574 --
84575 AcctLineType_115 (
84576  p_application_id  => p_application_id
84577  ,p_event_id     => l_event_id
84578  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84579  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84580  ,p_actual_flag => l_actual_flag
84581  ,p_balance_type_code => l_balance_type_code
84582  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84583  
84584  , p_source_32 => l_array_source_32(Idx)
84585  , p_source_39 => l_array_source_39(Idx)
84586  , p_source_41 => l_array_source_41(Idx)
84587  , p_source_42 => l_array_source_42(Idx)
84588  , p_source_45 => l_array_source_45(Idx)
84589  , p_source_46 => l_array_source_46(Idx)
84590  , p_source_47 => l_array_source_47(Idx)
84591  , p_source_52 => l_array_source_52(Idx)
84592  , p_source_56 => l_array_source_56(Idx)
84593  , p_source_57 => l_array_source_57(Idx)
84594  , p_source_99 => l_array_source_99(Idx)
84595  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
84596  , p_source_102 => l_array_source_102(Idx)
84597  , p_source_103 => l_array_source_103(Idx)
84598  , p_source_104 => l_array_source_104(Idx)
84599  , p_source_105 => l_array_source_105(Idx)
84600  , p_source_106 => l_array_source_106(Idx)
84601  , p_source_107 => l_array_source_107(Idx)
84602  , p_source_108 => l_array_source_108(Idx)
84603  );
84604 If(l_balance_type_code = 'A') THEN
84605   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84606 END IF;
84607 
84608 --
84609 
84610 
84611 --
84612 AcctLineType_116 (
84613  p_application_id  => p_application_id
84614  ,p_event_id     => l_event_id
84615  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84616  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84617  ,p_actual_flag => l_actual_flag
84618  ,p_balance_type_code => l_balance_type_code
84619  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84620  
84621  , p_source_32 => l_array_source_32(Idx)
84622  , p_source_39 => l_array_source_39(Idx)
84623  , p_source_40 => l_array_source_40(Idx)
84624  , p_source_41 => l_array_source_41(Idx)
84625  , p_source_42 => l_array_source_42(Idx)
84626  , p_source_45 => l_array_source_45(Idx)
84627  , p_source_46 => l_array_source_46(Idx)
84628  , p_source_52 => l_array_source_52(Idx)
84629  , p_source_56 => l_array_source_56(Idx)
84630  , p_source_57 => l_array_source_57(Idx)
84631  , p_source_99 => l_array_source_99(Idx)
84632  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
84633  , p_source_102 => l_array_source_102(Idx)
84634  , p_source_103 => l_array_source_103(Idx)
84635  , p_source_104 => l_array_source_104(Idx)
84636  , p_source_105 => l_array_source_105(Idx)
84637  , p_source_106 => l_array_source_106(Idx)
84638  , p_source_107 => l_array_source_107(Idx)
84639  , p_source_108 => l_array_source_108(Idx)
84640  , p_source_109 => l_array_source_109(Idx)
84641  );
84642 If(l_balance_type_code = 'A') THEN
84643   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84644 END IF;
84645 
84646 --
84647 
84648 
84649 --
84650 AcctLineType_117 (
84651  p_application_id  => p_application_id
84652  ,p_event_id     => l_event_id
84653  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84654  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84655  ,p_actual_flag => l_actual_flag
84656  ,p_balance_type_code => l_balance_type_code
84657  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84658  
84659  , p_source_32 => l_array_source_32(Idx)
84660  , p_source_39 => l_array_source_39(Idx)
84661  , p_source_40 => l_array_source_40(Idx)
84662  , p_source_41 => l_array_source_41(Idx)
84663  , p_source_42 => l_array_source_42(Idx)
84664  , p_source_45 => l_array_source_45(Idx)
84665  , p_source_46 => l_array_source_46(Idx)
84666  , p_source_52 => l_array_source_52(Idx)
84667  , p_source_56 => l_array_source_56(Idx)
84668  , p_source_57 => l_array_source_57(Idx)
84669  , p_source_99 => l_array_source_99(Idx)
84670  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
84671  , p_source_102 => l_array_source_102(Idx)
84672  , p_source_103 => l_array_source_103(Idx)
84673  , p_source_104 => l_array_source_104(Idx)
84674  , p_source_105 => l_array_source_105(Idx)
84675  , p_source_106 => l_array_source_106(Idx)
84676  , p_source_107 => l_array_source_107(Idx)
84680 If(l_balance_type_code = 'A') THEN
84677  , p_source_108 => l_array_source_108(Idx)
84678  , p_source_109 => l_array_source_109(Idx)
84679  );
84681   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84682 END IF;
84683 
84684 --
84685 
84686 
84687 --
84688 AcctLineType_118 (
84689  p_application_id  => p_application_id
84690  ,p_event_id     => l_event_id
84691  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84692  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84693  ,p_actual_flag => l_actual_flag
84694  ,p_balance_type_code => l_balance_type_code
84695  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84696  
84697  , p_source_32 => l_array_source_32(Idx)
84698  , p_source_39 => l_array_source_39(Idx)
84699  , p_source_40 => l_array_source_40(Idx)
84700  , p_source_41 => l_array_source_41(Idx)
84701  , p_source_42 => l_array_source_42(Idx)
84702  , p_source_45 => l_array_source_45(Idx)
84703  , p_source_46 => l_array_source_46(Idx)
84704  , p_source_52 => l_array_source_52(Idx)
84705  , p_source_56 => l_array_source_56(Idx)
84706  , p_source_57 => l_array_source_57(Idx)
84707  , p_source_99 => l_array_source_99(Idx)
84708  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
84709  , p_source_102 => l_array_source_102(Idx)
84710  , p_source_103 => l_array_source_103(Idx)
84711  , p_source_104 => l_array_source_104(Idx)
84712  , p_source_105 => l_array_source_105(Idx)
84713  , p_source_106 => l_array_source_106(Idx)
84714  , p_source_107 => l_array_source_107(Idx)
84715  , p_source_108 => l_array_source_108(Idx)
84716  , p_source_109 => l_array_source_109(Idx)
84717  );
84718 If(l_balance_type_code = 'A') THEN
84719   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84720 END IF;
84721 
84722 --
84723 
84724 
84725 --
84726 AcctLineType_119 (
84727  p_application_id  => p_application_id
84728  ,p_event_id     => l_event_id
84729  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84730  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84731  ,p_actual_flag => l_actual_flag
84732  ,p_balance_type_code => l_balance_type_code
84733  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84734  
84735  , p_source_32 => l_array_source_32(Idx)
84736  , p_source_39 => l_array_source_39(Idx)
84737  , p_source_41 => l_array_source_41(Idx)
84738  , p_source_42 => l_array_source_42(Idx)
84739  , p_source_45 => l_array_source_45(Idx)
84740  , p_source_46 => l_array_source_46(Idx)
84741  , p_source_47 => l_array_source_47(Idx)
84742  , p_source_52 => l_array_source_52(Idx)
84743  , p_source_56 => l_array_source_56(Idx)
84744  , p_source_57 => l_array_source_57(Idx)
84745  , p_source_99 => l_array_source_99(Idx)
84746  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
84747  , p_source_102 => l_array_source_102(Idx)
84748  , p_source_103 => l_array_source_103(Idx)
84749  , p_source_104 => l_array_source_104(Idx)
84750  , p_source_105 => l_array_source_105(Idx)
84751  , p_source_106 => l_array_source_106(Idx)
84752  , p_source_107 => l_array_source_107(Idx)
84753  , p_source_108 => l_array_source_108(Idx)
84754  );
84755 If(l_balance_type_code = 'A') THEN
84756   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84757 END IF;
84758 
84759 --
84760 
84761 
84762 --
84763 AcctLineType_120 (
84764  p_application_id  => p_application_id
84765  ,p_event_id     => l_event_id
84766  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84767  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84768  ,p_actual_flag => l_actual_flag
84769  ,p_balance_type_code => l_balance_type_code
84770  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84771  
84772  , p_source_32 => l_array_source_32(Idx)
84773  , p_source_39 => l_array_source_39(Idx)
84774  , p_source_41 => l_array_source_41(Idx)
84775  , p_source_42 => l_array_source_42(Idx)
84776  , p_source_45 => l_array_source_45(Idx)
84777  , p_source_46 => l_array_source_46(Idx)
84778  , p_source_47 => l_array_source_47(Idx)
84779  , p_source_52 => l_array_source_52(Idx)
84780  , p_source_56 => l_array_source_56(Idx)
84781  , p_source_57 => l_array_source_57(Idx)
84782  , p_source_99 => l_array_source_99(Idx)
84783  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
84784  , p_source_102 => l_array_source_102(Idx)
84785  , p_source_103 => l_array_source_103(Idx)
84786  , p_source_104 => l_array_source_104(Idx)
84787  , p_source_105 => l_array_source_105(Idx)
84788  , p_source_106 => l_array_source_106(Idx)
84789  , p_source_107 => l_array_source_107(Idx)
84790  , p_source_108 => l_array_source_108(Idx)
84791  );
84792 If(l_balance_type_code = 'A') THEN
84793   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84794 END IF;
84795 
84796 --
84797 
84798 
84799 --
84800 AcctLineType_121 (
84801  p_application_id  => p_application_id
84802  ,p_event_id     => l_event_id
84803  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84804  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84805  ,p_actual_flag => l_actual_flag
84806  ,p_balance_type_code => l_balance_type_code
84807  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84808  
84809  , p_source_32 => l_array_source_32(Idx)
84810  , p_source_39 => l_array_source_39(Idx)
84811  , p_source_41 => l_array_source_41(Idx)
84812  , p_source_42 => l_array_source_42(Idx)
84813  , p_source_45 => l_array_source_45(Idx)
84814  , p_source_46 => l_array_source_46(Idx)
84815  , p_source_47 => l_array_source_47(Idx)
84816  , p_source_52 => l_array_source_52(Idx)
84817  , p_source_56 => l_array_source_56(Idx)
84818  , p_source_57 => l_array_source_57(Idx)
84819  , p_source_99 => l_array_source_99(Idx)
84820  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
84821  , p_source_102 => l_array_source_102(Idx)
84822  , p_source_103 => l_array_source_103(Idx)
84823  , p_source_104 => l_array_source_104(Idx)
84827  , p_source_108 => l_array_source_108(Idx)
84824  , p_source_105 => l_array_source_105(Idx)
84825  , p_source_106 => l_array_source_106(Idx)
84826  , p_source_107 => l_array_source_107(Idx)
84828  );
84829 If(l_balance_type_code = 'A') THEN
84830   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84831 END IF;
84832 
84833 --
84834 
84835 
84836 --
84837 AcctLineType_122 (
84838  p_application_id  => p_application_id
84839  ,p_event_id     => l_event_id
84840  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84841  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84842  ,p_actual_flag => l_actual_flag
84843  ,p_balance_type_code => l_balance_type_code
84844  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84845  
84846  , p_source_3 => l_array_source_3(Idx)
84847  , p_source_4 => l_array_source_4(Idx)
84848  , p_source_6 => l_array_source_6(Idx)
84849  , p_source_32 => l_array_source_32(Idx)
84850  , p_source_39 => l_array_source_39(Idx)
84851  , p_source_41 => l_array_source_41(Idx)
84852  , p_source_42 => l_array_source_42(Idx)
84853  , p_source_43 => l_array_source_43(Idx)
84854  , p_source_44 => l_array_source_44(Idx)
84855  , p_source_48 => l_array_source_48(Idx)
84856  , p_source_56 => l_array_source_56(Idx)
84857  , p_source_57 => l_array_source_57(Idx)
84858  , p_source_99 => l_array_source_99(Idx)
84859  , p_source_100 => l_array_source_100(Idx)
84860  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
84861  , p_source_102 => l_array_source_102(Idx)
84862  , p_source_103 => l_array_source_103(Idx)
84863  , p_source_106 => l_array_source_106(Idx)
84864  , p_source_107 => l_array_source_107(Idx)
84865  , p_source_108 => l_array_source_108(Idx)
84866  , p_source_109 => l_array_source_109(Idx)
84867  , p_source_110 => l_array_source_110(Idx)
84868  );
84869 If(l_balance_type_code = 'A') THEN
84870   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84871 END IF;
84872 
84873 --
84874 
84875 
84876 --
84877 AcctLineType_123 (
84878  p_application_id  => p_application_id
84879  ,p_event_id     => l_event_id
84880  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84881  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84882  ,p_actual_flag => l_actual_flag
84883  ,p_balance_type_code => l_balance_type_code
84884  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84885  
84886  , p_source_32 => l_array_source_32(Idx)
84887  , p_source_39 => l_array_source_39(Idx)
84888  , p_source_41 => l_array_source_41(Idx)
84889  , p_source_42 => l_array_source_42(Idx)
84890  , p_source_43 => l_array_source_43(Idx)
84891  , p_source_44 => l_array_source_44(Idx)
84892  , p_source_48 => l_array_source_48(Idx)
84893  , p_source_56 => l_array_source_56(Idx)
84894  , p_source_57 => l_array_source_57(Idx)
84895  , p_source_99 => l_array_source_99(Idx)
84896  , p_source_100 => l_array_source_100(Idx)
84897  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
84898  , p_source_102 => l_array_source_102(Idx)
84899  , p_source_103 => l_array_source_103(Idx)
84900  , p_source_106 => l_array_source_106(Idx)
84901  , p_source_107 => l_array_source_107(Idx)
84902  , p_source_108 => l_array_source_108(Idx)
84903  , p_source_109 => l_array_source_109(Idx)
84904  , p_source_110 => l_array_source_110(Idx)
84905  );
84906 If(l_balance_type_code = 'A') THEN
84907   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84908 END IF;
84909 
84910 --
84911 
84912 
84913 --
84914 AcctLineType_124 (
84915  p_application_id  => p_application_id
84916  ,p_event_id     => l_event_id
84917  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84918  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84919  ,p_actual_flag => l_actual_flag
84920  ,p_balance_type_code => l_balance_type_code
84921  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84922  
84923  , p_source_32 => l_array_source_32(Idx)
84924  , p_source_39 => l_array_source_39(Idx)
84925  , p_source_41 => l_array_source_41(Idx)
84926  , p_source_42 => l_array_source_42(Idx)
84927  , p_source_43 => l_array_source_43(Idx)
84928  , p_source_44 => l_array_source_44(Idx)
84929  , p_source_48 => l_array_source_48(Idx)
84930  , p_source_56 => l_array_source_56(Idx)
84931  , p_source_57 => l_array_source_57(Idx)
84932  , p_source_99 => l_array_source_99(Idx)
84933  , p_source_100 => l_array_source_100(Idx)
84934  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
84935  , p_source_102 => l_array_source_102(Idx)
84936  , p_source_103 => l_array_source_103(Idx)
84937  , p_source_106 => l_array_source_106(Idx)
84938  , p_source_107 => l_array_source_107(Idx)
84939  , p_source_108 => l_array_source_108(Idx)
84940  , p_source_109 => l_array_source_109(Idx)
84941  , p_source_110 => l_array_source_110(Idx)
84942  );
84943 If(l_balance_type_code = 'A') THEN
84944   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84945 END IF;
84946 
84947 --
84948 
84949 
84950 --
84951 AcctLineType_125 (
84952  p_application_id  => p_application_id
84953  ,p_event_id     => l_event_id
84954  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84955  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84956  ,p_actual_flag => l_actual_flag
84957  ,p_balance_type_code => l_balance_type_code
84958  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84959  
84960  , p_source_32 => l_array_source_32(Idx)
84961  , p_source_39 => l_array_source_39(Idx)
84962  , p_source_41 => l_array_source_41(Idx)
84963  , p_source_42 => l_array_source_42(Idx)
84964  , p_source_43 => l_array_source_43(Idx)
84965  , p_source_44 => l_array_source_44(Idx)
84966  , p_source_48 => l_array_source_48(Idx)
84967  , p_source_56 => l_array_source_56(Idx)
84968  , p_source_57 => l_array_source_57(Idx)
84969  , p_source_99 => l_array_source_99(Idx)
84970  , p_source_100 => l_array_source_100(Idx)
84974  , p_source_106 => l_array_source_106(Idx)
84971  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
84972  , p_source_102 => l_array_source_102(Idx)
84973  , p_source_103 => l_array_source_103(Idx)
84975  , p_source_107 => l_array_source_107(Idx)
84976  , p_source_108 => l_array_source_108(Idx)
84977  , p_source_109 => l_array_source_109(Idx)
84978  , p_source_110 => l_array_source_110(Idx)
84979  );
84980 If(l_balance_type_code = 'A') THEN
84981   l_actual_gain_loss_ref := l_gain_or_loss_ref;
84982 END IF;
84983 
84984 --
84985 
84986 
84987 --
84988 AcctLineType_126 (
84989  p_application_id  => p_application_id
84990  ,p_event_id     => l_event_id
84991  ,p_calculate_acctd_flag => l_calculate_acctd_flag
84992  ,p_calculate_g_l_flag => l_calculate_g_l_flag
84993  ,p_actual_flag => l_actual_flag
84994  ,p_balance_type_code => l_balance_type_code
84995  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
84996  
84997  , p_source_33 => l_array_source_33(Idx)
84998  , p_source_34 => g_array_event(l_event_id).array_value_num('source_34')
84999  , p_source_35 => g_array_event(l_event_id).array_value_num('source_35')
85000  , p_source_41 => l_array_source_41(Idx)
85001  , p_source_42 => l_array_source_42(Idx)
85002  , p_source_52 => l_array_source_52(Idx)
85003  , p_source_106 => l_array_source_106(Idx)
85004  , p_source_107 => l_array_source_107(Idx)
85005  , p_source_108 => l_array_source_108(Idx)
85006  );
85007 If(l_balance_type_code = 'A') THEN
85008   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85009 END IF;
85010 
85011 --
85012 
85013 
85014 --
85015 AcctLineType_127 (
85016  p_application_id  => p_application_id
85017  ,p_event_id     => l_event_id
85018  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85019  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85020  ,p_actual_flag => l_actual_flag
85021  ,p_balance_type_code => l_balance_type_code
85022  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85023  
85024  , p_source_32 => l_array_source_32(Idx)
85025  , p_source_39 => l_array_source_39(Idx)
85026  , p_source_41 => l_array_source_41(Idx)
85027  , p_source_42 => l_array_source_42(Idx)
85028  , p_source_45 => l_array_source_45(Idx)
85029  , p_source_46 => l_array_source_46(Idx)
85030  , p_source_47 => l_array_source_47(Idx)
85031  , p_source_52 => l_array_source_52(Idx)
85032  , p_source_56 => l_array_source_56(Idx)
85033  , p_source_57 => l_array_source_57(Idx)
85034  , p_source_99 => l_array_source_99(Idx)
85035  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85036  , p_source_102 => l_array_source_102(Idx)
85037  , p_source_103 => l_array_source_103(Idx)
85038  , p_source_104 => l_array_source_104(Idx)
85039  , p_source_105 => l_array_source_105(Idx)
85040  , p_source_106 => l_array_source_106(Idx)
85041  , p_source_107 => l_array_source_107(Idx)
85042  , p_source_108 => l_array_source_108(Idx)
85043  , p_source_111 => l_array_source_111(Idx)
85044  );
85045 If(l_balance_type_code = 'A') THEN
85046   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85047 END IF;
85048 
85049 --
85050 
85051 
85052 --
85053 AcctLineType_128 (
85054  p_application_id  => p_application_id
85055  ,p_event_id     => l_event_id
85056  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85057  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85058  ,p_actual_flag => l_actual_flag
85059  ,p_balance_type_code => l_balance_type_code
85060  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85061  
85062  , p_source_32 => l_array_source_32(Idx)
85063  , p_source_39 => l_array_source_39(Idx)
85064  , p_source_41 => l_array_source_41(Idx)
85065  , p_source_42 => l_array_source_42(Idx)
85066  , p_source_45 => l_array_source_45(Idx)
85067  , p_source_46 => l_array_source_46(Idx)
85068  , p_source_47 => l_array_source_47(Idx)
85069  , p_source_52 => l_array_source_52(Idx)
85070  , p_source_56 => l_array_source_56(Idx)
85071  , p_source_57 => l_array_source_57(Idx)
85072  , p_source_99 => l_array_source_99(Idx)
85073  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85074  , p_source_102 => l_array_source_102(Idx)
85075  , p_source_103 => l_array_source_103(Idx)
85076  , p_source_104 => l_array_source_104(Idx)
85077  , p_source_105 => l_array_source_105(Idx)
85078  , p_source_106 => l_array_source_106(Idx)
85079  , p_source_107 => l_array_source_107(Idx)
85080  , p_source_108 => l_array_source_108(Idx)
85081  , p_source_111 => l_array_source_111(Idx)
85082  );
85083 If(l_balance_type_code = 'A') THEN
85084   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85085 END IF;
85086 
85087 --
85088 
85089 
85090 --
85091 AcctLineType_129 (
85092  p_application_id  => p_application_id
85093  ,p_event_id     => l_event_id
85094  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85095  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85096  ,p_actual_flag => l_actual_flag
85097  ,p_balance_type_code => l_balance_type_code
85098  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85099  
85100  , p_source_32 => l_array_source_32(Idx)
85101  , p_source_39 => l_array_source_39(Idx)
85102  , p_source_40 => l_array_source_40(Idx)
85103  , p_source_41 => l_array_source_41(Idx)
85104  , p_source_42 => l_array_source_42(Idx)
85105  , p_source_45 => l_array_source_45(Idx)
85106  , p_source_46 => l_array_source_46(Idx)
85107  , p_source_47 => l_array_source_47(Idx)
85108  , p_source_48 => l_array_source_48(Idx)
85109  , p_source_56 => l_array_source_56(Idx)
85110  , p_source_57 => l_array_source_57(Idx)
85111  , p_source_99 => l_array_source_99(Idx)
85112  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85113  , p_source_102 => l_array_source_102(Idx)
85114  , p_source_103 => l_array_source_103(Idx)
85115  , p_source_104 => l_array_source_104(Idx)
85116  , p_source_105 => l_array_source_105(Idx)
85120  );
85117  , p_source_106 => l_array_source_106(Idx)
85118  , p_source_107 => l_array_source_107(Idx)
85119  , p_source_108 => l_array_source_108(Idx)
85121 If(l_balance_type_code = 'A') THEN
85122   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85123 END IF;
85124 
85125 --
85126 
85127 
85128 --
85129 AcctLineType_130 (
85130  p_application_id  => p_application_id
85131  ,p_event_id     => l_event_id
85132  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85133  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85134  ,p_actual_flag => l_actual_flag
85135  ,p_balance_type_code => l_balance_type_code
85136  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85137  
85138  , p_source_32 => l_array_source_32(Idx)
85139  , p_source_39 => l_array_source_39(Idx)
85140  , p_source_40 => l_array_source_40(Idx)
85141  , p_source_41 => l_array_source_41(Idx)
85142  , p_source_42 => l_array_source_42(Idx)
85143  , p_source_45 => l_array_source_45(Idx)
85144  , p_source_46 => l_array_source_46(Idx)
85145  , p_source_47 => l_array_source_47(Idx)
85146  , p_source_52 => l_array_source_52(Idx)
85147  , p_source_56 => l_array_source_56(Idx)
85148  , p_source_57 => l_array_source_57(Idx)
85149  , p_source_99 => l_array_source_99(Idx)
85150  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85151  , p_source_102 => l_array_source_102(Idx)
85152  , p_source_103 => l_array_source_103(Idx)
85153  , p_source_104 => l_array_source_104(Idx)
85154  , p_source_105 => l_array_source_105(Idx)
85155  , p_source_106 => l_array_source_106(Idx)
85156  , p_source_107 => l_array_source_107(Idx)
85157  , p_source_108 => l_array_source_108(Idx)
85158  );
85159 If(l_balance_type_code = 'A') THEN
85160   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85161 END IF;
85162 
85163 --
85164 
85165 
85166 --
85167 AcctLineType_131 (
85168  p_application_id  => p_application_id
85169  ,p_event_id     => l_event_id
85170  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85171  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85172  ,p_actual_flag => l_actual_flag
85173  ,p_balance_type_code => l_balance_type_code
85174  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85175  
85176  , p_source_32 => l_array_source_32(Idx)
85177  , p_source_39 => l_array_source_39(Idx)
85178  , p_source_40 => l_array_source_40(Idx)
85179  , p_source_41 => l_array_source_41(Idx)
85180  , p_source_42 => l_array_source_42(Idx)
85181  , p_source_45 => l_array_source_45(Idx)
85182  , p_source_46 => l_array_source_46(Idx)
85183  , p_source_47 => l_array_source_47(Idx)
85184  , p_source_52 => l_array_source_52(Idx)
85185  , p_source_56 => l_array_source_56(Idx)
85186  , p_source_57 => l_array_source_57(Idx)
85187  , p_source_99 => l_array_source_99(Idx)
85188  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85189  , p_source_102 => l_array_source_102(Idx)
85190  , p_source_103 => l_array_source_103(Idx)
85191  , p_source_104 => l_array_source_104(Idx)
85192  , p_source_105 => l_array_source_105(Idx)
85193  , p_source_106 => l_array_source_106(Idx)
85194  , p_source_107 => l_array_source_107(Idx)
85195  , p_source_108 => l_array_source_108(Idx)
85196  );
85197 If(l_balance_type_code = 'A') THEN
85198   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85199 END IF;
85200 
85201 --
85202 
85203 
85204 --
85205 AcctLineType_132 (
85206  p_application_id  => p_application_id
85207  ,p_event_id     => l_event_id
85208  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85209  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85210  ,p_actual_flag => l_actual_flag
85211  ,p_balance_type_code => l_balance_type_code
85212  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85213  
85214  , p_source_32 => l_array_source_32(Idx)
85215  , p_source_39 => l_array_source_39(Idx)
85216  , p_source_41 => l_array_source_41(Idx)
85217  , p_source_42 => l_array_source_42(Idx)
85218  , p_source_45 => l_array_source_45(Idx)
85219  , p_source_46 => l_array_source_46(Idx)
85220  , p_source_47 => l_array_source_47(Idx)
85221  , p_source_52 => l_array_source_52(Idx)
85222  , p_source_56 => l_array_source_56(Idx)
85223  , p_source_57 => l_array_source_57(Idx)
85224  , p_source_99 => l_array_source_99(Idx)
85225  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85226  , p_source_102 => l_array_source_102(Idx)
85227  , p_source_103 => l_array_source_103(Idx)
85228  , p_source_104 => l_array_source_104(Idx)
85229  , p_source_105 => l_array_source_105(Idx)
85230  , p_source_106 => l_array_source_106(Idx)
85231  , p_source_107 => l_array_source_107(Idx)
85232  , p_source_108 => l_array_source_108(Idx)
85233  , p_source_111 => l_array_source_111(Idx)
85234  );
85235 If(l_balance_type_code = 'A') THEN
85236   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85237 END IF;
85238 
85239 --
85240 
85241 
85242 --
85243 AcctLineType_133 (
85244  p_application_id  => p_application_id
85245  ,p_event_id     => l_event_id
85246  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85247  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85248  ,p_actual_flag => l_actual_flag
85249  ,p_balance_type_code => l_balance_type_code
85250  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85251  
85252  , p_source_32 => l_array_source_32(Idx)
85253  , p_source_39 => l_array_source_39(Idx)
85254  , p_source_41 => l_array_source_41(Idx)
85255  , p_source_42 => l_array_source_42(Idx)
85256  , p_source_45 => l_array_source_45(Idx)
85257  , p_source_46 => l_array_source_46(Idx)
85258  , p_source_47 => l_array_source_47(Idx)
85259  , p_source_52 => l_array_source_52(Idx)
85260  , p_source_56 => l_array_source_56(Idx)
85261  , p_source_57 => l_array_source_57(Idx)
85262  , p_source_99 => l_array_source_99(Idx)
85263  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85267  , p_source_105 => l_array_source_105(Idx)
85264  , p_source_102 => l_array_source_102(Idx)
85265  , p_source_103 => l_array_source_103(Idx)
85266  , p_source_104 => l_array_source_104(Idx)
85268  , p_source_106 => l_array_source_106(Idx)
85269  , p_source_107 => l_array_source_107(Idx)
85270  , p_source_108 => l_array_source_108(Idx)
85271  , p_source_111 => l_array_source_111(Idx)
85272  );
85273 If(l_balance_type_code = 'A') THEN
85274   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85275 END IF;
85276 
85277 --
85278 
85279 
85280 --
85281 AcctLineType_134 (
85282  p_application_id  => p_application_id
85283  ,p_event_id     => l_event_id
85284  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85285  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85286  ,p_actual_flag => l_actual_flag
85287  ,p_balance_type_code => l_balance_type_code
85288  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85289  
85290  , p_source_32 => l_array_source_32(Idx)
85291  , p_source_39 => l_array_source_39(Idx)
85292  , p_source_41 => l_array_source_41(Idx)
85293  , p_source_42 => l_array_source_42(Idx)
85294  , p_source_43 => l_array_source_43(Idx)
85295  , p_source_44 => l_array_source_44(Idx)
85296  , p_source_48 => l_array_source_48(Idx)
85297  , p_source_56 => l_array_source_56(Idx)
85298  , p_source_57 => l_array_source_57(Idx)
85299  , p_source_99 => l_array_source_99(Idx)
85300  , p_source_100 => l_array_source_100(Idx)
85301  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85302  , p_source_102 => l_array_source_102(Idx)
85303  , p_source_103 => l_array_source_103(Idx)
85304  , p_source_106 => l_array_source_106(Idx)
85305  , p_source_107 => l_array_source_107(Idx)
85306  , p_source_108 => l_array_source_108(Idx)
85307  , p_source_109 => l_array_source_109(Idx)
85308  , p_source_110 => l_array_source_110(Idx)
85309  );
85310 If(l_balance_type_code = 'A') THEN
85311   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85312 END IF;
85313 
85314 --
85315 
85316 
85317 --
85318 AcctLineType_135 (
85319  p_application_id  => p_application_id
85320  ,p_event_id     => l_event_id
85321  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85322  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85323  ,p_actual_flag => l_actual_flag
85324  ,p_balance_type_code => l_balance_type_code
85325  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85326  
85327  , p_source_36 => g_array_event(l_event_id).array_value_num('source_36')
85328  , p_source_39 => l_array_source_39(Idx)
85329  , p_source_40 => l_array_source_40(Idx)
85330  , p_source_41 => l_array_source_41(Idx)
85331  , p_source_42 => l_array_source_42(Idx)
85332  , p_source_45 => l_array_source_45(Idx)
85333  , p_source_46 => l_array_source_46(Idx)
85334  , p_source_47 => l_array_source_47(Idx)
85335  , p_source_52 => l_array_source_52(Idx)
85336  , p_source_56 => l_array_source_56(Idx)
85337  , p_source_57 => l_array_source_57(Idx)
85338  , p_source_99 => l_array_source_99(Idx)
85339  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85340  , p_source_102 => l_array_source_102(Idx)
85341  , p_source_103 => l_array_source_103(Idx)
85342  , p_source_104 => l_array_source_104(Idx)
85343  , p_source_105 => l_array_source_105(Idx)
85344  , p_source_108 => l_array_source_108(Idx)
85345  , p_source_111 => l_array_source_111(Idx)
85346  , p_source_112 => g_array_event(l_event_id).array_value_num('source_112')
85347  , p_source_113 => g_array_event(l_event_id).array_value_num('source_113')
85348  );
85349 If(l_balance_type_code = 'A') THEN
85350   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85351 END IF;
85352 
85353 --
85354 
85355 
85356 --
85357 AcctLineType_136 (
85358  p_application_id  => p_application_id
85359  ,p_event_id     => l_event_id
85360  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85361  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85362  ,p_actual_flag => l_actual_flag
85363  ,p_balance_type_code => l_balance_type_code
85364  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85365  
85366  , p_source_36 => g_array_event(l_event_id).array_value_num('source_36')
85367  , p_source_39 => l_array_source_39(Idx)
85368  , p_source_41 => l_array_source_41(Idx)
85369  , p_source_42 => l_array_source_42(Idx)
85370  , p_source_45 => l_array_source_45(Idx)
85371  , p_source_46 => l_array_source_46(Idx)
85372  , p_source_47 => l_array_source_47(Idx)
85373  , p_source_52 => l_array_source_52(Idx)
85374  , p_source_56 => l_array_source_56(Idx)
85375  , p_source_57 => l_array_source_57(Idx)
85376  , p_source_99 => l_array_source_99(Idx)
85377  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85378  , p_source_102 => l_array_source_102(Idx)
85379  , p_source_103 => l_array_source_103(Idx)
85380  , p_source_104 => l_array_source_104(Idx)
85381  , p_source_105 => l_array_source_105(Idx)
85382  , p_source_108 => l_array_source_108(Idx)
85383  , p_source_111 => l_array_source_111(Idx)
85384  , p_source_112 => g_array_event(l_event_id).array_value_num('source_112')
85385  , p_source_113 => g_array_event(l_event_id).array_value_num('source_113')
85386  , p_source_114 => g_array_event(l_event_id).array_value_char('source_114')
85387  );
85388 If(l_balance_type_code = 'A') THEN
85389   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85390 END IF;
85391 
85392 --
85393 
85394 
85395 --
85396 AcctLineType_137 (
85397  p_application_id  => p_application_id
85398  ,p_event_id     => l_event_id
85399  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85400  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85401  ,p_actual_flag => l_actual_flag
85402  ,p_balance_type_code => l_balance_type_code
85403  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85404  
85405  , p_source_36 => g_array_event(l_event_id).array_value_num('source_36')
85406  , p_source_39 => l_array_source_39(Idx)
85410  , p_source_44 => l_array_source_44(Idx)
85407  , p_source_41 => l_array_source_41(Idx)
85408  , p_source_42 => l_array_source_42(Idx)
85409  , p_source_43 => l_array_source_43(Idx)
85411  , p_source_45 => l_array_source_45(Idx)
85412  , p_source_46 => l_array_source_46(Idx)
85413  , p_source_47 => l_array_source_47(Idx)
85414  , p_source_52 => l_array_source_52(Idx)
85415  , p_source_56 => l_array_source_56(Idx)
85416  , p_source_57 => l_array_source_57(Idx)
85417  , p_source_99 => l_array_source_99(Idx)
85418  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85419  , p_source_102 => l_array_source_102(Idx)
85420  , p_source_103 => l_array_source_103(Idx)
85421  , p_source_108 => l_array_source_108(Idx)
85422  , p_source_111 => l_array_source_111(Idx)
85423  , p_source_114 => g_array_event(l_event_id).array_value_char('source_114')
85424  , p_source_115 => g_array_event(l_event_id).array_value_num('source_115')
85425  , p_source_116 => g_array_event(l_event_id).array_value_num('source_116')
85426  );
85427 If(l_balance_type_code = 'A') THEN
85428   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85429 END IF;
85430 
85431 --
85432 
85433 
85434 --
85435 AcctLineType_138 (
85436  p_application_id  => p_application_id
85437  ,p_event_id     => l_event_id
85438  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85439  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85440  ,p_actual_flag => l_actual_flag
85441  ,p_balance_type_code => l_balance_type_code
85442  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85443  
85444  , p_source_32 => l_array_source_32(Idx)
85445  , p_source_39 => l_array_source_39(Idx)
85446  , p_source_41 => l_array_source_41(Idx)
85447  , p_source_42 => l_array_source_42(Idx)
85448  , p_source_43 => l_array_source_43(Idx)
85449  , p_source_44 => l_array_source_44(Idx)
85450  , p_source_48 => l_array_source_48(Idx)
85451  , p_source_56 => l_array_source_56(Idx)
85452  , p_source_57 => l_array_source_57(Idx)
85453  , p_source_99 => l_array_source_99(Idx)
85454  , p_source_100 => l_array_source_100(Idx)
85455  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85456  , p_source_102 => l_array_source_102(Idx)
85457  , p_source_103 => l_array_source_103(Idx)
85458  , p_source_106 => l_array_source_106(Idx)
85459  , p_source_107 => l_array_source_107(Idx)
85460  , p_source_108 => l_array_source_108(Idx)
85461  , p_source_109 => l_array_source_109(Idx)
85462  , p_source_110 => l_array_source_110(Idx)
85463  );
85464 If(l_balance_type_code = 'A') THEN
85465   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85466 END IF;
85467 
85468 --
85469 
85470 
85471 --
85472 AcctLineType_139 (
85473  p_application_id  => p_application_id
85474  ,p_event_id     => l_event_id
85475  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85476  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85477  ,p_actual_flag => l_actual_flag
85478  ,p_balance_type_code => l_balance_type_code
85479  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85480  
85481  , p_source_32 => l_array_source_32(Idx)
85482  , p_source_39 => l_array_source_39(Idx)
85483  , p_source_41 => l_array_source_41(Idx)
85484  , p_source_42 => l_array_source_42(Idx)
85485  , p_source_43 => l_array_source_43(Idx)
85486  , p_source_44 => l_array_source_44(Idx)
85487  , p_source_48 => l_array_source_48(Idx)
85488  , p_source_56 => l_array_source_56(Idx)
85489  , p_source_57 => l_array_source_57(Idx)
85490  , p_source_99 => l_array_source_99(Idx)
85491  , p_source_100 => l_array_source_100(Idx)
85492  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85493  , p_source_102 => l_array_source_102(Idx)
85494  , p_source_103 => l_array_source_103(Idx)
85495  , p_source_106 => l_array_source_106(Idx)
85496  , p_source_107 => l_array_source_107(Idx)
85497  , p_source_108 => l_array_source_108(Idx)
85498  , p_source_109 => l_array_source_109(Idx)
85499  , p_source_110 => l_array_source_110(Idx)
85500  );
85501 If(l_balance_type_code = 'A') THEN
85502   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85503 END IF;
85504 
85505 --
85506 
85507 
85508 --
85509 AcctLineType_140 (
85510  p_application_id  => p_application_id
85511  ,p_event_id     => l_event_id
85512  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85513  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85514  ,p_actual_flag => l_actual_flag
85515  ,p_balance_type_code => l_balance_type_code
85516  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85517  
85518  , p_source_32 => l_array_source_32(Idx)
85519  , p_source_39 => l_array_source_39(Idx)
85520  , p_source_41 => l_array_source_41(Idx)
85521  , p_source_42 => l_array_source_42(Idx)
85522  , p_source_45 => l_array_source_45(Idx)
85523  , p_source_46 => l_array_source_46(Idx)
85524  , p_source_47 => l_array_source_47(Idx)
85525  , p_source_52 => l_array_source_52(Idx)
85526  , p_source_56 => l_array_source_56(Idx)
85527  , p_source_57 => l_array_source_57(Idx)
85528  , p_source_99 => l_array_source_99(Idx)
85529  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85530  , p_source_102 => l_array_source_102(Idx)
85531  , p_source_103 => l_array_source_103(Idx)
85532  , p_source_104 => l_array_source_104(Idx)
85533  , p_source_105 => l_array_source_105(Idx)
85534  , p_source_106 => l_array_source_106(Idx)
85535  , p_source_107 => l_array_source_107(Idx)
85536  , p_source_108 => l_array_source_108(Idx)
85537  );
85538 If(l_balance_type_code = 'A') THEN
85539   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85540 END IF;
85541 
85542 --
85543 
85544 
85545 --
85546 AcctLineType_141 (
85547  p_application_id  => p_application_id
85548  ,p_event_id     => l_event_id
85549  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85550  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85551  ,p_actual_flag => l_actual_flag
85555  , p_source_37 => g_array_event(l_event_id).array_value_num('source_37')
85552  ,p_balance_type_code => l_balance_type_code
85553  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85554  
85556  , p_source_39 => l_array_source_39(Idx)
85557  , p_source_41 => l_array_source_41(Idx)
85558  , p_source_42 => l_array_source_42(Idx)
85559  , p_source_43 => l_array_source_43(Idx)
85560  , p_source_44 => l_array_source_44(Idx)
85561  , p_source_45 => l_array_source_45(Idx)
85562  , p_source_46 => l_array_source_46(Idx)
85563  , p_source_47 => l_array_source_47(Idx)
85564  , p_source_52 => l_array_source_52(Idx)
85565  , p_source_56 => l_array_source_56(Idx)
85566  , p_source_57 => l_array_source_57(Idx)
85567  , p_source_99 => l_array_source_99(Idx)
85568  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85569  , p_source_102 => l_array_source_102(Idx)
85570  , p_source_103 => l_array_source_103(Idx)
85571  , p_source_106 => l_array_source_106(Idx)
85572  , p_source_107 => l_array_source_107(Idx)
85573  , p_source_108 => l_array_source_108(Idx)
85574  , p_source_111 => l_array_source_111(Idx)
85575  , p_source_114 => g_array_event(l_event_id).array_value_char('source_114')
85576  , p_source_115 => g_array_event(l_event_id).array_value_num('source_115')
85577  , p_source_116 => g_array_event(l_event_id).array_value_num('source_116')
85578  );
85579 If(l_balance_type_code = 'A') THEN
85580   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85581 END IF;
85582 
85583 --
85584 
85585 
85586 --
85587 AcctLineType_142 (
85588  p_application_id  => p_application_id
85589  ,p_event_id     => l_event_id
85590  ,p_calculate_acctd_flag => l_calculate_acctd_flag
85591  ,p_calculate_g_l_flag => l_calculate_g_l_flag
85592  ,p_actual_flag => l_actual_flag
85593  ,p_balance_type_code => l_balance_type_code
85594  ,p_gain_or_loss_ref=> l_gain_or_loss_ref
85595  
85596  , p_source_32 => l_array_source_32(Idx)
85597  , p_source_39 => l_array_source_39(Idx)
85598  , p_source_40 => l_array_source_40(Idx)
85599  , p_source_41 => l_array_source_41(Idx)
85600  , p_source_42 => l_array_source_42(Idx)
85601  , p_source_45 => l_array_source_45(Idx)
85602  , p_source_46 => l_array_source_46(Idx)
85603  , p_source_47 => l_array_source_47(Idx)
85604  , p_source_52 => l_array_source_52(Idx)
85605  , p_source_56 => l_array_source_56(Idx)
85606  , p_source_57 => l_array_source_57(Idx)
85607  , p_source_99 => l_array_source_99(Idx)
85608  , p_source_101 => g_array_event(l_event_id).array_value_num('source_101')
85609  , p_source_102 => l_array_source_102(Idx)
85610  , p_source_103 => l_array_source_103(Idx)
85611  , p_source_104 => l_array_source_104(Idx)
85612  , p_source_105 => l_array_source_105(Idx)
85613  , p_source_106 => l_array_source_106(Idx)
85614  , p_source_107 => l_array_source_107(Idx)
85615  , p_source_108 => l_array_source_108(Idx)
85616  );
85617 If(l_balance_type_code = 'A') THEN
85618   l_actual_gain_loss_ref := l_gain_or_loss_ref;
85619 END IF;
85620 
85621 --
85622 
85623       -- only execute it if calculate g/l flag is yes, and primary or secondary ledger
85624       -- or secondary ledger that has different currency with primary
85625       -- or alc that is calculated by sla
85626       IF (((l_calculate_g_l_flag = 'Y' AND XLA_AE_JOURNAL_ENTRY_PKG.g_cache_ledgers_info.ledger_category_code <> 'ALC') or
85627             (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'))
85628 
85629 --      IF((l_calculate_g_l_flag='Y' or XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.target_ledger_id <>
85630 --                    XLA_AE_JOURNAL_ENTRY_PKG.g_cache_event.ledger_id)
85631           AND (l_actual_flag = 'A')) THEN
85632         XLA_AE_LINES_PKG.CreateGainOrLossLines(
85633           p_event_id         => xla_ae_journal_entry_pkg.g_cache_event.event_id
85634          ,p_application_id   => p_application_id
85635          ,p_amb_context_code => 'DEFAULT'
85636          ,p_entity_code      => xla_ae_journal_entry_pkg.g_cache_event.entity_code
85637          ,p_event_class_code => C_EVENT_CLASS_CODE
85638          ,p_event_type_code  => C_EVENT_TYPE_CODE
85639          
85640          ,p_gain_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_34'))
85641          ,p_loss_ccid        => TO_NUMBER(g_array_event(l_event_id).array_value_num('source_35'))
85642 
85643          ,p_actual_flag      => l_actual_flag
85644          ,p_enc_flag         => null
85645          ,p_actual_g_l_ref   => l_actual_gain_loss_ref
85646          ,p_enc_g_l_ref      => null
85647          );
85648       END IF;
85649    END IF;
85650 END IF;
85651 
85652    ELSE
85653       --
85654       -- Bug 4872078 - Do nothing if the event is meant for transaction reversal
85655       --
85656       IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85657          trace
85658             (p_msg      => 'Trancaction revesal option is Y'
85659             ,p_level    => C_LEVEL_STATEMENT
85660             ,p_module   => l_log_module);
85661       END IF;
85662    END IF;
85663 
85664 END LOOP;
85665 l_result := XLA_AE_LINES_PKG.InsertLines ;
85666 end loop;
85667 close line_cur;
85668 
85669 
85670 --
85671 -- insert headers into xla_ae_headers_gt table
85672 --
85673 l_result := XLA_AE_HEADER_PKG.InsertHeaders ;
85674 
85675 -- insert into errors table here.
85676 
85677 END LOOP;
85678 
85679 --
85680 -- 4865292
85681 --
85682 -- Compare g_hdr_extract_count with event count in
85683 -- CreateHeadersAndLines.
85684 --
85685 g_hdr_extract_count := g_hdr_extract_count + header_cur%ROWCOUNT;
85686 
85687 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85688    trace (p_msg     => '# rows extracted from header extract objects '
85689                     || ' (running total): '
85693 END IF;
85690                     || g_hdr_extract_count
85691          ,p_level   => C_LEVEL_STATEMENT
85692          ,p_module  => l_log_module);
85694 
85695 CLOSE header_cur;
85696 --
85697 
85698 --
85699 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85700    trace
85701       (p_msg      => 'END of EventClass_154'
85702       ,p_level    => C_LEVEL_PROCEDURE
85703       ,p_module   => l_log_module);
85704 END IF;
85705 --
85706 RETURN l_result;
85707 EXCEPTION
85708 WHEN xla_exceptions_pkg.application_exception THEN
85709    
85710 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
85711 
85712    
85713 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
85714 
85715    RAISE;
85716 
85717 WHEN NO_DATA_FOUND THEN
85718 
85719 IF header_cur%ISOPEN THEN CLOSE header_cur; END IF;
85720 IF line_cur%ISOPEN   THEN CLOSE line_cur;   END IF;
85721 
85722 FOR header_record IN header_cur
85723 LOOP
85724     l_array_header_events(header_record.event_id) := header_record.event_id;
85725 END LOOP;
85726 
85727 l_first_event_id := l_array_header_events(l_array_header_events.FIRST);
85728 l_last_event_id := l_array_header_events(l_array_header_events.LAST);
85729 
85730 fnd_file.put_line(fnd_file.LOG, '                    ');
85731 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
85732 fnd_file.put_line(fnd_file.LOG, 'EVENT CLASS CODE = ' || C_EVENT_CLASS_CODE );
85733 fnd_file.put_line(fnd_file.LOG, 'The following events are present in the line extract but MISSING in the header extract: ');
85734 
85735 FOR line_record IN line_cur(l_first_event_id, l_last_event_id)
85736 LOOP
85737 	IF (NOT l_array_header_events.EXISTS(line_record.event_id))  AND (NOT l_array_duplicate_checker.EXISTS(line_record.event_id)) THEN
85738 	fnd_file.put_line(fnd_file.log, 'Event_id = ' || line_record.event_id);
85739         l_array_duplicate_checker(line_record.event_id) := line_record.event_id;
85740 	END IF;
85741 END LOOP;
85742 
85743 fnd_file.put_line(fnd_file.LOG, '***************************************************************************');
85744 fnd_file.put_line(fnd_file.LOG, '                    ');
85745 
85746 
85747 xla_exceptions_pkg.raise_message
85748       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_154');
85749 
85750 
85751 WHEN OTHERS THEN
85752    xla_exceptions_pkg.raise_message
85753       (p_location => 'XLA_00222_AAD_S_000002_PKG.EventClass_154');
85754 END EventClass_154;
85755 --
85756 
85757 --
85758 --+============================================+
85759 --|                                            |
85760 --|  PRIVATE FUNCTION                          |
85761 --|                                            |
85762 --+============================================+
85763 --
85764 FUNCTION CreateHeadersAndLines
85765        (p_application_id         IN NUMBER
85766        ,p_base_ledger_id         IN NUMBER
85767        ,p_target_ledger_id       IN NUMBER
85768        ,p_pad_start_date         IN DATE
85769        ,p_pad_end_date           IN DATE
85770        ,p_primary_ledger_id      IN NUMBER)
85771 RETURN BOOLEAN IS
85772 l_created                   BOOLEAN:=FALSE;
85773 l_event_id                  NUMBER;
85774 l_event_date                DATE;
85775 l_language                  VARCHAR2(30);
85776 l_currency_code             VARCHAR2(30);
85777 l_sla_ledger_id             NUMBER;
85778 l_log_module                VARCHAR2(240);
85779 
85780 BEGIN
85781 --
85782 IF g_log_enabled THEN
85783    l_log_module := C_DEFAULT_MODULE||'.CreateHeadersAndLines';
85784 END IF;
85785 --
85786 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
85787    trace
85788       (p_msg      => 'BEGIN of CreateHeadersAndLines'
85789       ,p_level    => C_LEVEL_PROCEDURE
85790       ,p_module   => l_log_module);
85791 END IF;
85792 
85793 l_language         := xla_ae_journal_entry_pkg.g_cache_ledgers_info.description_language;
85794 l_currency_code    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.currency_code;
85795 l_sla_ledger_id    := xla_ae_journal_entry_pkg.g_cache_ledgers_info.sla_ledger_id;
85796 
85797 --
85798 -- initialize array of lines with NULL
85799 --
85800 xla_ae_lines_pkg.SetNullLine;
85801 
85802 --
85803 -- initialize header extract count -- Bug 4865292
85804 --
85805 g_hdr_extract_count:= 0;
85806 
85807 
85808 l_created := EventClass_143(
85809    p_application_id         => p_application_id
85810  , p_base_ledger_id         => p_base_ledger_id
85811  , p_target_ledger_id       => p_target_ledger_id
85812  , p_language               => l_language
85813  , p_currency_code          => l_currency_code
85814  , p_sla_ledger_id          => l_sla_ledger_id
85815  , p_pad_start_date         => p_pad_start_date
85816  , p_pad_end_date           => p_pad_end_date
85817  , p_primary_ledger_id      => p_primary_ledger_id
85818 );
85819 
85820 
85821 
85822      IF ( g_diagnostics_mode ='Y' ) THEN
85823 
85824          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85825           trace
85826               (p_msg      => 'CALL Transaction Objects Diagnostics'
85827               ,p_level    => C_LEVEL_STATEMENT
85828               ,p_module   => l_log_module);
85829 
85830          END IF;
85831 
85832          insert_sources_143(
85833                           p_target_ledger_id => p_target_ledger_id
85834                         , p_language         => l_language
85835                         , p_sla_ledger_id    => l_sla_ledger_id
85836                         , p_pad_start_date   => p_pad_start_date
85837                         , p_pad_end_date     => p_pad_end_date
85838                           );
85839 
85840      END IF;
85841 
85842 l_created := EventClass_144(
85846  , p_language               => l_language
85843    p_application_id         => p_application_id
85844  , p_base_ledger_id         => p_base_ledger_id
85845  , p_target_ledger_id       => p_target_ledger_id
85847  , p_currency_code          => l_currency_code
85848  , p_sla_ledger_id          => l_sla_ledger_id
85849  , p_pad_start_date         => p_pad_start_date
85850  , p_pad_end_date           => p_pad_end_date
85851  , p_primary_ledger_id      => p_primary_ledger_id
85852 );
85853 
85854 
85855 
85856      IF ( g_diagnostics_mode ='Y' ) THEN
85857 
85858          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85859           trace
85860               (p_msg      => 'CALL Transaction Objects Diagnostics'
85861               ,p_level    => C_LEVEL_STATEMENT
85862               ,p_module   => l_log_module);
85863 
85864          END IF;
85865 
85866          insert_sources_144(
85867                           p_target_ledger_id => p_target_ledger_id
85868                         , p_language         => l_language
85869                         , p_sla_ledger_id    => l_sla_ledger_id
85870                         , p_pad_start_date   => p_pad_start_date
85871                         , p_pad_end_date     => p_pad_end_date
85872                           );
85873 
85874      END IF;
85875 
85876 l_created := EventClass_145(
85877    p_application_id         => p_application_id
85878  , p_base_ledger_id         => p_base_ledger_id
85879  , p_target_ledger_id       => p_target_ledger_id
85880  , p_language               => l_language
85881  , p_currency_code          => l_currency_code
85882  , p_sla_ledger_id          => l_sla_ledger_id
85883  , p_pad_start_date         => p_pad_start_date
85884  , p_pad_end_date           => p_pad_end_date
85885  , p_primary_ledger_id      => p_primary_ledger_id
85886 );
85887 
85888 
85889 
85890      IF ( g_diagnostics_mode ='Y' ) THEN
85891 
85892          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85893           trace
85894               (p_msg      => 'CALL Transaction Objects Diagnostics'
85895               ,p_level    => C_LEVEL_STATEMENT
85896               ,p_module   => l_log_module);
85897 
85898          END IF;
85899 
85900          insert_sources_145(
85901                           p_target_ledger_id => p_target_ledger_id
85902                         , p_language         => l_language
85903                         , p_sla_ledger_id    => l_sla_ledger_id
85904                         , p_pad_start_date   => p_pad_start_date
85905                         , p_pad_end_date     => p_pad_end_date
85906                           );
85907 
85908      END IF;
85909 
85910 l_created := EventClass_146(
85911    p_application_id         => p_application_id
85912  , p_base_ledger_id         => p_base_ledger_id
85913  , p_target_ledger_id       => p_target_ledger_id
85914  , p_language               => l_language
85915  , p_currency_code          => l_currency_code
85916  , p_sla_ledger_id          => l_sla_ledger_id
85917  , p_pad_start_date         => p_pad_start_date
85918  , p_pad_end_date           => p_pad_end_date
85919  , p_primary_ledger_id      => p_primary_ledger_id
85920 );
85921 
85922 
85923 
85924      IF ( g_diagnostics_mode ='Y' ) THEN
85925 
85926          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85927           trace
85928               (p_msg      => 'CALL Transaction Objects Diagnostics'
85929               ,p_level    => C_LEVEL_STATEMENT
85930               ,p_module   => l_log_module);
85931 
85932          END IF;
85933 
85934          insert_sources_146(
85935                           p_target_ledger_id => p_target_ledger_id
85936                         , p_language         => l_language
85937                         , p_sla_ledger_id    => l_sla_ledger_id
85938                         , p_pad_start_date   => p_pad_start_date
85939                         , p_pad_end_date     => p_pad_end_date
85940                           );
85941 
85942      END IF;
85943 
85944 l_created := EventClass_147(
85945    p_application_id         => p_application_id
85946  , p_base_ledger_id         => p_base_ledger_id
85947  , p_target_ledger_id       => p_target_ledger_id
85948  , p_language               => l_language
85949  , p_currency_code          => l_currency_code
85950  , p_sla_ledger_id          => l_sla_ledger_id
85951  , p_pad_start_date         => p_pad_start_date
85952  , p_pad_end_date           => p_pad_end_date
85953  , p_primary_ledger_id      => p_primary_ledger_id
85954 );
85955 
85956 
85957 
85958      IF ( g_diagnostics_mode ='Y' ) THEN
85959 
85960          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85961           trace
85962               (p_msg      => 'CALL Transaction Objects Diagnostics'
85963               ,p_level    => C_LEVEL_STATEMENT
85964               ,p_module   => l_log_module);
85965 
85966          END IF;
85967 
85968          insert_sources_147(
85969                           p_target_ledger_id => p_target_ledger_id
85970                         , p_language         => l_language
85971                         , p_sla_ledger_id    => l_sla_ledger_id
85972                         , p_pad_start_date   => p_pad_start_date
85973                         , p_pad_end_date     => p_pad_end_date
85974                           );
85975 
85976      END IF;
85977 
85978 l_created := EventClass_148(
85979    p_application_id         => p_application_id
85980  , p_base_ledger_id         => p_base_ledger_id
85981  , p_target_ledger_id       => p_target_ledger_id
85982  , p_language               => l_language
85983  , p_currency_code          => l_currency_code
85984  , p_sla_ledger_id          => l_sla_ledger_id
85985  , p_pad_start_date         => p_pad_start_date
85986  , p_pad_end_date           => p_pad_end_date
85990 
85987  , p_primary_ledger_id      => p_primary_ledger_id
85988 );
85989 
85991 
85992      IF ( g_diagnostics_mode ='Y' ) THEN
85993 
85994          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
85995           trace
85996               (p_msg      => 'CALL Transaction Objects Diagnostics'
85997               ,p_level    => C_LEVEL_STATEMENT
85998               ,p_module   => l_log_module);
85999 
86000          END IF;
86001 
86002          insert_sources_148(
86003                           p_target_ledger_id => p_target_ledger_id
86004                         , p_language         => l_language
86005                         , p_sla_ledger_id    => l_sla_ledger_id
86006                         , p_pad_start_date   => p_pad_start_date
86007                         , p_pad_end_date     => p_pad_end_date
86008                           );
86009 
86010      END IF;
86011 
86012 l_created := EventClass_149(
86013    p_application_id         => p_application_id
86014  , p_base_ledger_id         => p_base_ledger_id
86015  , p_target_ledger_id       => p_target_ledger_id
86016  , p_language               => l_language
86017  , p_currency_code          => l_currency_code
86018  , p_sla_ledger_id          => l_sla_ledger_id
86019  , p_pad_start_date         => p_pad_start_date
86020  , p_pad_end_date           => p_pad_end_date
86021  , p_primary_ledger_id      => p_primary_ledger_id
86022 );
86023 
86024 
86025 
86026      IF ( g_diagnostics_mode ='Y' ) THEN
86027 
86028          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86029           trace
86030               (p_msg      => 'CALL Transaction Objects Diagnostics'
86031               ,p_level    => C_LEVEL_STATEMENT
86032               ,p_module   => l_log_module);
86033 
86034          END IF;
86035 
86036          insert_sources_149(
86037                           p_target_ledger_id => p_target_ledger_id
86038                         , p_language         => l_language
86039                         , p_sla_ledger_id    => l_sla_ledger_id
86040                         , p_pad_start_date   => p_pad_start_date
86041                         , p_pad_end_date     => p_pad_end_date
86042                           );
86043 
86044      END IF;
86045 
86046 l_created := EventClass_150(
86047    p_application_id         => p_application_id
86048  , p_base_ledger_id         => p_base_ledger_id
86049  , p_target_ledger_id       => p_target_ledger_id
86050  , p_language               => l_language
86051  , p_currency_code          => l_currency_code
86052  , p_sla_ledger_id          => l_sla_ledger_id
86053  , p_pad_start_date         => p_pad_start_date
86054  , p_pad_end_date           => p_pad_end_date
86055  , p_primary_ledger_id      => p_primary_ledger_id
86056 );
86057 
86058 
86059 
86060      IF ( g_diagnostics_mode ='Y' ) THEN
86061 
86062          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86063           trace
86064               (p_msg      => 'CALL Transaction Objects Diagnostics'
86065               ,p_level    => C_LEVEL_STATEMENT
86066               ,p_module   => l_log_module);
86067 
86068          END IF;
86069 
86070          insert_sources_150(
86071                           p_target_ledger_id => p_target_ledger_id
86072                         , p_language         => l_language
86073                         , p_sla_ledger_id    => l_sla_ledger_id
86074                         , p_pad_start_date   => p_pad_start_date
86075                         , p_pad_end_date     => p_pad_end_date
86076                           );
86077 
86078      END IF;
86079 
86080 l_created := EventClass_151(
86081    p_application_id         => p_application_id
86082  , p_base_ledger_id         => p_base_ledger_id
86083  , p_target_ledger_id       => p_target_ledger_id
86084  , p_language               => l_language
86085  , p_currency_code          => l_currency_code
86086  , p_sla_ledger_id          => l_sla_ledger_id
86087  , p_pad_start_date         => p_pad_start_date
86088  , p_pad_end_date           => p_pad_end_date
86089  , p_primary_ledger_id      => p_primary_ledger_id
86090 );
86091 
86092 
86093 
86094      IF ( g_diagnostics_mode ='Y' ) THEN
86095 
86096          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86097           trace
86098               (p_msg      => 'CALL Transaction Objects Diagnostics'
86099               ,p_level    => C_LEVEL_STATEMENT
86100               ,p_module   => l_log_module);
86101 
86102          END IF;
86103 
86104          insert_sources_151(
86105                           p_target_ledger_id => p_target_ledger_id
86106                         , p_language         => l_language
86107                         , p_sla_ledger_id    => l_sla_ledger_id
86108                         , p_pad_start_date   => p_pad_start_date
86109                         , p_pad_end_date     => p_pad_end_date
86110                           );
86111 
86112      END IF;
86113 
86114 l_created := EventClass_152(
86115    p_application_id         => p_application_id
86116  , p_base_ledger_id         => p_base_ledger_id
86117  , p_target_ledger_id       => p_target_ledger_id
86118  , p_language               => l_language
86119  , p_currency_code          => l_currency_code
86120  , p_sla_ledger_id          => l_sla_ledger_id
86121  , p_pad_start_date         => p_pad_start_date
86122  , p_pad_end_date           => p_pad_end_date
86123  , p_primary_ledger_id      => p_primary_ledger_id
86124 );
86125 
86126 
86127 
86128      IF ( g_diagnostics_mode ='Y' ) THEN
86129 
86130          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86131           trace
86132               (p_msg      => 'CALL Transaction Objects Diagnostics'
86133               ,p_level    => C_LEVEL_STATEMENT
86134               ,p_module   => l_log_module);
86135 
86139                           p_target_ledger_id => p_target_ledger_id
86136          END IF;
86137 
86138          insert_sources_152(
86140                         , p_language         => l_language
86141                         , p_sla_ledger_id    => l_sla_ledger_id
86142                         , p_pad_start_date   => p_pad_start_date
86143                         , p_pad_end_date     => p_pad_end_date
86144                           );
86145 
86146      END IF;
86147 
86148 l_created := EventClass_153(
86149    p_application_id         => p_application_id
86150  , p_base_ledger_id         => p_base_ledger_id
86151  , p_target_ledger_id       => p_target_ledger_id
86152  , p_language               => l_language
86153  , p_currency_code          => l_currency_code
86154  , p_sla_ledger_id          => l_sla_ledger_id
86155  , p_pad_start_date         => p_pad_start_date
86156  , p_pad_end_date           => p_pad_end_date
86157  , p_primary_ledger_id      => p_primary_ledger_id
86158 );
86159 
86160 
86161 
86162      IF ( g_diagnostics_mode ='Y' ) THEN
86163 
86164          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86165           trace
86166               (p_msg      => 'CALL Transaction Objects Diagnostics'
86167               ,p_level    => C_LEVEL_STATEMENT
86168               ,p_module   => l_log_module);
86169 
86170          END IF;
86171 
86172          insert_sources_153(
86173                           p_target_ledger_id => p_target_ledger_id
86174                         , p_language         => l_language
86175                         , p_sla_ledger_id    => l_sla_ledger_id
86176                         , p_pad_start_date   => p_pad_start_date
86177                         , p_pad_end_date     => p_pad_end_date
86178                           );
86179 
86180      END IF;
86181 
86182 l_created := EventClass_154(
86183    p_application_id         => p_application_id
86184  , p_base_ledger_id         => p_base_ledger_id
86185  , p_target_ledger_id       => p_target_ledger_id
86186  , p_language               => l_language
86187  , p_currency_code          => l_currency_code
86188  , p_sla_ledger_id          => l_sla_ledger_id
86189  , p_pad_start_date         => p_pad_start_date
86190  , p_pad_end_date           => p_pad_end_date
86191  , p_primary_ledger_id      => p_primary_ledger_id
86192 );
86193 
86194 
86195 
86196      IF ( g_diagnostics_mode ='Y' ) THEN
86197 
86198          IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86199           trace
86200               (p_msg      => 'CALL Transaction Objects Diagnostics'
86201               ,p_level    => C_LEVEL_STATEMENT
86202               ,p_module   => l_log_module);
86203 
86204          END IF;
86205 
86206          insert_sources_154(
86207                           p_target_ledger_id => p_target_ledger_id
86208                         , p_language         => l_language
86209                         , p_sla_ledger_id    => l_sla_ledger_id
86210                         , p_pad_start_date   => p_pad_start_date
86211                         , p_pad_end_date     => p_pad_end_date
86212                           );
86213 
86214      END IF;
86215 
86216 
86217  --
86218  -- Bug 4865292
86219  -- When the number of events and that of header extract do not match,
86220  -- set the no header extract flag to indicate there are some issues
86221  -- in header extract.
86222  --
86223  -- Event count context is set in xla_accounting_pkg.unit_processor.
86224  -- Build_Message for this error is called in xla_accounting_pkg.post_accounting
86225  -- to report it as a general error.
86226  --
86227  IF  xla_context_pkg.get_event_count_context <> g_hdr_extract_count
86228  AND xla_context_pkg.get_event_nohdr_context <> 'Y' THEN
86229 
86230      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86231         trace
86232           (p_msg      => '# of extracted headers and events does not match'
86233           ,p_level    => C_LEVEL_STATEMENT
86234           ,p_module   => l_log_module);
86235 
86236         trace
86237           (p_msg      => '# of extracted headers: '
86238                          ||g_hdr_extract_count
86239           ,p_level    => C_LEVEL_STATEMENT
86240           ,p_module   => l_log_module);
86241 
86242         trace
86243           (p_msg      => '# of events in xla_events_gt: '
86244                          ||xla_context_pkg.get_event_count_context
86245           ,p_level    => C_LEVEL_STATEMENT
86246           ,p_module   => l_log_module);
86247 
86248         trace
86249           (p_msg      => 'Event No Header Extract Context: '
86250                          ||xla_context_pkg.get_event_nohdr_context
86251           ,p_level    => C_LEVEL_STATEMENT
86252           ,p_module   => l_log_module);
86253 
86254      END IF;
86255 
86256 
86257      xla_context_pkg.set_event_nohdr_context
86258        (p_nohdr_extract_flag => 'Y'
86259        ,p_client_id => sys_context('USERENV','CLIENT_IDENTIFIER'));
86260 
86261      IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86262         trace
86263           (p_msg      => 'No Header Extract Flag is set to Y'
86264           ,p_level    => C_LEVEL_STATEMENT
86265           ,p_module   => l_log_module);
86266      END IF;
86267 
86268  END IF;
86269 
86270 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86271    trace
86272       (p_msg      => 'END of CreateHeadersAndLines'
86273       ,p_level    => C_LEVEL_PROCEDURE
86274       ,p_module   => l_log_module);
86275 END IF;
86276 
86277 RETURN l_created;
86278 EXCEPTION
86279 WHEN xla_exceptions_pkg.application_exception THEN
86280    RAISE;
86281 WHEN OTHERS THEN
86282    xla_exceptions_pkg.raise_message
86283       (p_location => 'XLA_00222_AAD_S_000002_PKG.CreateHeadersAndLines');
86284 END CreateHeadersAndLines;
86288 --
86285 --
86286 --
86287 
86289 --+============================================+
86290 --|                                            |
86291 --|  PUBLIC FUNCTION                           |
86292 --|                                            |
86293 --+============================================+
86294 --
86295 FUNCTION CreateJournalEntries
86296        (p_application_id         IN NUMBER
86297        ,p_base_ledger_id         IN NUMBER
86298        ,p_pad_start_date         IN DATE
86299        ,p_pad_end_date           IN DATE
86300        ,p_primary_ledger_id      IN NUMBER)
86301 RETURN NUMBER IS
86302 l_log_module                   VARCHAR2(240);
86303 l_array_ledgers                xla_accounting_cache_pkg.t_array_ledger_id;
86304 l_temp_result                  BOOLEAN;
86305 l_result                       NUMBER;
86306 BEGIN
86307 --
86308 IF g_log_enabled THEN
86309    l_log_module := C_DEFAULT_MODULE||'.CreateJournalEntries';
86310 END IF;
86311 --
86312 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86313    trace
86314       (p_msg      => 'BEGIN of CreateJournalEntries'||
86315                      ' - p_base_ledger_id = '||TO_CHAR(p_base_ledger_id)
86316       ,p_level    => C_LEVEL_PROCEDURE
86317       ,p_module   => l_log_module);
86318 
86319 END IF;
86320 
86321 --
86322 g_diagnostics_mode:= xla_accounting_engine_pkg.g_diagnostics_mode;
86323 
86324 IF (C_LEVEL_STATEMENT >= g_log_level) THEN
86325    trace
86326       (p_msg      => 'g_diagnostics_mode = '||g_diagnostics_mode
86327       ,p_level    => C_LEVEL_STATEMENT
86328       ,p_module   => l_log_module);
86329 END IF;
86330 --
86331 xla_ae_journal_entry_pkg.SetProductAcctDefinition
86332    (p_product_rule_code      => 'AR_DEFAULT_ACCRUAL'
86333    ,p_product_rule_type_code => 'S'
86334    ,p_product_rule_version   => ''
86335    ,p_product_rule_name      => 'Receivables Default Accrual'
86336    ,p_amb_context_code       => 'DEFAULT'
86337    );
86338 
86339 l_array_ledgers :=
86340    xla_ae_journal_entry_pkg.GetAlternateCurrencyLedger
86341       (p_base_ledger_id  => p_base_ledger_id);
86342 
86343 FOR Idx IN 1 .. l_array_ledgers.COUNT LOOP
86344    l_temp_result :=
86345       XLA_AE_JOURNAL_ENTRY_PKG.GetLedgersInfo
86346          (p_application_id           => p_application_id
86347          ,p_base_ledger_id           => p_base_ledger_id
86348          ,p_target_ledger_id         => l_array_ledgers(Idx)
86349          ,p_primary_ledger_id        => p_primary_ledger_id
86350          ,p_pad_start_date           => p_pad_start_date
86351          ,p_pad_end_date             => p_pad_end_date);
86352 
86353    l_temp_result :=
86354       l_temp_result AND
86355       CreateHeadersAndLines
86356          (p_application_id             => p_application_id
86357          ,p_base_ledger_id             => p_base_ledger_id
86358          ,p_target_ledger_id           => l_array_ledgers(Idx)
86359          ,p_pad_start_date             => p_pad_start_date
86360          ,p_pad_end_date               => p_pad_end_date
86361          ,p_primary_ledger_id          => p_primary_ledger_id
86362          );
86363 END LOOP;
86364 
86365 
86366 IF (g_diagnostics_mode = 'Y' AND
86367     C_LEVEL_UNEXPECTED >= g_log_level AND
86368     xla_environment_pkg.g_Req_Id IS NOT NULL ) THEN
86369 
86370    xla_accounting_dump_pkg.acctg_event_extract_log(
86371     p_application_id  => p_application_id
86372     ,p_request_id     => xla_environment_pkg.g_Req_Id
86373    );
86374 
86375 END IF;
86376 
86377 CASE l_temp_result
86378   WHEN TRUE THEN l_result := 0;
86379   ELSE l_result := 2;
86380 END CASE;
86381 
86382 IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86383    trace
86384       (p_msg      => 'return value. = '||TO_CHAR(l_result)
86385       ,p_level    => C_LEVEL_PROCEDURE
86386       ,p_module   => l_log_module);
86387    trace
86388       (p_msg      => 'END of CreateJournalEntries '
86389       ,p_level    => C_LEVEL_PROCEDURE
86390       ,p_module   => l_log_module);
86391 END IF;
86392 
86393 RETURN l_result;
86394 EXCEPTION
86395 WHEN xla_exceptions_pkg.application_exception THEN
86396    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86397    trace
86398       (p_msg      => 'ERROR. = '||sqlerrm
86399       ,p_level    => C_LEVEL_PROCEDURE
86400       ,p_module   => l_log_module);
86401    END IF;
86402    RAISE;
86403 WHEN OTHERS THEN
86404    IF (C_LEVEL_PROCEDURE >= g_log_level) THEN
86405    trace
86406       (p_msg      => 'ERROR. = '||sqlerrm
86407       ,p_level    => C_LEVEL_PROCEDURE
86408       ,p_module   => l_log_module);
86409    END IF;
86410    xla_exceptions_pkg.raise_message
86411       (p_location => 'XLA_00222_AAD_S_000002_PKG.CreateJournalEntries');
86412 END CreateJournalEntries;
86413 --
86414 --=============================================================================
86415 --
86416 --
86417 --
86418 --
86419 --
86420 --
86421 --
86422 --
86423 --
86424 --
86425 --
86426 --
86427 --
86428 --
86429 --
86430 --
86431 --
86432 --
86433 --
86434 --
86435 --
86436 --
86437 --=============================================================================
86438 --=============================================================================
86439 --          *********** Initialization routine **********
86440 --=============================================================================
86441 
86442 BEGIN
86443    g_log_level      := FND_LOG.G_CURRENT_RUNTIME_LEVEL;
86444    g_log_enabled    := fnd_log.test
86445                           (log_level  => g_log_level
86446                           ,module     => C_DEFAULT_MODULE);
86447 
86451 --
86448    IF NOT g_log_enabled  THEN
86449       g_log_level := C_LEVEL_LOG_DISABLED;
86450    END IF;
86452 END XLA_00222_AAD_S_000002_PKG;
86453 --